diff options
author | Made <made111@gmx.de> | 2020-05-08 23:06:05 +0200 |
---|---|---|
committer | Made <made111@gmx.de> | 2020-05-08 23:06:05 +0200 |
commit | ae744a2ea5a31f19330aedd1e264c88b97873c1c (patch) | |
tree | a30d34cbfba4e518eb6a7d4a52154ed86d41a428 /arm9 | |
parent | 6d3d11491cf6e8289822d2c5ba9cd7e309a5ce11 (diff) | |
parent | f76cec09f8a2995244256d4b097d9eed2bebd34a (diff) |
Merge branch 'master' of https://github.com/martmists/pokediamond
Diffstat (limited to 'arm9')
157 files changed, 293683 insertions, 2971 deletions
diff --git a/arm9/Makefile b/arm9/Makefile index 30a6f10f..9d03e875 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -59,6 +59,9 @@ O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \ # Overlay modules # FIXME: lcf doesn't like this # BIN_FILES := $(wildcard files/*.__AT_*) +.SECONDARY: +.DELETE_ON_ERROR: +.SECONDEXPANSION: ##################### Compiler Options ####################### @@ -151,21 +154,25 @@ build/src/FUN_020910A4.o: MWCCVERSION = 1.2/sp2p3 ####################### Everything Else ###################### -$(BUILD_DIR)/%.o: %.c +ifeq (,$(NODEP)) +$(BUILD_DIR)/%.o: dep = $(shell grep -E '(#\s*|\.)(include|incbin)\s*"(\S+?)"' $*.[cs] | cut -d'"' -f2 | sort -u) +else +$(BUILD_DIR)/%.o: dep := +endif + +$(BUILD_DIR)/%.o: %.c $$(dep) $(CC) -c $(CFLAGS) -o $@ $< -$(BUILD_DIR)/%.o: %.s - $(AS) $(ASFLAGS) $< -o $@ +$(BUILD_DIR)/%.o: %.s $$(dep) + $(AS) $(ASFLAGS) -o $@ $< $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros.lcf.inc # $(MAKELSF) $(MAKELSF_FLAGS) $< $(LD_TEMPLATE) $@ $(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $< -$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES) +$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES) $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BIN_FILES) -$(ROM): $(ELF) - $(OBJCOPY) -O binary --gap-fill=0xFF $< $@ # Make sure build directory exists before compiling anything DUMMY != mkdir -p $(ALL_DIRS) @@ -185,6 +192,11 @@ DUMMY != mkdir -p $(ALL_DIRS) %.png: ; %.pal: ; +# Included files +baserom.%: ; +%.h: ; +%.inc: ; + $(BIN_FILES): ; $(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 3a4e620a..eeb735db 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1,107 +1,118 @@ #include "macros.lcf.inc" MEMORY { - .itcm (RWX) : ORIGIN=0x01FF8000, LENGTH=0 - .text (RX) : ORIGIN=0x02000000, LENGTH=0 - .data (R) : ORIGIN=0x20EC710, LENGTH=0 - .autoload (R) : ORIGIN=0x02107700, LENGTH=0 - .footer (R) : ORIGIN=0, LENGTH=0 - .bss (RWX) : ORIGIN=0x02106FA0, LENGTH=0 - .ewram (RWX) : ORIGIN=0x023E0000, LENGTH=0 - .dtcm (RW) : ORIGIN=0x027E0000, LENGTH=0 - .overlay (RX) : ORIGIN=0, LENGTH=0 - MODULE_00 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_01 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_02 (RWX) : ORIGIN=0x021D7520, LENGTH=0 - MODULE_03 (RWX) : ORIGIN=0x01FF8700, LENGTH=0 - MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 - MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0 - MODULE_12 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_13 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_14 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_15 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_16 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_17 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_18 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_19 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_20 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_21 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_22 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_23 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_24 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_25 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_26 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_27 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_28 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_29 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_30 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_31 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_32 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_33 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_34 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_35 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_36 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_37 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_38 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_39 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_40 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_41 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_42 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_43 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_44 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_45 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_46 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_47 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_48 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_49 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_50 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_51 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_52 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_53 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_54 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_55 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_56 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_57 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_58 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_59 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_60 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_61 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_62 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_63 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_64 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_65 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_66 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_67 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_68 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_69 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_70 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_71 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_72 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_73 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_74 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_75 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_76 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_77 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_78 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_79 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_80 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_81 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_82 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_83 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_84 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_85 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_86 (RWX) : ORIGIN=0, LENGTH=0 + arm9 (RWX) : ORIGIN=0x02000000, LENGTH=0 > arm9.sbin + ITCM (RWX) : ORIGIN=0x01FF8000, LENGTH=0 >> arm9.sbin + DTCM (RWX) : ORIGIN=0x027E0000, LENGTH=0 >> arm9.sbin + EXT (RWX) : ORIGIN=0x02400000, LENGTH=0 >> arm9.sbin + binary.AUTOLOAD_INFO (RWX) : ORIGIN=0, LENGTH=0 >> arm9.sbin + binary.STATIC_FOOTER (RWX) : ORIGIN=0, LENGTH=0 >> arm9.sbin + + arm9_defs (RW) : ORIGIN=AFTER(arm9), LENGTH=0 > arm9_defs.sbin + arm9_table (RW) : ORIGIN=AFTER(arm9), LENGTH=0 > arm9_table.sbin + MODULE_00 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_00.sbin + MODULE_01 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_01.sbin + MODULE_02 (RWXO) : ORIGIN=0x021D7520, LENGTH=0 > MODULE_02.sbin + MODULE_03 (RWXO) : ORIGIN=0x01FF8700, LENGTH=0 > MODULE_03.sbin + MODULE_04 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_04.sbin + MODULE_05 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_05.sbin + MODULE_06 (RWXO) : ORIGIN=0x022396A0, LENGTH=0 > MODULE_06.sbin + MODULE_07 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_07.sbin + MODULE_08 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_08.sbin + MODULE_09 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_09.sbin + MODULE_10 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_10.sbin + MODULE_11 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_11.sbin + MODULE_12 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_12.sbin + MODULE_13 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_13.sbin + MODULE_14 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_14.sbin + MODULE_15 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_15.sbin + MODULE_16 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_16.sbin + MODULE_17 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_17.sbin + MODULE_18 (RWXO) : ORIGIN=0x022396A0, LENGTH=0 > MODULE_18.sbin + MODULE_19 (RWXO) : ORIGIN=0x02252440, LENGTH=0 > MODULE_19.sbin + MODULE_20 (RWXO) : ORIGIN=0x02252440, LENGTH=0 > MODULE_20.sbin + MODULE_21 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_21.sbin + MODULE_22 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_22.sbin + MODULE_23 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_23.sbin + MODULE_24 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_24.sbin + MODULE_25 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_25.sbin + MODULE_26 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_26.sbin + MODULE_27 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_27.sbin + MODULE_28 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_28.sbin + MODULE_29 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_29.sbin + MODULE_30 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_30.sbin + MODULE_31 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_31.sbin + MODULE_32 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_32.sbin + MODULE_33 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_33.sbin + MODULE_34 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_34.sbin + MODULE_35 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_35.sbin + MODULE_36 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_36.sbin + MODULE_37 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_37.sbin + MODULE_38 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_38.sbin + MODULE_39 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_39.sbin + MODULE_40 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_40.sbin + MODULE_41 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_41.sbin + MODULE_42 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_42.sbin + MODULE_43 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_43.sbin + MODULE_44 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_44.sbin + MODULE_45 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_45.sbin + MODULE_46 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_46.sbin + MODULE_47 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_47.sbin + MODULE_48 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_48.sbin + MODULE_49 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_49.sbin + MODULE_50 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_50.sbin + MODULE_51 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_51.sbin + MODULE_52 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_52.sbin + MODULE_53 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_53.sbin + MODULE_54 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_54.sbin + MODULE_55 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_55.sbin + MODULE_56 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_56.sbin + MODULE_57 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_57.sbin + MODULE_58 (RWXO) : ORIGIN=0x021D9A20, LENGTH=0 > MODULE_58.sbin + MODULE_59 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_59.sbin + MODULE_60 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_60.sbin + MODULE_61 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_61.sbin + MODULE_62 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_62.sbin + MODULE_63 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_63.sbin + MODULE_64 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_64.sbin + MODULE_65 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_65.sbin + MODULE_66 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_66.sbin + MODULE_67 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_67.sbin + MODULE_68 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_68.sbin + MODULE_69 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_69.sbin + MODULE_70 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_70.sbin + MODULE_71 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_71.sbin + MODULE_72 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_72.sbin + MODULE_73 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_73.sbin + MODULE_74 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_74.sbin + MODULE_75 (RWXO) : ORIGIN=0x021E6BA0, LENGTH=0 > MODULE_75.sbin + MODULE_76 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_76.sbin + MODULE_77 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_77.sbin + MODULE_78 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_78.sbin + MODULE_79 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_79.sbin + MODULE_80 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_80.sbin + MODULE_81 (RWXO) : ORIGIN=0x02237E40, LENGTH=0 > MODULE_81.sbin + MODULE_82 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_82.sbin + MODULE_83 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_83.sbin + MODULE_84 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_84.sbin + MODULE_85 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_85.sbin + MODULE_86 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_86.sbin + + dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 + arena.MAIN (RW) : ORIGIN = AFTER(arm9,MODULE_00,MODULE_01,MODULE_02,MODULE_04,MODULE_05,MODULE_06,MODULE_07,MODULE_08,MODULE_09,MODULE_10,MODULE_11,MODULE_12,MODULE_13,MODULE_14,MODULE_15,MODULE_16,MODULE_17,MODULE_18,MODULE_19,MODULE_20,MODULE_21,MODULE_22,MODULE_23,MODULE_24,MODULE_25,MODULE_26,MODULE_27,MODULE_28,MODULE_29,MODULE_30,MODULE_31,MODULE_32,MODULE_33,MODULE_34,MODULE_35,MODULE_36,MODULE_37,MODULE_38,MODULE_39,MODULE_40,MODULE_41,MODULE_42,MODULE_43,MODULE_44,MODULE_45,MODULE_46,MODULE_47,MODULE_48,MODULE_49,MODULE_50,MODULE_51,MODULE_52,MODULE_53,MODULE_54,MODULE_55,MODULE_56,MODULE_57,MODULE_58,MODULE_59,MODULE_60,MODULE_61,MODULE_62,MODULE_63,MODULE_64,MODULE_65,MODULE_66,MODULE_67,MODULE_68,MODULE_69,MODULE_70,MODULE_71,MODULE_72,MODULE_73,MODULE_74,MODULE_75,MODULE_76,MODULE_77,MODULE_78,MODULE_79,MODULE_80,MODULE_81,MODULE_82,MODULE_83,MODULE_84,MODULE_85,MODULE_86), LENGTH = 0x0 + arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX), LENGTH = 0x0 + arena.ITCM (RW) : ORIGIN = AFTER(ITCM,MODULE_03), LENGTH = 0x0 + arena.DTCM (RW) : ORIGIN = AFTER(DTCM), LENGTH = 0x0 + binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files + check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check + check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check + } SECTIONS { #include "undefined_syms.txt" - .text : AT (0x0) { + .arm9 : { + SDK_STATIC_START = .; secure.o (.text) crt0.o (.text) crt0.o (.version) @@ -144,6 +155,7 @@ SECTIONS { GX_asm.o (.text) OS_irqHandler.o (.text) OS_irqTable.o (.text) + OS_interrupt_asm.o (.text) OS_interrupt.o (.text) OS_spinLock.o (.text) OS_printf.o (.text) @@ -203,194 +215,224 @@ SECTIONS { libc.o (.text) /* MWCC library */ libmwcc.o (.text) - } > .text - - .data : AT (0xEC710) { rom2.o (.data) string_util.o (.data) rom2_2.o (.data) - } > .data + SDK_STATIC_END = .; + SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; + } > arm9 - SDK_STATIC_BSS_START = .; - SDK_STATIC_BSS_END = SDK_STATIC_BSS_START + 0xd0540; + .arm9.bss : + { + SDK_STATIC_BSS_START = .; + /* 0x02106FA0 */ gBacklightTop = SDK_STATIC_BSS_START; + /* 0x02106FA0 */ gBacklightTop_2 = gBacklightTop + 0x0; + /* 0x021C48B8 */ gUnknown21C48B8 = gBacklightTop_2 + 0xBD918; + /* 0x021C4918 */ gUnk021C4918 = gUnknown21C48B8 + 0x60; + /* 0x021C8C70 */ gUnk021C8C70 = gUnk021C4918 + 0x4358; + /* 0x021D341C */ OSi_IrqCallbackInfo = gUnk021C8C70 + 0xA7AC; + /* 0x021D347C */ isInitialized = OSi_IrqCallbackInfo + 0x60; + /* 0x021D3480 */ OSi_StackForDestructor = isInitialized + 0x4; + /* 0x021D3484 */ OSi_RescheduleCount = OSi_StackForDestructor + 0x4; + /* 0x021D3488 */ OSi_ThreadIdCount = OSi_RescheduleCount + 0x4; + /* 0x021D348C */ OSi_SystemCallbackInSwitchThread = OSi_ThreadIdCount + 0x4; + /* 0x021D3490 */ OSi_CurrentThreadPtr = OSi_SystemCallbackInSwitchThread + 0x4; + /* 0x021D3494 */ OSi_IsThreadInitialized = OSi_CurrentThreadPtr + 0x4; + /* 0x021D3498 */ OSi_ThreadInfo = OSi_IsThreadInitialized + 0x4; + /* 0x021D34A8 */ OSi_IdleThread = OSi_ThreadInfo + 0x10; + /* 0x021D3568 */ OSi_LauncherThread = OSi_IdleThread + 0xC0; + /* 0x021D3628 */ OSi_IdleThreadStack = OSi_LauncherThread + 0xC0; + /* 0x021D36F0 */ OSi_Initialized = OSi_IdleThreadStack + 0xC8; + /* 0x021D36F4 */ OSi_MainExArenaEnabled = OSi_Initialized + 0x4; + /* 0x021D36F8 */ OSiHeapInfo = OSi_MainExArenaEnabled + 0x4; + /* 0x021D371C */ OSi_UserExceptionHandler = OSiHeapInfo + 0x24; + /* 0x021D3720 */ OSi_UserExceptionHandlerArg = OSi_UserExceptionHandler + 0x4; + /* 0x021D3724 */ OSi_DebuggerHandler = OSi_UserExceptionHandlerArg + 0x4; + /* 0x021D3728 */ OSi_ExContext = OSi_DebuggerHandler + 0x4; + /* 0x021D37A8 */ OSi_TimerReserved = OSi_ExContext + 0x80; + /* 0x021D37AC */ OSi_UseTick = OSi_TimerReserved + 0x4; + /* 0x021D37B0 */ OSi_NeedResetTimer = OSi_UseTick + 0x4; + /* 0x021D37B4 */ OSi_TickCounter = OSi_NeedResetTimer + 0x4; + /* 0x021D37BC */ OSi_UseAlarm = OSi_TickCounter + 0x8; + /* 0x021D37C0 */ OSi_AlarmQueue = OSi_UseAlarm + 0x4; + /* 0x021D37C8 */ OSi_UseVAlarm = OSi_AlarmQueue + 0x8; + /* 0x021D37CC */ OSi_PreviousVCount = OSi_UseVAlarm + 0x4; + /* 0x021D37D0 */ OSi_VFrameCount = OSi_PreviousVCount + 0x4; + /* 0x021D37D4 */ OSi_VAlarmQueue = OSi_VFrameCount + 0x4; + /* 0x021D37DC */ OSi_IsInitReset = OSi_VAlarmQueue + 0x8; + /* 0x021D37E0 */ OSi_IsResetOccurred = OSi_IsInitReset + 0x4; + /* 0x021D37E4 */ OSi_vramExclusive = OSi_IsResetOccurred + 0x4; + /* 0x021D37E8 */ OSi_vramLockId = OSi_vramExclusive + 0x4; + /* 0x021D55C0 */ cardi_common = OSi_vramLockId + 0x1DD8; + /* 0x021D74E0 */ SDK_STATIC_BSS_END = cardi_common + 0x1F20; + SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; + } >> arm9 - SDK_AUTOLOAD_START = .; + SDK_AUTOLOAD_START = SDK_STATIC_END; + SDK_AUTOLOAD_SIZE = 0; - .itcm : AT (0x106FA0) + .ITCM : { - SDK_AUTOLOAD_ITCM_START = .; + . = ALIGN(32); + SDK_AUTOLOAD.ITCM.START = .; arm9_itcm.o (.itcm) - SDK_AUTOLOAD_ITCM_END = .; - . = 0x01FF8720; - SDK_SECTION_ARENA_ITCM_START = .; - } > .itcm + . = ALIGN(32); + SDK_AUTOLOAD.ITCM.END = .; + SDK_AUTOLOAD.ITCM.SIZE = SDK_AUTOLOAD.ITCM.END - SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.ITCM.SIZE; + } > ITCM + + .ITCM.bss : + { + . = ALIGN(32); + SDK_AUTOLOAD.ITCM.BSS_START = .; + . = . + 0; + . = ALIGN(32); + SDK_AUTOLOAD.ITCM.BSS_END = .; + SDK_AUTOLOAD.ITCM.BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_END - SDK_AUTOLOAD.ITCM.BSS_START; + } >> ITCM - .dtcm : AT (0x1076A0) { - SDK_AUTOLOAD_DTCM_START = .; + .DTCM : { + . = ALIGN(32); + SDK_AUTOLOAD.DTCM.START = .; OS_irqTable.o (.dtcm) OS_irqHandler.o (.dtcm) - SDK_AUTOLOAD_DTCM_END = .; - SDK_SECTION_ARENA_DTCM_START = 0x027E0080; - } > .dtcm - - .autoload : AT (0x107700) { - WRITEW SDK_AUTOLOAD_ITCM_START; - WRITEW SDK_AUTOLOAD_ITCM_SIZE; - WRITEW SDK_AUTOLOAD_ITCM_BSS_SIZE; - WRITEW SDK_AUTOLOAD_DTCM_START; - WRITEW SDK_AUTOLOAD_DTCM_SIZE; - WRITEW SDK_AUTOLOAD_DTCM_BSS_SIZE; - WRITEW SDK_AUTOLOAD_EXT_START; - WRITEW SDK_AUTOLOAD_EXT_SIZE; - WRITEW SDK_AUTOLOAD_EXT_BSS_SIZE; - } > .autoload - - .footer : AT (0x107724) { + . = ALIGN(32); + SDK_AUTOLOAD.DTCM.END = .; + SDK_AUTOLOAD.DTCM.SIZE = SDK_AUTOLOAD.DTCM.END - SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.DTCM.SIZE; + } > DTCM + + .DTCM.bss : + { + . = ALIGN(32); + SDK_AUTOLOAD.DTCM.BSS_START = .; + OS_irqTable.o (.bss) + SDK_AUTOLOAD.DTCM.BSS_END = .; + SDK_AUTOLOAD.DTCM.BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_END - SDK_AUTOLOAD.DTCM.BSS_START; + } >> DTCM + + .EXT : { + SDK_AUTOLOAD.EXT.START = .; + SDK_AUTOLOAD.EXT.END = .; + SDK_AUTOLOAD.EXT.SIZE = SDK_AUTOLOAD.EXT.END - SDK_AUTOLOAD.EXT.START; + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.EXT.SIZE; + } > EXT + + .EXT.bss : { + SDK_AUTOLOAD.EXT.BSS_START = .; + SDK_AUTOLOAD.EXT.BSS_END = .; + SDK_AUTOLOAD.EXT.BSS_SIZE = SDK_AUTOLOAD.EXT.BSS_END - SDK_AUTOLOAD.EXT.BSS_START; + } >> EXT + + SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; + SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; + SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; + SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; + SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; + SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; + SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; + SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; + SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; + SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; + + .binary.AUTOLOAD_INFO : { + WRITEW ADDR(.ITCM); + WRITEW SDK_AUTOLOAD.ITCM.SIZE; + WRITEW SDK_AUTOLOAD.ITCM.BSS_SIZE; + WRITEW ADDR(.DTCM); + WRITEW SDK_AUTOLOAD.DTCM.SIZE; + WRITEW SDK_AUTOLOAD.DTCM.BSS_SIZE; + WRITEW ADDR(.EXT); + WRITEW SDK_AUTOLOAD.EXT.SIZE; + WRITEW SDK_AUTOLOAD.EXT.BSS_SIZE; + } > binary.AUTOLOAD_INFO + + SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; + SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); + + .binary.STATIC_FOOTER : { WRITEW 0xDEC00621; - WRITEW _start_ModuleParams - ADDR(.text); + WRITEW _start_ModuleParams - ADDR(arm9); WRITEW 0; - } > .footer - - .overlay : AT (0x107800) { - OVERLAY_TABLE(SDK_MODULE_00, 0) - OVERLAY_TABLE(SDK_MODULE_01, 1) - OVERLAY_TABLE(SDK_MODULE_02, 2) - OVERLAY_TABLE(SDK_MODULE_03, 3) - OVERLAY_TABLE(SDK_MODULE_04, 4) - OVERLAY_TABLE(SDK_MODULE_05, 5) - OVERLAY_TABLE(SDK_MODULE_06, 6) - OVERLAY_TABLE(SDK_MODULE_07, 7) - OVERLAY_TABLE(SDK_MODULE_08, 8) - OVERLAY_TABLE(SDK_MODULE_09, 9) - OVERLAY_TABLE(SDK_MODULE_10, 10) - OVERLAY_TABLE(SDK_MODULE_11, 11) - OVERLAY_TABLE(SDK_MODULE_12, 12) - OVERLAY_TABLE(SDK_MODULE_13, 13) - OVERLAY_TABLE(SDK_MODULE_14, 14) - OVERLAY_TABLE(SDK_MODULE_15, 15) - OVERLAY_TABLE(SDK_MODULE_16, 16) - OVERLAY_TABLE(SDK_MODULE_17, 17) - OVERLAY_TABLE(SDK_MODULE_18, 18) - OVERLAY_TABLE(SDK_MODULE_19, 19) - OVERLAY_TABLE(SDK_MODULE_20, 20) - OVERLAY_TABLE(SDK_MODULE_21, 21) - OVERLAY_TABLE(SDK_MODULE_22, 22) - OVERLAY_TABLE(SDK_MODULE_23, 23) - OVERLAY_TABLE(SDK_MODULE_24, 24) - OVERLAY_TABLE(SDK_MODULE_25, 25) - OVERLAY_TABLE(SDK_MODULE_26, 26) - OVERLAY_TABLE(SDK_MODULE_27, 27) - OVERLAY_TABLE(SDK_MODULE_28, 28) - OVERLAY_TABLE(SDK_MODULE_29, 29) - OVERLAY_TABLE(SDK_MODULE_30, 30) - OVERLAY_TABLE(SDK_MODULE_31, 31) - OVERLAY_TABLE(SDK_MODULE_32, 32) - OVERLAY_TABLE(SDK_MODULE_33, 33) - OVERLAY_TABLE(SDK_MODULE_34, 34) - OVERLAY_TABLE(SDK_MODULE_35, 35) - OVERLAY_TABLE(SDK_MODULE_36, 36) - OVERLAY_TABLE(SDK_MODULE_37, 37) - OVERLAY_TABLE(SDK_MODULE_38, 38) - OVERLAY_TABLE(SDK_MODULE_39, 39) - OVERLAY_TABLE(SDK_MODULE_40, 40) - OVERLAY_TABLE(SDK_MODULE_41, 41) - OVERLAY_TABLE(SDK_MODULE_42, 42) - OVERLAY_TABLE(SDK_MODULE_43, 43) - OVERLAY_TABLE(SDK_MODULE_44, 44) - OVERLAY_TABLE(SDK_MODULE_45, 45) - OVERLAY_TABLE(SDK_MODULE_46, 46) - OVERLAY_TABLE(SDK_MODULE_47, 47) - OVERLAY_TABLE(SDK_MODULE_48, 48) - OVERLAY_TABLE(SDK_MODULE_49, 49) - OVERLAY_TABLE(SDK_MODULE_50, 50) - OVERLAY_TABLE(SDK_MODULE_51, 51) - OVERLAY_TABLE(SDK_MODULE_52, 52) - OVERLAY_TABLE(SDK_MODULE_53, 53) - OVERLAY_TABLE(SDK_MODULE_54, 54) - OVERLAY_TABLE(SDK_MODULE_55, 55) - OVERLAY_TABLE(SDK_MODULE_56, 56) - OVERLAY_TABLE(SDK_MODULE_57, 57) - OVERLAY_TABLE(SDK_MODULE_58, 58) - OVERLAY_TABLE(SDK_MODULE_59, 59) - OVERLAY_TABLE(SDK_MODULE_60, 60) - OVERLAY_TABLE(SDK_MODULE_61, 61) - OVERLAY_TABLE(SDK_MODULE_62, 62) - OVERLAY_TABLE(SDK_MODULE_63, 63) - OVERLAY_TABLE(SDK_MODULE_64, 64) - OVERLAY_TABLE(SDK_MODULE_65, 65) - OVERLAY_TABLE(SDK_MODULE_66, 66) - OVERLAY_TABLE(SDK_MODULE_67, 67) - OVERLAY_TABLE(SDK_MODULE_68, 68) - OVERLAY_TABLE(SDK_MODULE_69, 69) - OVERLAY_TABLE(SDK_MODULE_70, 70) - OVERLAY_TABLE(SDK_MODULE_71, 71) - OVERLAY_TABLE(SDK_MODULE_72, 72) - OVERLAY_TABLE(SDK_MODULE_73, 73) - OVERLAY_TABLE(SDK_MODULE_74, 74) - OVERLAY_TABLE(SDK_MODULE_75, 75) - OVERLAY_TABLE(SDK_MODULE_76, 76) - OVERLAY_TABLE(SDK_MODULE_77, 77) - OVERLAY_TABLE(SDK_MODULE_78, 78) - OVERLAY_TABLE(SDK_MODULE_79, 79) - OVERLAY_TABLE(SDK_MODULE_80, 80) - OVERLAY_TABLE(SDK_MODULE_81, 81) - OVERLAY_TABLE(SDK_MODULE_82, 82) - OVERLAY_TABLE(SDK_MODULE_83, 83) - OVERLAY_TABLE(SDK_MODULE_84, 84) - OVERLAY_TABLE(SDK_MODULE_85, 85) - OVERLAY_TABLE(SDK_MODULE_86, 86) - } > .overlay - - .MODULE.00 : AT (0x108400) + } > binary.STATIC_FOOTER + + .MODULE.00 : { + SDK_OVERLAY.MODULE_00.START = .; module_00_dummy.o (.text) module_00_dummy.o (.sdata) module_00_dummy.o (.data) + SDK_OVERLAY.MODULE_00.END = .; + SDK_OVERLAY.MODULE_00.SIZE = SDK_OVERLAY.MODULE_00.END - SDK_OVERLAY.MODULE_00.START; } > MODULE_00 .MODULE.00.bss : { + SDK_OVERLAY.MODULE_00.BSS_START = .; module_00_dummy.o (.sbss) module_00_dummy.o (.bss) + SDK_OVERLAY.MODULE_00.BSS_END = .; + SDK_OVERLAY.MODULE_00.BSS_SIZE = SDK_OVERLAY.MODULE_00.BSS_END - SDK_OVERLAY.MODULE_00.BSS_START; } >> MODULE_00 - .MODULE.01 : AT (0x108600) + .MODULE.01 : { + SDK_OVERLAY.MODULE_01.START = .; module_01.o (.text) module_01.o (.sdata) module_01.o (.data) + SDK_OVERLAY.MODULE_01.END = .; + SDK_OVERLAY.MODULE_01.SIZE = SDK_OVERLAY.MODULE_01.END - SDK_OVERLAY.MODULE_01.START; } > MODULE_01 .MODULE.01.bss : { + SDK_OVERLAY.MODULE_01.BSS_START = .; module_01.o (.sbss) module_01.o (.bss) + SDK_OVERLAY.MODULE_01.BSS_END = .; + SDK_OVERLAY.MODULE_01.BSS_SIZE = SDK_OVERLAY.MODULE_01.BSS_END - SDK_OVERLAY.MODULE_01.BSS_START; } >> MODULE_01 - .MODULE.02 : AT (0x108800) + .MODULE.02 : { + SDK_OVERLAY.MODULE_02.START = .; module_02_dummy.o (.text) module_02_dummy.o (.sdata) module_02_dummy.o (.data) + SDK_OVERLAY.MODULE_02.END = .; + SDK_OVERLAY.MODULE_02.SIZE = SDK_OVERLAY.MODULE_02.END - SDK_OVERLAY.MODULE_02.START; } > MODULE_02 .MODULE.02.bss : { + SDK_OVERLAY.MODULE_02.BSS_START = .; module_02_dummy.o (.sbss) module_02_dummy.o (.bss) + SDK_OVERLAY.MODULE_02.BSS_END = .; + SDK_OVERLAY.MODULE_02.BSS_SIZE = SDK_OVERLAY.MODULE_02.BSS_END - SDK_OVERLAY.MODULE_02.BSS_START; } >> MODULE_02 - .MODULE.03 : AT (0x108A00) + .MODULE.03 : { + SDK_OVERLAY.MODULE_03.START = .; module_03_dummy.o (.text) module_03_dummy.o (.sdata) module_03_dummy.o (.data) + SDK_OVERLAY.MODULE_03.END = .; + SDK_OVERLAY.MODULE_03.SIZE = SDK_OVERLAY.MODULE_03.END - SDK_OVERLAY.MODULE_03.START; } > MODULE_03 .MODULE.03.bss : { + SDK_OVERLAY.MODULE_03.BSS_START = .; module_03_dummy.o (.sbss) module_03_dummy.o (.bss) + SDK_OVERLAY.MODULE_03.BSS_END = .; + SDK_OVERLAY.MODULE_03.BSS_SIZE = SDK_OVERLAY.MODULE_03.BSS_END - SDK_OVERLAY.MODULE_03.BSS_START; } >> MODULE_03 - .MODULE.04 : AT (0x108C00) + .MODULE.04 : { + SDK_OVERLAY.MODULE_04.START = .; thumb_04.o (.text) arm_04.o (.text) thumb_04.o (.sdata) @@ -399,177 +441,1820 @@ SECTIONS { arm_04.o (.rodata) thumb_04.o (.data) arm_04.o (.data) + SDK_OVERLAY.MODULE_04.END = .; + SDK_OVERLAY.MODULE_04.SIZE = SDK_OVERLAY.MODULE_04.END - SDK_OVERLAY.MODULE_04.START; } > MODULE_04 .MODULE.04.bss : { + SDK_OVERLAY.MODULE_04.BSS_START = .; thumb_04.o (.sbss) arm_04.o (.sbss) thumb_04.o (.bss) arm_04.o (.bss) + SDK_OVERLAY.MODULE_04.BSS_END = .; + SDK_OVERLAY.MODULE_04.BSS_SIZE = SDK_OVERLAY.MODULE_04.BSS_END - SDK_OVERLAY.MODULE_04.BSS_START; } >> MODULE_04 - .MODULE.05 : AT (0x141400) + .MODULE.05 : { + SDK_OVERLAY.MODULE_05.START = .; module_05.o (.text) module_05.o (.sdata) module_05.o (.data) + SDK_OVERLAY.MODULE_05.END = .; + SDK_OVERLAY.MODULE_05.SIZE = SDK_OVERLAY.MODULE_05.END - SDK_OVERLAY.MODULE_05.START; } > MODULE_05 .MODULE.05.bss : { + SDK_OVERLAY.MODULE_05.BSS_START = .; module_05.o (.sbss) module_05.o (.bss) + SDK_OVERLAY.MODULE_05.BSS_END = .; + SDK_OVERLAY.MODULE_05.BSS_SIZE = SDK_OVERLAY.MODULE_05.BSS_END - SDK_OVERLAY.MODULE_05.BSS_START; } >> MODULE_05 - .MODULE.06 : AT (0x167600) + .MODULE.06 : { + SDK_OVERLAY.MODULE_06.START = .; module_06.o (.text) module_06.o (.sdata) module_06.o (.data) + SDK_OVERLAY.MODULE_06.END = .; + SDK_OVERLAY.MODULE_06.SIZE = SDK_OVERLAY.MODULE_06.END - SDK_OVERLAY.MODULE_06.START; } > MODULE_06 .MODULE.06.bss : { + SDK_OVERLAY.MODULE_06.BSS_START = .; module_06.o (.sbss) module_06.o (.bss) + SDK_OVERLAY.MODULE_06.BSS_END = .; + SDK_OVERLAY.MODULE_06.BSS_SIZE = SDK_OVERLAY.MODULE_06.BSS_END - SDK_OVERLAY.MODULE_06.BSS_START; } >> MODULE_06 - .MODULE.07 : AT (0x180400) + .MODULE.07 : { + SDK_OVERLAY.MODULE_07.START = .; module_07.o (.text) module_07.o (.sdata) module_07.o (.data) + SDK_OVERLAY.MODULE_07.END = .; + SDK_OVERLAY.MODULE_07.SIZE = SDK_OVERLAY.MODULE_07.END - SDK_OVERLAY.MODULE_07.START; } > MODULE_07 .MODULE.07.bss : { + SDK_OVERLAY.MODULE_07.BSS_START = .; module_07.o (.sbss) module_07.o (.bss) + SDK_OVERLAY.MODULE_07.BSS_END = .; + SDK_OVERLAY.MODULE_07.BSS_SIZE = SDK_OVERLAY.MODULE_07.BSS_END - SDK_OVERLAY.MODULE_07.BSS_START; } >> MODULE_07 - .MODULE.08 : AT (0x183800) + .MODULE.08 : { + SDK_OVERLAY.MODULE_08.START = .; module_08.o (.text) module_08.o (.sdata) module_08.o (.data) + SDK_OVERLAY.MODULE_08.END = .; + SDK_OVERLAY.MODULE_08.SIZE = SDK_OVERLAY.MODULE_08.END - SDK_OVERLAY.MODULE_08.START; } > MODULE_08 .MODULE.08.bss : { + SDK_OVERLAY.MODULE_08.BSS_START = .; module_08.o (.sbss) module_08.o (.bss) + SDK_OVERLAY.MODULE_08.BSS_END = .; + SDK_OVERLAY.MODULE_08.BSS_SIZE = SDK_OVERLAY.MODULE_08.BSS_END - SDK_OVERLAY.MODULE_08.BSS_START; } >> MODULE_08 - .MODULE.09 : AT (0x19F000) + .MODULE.09 : { + SDK_OVERLAY.MODULE_09.START = .; module_09.o (.text) module_09.o (.sdata) module_09.o (.data) + SDK_OVERLAY.MODULE_09.END = .; + SDK_OVERLAY.MODULE_09.SIZE = SDK_OVERLAY.MODULE_09.END - SDK_OVERLAY.MODULE_09.START; } > MODULE_09 .MODULE.09.bss : { + SDK_OVERLAY.MODULE_09.BSS_START = .; module_09.o (.sbss) module_09.o (.bss) + SDK_OVERLAY.MODULE_09.BSS_END = .; + SDK_OVERLAY.MODULE_09.BSS_SIZE = SDK_OVERLAY.MODULE_09.BSS_END - SDK_OVERLAY.MODULE_09.BSS_START; } >> MODULE_09 - .MODULE.10 : AT (0x1A9200) + .MODULE.10 : { + SDK_OVERLAY.MODULE_10.START = .; module_10_dummy.o (.text) module_10_dummy.o (.sdata) module_10_dummy.o (.data) + SDK_OVERLAY.MODULE_10.END = .; + SDK_OVERLAY.MODULE_10.SIZE = SDK_OVERLAY.MODULE_10.END - SDK_OVERLAY.MODULE_10.START; } > MODULE_10 .MODULE.10.bss : { + SDK_OVERLAY.MODULE_10.BSS_START = .; module_10_dummy.o (.sbss) module_10_dummy.o (.bss) + SDK_OVERLAY.MODULE_10.BSS_END = .; + SDK_OVERLAY.MODULE_10.BSS_SIZE = SDK_OVERLAY.MODULE_10.BSS_END - SDK_OVERLAY.MODULE_10.BSS_START; } >> MODULE_10 - .MODULE.11 : AT (0x1A9400) + .MODULE.11 : { + SDK_OVERLAY.MODULE_11.START = .; module_11.o (.text) module_11.o (.sdata) module_11.o (.data) + SDK_OVERLAY.MODULE_11.END = .; + SDK_OVERLAY.MODULE_11.SIZE = SDK_OVERLAY.MODULE_11.END - SDK_OVERLAY.MODULE_11.START; } > MODULE_11 .MODULE.11.bss : { + SDK_OVERLAY.MODULE_11.BSS_START = .; module_11.o (.sbss) module_11.o (.bss) + SDK_OVERLAY.MODULE_11.BSS_END = .; + SDK_OVERLAY.MODULE_11.BSS_SIZE = SDK_OVERLAY.MODULE_11.BSS_END - SDK_OVERLAY.MODULE_11.BSS_START; } >> MODULE_11 - OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o) - OVERLAY_FILE(13, 0x1F5200, FILE_1F9200.o) - OVERLAY_FILE(14, 0x223E00, FILE_227E00.o) - OVERLAY_FILE(15, 0x233400, FILE_237400.o) - OVERLAY_FILE(16, 0x237C00, FILE_23BC00.o) - OVERLAY_FILE(17, 0x260200, FILE_264200.o) - OVERLAY_FILE(18, 0x267200, FILE_26B200.o) - OVERLAY_FILE(19, 0x27F000, FILE_283000.o) - OVERLAY_FILE(20, 0x27F200, FILE_283200.o) - OVERLAY_FILE(21, 0x281600, FILE_285600.o) - OVERLAY_FILE(22, 0x281C00, FILE_285C00.o) - OVERLAY_FILE(23, 0x282C00, FILE_286C00.o) - OVERLAY_FILE(24, 0x284600, FILE_288600.o) - OVERLAY_FILE(25, 0x285000, FILE_289000.o) - OVERLAY_FILE(26, 0x285600, FILE_289600.o) - OVERLAY_FILE(27, 0x285E00, FILE_289E00.o) - OVERLAY_FILE(28, 0x286A00, FILE_28AA00.o) - OVERLAY_FILE(29, 0x288200, FILE_28C200.o) - OVERLAY_FILE(30, 0x288C00, FILE_28CC00.o) - OVERLAY_FILE(31, 0x289200, FILE_28D200.o) - OVERLAY_FILE(32, 0x289800, FILE_28D800.o) - OVERLAY_FILE(33, 0x289E00, FILE_28DE00.o) - OVERLAY_FILE(34, 0x28A200, FILE_28E200.o) - OVERLAY_FILE(35, 0x28A800, FILE_28E800.o) - OVERLAY_FILE(36, 0x28B200, FILE_28F200.o) - OVERLAY_FILE(37, 0x28C000, FILE_290000.o) - OVERLAY_FILE(38, 0x28C600, FILE_290600.o) - OVERLAY_FILE(39, 0x28D200, FILE_291200.o) - OVERLAY_FILE(40, 0x28E000, FILE_292000.o) - OVERLAY_FILE(41, 0x28EE00, FILE_292E00.o) - OVERLAY_FILE(42, 0x290000, FILE_294000.o) - OVERLAY_FILE(43, 0x290A00, FILE_294A00.o) - OVERLAY_FILE(44, 0x291400, FILE_295400.o) - OVERLAY_FILE(45, 0x291A00, FILE_295A00.o) - OVERLAY_FILE(46, 0x292400, FILE_296400.o) - OVERLAY_FILE(47, 0x292800, FILE_296800.o) - OVERLAY_FILE(48, 0x293600, FILE_297600.o) - OVERLAY_FILE(49, 0x294000, FILE_298000.o) - OVERLAY_FILE(50, 0x294600, FILE_298600.o) - OVERLAY_FILE(51, 0x294A00, FILE_298A00.o) - OVERLAY_FILE(52, 0x295A00, FILE_299A00.o) - OVERLAY_FILE(53, 0x295E00, FILE_299E00.o) - OVERLAY_FILE(54, 0x298400, FILE_29C400.o) - OVERLAY_FILE(55, 0x29A800, FILE_29E800.o) - OVERLAY_FILE(56, 0x29DA00, FILE_2A1A00.o) - OVERLAY_FILE(57, 0x2A2200, FILE_2A6200.o) - OVERLAY_FILE(58, 0x2A4800, FILE_2A8800.o) - OVERLAY_FILE(59, 0x2A5E00, FILE_2A9E00.o) - OVERLAY_FILE(60, 0x2A8C00, FILE_2ACC00.o) - OVERLAY_FILE(61, 0x2A9A00, FILE_2ADA00.o) - OVERLAY_FILE(62, 0x2AAC00, FILE_2AEC00.o) - OVERLAY_FILE(63, 0x2AEA00, FILE_2B2A00.o) - OVERLAY_FILE(64, 0x2B3600, FILE_2B7600.o) - OVERLAY_FILE(65, 0x2B5400, FILE_2B9400.o) - OVERLAY_FILE(66, 0x2B8400, FILE_2BC400.o) - OVERLAY_FILE(67, 0x2BAC00, FILE_2BEC00.o) - OVERLAY_FILE(68, 0x2BD200, FILE_2C1200.o) - OVERLAY_FILE(69, 0x2BE800, FILE_2C2800.o) - OVERLAY_FILE(70, 0x2C0C00, FILE_2C4C00.o) - OVERLAY_FILE(71, 0x2C1C00, FILE_2C5C00.o) - OVERLAY_FILE(72, 0x2C5C00, FILE_2C9C00.o) - OVERLAY_FILE(73, 0x2C5E00, FILE_2C9E00.o) - OVERLAY_FILE(74, 0x2CAA00, FILE_2CEA00.o) - OVERLAY_FILE(75, 0x2CBE00, FILE_2CFE00.o) - OVERLAY_FILE(76, 0x2D1C00, FILE_2D5C00.o) - OVERLAY_FILE(77, 0x2D3C00, FILE_2D7C00.o) - OVERLAY_FILE(78, 0x2D5800, FILE_2D9800.o) - OVERLAY_FILE(79, 0x2D5E00, FILE_2D9E00.o) - OVERLAY_FILE(80, 0x2DB200, FILE_2DF200.o) - OVERLAY_FILE(81, 0x2E5A00, FILE_2E9A00.o) - OVERLAY_FILE(82, 0x2EB000, FILE_2EF000.o) - OVERLAY_FILE(83, 0x2ED600, FILE_2F1600.o) - OVERLAY_FILE(84, 0x2FBA00, FILE_2FFA00.o) - OVERLAY_FILE(85, 0x2FF400, FILE_303400.o) - OVERLAY_FILE(86, 0x308600, FILE_30C600.o) + .MODULE.12 : + { + SDK_OVERLAY.MODULE_12.START = .; + module_12.o (.text) + module_12.o (.sdata) + module_12.o (.data) + SDK_OVERLAY.MODULE_12.END = .; + SDK_OVERLAY.MODULE_12.SIZE = SDK_OVERLAY.MODULE_12.END - SDK_OVERLAY.MODULE_12.START; + } > MODULE_12 + + .MODULE.12.bss : + { + SDK_OVERLAY.MODULE_12.BSS_START = .; + module_12.o (.sbss) + module_12.o (.bss) + SDK_OVERLAY.MODULE_12.BSS_END = .; + SDK_OVERLAY.MODULE_12.BSS_SIZE = SDK_OVERLAY.MODULE_12.BSS_END - SDK_OVERLAY.MODULE_12.BSS_START; + } >> MODULE_12 + + .MODULE.13 : + { + SDK_OVERLAY.MODULE_13.START = .; + module_13_init.o (.text) + module_13_arm1.o (.text) + module_13_thumb.o (.text) + module_13_arm2.o (.text) + module_13_init.o (.sdata) + module_13_arm1.o (.sdata) + module_13_thumb.o (.sdata) + module_13_arm2.o (.sdata) + module_13_init.o (.data) + module_13_arm1.o (.data) + module_13_thumb.o (.data) + module_13_arm2.o (.data) + SDK_OVERLAY.MODULE_13.END = .; + SDK_OVERLAY.MODULE_13.SIZE = SDK_OVERLAY.MODULE_13.END - SDK_OVERLAY.MODULE_13.START; + } > MODULE_13 + + .MODULE.13.bss : + { + SDK_OVERLAY.MODULE_13.BSS_START = .; + module_13_init.o (.sbss) + module_13_arm1.o (.sbss) + module_13_thumb.o (.sbss) + module_13_arm2.o (.sbss) + module_13_init.o (.bss) + module_13_arm1.o (.bss) + module_13_thumb.o (.bss) + module_13_arm2.o (.bss) + SDK_OVERLAY.MODULE_13.BSS_END = .; + SDK_OVERLAY.MODULE_13.BSS_SIZE = SDK_OVERLAY.MODULE_13.BSS_END - SDK_OVERLAY.MODULE_13.BSS_START; + } >> MODULE_13 + + .MODULE.14 : + { + SDK_OVERLAY.MODULE_14.START = .; + module_14.o (.text) + module_14.o (.sdata) + module_14.o (.data) + SDK_OVERLAY.MODULE_14.END = .; + SDK_OVERLAY.MODULE_14.SIZE = SDK_OVERLAY.MODULE_14.END - SDK_OVERLAY.MODULE_14.START; + } > MODULE_14 + + .MODULE.14.bss : + { + SDK_OVERLAY.MODULE_14.BSS_START = .; + module_14.o (.sbss) + module_14.o (.bss) + SDK_OVERLAY.MODULE_14.BSS_END = .; + SDK_OVERLAY.MODULE_14.BSS_SIZE = SDK_OVERLAY.MODULE_14.BSS_END - SDK_OVERLAY.MODULE_14.BSS_START; + } >> MODULE_14 + + .MODULE.15 : + { + SDK_OVERLAY.MODULE_15.START = .; + module_15.o (.text) + module_15.o (.sdata) + module_15.o (.data) + SDK_OVERLAY.MODULE_15.END = .; + SDK_OVERLAY.MODULE_15.SIZE = SDK_OVERLAY.MODULE_15.END - SDK_OVERLAY.MODULE_15.START; + } > MODULE_15 + + .MODULE.15.bss : + { + SDK_OVERLAY.MODULE_15.BSS_START = .; + module_15.o (.sbss) + module_15.o (.bss) + SDK_OVERLAY.MODULE_15.BSS_END = .; + SDK_OVERLAY.MODULE_15.BSS_SIZE = SDK_OVERLAY.MODULE_15.BSS_END - SDK_OVERLAY.MODULE_15.BSS_START; + } >> MODULE_15 + + .MODULE.16 : + { + SDK_OVERLAY.MODULE_16.START = .; + module_16.o (.text) + module_16.o (.sdata) + module_16.o (.data) + SDK_OVERLAY.MODULE_16.END = .; + SDK_OVERLAY.MODULE_16.SIZE = SDK_OVERLAY.MODULE_16.END - SDK_OVERLAY.MODULE_16.START; + } > MODULE_16 + + .MODULE.16.bss : + { + SDK_OVERLAY.MODULE_16.BSS_START = .; + module_16.o (.sbss) + module_16.o (.bss) + SDK_OVERLAY.MODULE_16.BSS_END = .; + SDK_OVERLAY.MODULE_16.BSS_SIZE = SDK_OVERLAY.MODULE_16.BSS_END - SDK_OVERLAY.MODULE_16.BSS_START; + } >> MODULE_16 + + .MODULE.17 : + { + SDK_OVERLAY.MODULE_17.START = .; + module_17.o (.text) + module_17.o (.sdata) + module_17.o (.data) + SDK_OVERLAY.MODULE_17.END = .; + SDK_OVERLAY.MODULE_17.SIZE = SDK_OVERLAY.MODULE_17.END - SDK_OVERLAY.MODULE_17.START; + } > MODULE_17 + + .MODULE.17.bss : + { + SDK_OVERLAY.MODULE_17.BSS_START = .; + module_17.o (.sbss) + module_17.o (.bss) + SDK_OVERLAY.MODULE_17.BSS_END = .; + SDK_OVERLAY.MODULE_17.BSS_SIZE = SDK_OVERLAY.MODULE_17.BSS_END - SDK_OVERLAY.MODULE_17.BSS_START; + } >> MODULE_17 + + .MODULE.18 : + { + SDK_OVERLAY.MODULE_18.START = .; + module_18.o (.text) + module_18.o (.sdata) + module_18.o (.data) + SDK_OVERLAY.MODULE_18.END = .; + SDK_OVERLAY.MODULE_18.SIZE = SDK_OVERLAY.MODULE_18.END - SDK_OVERLAY.MODULE_18.START; + } > MODULE_18 + + .MODULE.18.bss : + { + SDK_OVERLAY.MODULE_18.BSS_START = .; + module_18.o (.sbss) + module_18.o (.bss) + SDK_OVERLAY.MODULE_18.BSS_END = .; + SDK_OVERLAY.MODULE_18.BSS_SIZE = SDK_OVERLAY.MODULE_18.BSS_END - SDK_OVERLAY.MODULE_18.BSS_START; + } >> MODULE_18 + + .MODULE.19 : + { + SDK_OVERLAY.MODULE_19.START = .; + module_19.o (.text) + module_19.o (.sdata) + module_19.o (.data) + SDK_OVERLAY.MODULE_19.END = .; + SDK_OVERLAY.MODULE_19.SIZE = SDK_OVERLAY.MODULE_19.END - SDK_OVERLAY.MODULE_19.START; + } > MODULE_19 + + .MODULE.19.bss : + { + SDK_OVERLAY.MODULE_19.BSS_START = .; + module_19.o (.sbss) + module_19.o (.bss) + SDK_OVERLAY.MODULE_19.BSS_END = .; + SDK_OVERLAY.MODULE_19.BSS_SIZE = SDK_OVERLAY.MODULE_19.BSS_END - SDK_OVERLAY.MODULE_19.BSS_START; + } >> MODULE_19 + + .MODULE.20 : + { + SDK_OVERLAY.MODULE_20.START = .; + module_20.o (.text) + module_20.o (.sdata) + module_20.o (.data) + SDK_OVERLAY.MODULE_20.END = .; + SDK_OVERLAY.MODULE_20.SIZE = SDK_OVERLAY.MODULE_20.END - SDK_OVERLAY.MODULE_20.START; + } > MODULE_20 + + .MODULE.20.bss : + { + SDK_OVERLAY.MODULE_20.BSS_START = .; + module_20.o (.sbss) + module_20.o (.bss) + SDK_OVERLAY.MODULE_20.BSS_END = .; + SDK_OVERLAY.MODULE_20.BSS_SIZE = SDK_OVERLAY.MODULE_20.BSS_END - SDK_OVERLAY.MODULE_20.BSS_START; + } >> MODULE_20 + + .MODULE.21 : + { + SDK_OVERLAY.MODULE_21.START = .; + module_21.o (.text) + module_21.o (.sdata) + module_21.o (.data) + SDK_OVERLAY.MODULE_21.END = .; + SDK_OVERLAY.MODULE_21.SIZE = SDK_OVERLAY.MODULE_21.END - SDK_OVERLAY.MODULE_21.START; + } > MODULE_21 + + .MODULE.21.bss : + { + SDK_OVERLAY.MODULE_21.BSS_START = .; + module_21.o (.sbss) + module_21.o (.bss) + SDK_OVERLAY.MODULE_21.BSS_END = .; + SDK_OVERLAY.MODULE_21.BSS_SIZE = SDK_OVERLAY.MODULE_21.BSS_END - SDK_OVERLAY.MODULE_21.BSS_START; + } >> MODULE_21 + + .MODULE.22 : + { + SDK_OVERLAY.MODULE_22.START = .; + module_22.o (.text) + module_22.o (.sdata) + module_22.o (.data) + SDK_OVERLAY.MODULE_22.END = .; + SDK_OVERLAY.MODULE_22.SIZE = SDK_OVERLAY.MODULE_22.END - SDK_OVERLAY.MODULE_22.START; + } > MODULE_22 + + .MODULE.22.bss : + { + SDK_OVERLAY.MODULE_22.BSS_START = .; + module_22.o (.sbss) + module_22.o (.bss) + SDK_OVERLAY.MODULE_22.BSS_END = .; + SDK_OVERLAY.MODULE_22.BSS_SIZE = SDK_OVERLAY.MODULE_22.BSS_END - SDK_OVERLAY.MODULE_22.BSS_START; + } >> MODULE_22 + + .MODULE.23 : + { + SDK_OVERLAY.MODULE_23.START = .; + module_23.o (.text) + module_23.o (.sdata) + module_23.o (.data) + SDK_OVERLAY.MODULE_23.END = .; + SDK_OVERLAY.MODULE_23.SIZE = SDK_OVERLAY.MODULE_23.END - SDK_OVERLAY.MODULE_23.START; + } > MODULE_23 + + .MODULE.23.bss : + { + SDK_OVERLAY.MODULE_23.BSS_START = .; + module_23.o (.sbss) + module_23.o (.bss) + SDK_OVERLAY.MODULE_23.BSS_END = .; + SDK_OVERLAY.MODULE_23.BSS_SIZE = SDK_OVERLAY.MODULE_23.BSS_END - SDK_OVERLAY.MODULE_23.BSS_START; + } >> MODULE_23 + + .MODULE.24 : + { + SDK_OVERLAY.MODULE_24.START = .; + module_24.o (.text) + module_24.o (.sdata) + module_24.o (.data) + SDK_OVERLAY.MODULE_24.END = .; + SDK_OVERLAY.MODULE_24.SIZE = SDK_OVERLAY.MODULE_24.END - SDK_OVERLAY.MODULE_24.START; + } > MODULE_24 + + .MODULE.24.bss : + { + SDK_OVERLAY.MODULE_24.BSS_START = .; + module_24.o (.sbss) + module_24.o (.bss) + SDK_OVERLAY.MODULE_24.BSS_END = .; + SDK_OVERLAY.MODULE_24.BSS_SIZE = SDK_OVERLAY.MODULE_24.BSS_END - SDK_OVERLAY.MODULE_24.BSS_START; + } >> MODULE_24 + + .MODULE.25 : + { + SDK_OVERLAY.MODULE_25.START = .; + module_25.o (.text) + module_25.o (.sdata) + module_25.o (.data) + SDK_OVERLAY.MODULE_25.END = .; + SDK_OVERLAY.MODULE_25.SIZE = SDK_OVERLAY.MODULE_25.END - SDK_OVERLAY.MODULE_25.START; + } > MODULE_25 + + .MODULE.25.bss : + { + SDK_OVERLAY.MODULE_25.BSS_START = .; + module_25.o (.sbss) + module_25.o (.bss) + SDK_OVERLAY.MODULE_25.BSS_END = .; + SDK_OVERLAY.MODULE_25.BSS_SIZE = SDK_OVERLAY.MODULE_25.BSS_END - SDK_OVERLAY.MODULE_25.BSS_START; + } >> MODULE_25 + + .MODULE.26 : + { + SDK_OVERLAY.MODULE_26.START = .; + module_26.o (.text) + module_26.o (.sdata) + module_26.o (.data) + SDK_OVERLAY.MODULE_26.END = .; + SDK_OVERLAY.MODULE_26.SIZE = SDK_OVERLAY.MODULE_26.END - SDK_OVERLAY.MODULE_26.START; + } > MODULE_26 + + .MODULE.26.bss : + { + SDK_OVERLAY.MODULE_26.BSS_START = .; + module_26.o (.sbss) + module_26.o (.bss) + SDK_OVERLAY.MODULE_26.BSS_END = .; + SDK_OVERLAY.MODULE_26.BSS_SIZE = SDK_OVERLAY.MODULE_26.BSS_END - SDK_OVERLAY.MODULE_26.BSS_START; + } >> MODULE_26 + + .MODULE.27 : + { + SDK_OVERLAY.MODULE_27.START = .; + module_27.o (.text) + module_27.o (.sdata) + module_27.o (.data) + SDK_OVERLAY.MODULE_27.END = .; + SDK_OVERLAY.MODULE_27.SIZE = SDK_OVERLAY.MODULE_27.END - SDK_OVERLAY.MODULE_27.START; + } > MODULE_27 + + .MODULE.27.bss : + { + SDK_OVERLAY.MODULE_27.BSS_START = .; + module_27.o (.sbss) + module_27.o (.bss) + SDK_OVERLAY.MODULE_27.BSS_END = .; + SDK_OVERLAY.MODULE_27.BSS_SIZE = SDK_OVERLAY.MODULE_27.BSS_END - SDK_OVERLAY.MODULE_27.BSS_START; + } >> MODULE_27 + + .MODULE.28 : + { + SDK_OVERLAY.MODULE_28.START = .; + module_28.o (.text) + module_28.o (.sdata) + module_28.o (.data) + SDK_OVERLAY.MODULE_28.END = .; + SDK_OVERLAY.MODULE_28.SIZE = SDK_OVERLAY.MODULE_28.END - SDK_OVERLAY.MODULE_28.START; + } > MODULE_28 + + .MODULE.28.bss : + { + SDK_OVERLAY.MODULE_28.BSS_START = .; + module_28.o (.sbss) + module_28.o (.bss) + SDK_OVERLAY.MODULE_28.BSS_END = .; + SDK_OVERLAY.MODULE_28.BSS_SIZE = SDK_OVERLAY.MODULE_28.BSS_END - SDK_OVERLAY.MODULE_28.BSS_START; + } >> MODULE_28 + + .MODULE.29 : + { + SDK_OVERLAY.MODULE_29.START = .; + module_29.o (.text) + module_29.o (.sdata) + module_29.o (.data) + SDK_OVERLAY.MODULE_29.END = .; + SDK_OVERLAY.MODULE_29.SIZE = SDK_OVERLAY.MODULE_29.END - SDK_OVERLAY.MODULE_29.START; + } > MODULE_29 + + .MODULE.29.bss : + { + SDK_OVERLAY.MODULE_29.BSS_START = .; + module_29.o (.sbss) + module_29.o (.bss) + SDK_OVERLAY.MODULE_29.BSS_END = .; + SDK_OVERLAY.MODULE_29.BSS_SIZE = SDK_OVERLAY.MODULE_29.BSS_END - SDK_OVERLAY.MODULE_29.BSS_START; + } >> MODULE_29 + + .MODULE.30 : + { + SDK_OVERLAY.MODULE_30.START = .; + module_30.o (.text) + module_30.o (.sdata) + module_30.o (.data) + SDK_OVERLAY.MODULE_30.END = .; + SDK_OVERLAY.MODULE_30.SIZE = SDK_OVERLAY.MODULE_30.END - SDK_OVERLAY.MODULE_30.START; + } > MODULE_30 + + .MODULE.30.bss : + { + SDK_OVERLAY.MODULE_30.BSS_START = .; + module_30.o (.sbss) + module_30.o (.bss) + SDK_OVERLAY.MODULE_30.BSS_END = .; + SDK_OVERLAY.MODULE_30.BSS_SIZE = SDK_OVERLAY.MODULE_30.BSS_END - SDK_OVERLAY.MODULE_30.BSS_START; + } >> MODULE_30 + + .MODULE.31 : + { + SDK_OVERLAY.MODULE_31.START = .; + module_31.o (.text) + module_31.o (.sdata) + module_31.o (.data) + SDK_OVERLAY.MODULE_31.END = .; + SDK_OVERLAY.MODULE_31.SIZE = SDK_OVERLAY.MODULE_31.END - SDK_OVERLAY.MODULE_31.START; + } > MODULE_31 + + .MODULE.31.bss : + { + SDK_OVERLAY.MODULE_31.BSS_START = .; + module_31.o (.sbss) + module_31.o (.bss) + SDK_OVERLAY.MODULE_31.BSS_END = .; + SDK_OVERLAY.MODULE_31.BSS_SIZE = SDK_OVERLAY.MODULE_31.BSS_END - SDK_OVERLAY.MODULE_31.BSS_START; + } >> MODULE_31 + + .MODULE.32 : + { + SDK_OVERLAY.MODULE_32.START = .; + module_32.o (.text) + module_32.o (.sdata) + module_32.o (.data) + SDK_OVERLAY.MODULE_32.END = .; + SDK_OVERLAY.MODULE_32.SIZE = SDK_OVERLAY.MODULE_32.END - SDK_OVERLAY.MODULE_32.START; + } > MODULE_32 + + .MODULE.32.bss : + { + SDK_OVERLAY.MODULE_32.BSS_START = .; + module_32.o (.sbss) + module_32.o (.bss) + SDK_OVERLAY.MODULE_32.BSS_END = .; + SDK_OVERLAY.MODULE_32.BSS_SIZE = SDK_OVERLAY.MODULE_32.BSS_END - SDK_OVERLAY.MODULE_32.BSS_START; + } >> MODULE_32 + + .MODULE.33: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_33.START = .; + FILE_28DE00.o (.text) /* 0x289E00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_33.END = .; + SDK_OVERLAY.MODULE_33.SIZE = SDK_OVERLAY.MODULE_33.END - SDK_OVERLAY.MODULE_33.START; + } > MODULE_33 + + .MODULE.33.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_33.BSS_START = .; + FILE_28DE00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_33.BSS_END = .; + SDK_OVERLAY.MODULE_33.BSS_SIZE = SDK_OVERLAY.MODULE_33.BSS_END - SDK_OVERLAY.MODULE_33.BSS_START; + } >> MODULE_33 + + .MODULE.34: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_34.START = .; + FILE_28E200.o (.text) /* 0x28A200 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_34.END = .; + SDK_OVERLAY.MODULE_34.SIZE = SDK_OVERLAY.MODULE_34.END - SDK_OVERLAY.MODULE_34.START; + } > MODULE_34 + + .MODULE.34.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_34.BSS_START = .; + FILE_28E200.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_34.BSS_END = .; + SDK_OVERLAY.MODULE_34.BSS_SIZE = SDK_OVERLAY.MODULE_34.BSS_END - SDK_OVERLAY.MODULE_34.BSS_START; + } >> MODULE_34 + + .MODULE.35: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_35.START = .; + FILE_28E800.o (.text) /* 0x28A800 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_35.END = .; + SDK_OVERLAY.MODULE_35.SIZE = SDK_OVERLAY.MODULE_35.END - SDK_OVERLAY.MODULE_35.START; + } > MODULE_35 + + .MODULE.35.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_35.BSS_START = .; + FILE_28E800.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_35.BSS_END = .; + SDK_OVERLAY.MODULE_35.BSS_SIZE = SDK_OVERLAY.MODULE_35.BSS_END - SDK_OVERLAY.MODULE_35.BSS_START; + } >> MODULE_35 + + .MODULE.36: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_36.START = .; + FILE_28F200.o (.text) /* 0x28B200 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_36.END = .; + SDK_OVERLAY.MODULE_36.SIZE = SDK_OVERLAY.MODULE_36.END - SDK_OVERLAY.MODULE_36.START; + } > MODULE_36 + + .MODULE.36.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_36.BSS_START = .; + FILE_28F200.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_36.BSS_END = .; + SDK_OVERLAY.MODULE_36.BSS_SIZE = SDK_OVERLAY.MODULE_36.BSS_END - SDK_OVERLAY.MODULE_36.BSS_START; + } >> MODULE_36 + + .MODULE.37: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_37.START = .; + FILE_290000.o (.text) /* 0x28C000 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_37.END = .; + SDK_OVERLAY.MODULE_37.SIZE = SDK_OVERLAY.MODULE_37.END - SDK_OVERLAY.MODULE_37.START; + } > MODULE_37 + + .MODULE.37.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_37.BSS_START = .; + FILE_290000.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_37.BSS_END = .; + SDK_OVERLAY.MODULE_37.BSS_SIZE = SDK_OVERLAY.MODULE_37.BSS_END - SDK_OVERLAY.MODULE_37.BSS_START; + } >> MODULE_37 + + .MODULE.38: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_38.START = .; + FILE_290600.o (.text) /* 0x28C600 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_38.END = .; + SDK_OVERLAY.MODULE_38.SIZE = SDK_OVERLAY.MODULE_38.END - SDK_OVERLAY.MODULE_38.START; + } > MODULE_38 + + .MODULE.38.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_38.BSS_START = .; + FILE_290600.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_38.BSS_END = .; + SDK_OVERLAY.MODULE_38.BSS_SIZE = SDK_OVERLAY.MODULE_38.BSS_END - SDK_OVERLAY.MODULE_38.BSS_START; + } >> MODULE_38 + + .MODULE.39: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_39.START = .; + FILE_291200.o (.text) /* 0x28D200 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_39.END = .; + SDK_OVERLAY.MODULE_39.SIZE = SDK_OVERLAY.MODULE_39.END - SDK_OVERLAY.MODULE_39.START; + } > MODULE_39 + + .MODULE.39.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_39.BSS_START = .; + FILE_291200.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_39.BSS_END = .; + SDK_OVERLAY.MODULE_39.BSS_SIZE = SDK_OVERLAY.MODULE_39.BSS_END - SDK_OVERLAY.MODULE_39.BSS_START; + } >> MODULE_39 + + .MODULE.40: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_40.START = .; + FILE_292000.o (.text) /* 0x28E000 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_40.END = .; + SDK_OVERLAY.MODULE_40.SIZE = SDK_OVERLAY.MODULE_40.END - SDK_OVERLAY.MODULE_40.START; + } > MODULE_40 + + .MODULE.40.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_40.BSS_START = .; + FILE_292000.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_40.BSS_END = .; + SDK_OVERLAY.MODULE_40.BSS_SIZE = SDK_OVERLAY.MODULE_40.BSS_END - SDK_OVERLAY.MODULE_40.BSS_START; + } >> MODULE_40 + + .MODULE.41: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_41.START = .; + FILE_292E00.o (.text) /* 0x28EE00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_41.END = .; + SDK_OVERLAY.MODULE_41.SIZE = SDK_OVERLAY.MODULE_41.END - SDK_OVERLAY.MODULE_41.START; + } > MODULE_41 + + .MODULE.41.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_41.BSS_START = .; + FILE_292E00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_41.BSS_END = .; + SDK_OVERLAY.MODULE_41.BSS_SIZE = SDK_OVERLAY.MODULE_41.BSS_END - SDK_OVERLAY.MODULE_41.BSS_START; + } >> MODULE_41 + + .MODULE.42: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_42.START = .; + FILE_294000.o (.text) /* 0x290000 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_42.END = .; + SDK_OVERLAY.MODULE_42.SIZE = SDK_OVERLAY.MODULE_42.END - SDK_OVERLAY.MODULE_42.START; + } > MODULE_42 + + .MODULE.42.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_42.BSS_START = .; + FILE_294000.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_42.BSS_END = .; + SDK_OVERLAY.MODULE_42.BSS_SIZE = SDK_OVERLAY.MODULE_42.BSS_END - SDK_OVERLAY.MODULE_42.BSS_START; + } >> MODULE_42 + + .MODULE.43: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_43.START = .; + FILE_294A00.o (.text) /* 0x290A00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_43.END = .; + SDK_OVERLAY.MODULE_43.SIZE = SDK_OVERLAY.MODULE_43.END - SDK_OVERLAY.MODULE_43.START; + } > MODULE_43 + + .MODULE.43.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_43.BSS_START = .; + FILE_294A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_43.BSS_END = .; + SDK_OVERLAY.MODULE_43.BSS_SIZE = SDK_OVERLAY.MODULE_43.BSS_END - SDK_OVERLAY.MODULE_43.BSS_START; + } >> MODULE_43 + + .MODULE.44: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_44.START = .; + FILE_295400.o (.text) /* 0x291400 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_44.END = .; + SDK_OVERLAY.MODULE_44.SIZE = SDK_OVERLAY.MODULE_44.END - SDK_OVERLAY.MODULE_44.START; + } > MODULE_44 + + .MODULE.44.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_44.BSS_START = .; + FILE_295400.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_44.BSS_END = .; + SDK_OVERLAY.MODULE_44.BSS_SIZE = SDK_OVERLAY.MODULE_44.BSS_END - SDK_OVERLAY.MODULE_44.BSS_START; + } >> MODULE_44 + + .MODULE.45: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_45.START = .; + FILE_295A00.o (.text) /* 0x291A00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_45.END = .; + SDK_OVERLAY.MODULE_45.SIZE = SDK_OVERLAY.MODULE_45.END - SDK_OVERLAY.MODULE_45.START; + } > MODULE_45 + + .MODULE.45.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_45.BSS_START = .; + FILE_295A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_45.BSS_END = .; + SDK_OVERLAY.MODULE_45.BSS_SIZE = SDK_OVERLAY.MODULE_45.BSS_END - SDK_OVERLAY.MODULE_45.BSS_START; + } >> MODULE_45 + + .MODULE.46: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_46.START = .; + FILE_296400.o (.text) /* 0x292400 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_46.END = .; + SDK_OVERLAY.MODULE_46.SIZE = SDK_OVERLAY.MODULE_46.END - SDK_OVERLAY.MODULE_46.START; + } > MODULE_46 + + .MODULE.46.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_46.BSS_START = .; + FILE_296400.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_46.BSS_END = .; + SDK_OVERLAY.MODULE_46.BSS_SIZE = SDK_OVERLAY.MODULE_46.BSS_END - SDK_OVERLAY.MODULE_46.BSS_START; + } >> MODULE_46 + + .MODULE.47: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_47.START = .; + FILE_296800.o (.text) /* 0x292800 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_47.END = .; + SDK_OVERLAY.MODULE_47.SIZE = SDK_OVERLAY.MODULE_47.END - SDK_OVERLAY.MODULE_47.START; + } > MODULE_47 + + .MODULE.47.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_47.BSS_START = .; + FILE_296800.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_47.BSS_END = .; + SDK_OVERLAY.MODULE_47.BSS_SIZE = SDK_OVERLAY.MODULE_47.BSS_END - SDK_OVERLAY.MODULE_47.BSS_START; + } >> MODULE_47 + + .MODULE.48: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_48.START = .; + FILE_297600.o (.text) /* 0x293600 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_48.END = .; + SDK_OVERLAY.MODULE_48.SIZE = SDK_OVERLAY.MODULE_48.END - SDK_OVERLAY.MODULE_48.START; + } > MODULE_48 + + .MODULE.48.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_48.BSS_START = .; + FILE_297600.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_48.BSS_END = .; + SDK_OVERLAY.MODULE_48.BSS_SIZE = SDK_OVERLAY.MODULE_48.BSS_END - SDK_OVERLAY.MODULE_48.BSS_START; + } >> MODULE_48 + + .MODULE.49: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_49.START = .; + FILE_298000.o (.text) /* 0x294000 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_49.END = .; + SDK_OVERLAY.MODULE_49.SIZE = SDK_OVERLAY.MODULE_49.END - SDK_OVERLAY.MODULE_49.START; + } > MODULE_49 + + .MODULE.49.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_49.BSS_START = .; + FILE_298000.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_49.BSS_END = .; + SDK_OVERLAY.MODULE_49.BSS_SIZE = SDK_OVERLAY.MODULE_49.BSS_END - SDK_OVERLAY.MODULE_49.BSS_START; + } >> MODULE_49 + + .MODULE.50: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_50.START = .; + FILE_298600.o (.text) /* 0x294600 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_50.END = .; + SDK_OVERLAY.MODULE_50.SIZE = SDK_OVERLAY.MODULE_50.END - SDK_OVERLAY.MODULE_50.START; + } > MODULE_50 + + .MODULE.50.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_50.BSS_START = .; + FILE_298600.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_50.BSS_END = .; + SDK_OVERLAY.MODULE_50.BSS_SIZE = SDK_OVERLAY.MODULE_50.BSS_END - SDK_OVERLAY.MODULE_50.BSS_START; + } >> MODULE_50 + + .MODULE.51: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_51.START = .; + FILE_298A00.o (.text) /* 0x294A00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_51.END = .; + SDK_OVERLAY.MODULE_51.SIZE = SDK_OVERLAY.MODULE_51.END - SDK_OVERLAY.MODULE_51.START; + } > MODULE_51 + + .MODULE.51.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_51.BSS_START = .; + FILE_298A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_51.BSS_END = .; + SDK_OVERLAY.MODULE_51.BSS_SIZE = SDK_OVERLAY.MODULE_51.BSS_END - SDK_OVERLAY.MODULE_51.BSS_START; + } >> MODULE_51 + + .MODULE.52: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_52.START = .; + FILE_299A00.o (.text) /* 0x295A00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_52.END = .; + SDK_OVERLAY.MODULE_52.SIZE = SDK_OVERLAY.MODULE_52.END - SDK_OVERLAY.MODULE_52.START; + } > MODULE_52 + + .MODULE.52.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_52.BSS_START = .; + FILE_299A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_52.BSS_END = .; + SDK_OVERLAY.MODULE_52.BSS_SIZE = SDK_OVERLAY.MODULE_52.BSS_END - SDK_OVERLAY.MODULE_52.BSS_START; + } >> MODULE_52 + + .MODULE.53: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_53.START = .; + FILE_299E00.o (.text) /* 0x295E00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_53.END = .; + SDK_OVERLAY.MODULE_53.SIZE = SDK_OVERLAY.MODULE_53.END - SDK_OVERLAY.MODULE_53.START; + } > MODULE_53 + + .MODULE.53.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_53.BSS_START = .; + FILE_299E00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_53.BSS_END = .; + SDK_OVERLAY.MODULE_53.BSS_SIZE = SDK_OVERLAY.MODULE_53.BSS_END - SDK_OVERLAY.MODULE_53.BSS_START; + } >> MODULE_53 + + .MODULE.54: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_54.START = .; + FILE_29C400.o (.text) /* 0x298400 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_54.END = .; + SDK_OVERLAY.MODULE_54.SIZE = SDK_OVERLAY.MODULE_54.END - SDK_OVERLAY.MODULE_54.START; + } > MODULE_54 + + .MODULE.54.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_54.BSS_START = .; + FILE_29C400.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_54.BSS_END = .; + SDK_OVERLAY.MODULE_54.BSS_SIZE = SDK_OVERLAY.MODULE_54.BSS_END - SDK_OVERLAY.MODULE_54.BSS_START; + } >> MODULE_54 + + .MODULE.55: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_55.START = .; + FILE_29E800.o (.text) /* 0x29A800 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_55.END = .; + SDK_OVERLAY.MODULE_55.SIZE = SDK_OVERLAY.MODULE_55.END - SDK_OVERLAY.MODULE_55.START; + } > MODULE_55 + + .MODULE.55.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_55.BSS_START = .; + FILE_29E800.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_55.BSS_END = .; + SDK_OVERLAY.MODULE_55.BSS_SIZE = SDK_OVERLAY.MODULE_55.BSS_END - SDK_OVERLAY.MODULE_55.BSS_START; + } >> MODULE_55 + + .MODULE.56: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_56.START = .; + FILE_2A1A00.o (.text) /* 0x29DA00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_56.END = .; + SDK_OVERLAY.MODULE_56.SIZE = SDK_OVERLAY.MODULE_56.END - SDK_OVERLAY.MODULE_56.START; + } > MODULE_56 + + .MODULE.56.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_56.BSS_START = .; + FILE_2A1A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_56.BSS_END = .; + SDK_OVERLAY.MODULE_56.BSS_SIZE = SDK_OVERLAY.MODULE_56.BSS_END - SDK_OVERLAY.MODULE_56.BSS_START; + } >> MODULE_56 + + .MODULE.57: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_57.START = .; + FILE_2A6200.o (.text) /* 0x2A2200 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_57.END = .; + SDK_OVERLAY.MODULE_57.SIZE = SDK_OVERLAY.MODULE_57.END - SDK_OVERLAY.MODULE_57.START; + } > MODULE_57 + + .MODULE.57.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_57.BSS_START = .; + FILE_2A6200.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_57.BSS_END = .; + SDK_OVERLAY.MODULE_57.BSS_SIZE = SDK_OVERLAY.MODULE_57.BSS_END - SDK_OVERLAY.MODULE_57.BSS_START; + } >> MODULE_57 + + .MODULE.58: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_58.START = .; + FILE_2A8800.o (.text) /* 0x2A4800 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_58.END = .; + SDK_OVERLAY.MODULE_58.SIZE = SDK_OVERLAY.MODULE_58.END - SDK_OVERLAY.MODULE_58.START; + } > MODULE_58 + + .MODULE.58.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_58.BSS_START = .; + FILE_2A8800.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_58.BSS_END = .; + SDK_OVERLAY.MODULE_58.BSS_SIZE = SDK_OVERLAY.MODULE_58.BSS_END - SDK_OVERLAY.MODULE_58.BSS_START; + } >> MODULE_58 + + .MODULE.59: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_59.START = .; + FILE_2A9E00.o (.text) /* 0x2A5E00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_59.END = .; + SDK_OVERLAY.MODULE_59.SIZE = SDK_OVERLAY.MODULE_59.END - SDK_OVERLAY.MODULE_59.START; + } > MODULE_59 + + .MODULE.59.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_59.BSS_START = .; + FILE_2A9E00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_59.BSS_END = .; + SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START; + } >> MODULE_59 + + .MODULE.60: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_60.START = .; + FILE_2ACC00.o (.text) /* 0x2A8C00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_60.END = .; + SDK_OVERLAY.MODULE_60.SIZE = SDK_OVERLAY.MODULE_60.END - SDK_OVERLAY.MODULE_60.START; + } > MODULE_60 + + .MODULE.60.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_60.BSS_START = .; + FILE_2ACC00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_60.BSS_END = .; + SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START; + } >> MODULE_60 + + .MODULE.61: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_61.START = .; + FILE_2ADA00.o (.text) /* 0x2A9A00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_61.END = .; + SDK_OVERLAY.MODULE_61.SIZE = SDK_OVERLAY.MODULE_61.END - SDK_OVERLAY.MODULE_61.START; + } > MODULE_61 + + .MODULE.61.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_61.BSS_START = .; + FILE_2ADA00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_61.BSS_END = .; + SDK_OVERLAY.MODULE_61.BSS_SIZE = SDK_OVERLAY.MODULE_61.BSS_END - SDK_OVERLAY.MODULE_61.BSS_START; + } >> MODULE_61 + + .MODULE.62: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_62.START = .; + FILE_2AEC00.o (.text) /* 0x2AAC00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_62.END = .; + SDK_OVERLAY.MODULE_62.SIZE = SDK_OVERLAY.MODULE_62.END - SDK_OVERLAY.MODULE_62.START; + } > MODULE_62 + + .MODULE.62.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_62.BSS_START = .; + FILE_2AEC00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_62.BSS_END = .; + SDK_OVERLAY.MODULE_62.BSS_SIZE = SDK_OVERLAY.MODULE_62.BSS_END - SDK_OVERLAY.MODULE_62.BSS_START; + } >> MODULE_62 + + .MODULE.63: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_63.START = .; + FILE_2B2A00.o (.text) /* 0x2AEA00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_63.END = .; + SDK_OVERLAY.MODULE_63.SIZE = SDK_OVERLAY.MODULE_63.END - SDK_OVERLAY.MODULE_63.START; + } > MODULE_63 + + .MODULE.63.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_63.BSS_START = .; + FILE_2B2A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_63.BSS_END = .; + SDK_OVERLAY.MODULE_63.BSS_SIZE = SDK_OVERLAY.MODULE_63.BSS_END - SDK_OVERLAY.MODULE_63.BSS_START; + } >> MODULE_63 + + .MODULE.64: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_64.START = .; + FILE_2B7600.o (.text) /* 0x2B3600 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_64.END = .; + SDK_OVERLAY.MODULE_64.SIZE = SDK_OVERLAY.MODULE_64.END - SDK_OVERLAY.MODULE_64.START; + } > MODULE_64 + + .MODULE.64.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_64.BSS_START = .; + FILE_2B7600.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_64.BSS_END = .; + SDK_OVERLAY.MODULE_64.BSS_SIZE = SDK_OVERLAY.MODULE_64.BSS_END - SDK_OVERLAY.MODULE_64.BSS_START; + } >> MODULE_64 + + .MODULE.65: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_65.START = .; + FILE_2B9400.o (.text) /* 0x2B5400 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_65.END = .; + SDK_OVERLAY.MODULE_65.SIZE = SDK_OVERLAY.MODULE_65.END - SDK_OVERLAY.MODULE_65.START; + } > MODULE_65 + + .MODULE.65.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_65.BSS_START = .; + FILE_2B9400.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_65.BSS_END = .; + SDK_OVERLAY.MODULE_65.BSS_SIZE = SDK_OVERLAY.MODULE_65.BSS_END - SDK_OVERLAY.MODULE_65.BSS_START; + } >> MODULE_65 + + .MODULE.66: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_66.START = .; + FILE_2BC400.o (.text) /* 0x2B8400 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_66.END = .; + SDK_OVERLAY.MODULE_66.SIZE = SDK_OVERLAY.MODULE_66.END - SDK_OVERLAY.MODULE_66.START; + } > MODULE_66 + + .MODULE.66.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_66.BSS_START = .; + FILE_2BC400.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_66.BSS_END = .; + SDK_OVERLAY.MODULE_66.BSS_SIZE = SDK_OVERLAY.MODULE_66.BSS_END - SDK_OVERLAY.MODULE_66.BSS_START; + } >> MODULE_66 + + .MODULE.67: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_67.START = .; + FILE_2BEC00.o (.text) /* 0x2BAC00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_67.END = .; + SDK_OVERLAY.MODULE_67.SIZE = SDK_OVERLAY.MODULE_67.END - SDK_OVERLAY.MODULE_67.START; + } > MODULE_67 + + .MODULE.67.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_67.BSS_START = .; + FILE_2BEC00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_67.BSS_END = .; + SDK_OVERLAY.MODULE_67.BSS_SIZE = SDK_OVERLAY.MODULE_67.BSS_END - SDK_OVERLAY.MODULE_67.BSS_START; + } >> MODULE_67 + + .MODULE.68: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_68.START = .; + FILE_2C1200.o (.text) /* 0x2BD200 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_68.END = .; + SDK_OVERLAY.MODULE_68.SIZE = SDK_OVERLAY.MODULE_68.END - SDK_OVERLAY.MODULE_68.START; + } > MODULE_68 + + .MODULE.68.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_68.BSS_START = .; + FILE_2C1200.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_68.BSS_END = .; + SDK_OVERLAY.MODULE_68.BSS_SIZE = SDK_OVERLAY.MODULE_68.BSS_END - SDK_OVERLAY.MODULE_68.BSS_START; + } >> MODULE_68 + + .MODULE.69: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_69.START = .; + FILE_2C2800.o (.text) /* 0x2BE800 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_69.END = .; + SDK_OVERLAY.MODULE_69.SIZE = SDK_OVERLAY.MODULE_69.END - SDK_OVERLAY.MODULE_69.START; + } > MODULE_69 + + .MODULE.69.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_69.BSS_START = .; + FILE_2C2800.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_69.BSS_END = .; + SDK_OVERLAY.MODULE_69.BSS_SIZE = SDK_OVERLAY.MODULE_69.BSS_END - SDK_OVERLAY.MODULE_69.BSS_START; + } >> MODULE_69 + + .MODULE.70: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_70.START = .; + FILE_2C4C00.o (.text) /* 0x2C0C00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_70.END = .; + SDK_OVERLAY.MODULE_70.SIZE = SDK_OVERLAY.MODULE_70.END - SDK_OVERLAY.MODULE_70.START; + } > MODULE_70 + + .MODULE.70.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_70.BSS_START = .; + FILE_2C4C00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_70.BSS_END = .; + SDK_OVERLAY.MODULE_70.BSS_SIZE = SDK_OVERLAY.MODULE_70.BSS_END - SDK_OVERLAY.MODULE_70.BSS_START; + } >> MODULE_70 + + .MODULE.71: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_71.START = .; + FILE_2C5C00.o (.text) /* 0x2C1C00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_71.END = .; + SDK_OVERLAY.MODULE_71.SIZE = SDK_OVERLAY.MODULE_71.END - SDK_OVERLAY.MODULE_71.START; + } > MODULE_71 + + .MODULE.71.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_71.BSS_START = .; + FILE_2C5C00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_71.BSS_END = .; + SDK_OVERLAY.MODULE_71.BSS_SIZE = SDK_OVERLAY.MODULE_71.BSS_END - SDK_OVERLAY.MODULE_71.BSS_START; + } >> MODULE_71 + + .MODULE.72: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_72.START = .; + FILE_2C9C00.o (.text) /* 0x2C5C00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_72.END = .; + SDK_OVERLAY.MODULE_72.SIZE = SDK_OVERLAY.MODULE_72.END - SDK_OVERLAY.MODULE_72.START; + } > MODULE_72 + + .MODULE.72.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_72.BSS_START = .; + FILE_2C9C00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_72.BSS_END = .; + SDK_OVERLAY.MODULE_72.BSS_SIZE = SDK_OVERLAY.MODULE_72.BSS_END - SDK_OVERLAY.MODULE_72.BSS_START; + } >> MODULE_72 + + .MODULE.73: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_73.START = .; + FILE_2C9E00.o (.text) /* 0x2C5E00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_73.END = .; + SDK_OVERLAY.MODULE_73.SIZE = SDK_OVERLAY.MODULE_73.END - SDK_OVERLAY.MODULE_73.START; + } > MODULE_73 + + .MODULE.73.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_73.BSS_START = .; + FILE_2C9E00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_73.BSS_END = .; + SDK_OVERLAY.MODULE_73.BSS_SIZE = SDK_OVERLAY.MODULE_73.BSS_END - SDK_OVERLAY.MODULE_73.BSS_START; + } >> MODULE_73 + + .MODULE.74: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_74.START = .; + FILE_2CEA00.o (.text) /* 0x2CAA00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_74.END = .; + SDK_OVERLAY.MODULE_74.SIZE = SDK_OVERLAY.MODULE_74.END - SDK_OVERLAY.MODULE_74.START; + } > MODULE_74 + + .MODULE.74.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_74.BSS_START = .; + FILE_2CEA00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_74.BSS_END = .; + SDK_OVERLAY.MODULE_74.BSS_SIZE = SDK_OVERLAY.MODULE_74.BSS_END - SDK_OVERLAY.MODULE_74.BSS_START; + } >> MODULE_74 + + .MODULE.75: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_75.START = .; + FILE_2CFE00.o (.text) /* 0x2CBE00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_75.END = .; + SDK_OVERLAY.MODULE_75.SIZE = SDK_OVERLAY.MODULE_75.END - SDK_OVERLAY.MODULE_75.START; + } > MODULE_75 + + .MODULE.75.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_75.BSS_START = .; + FILE_2CFE00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_75.BSS_END = .; + SDK_OVERLAY.MODULE_75.BSS_SIZE = SDK_OVERLAY.MODULE_75.BSS_END - SDK_OVERLAY.MODULE_75.BSS_START; + } >> MODULE_75 + + .MODULE.76: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_76.START = .; + FILE_2D5C00.o (.text) /* 0x2D1C00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_76.END = .; + SDK_OVERLAY.MODULE_76.SIZE = SDK_OVERLAY.MODULE_76.END - SDK_OVERLAY.MODULE_76.START; + } > MODULE_76 + + .MODULE.76.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_76.BSS_START = .; + FILE_2D5C00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_76.BSS_END = .; + SDK_OVERLAY.MODULE_76.BSS_SIZE = SDK_OVERLAY.MODULE_76.BSS_END - SDK_OVERLAY.MODULE_76.BSS_START; + } >> MODULE_76 + + .MODULE.77: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_77.START = .; + FILE_2D7C00.o (.text) /* 0x2D3C00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_77.END = .; + SDK_OVERLAY.MODULE_77.SIZE = SDK_OVERLAY.MODULE_77.END - SDK_OVERLAY.MODULE_77.START; + } > MODULE_77 + + .MODULE.77.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_77.BSS_START = .; + FILE_2D7C00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_77.BSS_END = .; + SDK_OVERLAY.MODULE_77.BSS_SIZE = SDK_OVERLAY.MODULE_77.BSS_END - SDK_OVERLAY.MODULE_77.BSS_START; + } >> MODULE_77 + + .MODULE.78: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_78.START = .; + FILE_2D9800.o (.text) /* 0x2D5800 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_78.END = .; + SDK_OVERLAY.MODULE_78.SIZE = SDK_OVERLAY.MODULE_78.END - SDK_OVERLAY.MODULE_78.START; + } > MODULE_78 + + .MODULE.78.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_78.BSS_START = .; + FILE_2D9800.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_78.BSS_END = .; + SDK_OVERLAY.MODULE_78.BSS_SIZE = SDK_OVERLAY.MODULE_78.BSS_END - SDK_OVERLAY.MODULE_78.BSS_START; + } >> MODULE_78 + + .MODULE.79: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_79.START = .; + FILE_2D9E00.o (.text) /* 0x2D5E00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_79.END = .; + SDK_OVERLAY.MODULE_79.SIZE = SDK_OVERLAY.MODULE_79.END - SDK_OVERLAY.MODULE_79.START; + } > MODULE_79 + + .MODULE.79.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_79.BSS_START = .; + FILE_2D9E00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_79.BSS_END = .; + SDK_OVERLAY.MODULE_79.BSS_SIZE = SDK_OVERLAY.MODULE_79.BSS_END - SDK_OVERLAY.MODULE_79.BSS_START; + } >> MODULE_79 + + .MODULE.80: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_80.START = .; + FILE_2DF200.o (.text) /* 0x2DB200 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_80.END = .; + SDK_OVERLAY.MODULE_80.SIZE = SDK_OVERLAY.MODULE_80.END - SDK_OVERLAY.MODULE_80.START; + } > MODULE_80 + + .MODULE.80.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_80.BSS_START = .; + FILE_2DF200.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_80.BSS_END = .; + SDK_OVERLAY.MODULE_80.BSS_SIZE = SDK_OVERLAY.MODULE_80.BSS_END - SDK_OVERLAY.MODULE_80.BSS_START; + } >> MODULE_80 + + .MODULE.81: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_81.START = .; + FILE_2E9A00.o (.text) /* 0x2E5A00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_81.END = .; + SDK_OVERLAY.MODULE_81.SIZE = SDK_OVERLAY.MODULE_81.END - SDK_OVERLAY.MODULE_81.START; + } > MODULE_81 + + .MODULE.81.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_81.BSS_START = .; + FILE_2E9A00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_81.BSS_END = .; + SDK_OVERLAY.MODULE_81.BSS_SIZE = SDK_OVERLAY.MODULE_81.BSS_END - SDK_OVERLAY.MODULE_81.BSS_START; + } >> MODULE_81 + + .MODULE.82: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_82.START = .; + FILE_2EF000.o (.text) /* 0x2EB000 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_82.END = .; + SDK_OVERLAY.MODULE_82.SIZE = SDK_OVERLAY.MODULE_82.END - SDK_OVERLAY.MODULE_82.START; + } > MODULE_82 + + .MODULE.82.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_82.BSS_START = .; + FILE_2EF000.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_82.BSS_END = .; + SDK_OVERLAY.MODULE_82.BSS_SIZE = SDK_OVERLAY.MODULE_82.BSS_END - SDK_OVERLAY.MODULE_82.BSS_START; + } >> MODULE_82 + + .MODULE.83: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_83.START = .; + FILE_2F1600.o (.text) /* 0x2ED600 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_83.END = .; + SDK_OVERLAY.MODULE_83.SIZE = SDK_OVERLAY.MODULE_83.END - SDK_OVERLAY.MODULE_83.START; + } > MODULE_83 + + .MODULE.83.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_83.BSS_START = .; + FILE_2F1600.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_83.BSS_END = .; + SDK_OVERLAY.MODULE_83.BSS_SIZE = SDK_OVERLAY.MODULE_83.BSS_END - SDK_OVERLAY.MODULE_83.BSS_START; + } >> MODULE_83 + + .MODULE.84: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_84.START = .; + FILE_2FFA00.o (.text) /* 0x2FBA00 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_84.END = .; + SDK_OVERLAY.MODULE_84.SIZE = SDK_OVERLAY.MODULE_84.END - SDK_OVERLAY.MODULE_84.START; + } > MODULE_84 + + .MODULE.84.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_84.BSS_START = .; + FILE_2FFA00.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_84.BSS_END = .; + SDK_OVERLAY.MODULE_84.BSS_SIZE = SDK_OVERLAY.MODULE_84.BSS_END - SDK_OVERLAY.MODULE_84.BSS_START; + } >> MODULE_84 + + .MODULE.85: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_85.START = .; + FILE_303400.o (.text) /* 0x2FF400 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_85.END = .; + SDK_OVERLAY.MODULE_85.SIZE = SDK_OVERLAY.MODULE_85.END - SDK_OVERLAY.MODULE_85.START; + } > MODULE_85 + + .MODULE.85.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_85.BSS_START = .; + FILE_303400.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_85.BSS_END = .; + SDK_OVERLAY.MODULE_85.BSS_SIZE = SDK_OVERLAY.MODULE_85.BSS_END - SDK_OVERLAY.MODULE_85.BSS_START; + } >> MODULE_85 + + .MODULE.86: { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_86.START = .; + FILE_30C600.o (.text) /* 0x308600 */ + . = ALIGN(32); + SDK_OVERLAY.MODULE_86.END = .; + SDK_OVERLAY.MODULE_86.SIZE = SDK_OVERLAY.MODULE_86.END - SDK_OVERLAY.MODULE_86.START; + } > MODULE_86 + + .MODULE.86.bss : + { + ALIGNALL(4); . = ALIGN(32); + SDK_OVERLAY.MODULE_86.BSS_START = .; + FILE_30C600.o (.bss) + . = ALIGN(32); + SDK_OVERLAY.MODULE_86.BSS_END = .; + SDK_OVERLAY.MODULE_86.BSS_SIZE = SDK_OVERLAY.MODULE_86.BSS_END - SDK_OVERLAY.MODULE_86.BSS_START; + } >> MODULE_86 + + .dummy.MAIN_EX: + { + + } > dummy.MAIN_EX + + .arena.MAIN: + { + + } > arena.MAIN + + .arena.MAIN_EX: + { + + } > arena.MAIN_EX + + .arena.ITCM: + { + . = ALIGN(32); + SDK_SECTION_ARENA_ITCM_START = .; + } > arena.ITCM + + .arena.DTCM: + { + . = ALIGN(32); + SDK_SECTION_ARENA_DTCM_START = .; + } > arena.DTCM + + .arm9_defs: + { + WRITEW ADDR(.arm9); + WRITEW _start; + WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; + WRITEW _start_AutoloadDoneCallback; + WRITES ("MODULE_00.sbin"); + WRITES ("MODULE_01.sbin"); + WRITES ("MODULE_02.sbin"); + WRITES ("MODULE_03.sbin"); + WRITES ("MODULE_04.sbin"); + WRITES ("MODULE_05.sbin"); + WRITES ("MODULE_06.sbin"); + WRITES ("MODULE_07.sbin"); + WRITES ("MODULE_08.sbin"); + WRITES ("MODULE_09.sbin"); + WRITES ("MODULE_10.sbin"); + WRITES ("MODULE_11.sbin"); + WRITES ("MODULE_12.sbin"); + WRITES ("MODULE_13.sbin"); + WRITES ("MODULE_14.sbin"); + WRITES ("MODULE_15.sbin"); + WRITES ("MODULE_16.sbin"); + WRITES ("MODULE_17.sbin"); + WRITES ("MODULE_18.sbin"); + WRITES ("MODULE_19.sbin"); + WRITES ("MODULE_20.sbin"); + WRITES ("MODULE_21.sbin"); + WRITES ("MODULE_22.sbin"); + WRITES ("MODULE_23.sbin"); + WRITES ("MODULE_24.sbin"); + WRITES ("MODULE_25.sbin"); + WRITES ("MODULE_26.sbin"); + WRITES ("MODULE_27.sbin"); + WRITES ("MODULE_28.sbin"); + WRITES ("MODULE_29.sbin"); + WRITES ("MODULE_30.sbin"); + WRITES ("MODULE_31.sbin"); + WRITES ("MODULE_32.sbin"); + WRITES ("MODULE_33.sbin"); + WRITES ("MODULE_34.sbin"); + WRITES ("MODULE_35.sbin"); + WRITES ("MODULE_36.sbin"); + WRITES ("MODULE_37.sbin"); + WRITES ("MODULE_38.sbin"); + WRITES ("MODULE_39.sbin"); + WRITES ("MODULE_40.sbin"); + WRITES ("MODULE_41.sbin"); + WRITES ("MODULE_42.sbin"); + WRITES ("MODULE_43.sbin"); + WRITES ("MODULE_44.sbin"); + WRITES ("MODULE_45.sbin"); + WRITES ("MODULE_46.sbin"); + WRITES ("MODULE_47.sbin"); + WRITES ("MODULE_48.sbin"); + WRITES ("MODULE_49.sbin"); + WRITES ("MODULE_50.sbin"); + WRITES ("MODULE_51.sbin"); + WRITES ("MODULE_52.sbin"); + WRITES ("MODULE_53.sbin"); + WRITES ("MODULE_54.sbin"); + WRITES ("MODULE_55.sbin"); + WRITES ("MODULE_56.sbin"); + WRITES ("MODULE_57.sbin"); + WRITES ("MODULE_58.sbin"); + WRITES ("MODULE_59.sbin"); + WRITES ("MODULE_60.sbin"); + WRITES ("MODULE_61.sbin"); + WRITES ("MODULE_62.sbin"); + WRITES ("MODULE_63.sbin"); + WRITES ("MODULE_64.sbin"); + WRITES ("MODULE_65.sbin"); + WRITES ("MODULE_66.sbin"); + WRITES ("MODULE_67.sbin"); + WRITES ("MODULE_68.sbin"); + WRITES ("MODULE_69.sbin"); + WRITES ("MODULE_70.sbin"); + WRITES ("MODULE_71.sbin"); + WRITES ("MODULE_72.sbin"); + WRITES ("MODULE_73.sbin"); + WRITES ("MODULE_74.sbin"); + WRITES ("MODULE_75.sbin"); + WRITES ("MODULE_76.sbin"); + WRITES ("MODULE_77.sbin"); + WRITES ("MODULE_78.sbin"); + WRITES ("MODULE_79.sbin"); + WRITES ("MODULE_80.sbin"); + WRITES ("MODULE_81.sbin"); + WRITES ("MODULE_82.sbin"); + WRITES ("MODULE_83.sbin"); + WRITES ("MODULE_84.sbin"); + WRITES ("MODULE_85.sbin"); + WRITES ("MODULE_86.sbin"); + } > arm9_defs + + .arm9_table : { + OVERLAY_TABLE(MODULE_00, 0) + OVERLAY_TABLE(MODULE_01, 1) + OVERLAY_TABLE(MODULE_02, 2) + OVERLAY_TABLE(MODULE_03, 3) + OVERLAY_TABLE(MODULE_04, 4) + OVERLAY_TABLE(MODULE_05, 5) + OVERLAY_TABLE(MODULE_06, 6) + OVERLAY_TABLE(MODULE_07, 7) + OVERLAY_TABLE(MODULE_08, 8) + OVERLAY_TABLE(MODULE_09, 9) + OVERLAY_TABLE(MODULE_10, 10) + OVERLAY_TABLE(MODULE_11, 11) + OVERLAY_TABLE(MODULE_12, 12) + OVERLAY_TABLE(MODULE_13, 13) + OVERLAY_TABLE(MODULE_14, 14) + OVERLAY_TABLE(MODULE_15, 15) + OVERLAY_TABLE(MODULE_16, 16) + OVERLAY_TABLE(MODULE_17, 17) + OVERLAY_TABLE(MODULE_18, 18) + OVERLAY_TABLE(MODULE_19, 19) + OVERLAY_TABLE(MODULE_20, 20) + OVERLAY_TABLE(MODULE_21, 21) + OVERLAY_TABLE(MODULE_22, 22) + OVERLAY_TABLE(MODULE_23, 23) + OVERLAY_TABLE(MODULE_24, 24) + OVERLAY_TABLE(MODULE_25, 25) + OVERLAY_TABLE(MODULE_26, 26) + OVERLAY_TABLE(MODULE_27, 27) + OVERLAY_TABLE(MODULE_28, 28) + OVERLAY_TABLE(MODULE_29, 29) + OVERLAY_TABLE(MODULE_30, 30) + OVERLAY_TABLE(MODULE_31, 31) + OVERLAY_TABLE(MODULE_32, 32) + OVERLAY_TABLE(MODULE_33, 33) + OVERLAY_TABLE(MODULE_34, 34) + OVERLAY_TABLE(MODULE_35, 35) + OVERLAY_TABLE(MODULE_36, 36) + OVERLAY_TABLE(MODULE_37, 37) + OVERLAY_TABLE(MODULE_38, 38) + OVERLAY_TABLE(MODULE_39, 39) + OVERLAY_TABLE(MODULE_40, 40) + OVERLAY_TABLE(MODULE_41, 41) + OVERLAY_TABLE(MODULE_42, 42) + OVERLAY_TABLE(MODULE_43, 43) + OVERLAY_TABLE(MODULE_44, 44) + OVERLAY_TABLE(MODULE_45, 45) + OVERLAY_TABLE(MODULE_46, 46) + OVERLAY_TABLE(MODULE_47, 47) + OVERLAY_TABLE(MODULE_48, 48) + OVERLAY_TABLE(MODULE_49, 49) + OVERLAY_TABLE(MODULE_50, 50) + OVERLAY_TABLE(MODULE_51, 51) + OVERLAY_TABLE(MODULE_52, 52) + OVERLAY_TABLE(MODULE_53, 53) + OVERLAY_TABLE(MODULE_54, 54) + OVERLAY_TABLE(MODULE_55, 55) + OVERLAY_TABLE(MODULE_56, 56) + OVERLAY_TABLE(MODULE_57, 57) + OVERLAY_TABLE(MODULE_58, 58) + OVERLAY_TABLE(MODULE_59, 59) + OVERLAY_TABLE(MODULE_60, 60) + OVERLAY_TABLE(MODULE_61, 61) + OVERLAY_TABLE(MODULE_62, 62) + OVERLAY_TABLE(MODULE_63, 63) + OVERLAY_TABLE(MODULE_64, 64) + OVERLAY_TABLE(MODULE_65, 65) + OVERLAY_TABLE(MODULE_66, 66) + OVERLAY_TABLE(MODULE_67, 67) + OVERLAY_TABLE(MODULE_68, 68) + OVERLAY_TABLE(MODULE_69, 69) + OVERLAY_TABLE(MODULE_70, 70) + OVERLAY_TABLE(MODULE_71, 71) + OVERLAY_TABLE(MODULE_72, 72) + OVERLAY_TABLE(MODULE_73, 73) + OVERLAY_TABLE(MODULE_74, 74) + OVERLAY_TABLE(MODULE_75, 75) + OVERLAY_TABLE(MODULE_76, 76) + OVERLAY_TABLE(MODULE_77, 77) + OVERLAY_TABLE(MODULE_78, 78) + OVERLAY_TABLE(MODULE_79, 79) + OVERLAY_TABLE(MODULE_80, 80) + OVERLAY_TABLE(MODULE_81, 81) + OVERLAY_TABLE(MODULE_82, 82) + OVERLAY_TABLE(MODULE_83, 83) + OVERLAY_TABLE(MODULE_84, 84) + OVERLAY_TABLE(MODULE_85, 85) + OVERLAY_TABLE(MODULE_86, 86) + } > arm9_table + + .binary.MODULE_FILES: + { + WRITES ("arm9.sbin"); + WRITES ("arm9_defs.sbin"); + WRITES ("arm9_table.sbin"); + } > binary.MODULE_FILES + + .check.ITCM: + { + . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; + . = . + SDK_OVERLAY.MODULE_03.SIZE + SDK_OVERLAY.MODULE_03.BSS_SIZE; + } > check.ITCM + + SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; + .check.DTCM: + { + . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; + . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; + } > check.DTCM } diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 3df64d7d..16cbdc72 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -2,40 +2,104 @@ Static arm9 { Address 0x02000000 - Object main.o - Object FUN_02000DF4.o - Object unk_02000E0C.o - Object rom2.o - Object string_util.o - Object unk_020023C0.o - Object filesystem.o - Object unk_02006864.o - Object script.o - Object unk_02038C78.o - Object scrcmd.o - Object unk_02046030.o - Object unk_0208AC14.o - Object unk_020AF030.o - Library libfx.a - Library libgx.a - Library libos.a - Library libmi.a - Library libsnd.a - Library libpxi.a - Library libfs.a - Library libdgt.a - Library libcp.a - Library libspi.a - Library libpm.a - Library librtc.a - Library libcard.a - Library libwm.a - Library libctrdg.a - Library libmath.a - Library libstd.a - Library libc.a - Library libmwcc.a - Object rom2_2.o + Object main.o + Object FUN_02000DF4.o + Object unk_02000E0C.o + Object 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 libfs.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 libmwcc.o + Object rom2.o + Object string_util.o + Object rom2_2.o } Autoload ITCM @@ -55,437 +119,441 @@ Autoload EXT Address 0x02400000 } -Overlay overlay_00 +Overlay MODULE_00 { Address 0x021D74E0 - Object FILE_10C400.o + Object module_00_dummy.o } -Overlay overlay_01 +Overlay MODULE_01 { Address 0x021D74E0 - Object FILE_10C600.o + Object module_01.o } -Overlay overlay_02 +Overlay MODULE_02 { Address 0x021D7520 - Object FILE_10C800.o + Object module_02_dummy.o } -Overlay overlay_03 +Overlay MODULE_03 { Address 0x01FF8700 - Object FILE_10CA00.o + Object module_03_dummy.o } -Overlay overlay_04 +Overlay MODULE_04 { Address 0x021D74E0 - Object FILE_10CC00.o + Object thumb_04.o + Object arm_04.o } -Overlay overlay_05 +Overlay MODULE_05 { Address 0x021D74E0 - Object FILE_145400.o + Object module_05.o } -Overlay overlay_06 +Overlay MODULE_06 { Address 0x022396A0 - Object FILE_16B600.o + Object module_06.o } -Overlay overlay_07 +Overlay MODULE_07 { Address 0x02211E60 - Object FILE_184400.o + Object module_07.o } -Overlay overlay_08 +Overlay MODULE_08 { Address 0x02211E60 - Object FILE_187800.o + Object module_08.o } -Overlay overlay_09 +Overlay MODULE_09 { Address 0x02211E60 - Object FILE_1A3000.o + Object module_09.o } -Overlay overlay_10 +Overlay MODULE_10 { Address 0x021D74E0 - Object FILE_1AD200.o + Object module_10_dummy.o } -Overlay overlay_11 +Overlay MODULE_11 { Address 0x0222D5C0 - Object FILE_1AD400.o + Object module_11.o } -Overlay overlay_12 +Overlay MODULE_12 { Address 0x0222D5C0 - Object FILE_1DFE00.o + Object module_12.o } -Overlay overlay_13 +Overlay MODULE_13 { Address 0x02211E60 - Object FILE_1F9200.o + Object module_13_init.o + Object module_13_arm1.o + Object module_13_thumb.o + Object module_13_arm2.o } -Overlay overlay_14 +Overlay MODULE_14 { Address 0x021D74E0 - Object FILE_227E00.o + Object module_14.o } -Overlay overlay_15 +Overlay MODULE_15 { Address 0x021D74E0 - Object FILE_237400.o + Object module_15.o } -Overlay overlay_16 +Overlay MODULE_16 { Address 0x021D74E0 - Object FILE_23BC00.o + Object module_16.o } -Overlay overlay_17 +Overlay MODULE_17 { Address 0x021D74E0 - Object FILE_264200.o + Object module_17.o } -Overlay overlay_18 +Overlay MODULE_18 { Address 0x022396A0 - Object FILE_26B200.o + Object module_18.o } -Overlay overlay_19 +Overlay MODULE_19 { Address 0x02252440 - Object FILE_283000.o + Object module_19.o } -Overlay overlay_20 +Overlay MODULE_20 { Address 0x02252440 - Object FILE_283200.o + Object module_20.o } -Overlay overlay_21 +Overlay MODULE_21 { Address 0x02254840 - Object FILE_285600.o + Object module_21.o } -Overlay overlay_22 +Overlay MODULE_22 { Address 0x02254840 - Object FILE_285C00.o + Object module_22.o } -Overlay overlay_23 +Overlay MODULE_23 { Address 0x02254840 - Object FILE_286C00.o + Object module_23.o } -Overlay overlay_24 +Overlay MODULE_24 { Address 0x02254840 - Object FILE_288600.o + Object module_24.o } -Overlay overlay_25 +Overlay MODULE_25 { Address 0x02254840 - Object FILE_289000.o + Object module_25.o } -Overlay overlay_26 +Overlay MODULE_26 { Address 0x02254840 - Object FILE_289600.o + Object module_26.o } -Overlay overlay_27 +Overlay MODULE_27 { Address 0x02254840 - Object FILE_289E00.o + Object module_27.o } -Overlay overlay_28 +Overlay MODULE_28 { Address 0x02254840 - Object FILE_28AA00.o + Object module_28.o } -Overlay overlay_29 +Overlay MODULE_29 { Address 0x02254840 - Object FILE_28C200.o + Object module_29.o } -Overlay overlay_30 +Overlay MODULE_30 { Address 0x02254840 - Object FILE_28CC00.o + Object module_30.o } -Overlay overlay_31 +Overlay MODULE_31 { Address 0x02254840 - Object FILE_28D200.o + Object module_31.o } -Overlay overlay_32 +Overlay MODULE_32 { Address 0x02254840 Object FILE_28D800.o } -Overlay overlay_33 +Overlay MODULE_33 { Address 0x02254840 Object FILE_28DE00.o } -Overlay overlay_34 +Overlay MODULE_34 { Address 0x02254840 Object FILE_28E200.o } -Overlay overlay_35 +Overlay MODULE_35 { Address 0x02254840 Object FILE_28E800.o } -Overlay overlay_36 +Overlay MODULE_36 { Address 0x02254840 Object FILE_28F200.o } -Overlay overlay_37 +Overlay MODULE_37 { Address 0x02254840 Object FILE_290000.o } -Overlay overlay_38 +Overlay MODULE_38 { Address 0x02254840 Object FILE_290600.o } -Overlay overlay_39 +Overlay MODULE_39 { Address 0x02254840 Object FILE_291200.o } -Overlay overlay_40 +Overlay MODULE_40 { Address 0x02254840 Object FILE_292000.o } -Overlay overlay_41 +Overlay MODULE_41 { Address 0x02254840 Object FILE_292E00.o } -Overlay overlay_42 +Overlay MODULE_42 { Address 0x02254840 Object FILE_294000.o } -Overlay overlay_43 +Overlay MODULE_43 { Address 0x02254840 Object FILE_294A00.o } -Overlay overlay_44 +Overlay MODULE_44 { Address 0x02254840 Object FILE_295400.o } -Overlay overlay_45 +Overlay MODULE_45 { Address 0x02254840 Object FILE_295A00.o } -Overlay overlay_46 +Overlay MODULE_46 { Address 0x02254840 Object FILE_296400.o } -Overlay overlay_47 +Overlay MODULE_47 { Address 0x02254840 Object FILE_296800.o } -Overlay overlay_48 +Overlay MODULE_48 { Address 0x02254840 Object FILE_297600.o } -Overlay overlay_49 +Overlay MODULE_49 { Address 0x02254840 Object FILE_298000.o } -Overlay overlay_50 +Overlay MODULE_50 { Address 0x02254840 Object FILE_298600.o } -Overlay overlay_51 +Overlay MODULE_51 { Address 0x02254840 Object FILE_298A00.o } -Overlay overlay_52 +Overlay MODULE_52 { Address 0x021D74E0 Object FILE_299A00.o } -Overlay overlay_53 +Overlay MODULE_53 { Address 0x021D74E0 Object FILE_299E00.o } -Overlay overlay_54 +Overlay MODULE_54 { Address 0x021D74E0 Object FILE_29C400.o } -Overlay overlay_55 +Overlay MODULE_55 { Address 0x021D74E0 Object FILE_29E800.o } -Overlay overlay_56 +Overlay MODULE_56 { Address 0x02211E60 Object FILE_2A1A00.o } -Overlay overlay_57 +Overlay MODULE_57 { Address 0x021D74E0 Object FILE_2A6200.o } -Overlay overlay_58 +Overlay MODULE_58 { Address 0x021D9A20 Object FILE_2A8800.o } -Overlay overlay_59 +Overlay MODULE_59 { Address 0x021D74E0 Object FILE_2A9E00.o } -Overlay overlay_60 +Overlay MODULE_60 { Address 0x021D74E0 Object FILE_2ACC00.o } -Overlay overlay_61 +Overlay MODULE_61 { Address 0x021D74E0 Object FILE_2ADA00.o } -Overlay overlay_62 +Overlay MODULE_62 { Address 0x0222D5C0 Object FILE_2AEC00.o } -Overlay overlay_63 +Overlay MODULE_63 { Address 0x021D74E0 Object FILE_2B2A00.o } -Overlay overlay_64 +Overlay MODULE_64 { Address 0x021D74E0 Object FILE_2B7600.o } -Overlay overlay_65 +Overlay MODULE_65 { Address 0x021D74E0 Object FILE_2B9400.o } -Overlay overlay_66 +Overlay MODULE_66 { Address 0x021D74E0 Object FILE_2BC400.o } -Overlay overlay_67 +Overlay MODULE_67 { Address 0x021D74E0 Object FILE_2BEC00.o } -Overlay overlay_68 +Overlay MODULE_68 { Address 0x021D74E0 Object FILE_2C1200.o } -Overlay overlay_69 +Overlay MODULE_69 { Address 0x0222D5C0 Object FILE_2C2800.o } -Overlay overlay_70 +Overlay MODULE_70 { Address 0x021D74E0 Object FILE_2C4C00.o } -Overlay overlay_71 +Overlay MODULE_71 { Address 0x0222D5C0 Object FILE_2C5C00.o } -Overlay overlay_72 +Overlay MODULE_72 { Address 0x021D74E0 Object FILE_2C9C00.o } -Overlay overlay_73 +Overlay MODULE_73 { Address 0x021D74E0 Object FILE_2C9E00.o } -Overlay overlay_74 +Overlay MODULE_74 { Address 0x021D74E0 Object FILE_2CEA00.o } -Overlay overlay_75 +Overlay MODULE_75 { Address 0x021E6BA0 Object FILE_2CFE00.o } -Overlay overlay_76 +Overlay MODULE_76 { Address 0x021D74E0 Object FILE_2D5C00.o } -Overlay overlay_77 +Overlay MODULE_77 { Address 0x021D74E0 Object FILE_2D7C00.o } -Overlay overlay_78 +Overlay MODULE_78 { Address 0x021D74E0 Object FILE_2D9800.o } -Overlay overlay_79 +Overlay MODULE_79 { Address 0x02211E60 Object FILE_2D9E00.o } -Overlay overlay_80 +Overlay MODULE_80 { Address 0x0222D5C0 Object FILE_2DF200.o } -Overlay overlay_81 +Overlay MODULE_81 { Address 0x02237E40 Object FILE_2E9A00.o } -Overlay overlay_82 +Overlay MODULE_82 { Address 0x0222D5C0 Object FILE_2EF000.o } -Overlay overlay_83 +Overlay MODULE_83 { Address 0x0222D5C0 Object FILE_2F1600.o } -Overlay overlay_84 +Overlay MODULE_84 { Address 0x021D74E0 Object FILE_2FFA00.o } -Overlay overlay_85 +Overlay MODULE_85 { Address 0x021D74E0 Object FILE_303400.o } -Overlay overlay_86 +Overlay MODULE_86 { Address 0x021D74E0 Object FILE_30C600.o diff --git a/arm9/arm9.sha1 b/arm9/arm9.sha1 index dd825541..3df1e406 100644 --- a/arm9/arm9.sha1 +++ b/arm9/arm9.sha1 @@ -1 +1,89 @@ -f72681568e075a56beb25b584734a35d118468a1 build/arm9.sbin +08470cde58c7bdb9f3664cb975285ab7b0bf46b5 build/arm9.sbin +2238268b6af1658e79755e07b6a01ed679598c20 build/arm9_table.sbin +de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_00.sbin +efeb3b1410ea015d74802b84094474f937746866 build/MODULE_01.sbin +de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_02.sbin +de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_03.sbin +46fb116957d30ab3c292e97c4ad4e4711ac6cf84 build/MODULE_04.sbin +5b82b77354ff84ac41b0b5f9cd0334e0d0265282 build/MODULE_05.sbin +085ffcac7b505dece722a4bd2d4210fdfdcbde49 build/MODULE_06.sbin +0dbbe0f854d7ed6890eeae9dc4a275c748b192bd build/MODULE_07.sbin +1fb70ec98716a012ecab69045738b679c733b95e build/MODULE_08.sbin +1eef423b2554ff3b14bc13d7f8774df8e790070b build/MODULE_09.sbin +de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_10.sbin +37c5acdf493116d5e651d02265d90508519ed4b9 build/MODULE_11.sbin +08828e9b61961ed63209f963e2c08768490224d6 build/MODULE_12.sbin +c669bc9f3a954f6904a0dc4618d8a1cfdd4db9cf build/MODULE_13.sbin +35b441e46b7477ddf10f010988d02a79b5c0622d build/MODULE_14.sbin +4452e2e8ab67d8d4de0cb2e1e9aa2c89ff1a3ac2 build/MODULE_15.sbin +0aaa8426fe4c356ef50c450d24134ca7fa5ee35c build/MODULE_16.sbin +efa5b28ecf3c8cd0b2cc0571cccc5e91a0932290 build/MODULE_17.sbin +5dc5ea5fcfe50af1c6324785a86f8f3876368ac0 build/MODULE_18.sbin +055d336fca5e30585938b89ae9dcb1274558febf build/MODULE_19.sbin +773e1e5ae00304b2963553f1998580e325c6189d build/MODULE_20.sbin +822fcd97cc12b29a9bcff8526da5dc4512f39bb3 build/MODULE_21.sbin +2ea4283dd68a4d9565bf8dd63ea3bd0eeceb6570 build/MODULE_22.sbin +6cca7206bb5750285bb4d3284f1b4dacc60d7bf9 build/MODULE_23.sbin +1b8e7a1e0f656e7e7888a66b296d2edac6eea684 build/MODULE_24.sbin +e12fa9c7a041f8b6566003a29f2ada49f6ea6e8b build/MODULE_25.sbin +52e684d649dd06862b93db70b4b23d74baa5a42a build/MODULE_26.sbin +e502dbf7558262549ab55be969c2a27257a06a87 build/MODULE_27.sbin +456c1d96b13b6b6827d772fa75583591bbca4b88 build/MODULE_28.sbin +736a922e1756f3151f7da30825696b653745189e build/MODULE_29.sbin +6c066d2365ed8aa05a81699f3953c23a7c300794 build/MODULE_30.sbin +6c8cac2ca9f509d28ce0d3f7316d5945bc1b6702 build/MODULE_31.sbin +f74a149094393042f9fd8153452ceb2ed6dd257f build/MODULE_32.sbin +71e17a56d5068edb60f2ee3eb5e12f11963cfb17 build/MODULE_33.sbin +1483b4eb5227bcc08466acddb0bf59cf23dae9dd build/MODULE_34.sbin +04eaadd550571cc9e324b3ef0cad7774d3d33bd2 build/MODULE_35.sbin +95808073fa6c757e7ba680e1f9e7379b6d19e33b build/MODULE_36.sbin +c7d0b0ef005a0cb1782c5747cc301873a4cb40f5 build/MODULE_37.sbin +bf2ef426465b56db480ccc9c9a9cc02409c57720 build/MODULE_38.sbin +2fe6765c83165a4c50330a0aaccc575a9f92bb49 build/MODULE_39.sbin +91d30f7c93d00e1b9c16cd13b2c73bf822285300 build/MODULE_40.sbin +996587f925f396e0ce4d773511c32d5dd4288469 build/MODULE_41.sbin +c9599a45c6f2bac5eb713645a6bfa0b760c2d254 build/MODULE_42.sbin +61932050f4c85e4b6b1d0e8e7bbb8cec93974128 build/MODULE_43.sbin +dd8a0e6626a79ceb049857861ca74779c7cec45b build/MODULE_44.sbin +df0b25d1be30577a6200d3662341ee9e8a7312be build/MODULE_45.sbin +8257fca389878d54f6f8e2aa932d1696715ae451 build/MODULE_46.sbin +bc06d4be2fa3b39c503c33e5dad3e7d18c494208 build/MODULE_47.sbin +18b333c7d3dc32742ab0a7c2a8975451f5883b31 build/MODULE_48.sbin +550e87a3655505ca69d07f0c8cba96884ec6cbf2 build/MODULE_49.sbin +58d8f1472458308a534dcbff4d63f768b29aac5a build/MODULE_50.sbin +64e55516a13d1d64c9171715e7870a52fa8612f6 build/MODULE_51.sbin +13240d317501187a69264e0da583f50a3f01a797 build/MODULE_52.sbin +009c82b769a712afe46b05cd71493aafda6a2644 build/MODULE_53.sbin +b227c417eac45bb27e942c05c9d25785bcd4bf81 build/MODULE_54.sbin +d5e6ca89821f31a46add7919a520d93231dfcc1f build/MODULE_55.sbin +7124cc36a6fab727c2474f9c9948aac2d753a9e6 build/MODULE_56.sbin +836bbb97ee1ad0e92aabe4f235260467c90ba2d1 build/MODULE_57.sbin +9a4656141b41bd11368019690cf8d4570ed1d9bf build/MODULE_58.sbin +80f2c555536bd5f11e872f23f5cd4458e01ea02c build/MODULE_59.sbin +d974d08484422e0342206524fa95cc31532f6a45 build/MODULE_60.sbin +a6203eb38120b42567d10741b1ad1069e212d3c9 build/MODULE_61.sbin +9bbe9952d6dc4524b9f726642cfd841c75482629 build/MODULE_62.sbin +d6b57ae6134b95ca8c2989bb22f25bc7a62ab6e6 build/MODULE_63.sbin +5ddd33b1071506a85aee57a5d478a446c6ef2cef build/MODULE_64.sbin +c6ea696afe8492d4c45ebf6438a968e51de93585 build/MODULE_65.sbin +1bf9511dc93b61a9244180b0d7ad390b229516f6 build/MODULE_66.sbin +a62de9ee2e221f29bd6c942db912b13cabec5e73 build/MODULE_67.sbin +6b8e39bb2285d3d6f2772d35678a00ebe4cee359 build/MODULE_68.sbin +c66fbd0e2ba54d543f4a2ba842f6f70a05b19eec build/MODULE_69.sbin +6639c4a9a35e7e687664217d7f8ed2ff6b501ffc build/MODULE_70.sbin +4d5cfa9ff2261a59e6cef3cd7e14e4428d624643 build/MODULE_71.sbin +de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_72.sbin +dc5d200d5557f85e51b1032212c7190dfef404e4 build/MODULE_73.sbin +031b2bd8bec93c0adf7bc09ce9e85491dca5a479 build/MODULE_74.sbin +da626fda7e1f4fba1a8048b71dd21402da698cfc build/MODULE_75.sbin +2a6ee045faacf0d76720b476f77663127d4f1906 build/MODULE_76.sbin +b18693a936b0284a1c31b124f77e9c8a348b2f59 build/MODULE_77.sbin +d74a82e1e3f289e67e8f8e74655a7fec631df59c build/MODULE_78.sbin +782b5de600bc284704bf4020c9afc6ded44628a2 build/MODULE_79.sbin +b07b591efbe3de8c9e0184ba3cbd4e8df3415e7d build/MODULE_80.sbin +45179a7021d88902f8f931663620f18fd673ec24 build/MODULE_81.sbin +40ac0ea1f763271c74c42a12bae557dc5b49ea65 build/MODULE_82.sbin +5b41270e5534e5fa965d9e762d0e56c2d79e8a6b build/MODULE_83.sbin +936504d3c568cf0f89b5982f3249bc43097265ae build/MODULE_84.sbin +944283bd9722dbf8a7a8025794c44eecb2dacd68 build/MODULE_85.sbin +00151ae462bbde7356e87750ab0176ca84ae45c6 build/MODULE_86.sbin diff --git a/arm9/asm/OS_emulator.s b/arm9/asm/OS_emulator.s deleted file mode 100644 index 69207a5e..00000000 --- a/arm9/asm/OS_emulator.s +++ /dev/null @@ -1,19 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start OS_GetConsoleType -OS_GetConsoleType: ; 0x020CBBC0 - ldr r0, _020CBBD0 ; =0x82000001 - ldr r1, _020CBBD4 ; =0x02106828 - str r0, [r1, #0x0] - bx lr - .balign 4 -_020CBBD0: .word 0x82000001 -_020CBBD4: .word 0x02106828 - - arm_func_start OS_IsRunOnEmulator -OS_IsRunOnEmulator: - mov r0, #0x0 - bx lr diff --git a/arm9/asm/OS_interrupt.s b/arm9/asm/OS_interrupt_asm.s index b2ba8e4e..ea17cf8d 100644 --- a/arm9/asm/OS_interrupt.s +++ b/arm9/asm/OS_interrupt_asm.s @@ -116,124 +116,3 @@ OSi_EnterTimerCallback: ; 0x020C9EC8 _020C9F08: .word OSi_IrqCallbackInfo+0x30 _020C9F0C: .word OSi_IrqCallbackInfo+0x38 _020C9F10: .word OSi_IrqCallbackInfo+0x34 - - arm_func_start OSi_EnterDmaCallback -OSi_EnterDmaCallback: ; 0x020C9F14 - stmdb sp!, {r4-r6,lr} - mov r3, #0xc - mul r6, r0, r3 - ldr ip, _020C9F54 ; =OSi_IrqCallbackInfo - add r4, r0, #0x8 - mov r5, #0x1 - mov r0, r5, lsl r4 - ldr r3, _020C9F58 ; =0x021D3424 - str r1, [r12, r6] - str r2, [r3, r6] - bl OS_EnableIrqMask - and r1, r0, r5, lsl r4 - ldr r0, _020C9F5C ; =0x021D3420 - str r1, [r0, r6] - ldmia sp!, {r4-r6,lr} - bx lr - .balign 4 -_020C9F54: .word OSi_IrqCallbackInfo -_020C9F58: .word OSi_IrqCallbackInfo + 8 -_020C9F5C: .word OSi_IrqCallbackInfo + 4 - - arm_func_start OS_GetIrqFunction -OS_GetIrqFunction: ; 0x020C9F60 - ldr r2, _020C9FE4 ; =0x027E0000 - mov r3, #0x0 -_020C9F68: - ands r1, r0, #0x1 - beq _020C9FC8 - cmp r3, #0x8 - blt _020C9F98 - cmp r3, #0xb - bgt _020C9F98 - sub r1, r3, #0x8 - mov r0, #0xc - mul r2, r1, r0 - ldr r0, _020C9FE8 ; =OSi_IrqCallbackInfo - ldr r0, [r0, r2] - bx lr -_020C9F98: - cmp r3, #0x3 - blt _020C9FC0 - cmp r3, #0x6 - bgt _020C9FC0 - add r1, r3, #0x1 - mov r0, #0xc - mul r2, r1, r0 - ldr r0, _020C9FE8 ; =OSi_IrqCallbackInfo - ldr r0, [r0, r2] - bx lr -_020C9FC0: - ldr r0, [r2, #0x0] - bx lr -_020C9FC8: - add r3, r3, #0x1 - cmp r3, #0x16 - mov r0, r0, lsr #0x1 - add r2, r2, #0x4 - blt _020C9F68 - mov r0, #0x0 - bx lr - .balign 4 -_020C9FE4: .word 0x027E0000 -_020C9FE8: .word OSi_IrqCallbackInfo - - arm_func_start OS_SetIrqFunction -OS_SetIrqFunction: ; 0x020C9FEC - stmdb sp!, {r4-r8,lr} - mov r8, #0x0 - ldr lr, _020CA074 ; =0x027E0000 - ldr r5, _020CA078 ; =OSi_IrqCallbackInfo - mov r6, r8 - mov r12, r8 - mov r3, #0x1 - mov r2, #0xc -_020CA00C: - ands r4, r0, #0x1 - beq _020CA05C - mov r7, r6 - cmp r8, #0x8 - blt _020CA030 - cmp r8, #0xb - suble r4, r8, #0x8 - mlale r7, r4, r2, r5 - ble _020CA04C -_020CA030: - cmp r8, #0x3 - blt _020CA048 - cmp r8, #0x6 - addle r4, r8, #0x1 - mlale r7, r4, r2, r5 - ble _020CA04C -_020CA048: - str r1, [lr, r8, lsl #0x2] -_020CA04C: - cmp r7, #0x0 - strne r1, [r7, #0x0] - strne r12, [r7, #0x8] - strne r3, [r7, #0x4] -_020CA05C: - add r8, r8, #0x1 - cmp r8, #0x16 - mov r0, r0, lsr #0x1 - blt _020CA00C - ldmia sp!, {r4-r8,lr} - bx lr - .balign 4 -_020CA074: .word 0x027E0000 -_020CA078: .word OSi_IrqCallbackInfo - - arm_func_start OS_InitIrqTable -OS_InitIrqTable: ; 0x020CA07C - ldr r0, _020CA090 ; =0x027E0060 - mov r1, #0x0 - str r1, [r0, #0x4] - str r1, [r0, #0x0] - bx lr - .balign 4 -_020CA090: .word 0x027E0060 diff --git a/arm9/asm/OS_irqTable.s b/arm9/asm/OS_irqTable.s index 9a484063..593946ba 100644 --- a/arm9/asm/OS_irqTable.s +++ b/arm9/asm/OS_irqTable.s @@ -28,6 +28,9 @@ OS_IRQTable: ; 027E0000 ;10b6a0 .word OS_IrqDummy .word OS_IrqDummy + .section .bss + .space 0x20 + .section .text arm_func_start OSi_IrqTimer3 diff --git a/arm9/asm/OS_reset.s b/arm9/asm/OS_reset.s deleted file mode 100644 index bdcc0f88..00000000 --- a/arm9/asm/OS_reset.s +++ /dev/null @@ -1,110 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start OS_ResetSystem -OS_ResetSystem: ; 0x020CD3B4 - stmdb sp!, {r4,lr} - ldr r1, _020CD42C ; =0x027FFC40 - mov r4, r0 - ldrh r0, [r1, #0x0] - cmp r0, #0x2 - bne _020CD3D0 - bl OS_Terminate -_020CD3D0: - bl OS_GetLockID - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl CARD_LockRom -_020CD3E0: - mov r0, #0x0 - bl MI_StopDma - mov r0, #0x1 - bl MI_StopDma - mov r0, #0x2 - bl MI_StopDma - mov r0, #0x3 - bl MI_StopDma - mov r0, #0x40000 - bl OS_SetIrqMask - mvn r0, #0x0 - bl OS_ResetRequestIrqMask - ldr r1, _020CD430 - mov r0, #0x10 - str r4, [r1] - bl OSi_SendToPxi - bl OSi_DoResetSystem - ldmia sp!, {r4, lr} - bx lr -_020CD42C: .word 0x027FFC40 -_020CD430: .word 0x027FFC20 - - arm_func_start OSi_SendToPxi -OSi_SendToPxi: ; 0x020CD434 - stmdb sp!, {r4-r6,lr} - mov r6, r0, lsl #0x8 - mov r5, #0xc - mov r4, #0x0 -_020CD444: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo -_020CD454: - cmp r0, #0x0 - bne _020CD444 - ldmia sp!, {r4-r6, lr} - bx lr - - arm_func_start OSi_CommonCallback -OSi_CommonCallback: ; OSi_CommonCallback - stmdb sp!, {lr} - sub sp, sp, #0x4 - and r0, r1, #0x7f00 - mov r0, r0, lsl #0x8 - mov r0, r0, lsr #0x10 - cmp r0, #0x10 - ldreq r0, _020CD4A4 ; =OSi_IsResetOccurred - moveq r1, #0x1 - streqh r1, [r0, #0x0] - addeq sp, sp, #0x4 - ldmeqia sp!, {lr} - bxeq lr - bl OS_Terminate - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020CD4A4: .word OSi_IsResetOccurred - - arm_func_start OS_InitReset -OS_InitReset: ; 0x020CD4A8 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020CD508 ; =0x021D37DC - ldrh r1, [r0, #0x0] - cmp r1, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r5,lr} - bxne lr - mov r1, #0x1 - strh r1, [r0, #0x0] - bl PXI_Init - mov r5, #0xc - mov r4, #0x1 -_020CD4DC: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady -_020CD4E8: - cmp r0, #0x0 - beq _020CD4DC - ldr r1, _020CD50C - mov r0, #0xC - bl PXI_SetFifoRecvCallback - add sp, sp, #0x4 - ldmia sp!, {r4-r5, lr} - bx lr -_020CD508: .word OSi_IsInitReset -_020CD50C: .word OSi_CommonCallback diff --git a/arm9/asm/OS_tcm.s b/arm9/asm/OS_tcm.s deleted file mode 100644 index 9c7196ae..00000000 --- a/arm9/asm/OS_tcm.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start OS_GetDTCMAddress -OS_GetDTCMAddress: ; 0x020CC9A4 - mrc p15, 0x0, r0, c9, c1, 0x0 - ldr r1, _020CC9B4 ; =0xFFFFF000 - and r0, r0, r1 - bx lr - .balign 4 -_020CC9B4: .word 0xFFFFF000 diff --git a/arm9/asm/OS_terminate_proc.s b/arm9/asm/OS_terminate_proc.s deleted file mode 100644 index 30940914..00000000 --- a/arm9/asm/OS_terminate_proc.s +++ /dev/null @@ -1,19 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start OS_Halt -OS_Halt: ; 0x020CD844 - mov r0, #0x0 - mcr p15, 0x0, r0, c7, c0, 0x4 - bx lr - - arm_func_start OS_Terminate -OS_Terminate: ; 0x020CD850 - stmdb sp!, {lr} - sub sp, sp, #0x4 -_020CD858: - bl OS_DisableInterrupts - bl OS_Halt - b _020CD858 diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s index 50b0dace..9c67c9fd 100644 --- a/arm9/asm/unk_02000E0C.s +++ b/arm9/asm/unk_02000E0C.s @@ -19,7 +19,7 @@ FUN_02000E0C: ; 0x02000E0C cmp r0, r1 beq _02000E2C mov r1, #0x0 - bl FUN_02005FDC + bl HandleLoadOverlay _02000E2C: ldr r0, _02000E74 ; =0x02106FA0 mov r2, #0x0 @@ -51,7 +51,7 @@ _02000E4A: sub r1, r1, #0x1 cmp r0, r1 beq _02000E70 - bl FUN_02005F60 + bl UnloadOverlayByID _02000E70: pop {r3, pc} nop diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s index 2024d9d7..ef8f06bf 100644 --- a/arm9/asm/unk_020023C0.s +++ b/arm9/asm/unk_020023C0.s @@ -7793,8 +7793,10 @@ _02005F36: bx lr .balign 4 - thumb_func_start FUN_02005F3C -FUN_02005F3C: ; 0x02005F3C + ; Code that handles overlays? + + thumb_func_start FreeOverlayAllocation +FreeOverlayAllocation: ; 0x02005F3C push {r4, lr} add r4, r0, #0x0 ldr r0, [r4, #0x4] @@ -7813,12 +7815,12 @@ _02005F5A: str r0, [r4, #0x4] pop {r4, pc} - thumb_func_start FUN_02005F60 -FUN_02005F60: ; 0x02005F60 + thumb_func_start UnloadOverlayByID +UnloadOverlayByID: ; 0x02005F60 push {r4, lr} add r4, r0, #0x0 - bl FUN_02005F90 - bl FUN_0200610C + bl GetOverlayLoadDestination + bl GetLoadedOverlaysInRegion mov r2, #0x0 add r3, r0, #0x0 _02005F70: @@ -7830,7 +7832,7 @@ _02005F70: bne _02005F86 lsl r1, r2, #0x3 add r0, r0, r1 - bl FUN_02005F3C + bl FreeOverlayAllocation pop {r4, pc} _02005F86: add r2, r2, #0x1 @@ -7839,8 +7841,8 @@ _02005F86: blt _02005F70 pop {r4, pc} - thumb_func_start FUN_02005F90 -FUN_02005F90: ; 0x02005F90 + thumb_func_start GetOverlayLoadDestination +GetOverlayLoadDestination: ; 0x02005F90 push {lr} sub sp, #0x2c add r2, r0, #0x0 @@ -7881,24 +7883,24 @@ _02005FD2: .balign 4 _02005FD8: .word 0x027E0000 - thumb_func_start FUN_02005FDC -FUN_02005FDC: ; 0x02005FDC + thumb_func_start HandleLoadOverlay +HandleLoadOverlay: ; 0x02005FDC push {r3-r7, lr} add r4, r1, #0x0 mov r1, #0x0 mvn r1, r1 add r5, r0, #0x0 str r1, [sp, #0x0] - bl FUN_02006090 + bl CanOverlayBeLoaded cmp r0, #0x0 bne _02005FF4 mov r0, #0x0 pop {r3-r7, pc} _02005FF4: add r0, r5, #0x0 - bl FUN_02005F90 + bl GetOverlayLoadDestination add r7, r0, #0x0 - bl FUN_0200610C + bl GetLoadedOverlaysInRegion add r3, r0, #0x0 mov r6, #0x0 add r1, r3, #0x0 @@ -7942,19 +7944,19 @@ _0200603C: _0200604A: mov r0, #0x0 add r1, r5, #0x0 - bl FUN_02006168 + bl LoadOverlayNormal add r4, r0, #0x0 b _02006076 _02006056: mov r0, #0x0 add r1, r5, #0x0 - bl FUN_02006170 + bl LoadOverlayNoInit add r4, r0, #0x0 b _02006076 _02006062: mov r0, #0x0 add r1, r5, #0x0 - bl FUN_020061A8 + bl LoadOverlayNoInitAsync add r4, r0, #0x0 b _02006076 _0200606E: @@ -7976,14 +7978,14 @@ _0200608C: mov r0, #0x1 pop {r3-r7, pc} - thumb_func_start FUN_02006090 -FUN_02006090: ; 0x02006090 + thumb_func_start CanOverlayBeLoaded +CanOverlayBeLoaded: ; 0x02006090 push {r3-r7, lr} sub sp, #0x10 add r1, sp, #0xc add r2, sp, #0x8 add r4, r0, #0x0 - bl FUN_02006130 + bl GetOverlayRamBounds cmp r0, #0x0 bne _020060A8 add sp, #0x10 @@ -7991,8 +7993,8 @@ FUN_02006090: ; 0x02006090 pop {r3-r7, pc} _020060A8: add r0, r4, #0x0 - bl FUN_02005F90 - bl FUN_0200610C + bl GetOverlayLoadDestination + bl GetLoadedOverlaysInRegion add r5, r0, #0x0 mov r4, #0x0 add r6, sp, #0x4 @@ -8004,7 +8006,7 @@ _020060BA: ldr r0, [r5, #0x0] add r1, r6, #0x0 add r2, r7, #0x0 - bl FUN_02006130 + bl GetOverlayRamBounds cmp r0, #0x1 bne _020060FC ldr r1, [sp, #0x4] @@ -8042,8 +8044,8 @@ _020060FC: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0200610C -FUN_0200610C: ; 0x0200610C + thumb_func_start GetLoadedOverlaysInRegion +GetLoadedOverlaysInRegion: ; 0x0200610C cmp r0, #0x0 beq _02006118 cmp r0, #0x1 @@ -8064,8 +8066,8 @@ _02006124: .word 0x021C45B0 _02006128: .word 0x021C45F0 _0200612C: .word 0x021C4630 - thumb_func_start FUN_02006130 -FUN_02006130: ; 0x02006130 + thumb_func_start GetOverlayRamBounds +GetOverlayRamBounds: ; 0x02006130 push {r4-r5, lr} sub sp, #0x2c add r3, r0, #0x0 @@ -8094,15 +8096,15 @@ _02006152: pop {r4-r5, pc} .balign 4 - thumb_func_start FUN_02006168 -FUN_02006168: ; 0x02006168 + thumb_func_start LoadOverlayNormal +LoadOverlayNormal: ; 0x02006168 ldr r3, _0200616C ; =FS_LoadOverlay bx r3 .balign 4 _0200616C: .word FS_LoadOverlay - thumb_func_start FUN_02006170 -FUN_02006170: ; 0x02006170 + thumb_func_start LoadOverlayNoInit +LoadOverlayNoInit: ; 0x02006170 push {lr} sub sp, #0x2c add r3, r0, #0x0 @@ -8131,8 +8133,8 @@ _0200619A: pop {pc} .balign 4 - thumb_func_start FUN_020061A8 -FUN_020061A8: ; 0x020061A8 + thumb_func_start LoadOverlayNoInitAsync +LoadOverlayNoInitAsync: ; 0x020061A8 push {lr} sub sp, #0x74 add r3, r0, #0x0 @@ -8289,7 +8291,7 @@ _020062AE: cmp r0, r1 beq _020062BE mov r1, #0x2 - bl FUN_02005FDC + bl HandleLoadOverlay _020062BE: mov r0, #0x1 str r0, [r4, #0x10] @@ -8330,7 +8332,7 @@ _020062F0: mvn r1, r1 cmp r0, r1 beq _0200630A - bl FUN_02005F60 + bl UnloadOverlayByID _0200630A: mov r0, #0x1 pop {r4, pc} diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s index fbfb90df..ae663521 100644 --- a/arm9/asm/unk_02006864.s +++ b/arm9/asm/unk_02006864.s @@ -35,7 +35,7 @@ FUN_0200687C: ; 0x0200687C add r7, r0, #0x0
beq _020068C2
add r1, sp, #0x4
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0x0
beq _020068BC
cmp r4, #0x0
@@ -75,7 +75,7 @@ FUN_020068C8: ; 0x020068C8 add r7, r0, #0x0
beq _0200692C
add r1, sp, #0x4
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0x0
beq _02006926
cmp r4, #0x0
@@ -144,7 +144,7 @@ FUN_02006948: ; 0x02006948 cmp r0, #0x0
beq _02006A2A
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
beq _02006A24
ldr r0, [sp, #0x8]
@@ -160,7 +160,7 @@ _02006982: ldr r0, [sp, #0x8]
add r1, r5, #0x0
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r4, #0x7
bhi _02006A14
add r0, r4, r4
@@ -179,7 +179,7 @@ _0200699C: ; jump table (using 16-bit offset) .short _020069C6 - _0200699C - 2; case 6
.short _020069FA - _0200699C - 2; case 7
_020069AC:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -188,10 +188,10 @@ _020069AC: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GX_EndLoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _02006A24
_020069C6:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -200,10 +200,10 @@ _020069C6: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GXS_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _02006A24
_020069E0:
- blx GX_BeginLoadOBJExtPltt
+ bl GX_BeginLoadOBJExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -212,10 +212,10 @@ _020069E0: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GX_EndLoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
b _02006A24
_020069FA:
- blx GXS_BeginLoadOBJExtPltt
+ bl GXS_BeginLoadOBJExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -224,7 +224,7 @@ _020069FA: add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GXS_EndLoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
b _02006A24
_02006A14:
ldr r0, [sp, #0x8]
@@ -259,7 +259,7 @@ FUN_02006A34: ; 0x02006A34 add r7, r0, #0x0
beq _02006A80
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006A7A
cmp r4, #0x0
@@ -270,7 +270,7 @@ _02006A60: ldr r0, [sp, #0x4]
add r1, r4, #0x0
ldr r0, [r0, #0x14]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
ldr r3, _02006A88 ; =0x020ECBA0
lsl r5, r5, #0x2
@@ -303,11 +303,11 @@ FUN_02006A8C: ; 0x02006A8C add r6, r0, #0x0
beq _02006AE0
add r1, sp, #0x4
- blx FUN_020B00F0
+ bl FUN_020B00F0
add r7, r0, #0x0
add r0, r6, #0x0
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
beq _02006ADA
cmp r7, #0x0
@@ -318,14 +318,14 @@ FUN_02006A8C: ; 0x02006A8C ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
add r3, r5, #0x0
- blx FUN_020B10E8
+ bl FUN_020B10E8
b _02006ADA
_02006ACE:
ldr r0, [sp, #0x8]
ldr r3, [sp, #0x24]
add r1, r4, #0x0
add r2, r5, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
_02006ADA:
add r0, r6, #0x0
bl FUN_02016A18
@@ -346,7 +346,7 @@ FUN_02006AE4: ; 0x02006AE4 ldr r4, _02006B30 ; =0x00000000
beq _02006B28
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006B22
ldr r1, [sp, #0x18]
@@ -388,7 +388,7 @@ FUN_02006B38: ; 0x02006B38 add r4, r0, #0x0
beq _02006B9E
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006B98
ldr r1, [sp, #0x18]
@@ -450,7 +450,7 @@ FUN_02006BB0: ; 0x02006BB0 add r5, r0, #0x0
beq _02006BD6
add r1, r4, #0x0
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0x0
bne _02006BD6
add r0, r5, #0x0
@@ -473,7 +473,7 @@ FUN_02006BDC: ; 0x02006BDC add r5, r0, #0x0
beq _02006C02
add r1, r4, #0x0
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0x0
bne _02006C02
add r0, r5, #0x0
@@ -495,7 +495,7 @@ FUN_02006C08: ; 0x02006C08 add r4, r0, #0x0
beq _02006C2C
add r1, r5, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
bne _02006C2C
add r0, r4, #0x0
@@ -517,7 +517,7 @@ FUN_02006C30: ; 0x02006C30 add r5, r0, #0x0
beq _02006C56
add r1, r4, #0x0
- blx FUN_020AFEB8
+ bl FUN_020AFEB8
cmp r0, #0x0
bne _02006C56
add r0, r5, #0x0
@@ -540,7 +540,7 @@ FUN_02006C5C: ; 0x02006C5C add r5, r0, #0x0
beq _02006C82
add r1, r4, #0x0
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
cmp r0, #0x0
bne _02006C82
add r0, r5, #0x0
@@ -617,7 +617,7 @@ _02006CFC: beq _02006D10
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02006D10:
@@ -683,7 +683,7 @@ _02006D7C: beq _02006D90
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02006D90:
@@ -736,7 +736,7 @@ FUN_02006D98: ; 0x02006D98 ldr r1, [r4, r1]
mov r0, #0x0
mov r2, #0x4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0x0
mov r1, #0xc0
bl FUN_02016998
@@ -746,7 +746,7 @@ FUN_02006D98: ; 0x02006D98 ldr r1, [r4, r1]
mov r0, #0x0
mov r2, #0x4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r6, #0x0
add r5, r4, #0x0
add r7, r6, #0x0
@@ -754,12 +754,12 @@ _02006E12: add r0, r7, #0x0
add r1, r5, #0x0
mov r2, #0x98
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r6, r6, #0x1
add r5, #0x98
cmp r6, #0x4
blt _02006E12
- blx FUN_020B02C8
+ bl FUN_020B02C8
ldr r2, _02006EC8 ; =0x000002E3
mov r0, #0x0
strb r0, [r4, r2]
@@ -770,7 +770,7 @@ _02006E12: bl LoadFromNarc_2
add r1, sp, #0xc
str r0, [sp, #0x4]
- blx FUN_020B0088
+ bl FUN_020B0088
ldr r0, [sp, #0xc]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -795,7 +795,7 @@ _02006E12: ldrb r1, [r1, #0x0]
ldr r0, [r4, r0]
lsl r2, r2, #0xe
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
mov r7, #0xab
ldr r6, _02006ECC ; =0x00005050
@@ -850,7 +850,7 @@ FUN_02006ED4: ; 0x02006ED4 bl FUN_020082A8
add r0, r5, #0x0
bl FUN_020086F4
- blx FUN_020BB394
+ bl FUN_020BB394
mov r6, #0x9f
mov r0, #0x0
ldr r4, _02007250 ; =0x04000444
@@ -910,7 +910,7 @@ _02006F48: add r1, #0x24
blx r2
_02006F56:
- blx FUN_020BB394
+ bl FUN_020BB394
ldr r0, _02007258 ; =0x000002E3
ldrb r0, [r5, r0]
cmp r0, #0x1
@@ -969,7 +969,7 @@ _02006F7E: ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotX
+ bl G3_RotX
ldrh r0, [r4, #0x3a]
asr r0, r0, #0x4
lsl r1, r0, #0x2
@@ -978,7 +978,7 @@ _02006F7E: ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotY
+ bl G3_RotY
ldrh r0, [r4, #0x3c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
@@ -987,7 +987,7 @@ _02006F7E: ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotZ
+ bl G3_RotZ
ldr r0, [r4, #0x28]
lsl r0, r0, #0xc
neg r1, r0
@@ -1120,7 +1120,7 @@ _02006F7E: add r2, r3, r2
asr r1, r1, #0x10
mov r3, r12
- blx FUN_020B0250
+ bl FUN_020B0250
b _02007174
_02007104:
mov r0, #0x34
@@ -1177,7 +1177,7 @@ _02007104: lsl r1, r1, #0x10
asr r1, r1, #0x10
add r2, r6, r2
- blx FUN_020B0250
+ bl FUN_020B0250
_02007174:
add r0, r4, #0x0
add r0, #0x6c
@@ -1340,7 +1340,7 @@ _0200727C: lsl r1, r1, #0x10
ldr r2, _020072E0 ; =0xFFFFFC18
asr r1, r1, #0x10
- blx FUN_020B0250
+ bl FUN_020B0250
_020072BC:
ldr r0, [sp, #0x14]
add r4, #0x98
@@ -1529,7 +1529,7 @@ _02007408: mov r0, #0x0
add r1, r5, #0x0
mov r2, #0x98
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, r6]
mov r0, #0x1
bic r1, r0
@@ -1658,7 +1658,7 @@ _02007408: add r1, r4, r6
add r1, #0x84
mov r2, #0x14
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02007518:
add r0, r4, r6
add sp, #0xc
@@ -3499,7 +3499,7 @@ FUN_020081C4: ; 0x020081C4 strb r1, [r4, r0]
sub r0, #0x81
add r0, r4, r0
- blx FUN_020B1A24
+ bl FUN_020B1A24
mov r3, #0xae
lsl r3, r3, #0x2
mov r1, #0x20
@@ -3525,7 +3525,7 @@ FUN_020081C4: ; 0x020081C4 ldr r1, [r4, r1]
mov r2, #0x0
add r3, r4, r3
- blx FUN_020B1528
+ bl FUN_020B1528
_02008212:
ldr r0, _02008258 ; =0x000002E2
ldrb r1, [r4, r0]
@@ -3535,7 +3535,7 @@ _02008212: strb r1, [r4, r0]
sub r0, #0x5e
add r0, r4, r0
- blx FUN_020B19DC
+ bl FUN_020B19DC
mov r3, #0xaa
lsl r3, r3, #0x2
add r0, r3, #0x0
@@ -3556,7 +3556,7 @@ _02008212: add r0, r4, r0
mov r2, #0x0
add r3, r4, r3
- blx FUN_020B1240
+ bl FUN_020B1240
_02008252:
pop {r4, pc}
.balign 4
@@ -3652,7 +3652,7 @@ _020082CC: bl LoadFromNarc_2
add r1, sp, #0x58
str r0, [sp, #0x4c]
- blx FUN_020B0088
+ bl FUN_020B0088
ldr r0, [sp, #0x58]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -3767,7 +3767,7 @@ _020083C4: ldr r1, [sp, #0xc]
ldr r0, [sp, #0x14]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _020083F4
mov r0, #0xab
@@ -3786,7 +3786,7 @@ _020083C4: _020083F4:
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008416
mov r0, #0xab
@@ -3890,7 +3890,7 @@ _020084B4: ldr r1, [sp, #0x8]
ldr r0, [sp, #0x14]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _020084E4
mov r0, #0xab
@@ -3909,7 +3909,7 @@ _020084B4: _020084E4:
ldr r1, [sp, #0x8]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008504
mov r0, #0xab
@@ -4086,7 +4086,7 @@ _0200862C: ldr r1, [sp, #0x4]
ldr r0, [sp, #0x0]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008654
mov r0, #0xab
@@ -4101,7 +4101,7 @@ _0200862C: _02008654:
ldr r1, [sp, #0x4]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008672
mov r0, #0xab
@@ -4215,7 +4215,7 @@ _02008706: bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x10]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x18]
mov r7, #0x0
ldr r1, [r0, #0x0]
@@ -4261,7 +4261,7 @@ _0200874A: bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x4]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x18]
mov r7, #0xad
ldr r0, [r0, #0xc]
@@ -5035,10 +5035,10 @@ FUN_02008D44: ; 0x02008D44 beq _02008D98
b _02008DC4
_02008D5A:
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x40
beq _02008D6A
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x20
bne _02008D7A
_02008D6A:
@@ -5065,10 +5065,10 @@ _02008D8A: bl FUN_0201D194
pop {r4, pc}
_02008D98:
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x30
beq _02008DA8
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x50
bne _02008DB6
_02008DA8:
@@ -5127,7 +5127,7 @@ FUN_02008DEC: ; 0x02008DEC mov r1, #0x0
add r2, r7, #0x0
str r0, [r4, #0x4]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x8]
mov r0, #0x0
str r0, [r4, #0xc]
@@ -6286,7 +6286,7 @@ _0200969C: mov r2, #0x18
add r1, r5, #0x4
mul r2, r3
- blx memcpy
+ bl memcpy
_020096B0:
pop {r4-r6, pc}
.balign 4
@@ -6558,7 +6558,7 @@ FUN_0200986C: ; 0x0200986C add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
str r5, [r4, #0x4]
add r0, r4, #0x0
pop {r4-r6, pc}
@@ -6576,7 +6576,7 @@ FUN_0200988C: ; 0x0200988C add r4, r0, #0x0
add r0, r7, #0x0
add r1, r4, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
str r5, [r4, #0x4]
str r6, [r4, #0x8]
add r0, r4, #0x0
@@ -6593,7 +6593,7 @@ FUN_020098B0: ; 0x020098B0 add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020AFEB8
+ bl FUN_020AFEB8
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6608,7 +6608,7 @@ FUN_020098CC: ; 0x020098CC add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6623,7 +6623,7 @@ FUN_020098E8: ; 0x020098E8 add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020AFFD8
+ bl FUN_020AFFD8
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6638,7 +6638,7 @@ FUN_02009904: ; 0x02009904 add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx thunk_FUN_020afda0
+ bl thunk_FUN_020afda0
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6799,7 +6799,7 @@ _02009A34: beq _02009A48
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02009A48:
@@ -7367,7 +7367,7 @@ FUN_02009E88: ; 0x02009E88 mov r1, #0x0
bl FUN_02009E54
add r1, r4, #0x0
- blx FUN_020B19C4
+ bl FUN_020B19C4
mov r1, #0x0
mvn r1, r1
cmp r0, r1
@@ -7458,7 +7458,7 @@ _02009F1C: lsl r2, r4, #0x10
lsr r1, r1, #0x10
lsr r2, r2, #0x10
- blx FUN_020B0E34
+ bl FUN_020B0E34
cmp r0, #0x0
bne _02009F48
bl ErrorHandling
@@ -7481,7 +7481,7 @@ _02009F48: lsr r1, r1, #0x10
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- blx FUN_020B0E34
+ bl FUN_020B0E34
cmp r0, #0x0
bne _02009F78
bl ErrorHandling
@@ -7498,11 +7498,11 @@ FUN_02009F80: ; 0x02009F80 ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02009F98
- blx FUN_020B0870
+ bl FUN_020B0870
ldr r0, _02009F9C ; =0x021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- blx FUN_020B0870
+ bl FUN_020B0870
_02009F98:
pop {r3, pc}
nop
@@ -7627,7 +7627,7 @@ FUN_0200A074: ; 0x0200A074 add r2, r1, #0x0
ldr r0, [r0, #0x0]
add r1, r3, #0x0
- blx FUN_020B0C7C
+ bl FUN_020B0C7C
add r4, r0, #0x0
bne _0200A08C
bl ErrorHandling
@@ -7646,7 +7646,7 @@ FUN_0200A094: ; 0x0200A094 ldr r0, [r0, #0x0]
add r1, r3, #0x0
add r0, #0x1c
- blx FUN_020B0C7C
+ bl FUN_020B0C7C
add r4, r0, #0x0
bne _0200A0AE
bl ErrorHandling
@@ -7662,7 +7662,7 @@ FUN_0200A0B8: ; 0x0200A0B8 add r1, r0, #0x0
ldr r0, _0200A0D4 ; =0x021C4670
ldr r0, [r0, #0x0]
- blx FUN_020B0BB0
+ bl FUN_020B0BB0
add r4, r0, #0x0
ldr r0, _0200A0D8 ; =0x0000FFFE
cmp r4, r0
@@ -7682,7 +7682,7 @@ FUN_0200A0DC: ; 0x0200A0DC ldr r0, _0200A0FC ; =0x021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- blx FUN_020B0BB0
+ bl FUN_020B0BB0
add r4, r0, #0x0
ldr r0, _0200A100 ; =0x0000FFFE
cmp r4, r0
@@ -7757,7 +7757,7 @@ _0200A166: ldrsh r2, [r5, r2]
ldr r0, _0200A198 ; =0x04000050
ldr r1, [r5, #0x0]
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
b _0200A18E
_0200A17C:
mov r0, #0x2
@@ -7767,7 +7767,7 @@ _0200A17C: ldrsh r2, [r5, r2]
ldr r0, _0200A19C ; =0x04001050
ldr r1, [r5, #0x0]
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A18E:
cmp r4, #0x1
bne _0200A196
@@ -7823,12 +7823,12 @@ _0200A1EA: mov r0, #0x12
ldrsh r0, [r5, r0]
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0x14]
mov r0, #0x12
ldrsh r0, [r5, r0]
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r5, #0x16]
mov r0, #0x0
strh r0, [r5, #0x18]
@@ -7850,7 +7850,7 @@ FUN_0200A208: ; 0x0200A208 beq _0200A23A
ldr r0, _0200A264 ; =0x04000050
add r1, r4, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
str r4, [sp, #0x0]
mov r0, #0x1
str r0, [sp, #0x4]
@@ -7867,7 +7867,7 @@ _0200A23A: ldr r0, _0200A26C ; =0x04001050
add r1, r4, #0x0
add r2, r6, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
str r4, [sp, #0x0]
mov r0, #0x2
str r0, [sp, #0x4]
@@ -7896,7 +7896,7 @@ FUN_0200A274: ; 0x0200A274 beq _0200A28A
ldr r0, _0200A2A4 ; =0x04000050
add r2, r5, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A28A:
mov r0, #0x2
tst r0, r4
@@ -7904,7 +7904,7 @@ _0200A28A: ldr r0, _0200A2A8 ; =0x04001050
add r1, r6, #0x0
add r2, r5, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A29A:
add r0, r4, #0x0
bl FUN_0200A2D8
@@ -7919,11 +7919,11 @@ FUN_0200A2AC: ; 0x0200A2AC ldr r0, _0200A2CC ; =0x021C4694
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A2D0 ; =0x021C4674
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A2D4 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x3c]
@@ -7944,7 +7944,7 @@ FUN_0200A2D8: ; 0x0200A2D8 ldr r0, _0200A30C ; =0x021C4694
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A310 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x3c]
@@ -7955,7 +7955,7 @@ _0200A2F2: ldr r0, _0200A314 ; =0x021C4674
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A310 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x1c]
@@ -8245,7 +8245,7 @@ FUN_0200A4D4: ; 0x0200A4D4 ldr r2, [sp, #0x4]
add r0, r5, r0
add r1, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, _0200A57C ; =0x00091BD3
add r2, r4, #0x1
mul r1, r2
@@ -8332,7 +8332,7 @@ FUN_0200A584: ; 0x0200A584 ldr r2, [sp, #0x4]
add r0, r5, r0
add r1, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, _0200A640 ; =0x00091BD3
add r2, r4, #0x1
mul r1, r2
@@ -11083,13 +11083,13 @@ _0200BAD8: add r0, r1, r0
add r1, r6, r5
mov r2, #0x20
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
b _0200BB00
_0200BAF6:
ldr r1, [sp, #0x0]
add r0, r6, r5
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0200BB00:
add r4, r4, #0x2
ldrh r1, [r4, #0x8]
@@ -11189,7 +11189,7 @@ _0200BB8A: ldr r1, [r5, #0x0]
add r0, r7, #0x0
bl FUN_0201E00C
- blx FUN_020B0FC0
+ bl FUN_020B0FC0
ldr r0, [r5, #0x8]
cmp r0, #0x1
bne _0200BBD6
@@ -11577,20 +11577,20 @@ FUN_0200BE74: ; 0x0200BE74 cmp r3, #0x0
ble _0200BEA0
lsl r0, r3, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BEAE
_0200BEA0:
lsl r0, r3, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BEAE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x8]
add r1, sp, #0x28
mov r0, #0x10
@@ -11598,20 +11598,20 @@ _0200BEAE: cmp r0, #0x0
ble _0200BED0
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BEDE
_0200BED0:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BEDE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0xc]
add r1, sp, #0x28
mov r0, #0x14
@@ -11619,20 +11619,20 @@ _0200BEDE: cmp r0, #0x0
ble _0200BF00
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BF0E
_0200BF00:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BF0E:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x10]
ldr r0, [sp, #0x4c]
cmp r0, #0x2
@@ -12069,60 +12069,60 @@ _0200C206: cmp r0, #0x0
ble _0200C260
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C26E
_0200C260:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C26E:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x4c]
mov r0, #0x2
ldrsh r0, [r5, r0]
cmp r0, #0x0
ble _0200C28E
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C29C
_0200C28E:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C29C:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x50]
mov r0, #0x4
ldrsh r0, [r5, r0]
cmp r0, #0x0
ble _0200C2BC
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C2CA
_0200C2BC:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C2CA:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x54]
ldr r0, [r5, #0x10]
cmp r0, #0x2
@@ -12965,13 +12965,13 @@ FUN_0200C84C: ; 0x0200C84C add r4, r0, #0x0
ldr r0, _0200C880 ; =0x45800000
add r1, r6, #0x0
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #0x0]
ldr r0, _0200C880 ; =0x45800000
add r1, r7, #0x0
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #0x4]
add r0, r5, #0x0
add r1, r4, #0x0
@@ -14203,27 +14203,27 @@ _0200D1E0: add r0, r5, r6
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
ldr r1, [sp, #0x38]
add r0, #0x20
add r0, r5, r0
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
ldr r1, [sp, #0x34]
add r0, #0x40
add r0, r5, r0
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
ldr r1, [sp, #0x38]
add r6, #0x60
add r0, r5, r6
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r7, #0x1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
@@ -14292,7 +14292,7 @@ FUN_0200D274: ; 0x0200D274 ldr r1, [r1, #0x14]
lsl r2, r2, #0x6
add r4, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x9
mov r3, #0x0
lsl r0, r0, #0x6
@@ -14359,7 +14359,7 @@ FUN_0200D300: ; 0x0200D300 bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x14]
- blx FUN_020B0138
+ bl FUN_020B0138
add r2, sp, #0x20
ldr r1, [sp, #0x18]
ldrb r2, [r2, #0x10]
@@ -15015,7 +15015,7 @@ FUN_0200D858: ; 0x0200D858 add r0, r4, r0
add r1, r5, r1
mov r2, #0x80
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x28]
mov r1, #0x80
bl FUN_02016998
@@ -15026,7 +15026,7 @@ FUN_0200D858: ; 0x0200D858 str r1, [sp, #0x2c]
add r1, r5, r1
add r6, r0, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x24]
mov r2, #0x20
add r0, #0xb
@@ -15034,18 +15034,18 @@ FUN_0200D858: ; 0x0200D858 add r0, r6, #0x0
add r0, #0x20
add r1, r5, r7
- blx memcpy
+ bl memcpy
ldr r1, [sp, #0x2c]
add r0, r6, #0x0
add r0, #0x40
add r1, r5, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
add r0, #0x60
add r1, r5, r7
mov r2, #0x20
- blx memcpy
+ bl memcpy
mov r5, #0x0
add r7, r4, #0x4
_0200D8DA:
@@ -15053,7 +15053,7 @@ _0200D8DA: add r0, r7, r0
add r1, r6, #0x0
mov r2, #0x80
- blx memcpy
+ bl memcpy
add r0, r5, #0x1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -15849,17 +15849,17 @@ FUN_0200DEF4: ; 0x0200DEF4 bl FUN_02009C5C
mov r1, #0x1
str r0, [sp, #0x4]
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x19
add r7, r0, #0x0
add r0, r4, #0x0
lsl r1, r1, #0x8
- blx DC_FlushRange
+ bl DC_FlushRange
mov r2, #0x19
add r0, r4, #0x0
add r1, r7, #0x0
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
add r0, r4, #0x0
bl FUN_02016A18
ldr r2, _0200DFC8 ; =0x00000162
@@ -15876,15 +15876,15 @@ FUN_0200DEF4: ; 0x0200DEF4 ldr r1, [sp, #0x4]
bl FUN_02009E54
mov r1, #0x1
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0x20
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0x0
add r1, r5, #0x0
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
add r0, r4, #0x0
bl FUN_02016A18
add sp, #0x28
@@ -16385,12 +16385,12 @@ FUN_0200E3BC: ; 0x0200E3BC bne _0200E3D2
mov r1, #0x0
mov r2, #0x2
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _0200E3DA
_0200E3D2:
mov r1, #0x0
mov r2, #0x2
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
_0200E3DA:
ldr r0, _0200E41C ; =0x021C4740
mov r1, #0x1
@@ -16430,11 +16430,11 @@ FUN_0200E420: ; 0x0200E420 add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x2
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x2
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
pop {r3}
pop {r3}
add sp, #0x10
@@ -16446,11 +16446,11 @@ FUN_0200E440: ; 0x0200E440 cmp r0, #0x0
bne _0200E44E
ldr r0, _0200E458 ; =0x0400006C
- blx GXx_SetMasterBrightness_
+ bl GXx_SetMasterBrightness_
pop {r3, pc}
_0200E44E:
ldr r0, _0200E45C ; =0x0400106C
- blx GXx_SetMasterBrightness_
+ bl GXx_SetMasterBrightness_
pop {r3, pc}
nop
_0200E458: .word 0x0400006C
@@ -16994,12 +16994,12 @@ _0200E812: add r0, #0x14
mov r1, #0x0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0x44
mov r1, #0x0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r2, r4, #0x0
add r2, #0x74
mov r1, #0x18
@@ -17013,7 +17013,7 @@ _0200E83A: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r4, pc}
thumb_func_start FUN_0200E850
@@ -18111,7 +18111,7 @@ FUN_0200F0D0: ; 0x0200F0D0 lsl r2, r4, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -18145,7 +18145,7 @@ _0200F116: ldr r1, [sp, #0x4]
asr r3, r4, #0x1f
add r2, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -18178,7 +18178,7 @@ FUN_0200F14C: ; 0x0200F14C add r0, r4, r0
asr r0, r0, #0x1
lsl r0, r0, #0xc
- blx FX_Div
+ bl FX_Div
pop {r4, pc}
thumb_func_start FUN_0200F164
@@ -18829,7 +18829,7 @@ _0200F60C: bl FUN_0200F5D8
add r1, r0, r6
add r2, r7, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [r5, #0x4]
add r4, r4, #0x1
cmp r4, r0
@@ -18952,7 +18952,7 @@ FUN_0200F6FC: ; 0x0200F6FC lsl r2, r2, #0x2
add r5, r0, #0x0
add r7, r3, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
cmp r4, #0x1
bne _0200F726
mov r0, #0x6
@@ -19028,7 +19028,7 @@ _0200F78E: add r0, #0xc0
add r1, r5, #0x0
add r2, r7, #0x0
- blx memcpy
+ bl memcpy
add r4, r4, #0x1
add r5, r5, r6
cmp r4, #0x2
@@ -20289,14 +20289,14 @@ _020100FA: asr r1, r0, #0x1f
add r2, r0, #0x0
add r3, r1, #0x0
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x8]
ldr r0, [sp, #0x4]
add r6, r1, #0x0
add r1, r7, #0x0
add r2, r0, #0x0
add r3, r7, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
@@ -20316,7 +20316,7 @@ _020100FA: lsr r2, r2, #0xc
orr r2, r1
sub r0, r0, r2
- blx FX_Sqrt
+ bl FX_Sqrt
asr r2, r0, #0xc
ldr r0, [sp, #0x0]
sub r0, r0, r2
@@ -20752,7 +20752,7 @@ FUN_0201047C: ; 0x0201047C str r3, [sp, #0x1c]
ldr r6, [sp, #0x38]
ldr r7, [sp, #0x3c]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x20]
ldrb r1, [r4, #0x8]
ldr r3, [sp, #0x44]
@@ -20896,7 +20896,7 @@ FUN_020105A0: ; 0x020105A0 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -20908,7 +20908,7 @@ FUN_020105A0: ; 0x020105A0 asr r7, r1, #0xc
lsl r0, r7, #0x1
mov r1, #0x15
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x1
lsl r0, r0, #0x1
mov r1, #0xb4
@@ -20916,7 +20916,7 @@ FUN_020105A0: ; 0x020105A0 ldr r0, _02010684 ; =0x0000FFFF
add r1, #0xb4
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
lsr r1, r0, #0x1f
add r1, r0, r1
asr r4, r1, #0x1
@@ -21261,7 +21261,7 @@ FUN_02010894: ; 0x02010894 lsl r2, r2, #0x8
add r0, r0, r2
mov r1, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0x10]
sub r4, r0, #0x1
bmi _020108C6
@@ -21363,7 +21363,7 @@ FUN_02010948: ; 0x02010948 str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -21605,7 +21605,7 @@ FUN_02010B40: ; 0x02010B40 str r0, [sp, #0x0]
ldr r0, [r0, #0xc]
ldr r1, _02010C60 ; =0x00003FFF
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
@@ -21758,7 +21758,7 @@ FUN_02010C64: ; 0x02010C64 add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
@@ -21776,7 +21776,7 @@ FUN_02010C7C: ; 0x02010C7C str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -22101,7 +22101,7 @@ FUN_02010F14: ; 0x02010F14 add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
@@ -22121,7 +22121,7 @@ FUN_02010F2C: ; 0x02010F2C str r0, [r5, #0x14]
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -22213,23 +22213,23 @@ FUN_02010FD0: ; 0x02010FD0 add r0, r5, #0x0
mov r1, #0x1
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x1
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
b _02011020
_0201100A:
add r0, r5, #0x0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02011020:
mov r1, #0xc3
lsl r1, r1, #0x2
@@ -22407,7 +22407,7 @@ FUN_0201115C: ; 0x0201115C add r1, r3, #0x0
sub r0, r4, r6
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, r6
cmp r6, r4
bhi _0201117C
@@ -22460,7 +22460,7 @@ FUN_020111AC: ; 0x020111AC mov r1, #0x0
lsl r2, r2, #0x2
str r0, [r5, #0x14]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r1, r4, #0x0
add r1, #0x23
ldrb r1, [r1, #0x0]
@@ -22567,7 +22567,7 @@ FUN_0201127C: ; 0x0201127C add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
@@ -22699,7 +22699,7 @@ FUN_0201137C: ; 0x0201137C add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
@@ -23257,7 +23257,7 @@ _020117A4: str r1, [r0, #0x64]
ldr r0, [r0, #0x60]
mov r1, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x8]
add sp, #0xc
pop {r4-r7, pc}
@@ -23780,7 +23780,7 @@ _02011B60: ldr r1, [r6, #0xc]
add r1, r1, r2
ldr r2, [sp, #0x8]
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x0]
add r4, r4, #0x1
add r5, r5, r7
@@ -24051,7 +24051,7 @@ _02011D52: beq _02011D92
_02011D68:
add r0, r5, #0x0
- blx FUN_020B1A24
+ bl FUN_020B1A24
str r7, [sp, #0x0]
ldr r0, [sp, #0x30]
str r6, [sp, #0x4]
@@ -24113,7 +24113,7 @@ _02011DC6: bl FUN_02011B20
add r0, r7, #0x0
add r1, r4, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x30]
cmp r0, #0x1
bne _02011E08
@@ -24121,7 +24121,7 @@ _02011DC6: add r0, r7, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
mov r0, #0x1
str r6, [r5, #0x4]
lsl r0, r0, #0x1a
@@ -24132,7 +24132,7 @@ _02011E08: add r0, r7, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
ldr r0, _02011E4C ; =0x04001000
str r6, [r5, #0x8]
ldr r1, [r0, #0x0]
@@ -24423,7 +24423,7 @@ _02012018: ldr r1, [sp, #0x0]
add r1, r1, r2
add r2, r6, #0x0
- blx memcpy
+ bl memcpy
ldr r1, [r5, #0x0]
ldr r0, [sp, #0x24]
add r7, r7, #0x1
@@ -24449,7 +24449,7 @@ FUN_02012044: ; 0x02012044 _02012054:
add r0, r4, #0x0
add r1, r5, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
add r6, r0, #0x0
cmp r5, #0x0
bne _02012066
@@ -24676,7 +24676,7 @@ FUN_020121E8: ; 0x020121E8 _02012204:
ldr r0, [sp, #0x20]
add r1, sp, #0x2c
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
bne _02012214
bl ErrorHandling
@@ -24842,7 +24842,7 @@ _0201233C: add r0, r0, r1
ldr r1, [sp, #0x18]
add r1, r1, r4
- blx memcpy
+ bl memcpy
ldr r0, [r5, #0x0]
add r6, r6, #0x1
add r0, #0x20
@@ -25016,7 +25016,7 @@ FUN_02012470: ; 0x02012470 bl LoadFromNarc_2
add r1, sp, #0x0
add r5, r0, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x1
beq _0201249C
bl ErrorHandling
@@ -25025,7 +25025,7 @@ _0201249C: add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0x0
bl FUN_02016A18
add r0, r4, #0x0
@@ -25156,7 +25156,7 @@ _02012598: .word 0x020ED3C8 thumb_func_start FUN_0201259C
FUN_0201259C: ; 0x0201259C
push {r3, lr}
- blx RTC_Init
+ bl RTC_Init
ldr r3, _020125CC ; =0x021C4808
mov r0, #0x0
add r2, r3, #0x0
@@ -25246,7 +25246,7 @@ FUN_02012634: ; 0x02012634 add r0, #0x2c
add r1, #0x3c
add r3, r4, #0x0
- blx RTC_GetDateTimeAsync
+ bl RTC_GetDateTimeAsync
str r0, [r4, #0xc]
cmp r0, #0x0
beq _02012656
@@ -25377,14 +25377,14 @@ FUN_02012710: ; 0x02012710 bne _02012742
add r0, r6, #0x0
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02012750
_02012742:
mov r1, #0x19
add r0, r6, #0x0
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02012752
_02012750:
@@ -25401,9 +25401,9 @@ _02012752: str r0, [sp, #0x4]
str r0, [sp, #0x8]
add r0, r2, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r0, r5, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r0, r4, #0x0
add sp, #0x10
pop {r4-r6, pc}
@@ -25477,7 +25477,7 @@ FUN_020127C0: ; 0x020127C0 ldr r1, [sp, #0x4]
str r0, [r2, #0x0]
ldr r0, [sp, #0x0]
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
add r2, r1, #0x0
add r3, r0, #0x0
mov r1, #0x0
@@ -25755,9 +25755,9 @@ _020129C6: FUN_020129C8: ; 0x020129C8
push {r3, lr}
mov r0, #0x0
- blx MI_StopDma
+ bl MI_StopDma
mov r0, #0x0
- blx MI_WaitDma
+ bl MI_WaitDma
pop {r3, pc}
thumb_func_start FUN_020129D8
@@ -25772,14 +25772,14 @@ FUN_020129D8: ; 0x020129D8 add r1, r6, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
- blx MI_HBlankDmaCopy32
+ bl MI_HBlankDmaCopy32
pop {r4-r6, pc}
_020129F2:
mov r0, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
- blx MI_HBlankDmaCopy16
+ bl MI_HBlankDmaCopy16
pop {r4-r6, pc}
thumb_func_start FUN_02012A00
@@ -25791,7 +25791,7 @@ FUN_02012A00: ; 0x02012A00 ldr r2, _02012A2C ; =0x0000079C
mov r1, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r2, #0x3
lsl r2, r2, #0x8
add r0, r5, #0x0
@@ -25860,13 +25860,13 @@ _02012A4E: add r1, r5, #0x0
ldr r0, [r5, r0]
lsl r2, r2, #0x8
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, _02012AC0 ; =0x00000794
mov r2, #0x3
lsl r2, r2, #0x8
ldr r0, [r5, r0]
add r1, r5, r2
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
pop {r3-r7, pc}
.balign 4
_02012AB0: .word 0x00000604
@@ -25897,7 +25897,7 @@ _02012ACE: mov r2, #0x3
ldr r1, [r4, r1]
lsl r2, r2, #0x8
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02012AF4:
pop {r4, pc}
nop
@@ -25950,7 +25950,7 @@ FUN_02012B30: ; 0x02012B30 mov r2, #0x3
ldr r0, [r4, r0]
lsl r2, r2, #0x8
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
_02012B5E:
pop {r4, pc}
.balign 4
@@ -25996,7 +25996,7 @@ _02012BA0: ldrsh r0, [r0, r1]
ldr r3, [sp, #0x8]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -26034,7 +26034,7 @@ FUN_02012BE4: ; 0x02012BE4 ldr r0, _02012C80 ; =0x00000798
mov r1, #0x64
ldrsh r0, [r6, r0]
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r3, r0, #0x18
ldr r0, _02012C84 ; =0x0000078C
@@ -26066,7 +26066,7 @@ _02012C12: stmia r5!, {r0}
add r0, r3, #0x1
mov r1, #0xc0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r3, r0, #0x18
ldr r0, _02012C8C ; =0x0000078D
@@ -26089,7 +26089,7 @@ _02012C4C: blt _02012C70
mov r0, #0x0
ldrsh r0, [r4, r0]
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r4, #0x0]
pop {r3-r7, pc}
_02012C70:
@@ -26128,7 +26128,7 @@ _02012CA2: mov r1, #0x3
lsl r1, r1, #0x8
add r5, r0, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
mov r1, #0x79
lsl r1, r1, #0x4
ldr r1, [r4, r1]
@@ -26187,7 +26187,7 @@ _02012D14: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xdc
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r2, r4, #0x0
ldr r0, [sp, #0x8]
str r7, [r4, #0x18]
@@ -26215,7 +26215,7 @@ _02012D14: str r0, [r2, #0x0]
ldr r2, [sp, #0xc]
add r0, r6, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0xc]
str r6, [r4, #0xc]
str r6, [r4, #0x10]
@@ -26263,7 +26263,7 @@ _02012DA8: ldr r0, [r0, r5]
mov r2, #0xc8
mov r3, #0x5
- blx FUN_0208B4A0
+ bl FUN_0208B4A0
str r0, [r4, #0x0]
ldr r1, _02012DD8 ; =0x020ED4E4
add r0, r4, #0x0
@@ -26291,7 +26291,7 @@ FUN_02012DE4: ; 0x02012DE4 beq _02012E02
add r0, r5, #0x0
add r0, #0x58
- blx FUN_020AE8CC
+ bl FUN_020AE8CC
b _02012E22
_02012E02:
mov r0, #0x2
@@ -26304,7 +26304,7 @@ _02012E0E: ldr r0, [r4, #0x58]
cmp r0, #0x0
beq _02012E1A
- blx FUN_020AF894
+ bl FUN_020AF894
str r7, [r4, #0x58]
_02012E1A:
add r6, r6, #0x1
@@ -26320,7 +26320,7 @@ _02012E22: beq _02012E38
add r0, r5, #0x0
add r0, #0x98
- blx FUN_020AEC7C
+ bl FUN_020AEC7C
b _02012E60
_02012E38:
mov r0, #0x8
@@ -26335,7 +26335,7 @@ _02012E44: ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02012E58
- blx FUN_020AFA80
+ bl FUN_020AFA80
add r0, r4, #0x0
add r0, #0x98
str r7, [r0, #0x0]
@@ -26852,7 +26852,7 @@ _020131B2: beq _020131C8
add r0, r5, #0x0
add r0, #0x58
- blx FUN_020AE918
+ bl FUN_020AE918
b _020131DE
_020131C8:
mov r0, #0x2
@@ -26873,7 +26873,7 @@ _020131DE: beq _020131EE
add r0, r5, #0x0
add r0, #0x98
- blx FUN_020AEC98
+ bl FUN_020AEC98
b _02013208
_020131EE:
mov r0, #0x8
@@ -26912,26 +26912,26 @@ FUN_02013228: ; 0x02013228 add r4, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
- blx FUN_0208B128
+ bl FUN_0208B128
ldr r0, _02013264 ; =0x021C4850
str r4, [r0, #0x0]
ldr r1, [r4, #0x18]
ldr r0, [r4, #0x0]
cmp r1, #0x0
bne _02013246
- blx FUN_0208AF94
+ bl FUN_0208AF94
b _0201324A
_02013246:
- blx FUN_0208B05C
+ bl FUN_0208B05C
_0201324A:
ldr r1, [r4, #0x1c]
ldr r0, [r4, #0x0]
cmp r1, #0x0
bne _02013258
- blx FUN_0208AF80
+ bl FUN_0208AF80
b _0201325C
_02013258:
- blx FUN_0208AFA8
+ bl FUN_0208AFA8
_0201325C:
ldr r0, _02013264 ; =0x021C4850
mov r1, #0x0
@@ -27038,16 +27038,16 @@ FUN_02013300: ; 0x02013300 bl FUN_0201EB8C
bl FUN_0201EBA4
_0201331C:
- blx FUN_020B849C
+ bl FUN_020B849C
ldr r0, [r4, #0x0]
ldr r1, _02013338 ; =0x021CED64
- blx FUN_0208AD80
+ bl FUN_0208AD80
ldr r0, [r4, #0x20]
cmp r0, #0x0
beq _02013332
bl FUN_0201EB98
_02013332:
- blx FUN_020B849C
+ bl FUN_020B849C
pop {r4, pc}
.balign 4
_02013338: .word 0x021CED64
@@ -27130,7 +27130,7 @@ FUN_020133AC: ; 0x020133AC ldr r0, _020133C4 ; =0x021C4850
str r3, [r0, #0x4]
ldr r0, [r4, #0x0]
- blx FUN_0208ACEC
+ bl FUN_0208ACEC
ldr r1, _020133C4 ; =0x021C4850
mov r2, #0x0
str r2, [r1, #0x4]
@@ -28294,7 +28294,7 @@ _02013B8A: beq _02013BC4
bl FUN_0201B9EC
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
ldr r4, [r5, #0x4]
mov r0, #0x0
mov r2, #0x1
@@ -28859,7 +28859,7 @@ FUN_02013F30: ; 0x02013F30 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
mov r1, #0x1f
add r0, #0x3e
@@ -29086,7 +29086,7 @@ FUN_020140A4: ; 0x020140A4 add r3, r2, #0x0
lsr r1, r1, #0xd
mov r2, #0x0
- blx FUN_020B1528
+ bl FUN_020B1528
pop {r3, pc}
thumb_func_start FUN_020140B4
@@ -29103,7 +29103,7 @@ FUN_020140B4: ; 0x020140B4 str r2, [r5, #0x8]
lsr r1, r1, #0xd
mov r2, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
str r4, [r5, #0x8]
pop {r3-r5, pc}
.balign 4
@@ -29220,7 +29220,7 @@ _02014172: lsl r2, r2, #0x1
ldrsh r0, [r1, r0]
ldrsh r1, [r1, r2]
- blx G3_RotZ
+ bl G3_RotZ
ldr r2, [r5, #0x10]
ldr r0, [r5, #0xc]
ldr r1, _02014210 ; =0x0400046C
@@ -29252,7 +29252,7 @@ _02014172: str r4, [sp, #0x10]
ldrsh r3, [r5, r3]
add r1, r0, #0x0
- blx FUN_020B0250
+ bl FUN_020B0250
ldr r0, _02014214 ; =0x04000448
mov r1, #0x1
str r1, [r0, #0x0]
@@ -29339,14 +29339,14 @@ _0201424C: ldr r0, [r5, #0x4]
mov r1, #0x0
add r0, r0, #0x4
- blx FUN_020B1A14
+ bl FUN_020B1A14
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F14
ldr r0, [r5, #0x8]
mov r1, #0x0
add r0, r0, #0x4
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F18
@@ -29421,14 +29421,14 @@ _0201434A: add r1, r4, #0x0
add r1, #0xc
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x8]
mov r2, #0x20
add r0, r1, r0
add r1, r4, #0x0
add r1, #0x2c
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #0x4]
mov r1, #0x1
str r0, [r4, #0x0]
@@ -29681,7 +29681,7 @@ FUN_02014518: ; 0x02014518 mov r1, #0x0
mov r2, #0x78
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _02014560 ; =0x0000019E
mov r0, #0x0
mov r1, #0x1a
@@ -29929,7 +29929,7 @@ FUN_020146F0: ; 0x020146F0 add r5, r0, #0x0
mov r1, #0x0
mov r2, #0x9c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0x9b
ldrb r1, [r0, #0x0]
@@ -30306,7 +30306,7 @@ _020149B4: add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add sp, #0x10
pop {r4-r6, pc}
@@ -30463,7 +30463,7 @@ FUN_02014AD4: ; 0x02014AD4 add r5, r0, #0x0
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r3, [r4, #0x4]
ldr r0, [r4, #0x10]
str r0, [sp, #0x0]
@@ -30491,7 +30491,7 @@ FUN_02014B10: ; 0x02014B10 ldr r0, [r4, #0x0]
ldr r1, [r4, #0x10]
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r4, #0x8]
cmp r0, #0x0
bne _02014B34
@@ -30499,7 +30499,7 @@ FUN_02014B10: ; 0x02014B10 ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _02014B44
_02014B34:
cmp r0, #0x4
@@ -30508,7 +30508,7 @@ _02014B34: ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
_02014B44:
add r0, r5, #0x0
bl FUN_0200CAB4
@@ -30628,7 +30628,7 @@ FUN_02014BF4: ; 0x02014BF4 mov r1, #0x0
add r2, r6, #0x0
str r0, [r4, #0x0]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r3-r7, pc}
@@ -30692,7 +30692,7 @@ _02014C8C: add r0, r0, r4
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0x0]
mov r1, #0x1
add r0, r0, r4
@@ -31062,7 +31062,7 @@ _02014F3E: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x54
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x1
str r0, [r4, #0x0]
mov r0, #0xc
@@ -31526,7 +31526,7 @@ FUN_020152B0: ; 0x020152B0 bl FUN_02015050
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #0x0
ldrb r1, [r1, #0x0]
lsl r1, r1, #0x2
@@ -31547,7 +31547,7 @@ FUN_020152D8: ; 0x020152D8 bl FUN_02015050
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0x0
ldrb r0, [r0, #0x0]
lsl r0, r0, #0x2
@@ -32645,7 +32645,7 @@ FUN_02015AEC: ; 0x02015AEC add r0, r0, #0x1
mul r0, r1
ldr r1, [r4, #0x18]
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x14]
add r0, r1, r0
lsl r0, r0, #0x10
@@ -32781,7 +32781,7 @@ FUN_02015BE8: ; 0x02015BE8 ldr r0, [r4, #0x8]
mul r0, r1
ldr r1, [r4, #0xc]
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x24]
str r0, [r1, #0x0]
add r0, r4, #0x0
@@ -33178,7 +33178,7 @@ FUN_02015EA0: ; 0x02015EA0 orr r0, r2
str r0, [r3, r1]
mov r0, #0x3
- blx MI_WaitDma
+ bl MI_WaitDma
ldr r0, _02015ED0 ; =0x021C48B8
ldr r0, [r0, #0x1c]
bl FUN_0201B5CC
@@ -33212,12 +33212,12 @@ _02015EF0: .word MI_WaitDma FUN_02015EF4: ; 0x02015EF4
push {r3, lr}
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _02015F0C ; =FUN_02015ED4
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
pop {r3, pc}
.balign 4
_02015F0C: .word FUN_02015ED4
@@ -33299,19 +33299,19 @@ FUN_02015F80: ; 0x02015F80 bne _02015F9E
ldr r0, [r2, #0x8]
mov r0, #0x2
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
mov r0, #0x0
- blx GX_HBlankIntr
+ bl GX_HBlankIntr
b _02015FB4
_02015F9E:
ldr r0, [r2, #0x8]
ldr r1, _02015FC4 ; =FUN_02015F6C
mov r0, #0x2
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x2
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x1
- blx GX_HBlankIntr
+ bl GX_HBlankIntr
_02015FB4:
ldr r1, _02015FC0 ; =0x04000208
ldrh r0, [r1, #0x0]
@@ -33327,11 +33327,11 @@ FUN_02015FC8: ; 0x02015FC8 push {r3, lr}
sub sp, #0x30
add r0, sp, #0x10
- blx OS_GetLowEntropyData
+ bl OS_GetLowEntropyData
add r0, sp, #0x0
add r1, sp, #0x10
mov r2, #0x20
- blx MATH_CalcMD5
+ bl MATH_CalcMD5
mov r3, #0x0
add r1, r3, #0x0
add r2, sp, #0x0
@@ -33366,8 +33366,8 @@ _02016010: .word 0x020EDB10 thumb_func_start InitSystemForTheGame
InitSystemForTheGame: ; 0x02016014
push {r3-r5, lr}
- blx OS_Init
- blx FX_Init
+ bl OS_Init
+ bl FX_Init
ldr r2, _02016124 ; =0x04000304
ldr r0, _02016128 ; =0xFFFFFDF1
ldrh r1, [r2, #0x0]
@@ -33375,15 +33375,15 @@ InitSystemForTheGame: ; 0x02016014 ldr r0, _0201612C ; =0x0000020E
orr r0, r1
strh r0, [r2, #0x0]
- blx GX_Init
- blx OS_InitTick
+ bl GX_Init
+ bl OS_InitTick
bl FUN_02015FC8
mov r0, #0xa0
bl FUN_0201B578
add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0xa0
bl FUN_0201B580
@@ -33394,7 +33394,7 @@ InitSystemForTheGame: ; 0x02016014 add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x10
bl FUN_0201B580
@@ -33405,7 +33405,7 @@ InitSystemForTheGame: ; 0x02016014 add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x20
bl FUN_0201B580
@@ -33416,13 +33416,13 @@ InitSystemForTheGame: ; 0x02016014 add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x4
bl FUN_0201B580
ldr r1, _02016130 ; =0x021C48B8
str r0, [r1, #0x24]
- blx GX_DispOff
+ bl GX_DispOff
ldr r2, _02016134 ; =0x04001000
ldr r0, _02016138 ; =0xFFFEFFFF
ldr r1, [r2, #0x0]
@@ -33435,35 +33435,35 @@ InitSystemForTheGame: ; 0x02016014 strh r0, [r2, #0x0]
ldr r1, _0201613C ; =FUN_02015EA0
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x1
lsl r0, r0, #0x12
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
ldr r1, _02016140 ; =0x04000208
ldrh r0, [r1, #0x0]
mov r0, #0x1
strh r0, [r1, #0x0]
- blx GX_VBlankIntr
+ bl GX_VBlankIntr
mov r0, #0x1
- blx FS_Init
+ bl FS_Init
bl FUN_02022450
mov r0, #0x0
add r1, r0, #0x0
- blx FS_TryLoadTable
+ bl FS_TryLoadTable
add r4, r0, #0x0
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r5, r0, #0x0
bne _02016108
bl ErrorHandling
_02016108:
add r0, r5, #0x0
add r1, r4, #0x0
- blx FS_TryLoadTable
+ bl FS_TryLoadTable
ldr r0, _02016130 ; =0x021C48B8
mov r1, #0x0
str r1, [r0, #0x0]
@@ -33489,36 +33489,36 @@ _02016144: .word 0x021C4918 InitGraphicMemory: ; 0x02016148
push {r3, lr}
ldr r0, _02016198 ; =0x000001FF
- blx GX_SetBankForLCDC
+ bl GX_SetBankForLCDC
mov r1, #0x1a
mov r2, #0x29
mov r0, #0x0
lsl r1, r1, #0x16
lsl r2, r2, #0xe
- blx MIi_CpuClearFast
- blx GX_DisableBankForLCDC
+ bl MIi_CpuClearFast
+ bl GX_DisableBankForLCDC
mov r1, #0x7
mov r2, #0x1
mov r0, #0xc0
lsl r1, r1, #0x18
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x1
ldr r1, _0201619C ; =0x07000400
mov r0, #0xc0
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r1, #0x5
mov r2, #0x1
mov r0, #0x0
lsl r1, r1, #0x18
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x1
ldr r1, _020161A0 ; =0x05000400
mov r0, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r3, pc}
.balign 4
_02016198: .word 0x000001FF
@@ -33532,10 +33532,10 @@ FUN_020161A4: ; 0x020161A4 add r6, r0, #0x0
add r4, r1, #0x0
add r0, sp, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020161F0
ldr r1, [sp, #0x28]
@@ -33549,7 +33549,7 @@ FUN_020161A4: ; 0x020161A4 add r0, sp, #0x0
add r1, r4, #0x0
add r2, r5, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r5, r0
beq _020161E8
add r0, r6, #0x0
@@ -33558,7 +33558,7 @@ FUN_020161A4: ; 0x020161A4 mov r4, #0x0
_020161E8:
add r0, sp, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
b _020161F2
_020161F0:
mov r4, #0x0
@@ -33574,10 +33574,10 @@ FUN_020161F8: ; 0x020161F8 add r5, r0, #0x0
add r0, sp, #0x0
add r4, r1, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r5, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _0201622A
ldr r1, [sp, #0x28]
@@ -33587,10 +33587,10 @@ FUN_020161F8: ; 0x020161F8 cmp r1, #0x0
beq _02016224
add r0, sp, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
_02016224:
add r0, sp, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
_0201622A:
add sp, #0x48
pop {r3-r5, pc}
@@ -33601,7 +33601,7 @@ FUN_02016230: ; 0x02016230 push {r3-r7, lr}
sub sp, #0x8
str r0, [sp, #0x0]
- blx strlen
+ bl strlen
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r2, r3, #0x1f
@@ -33749,12 +33749,12 @@ FUN_02016324: ; 0x02016324 add r0, sp, #0x0
bne _02016340
add r1, r2, #0x1
- blx strcpy
+ bl strcpy
mov r5, #0x1
b _02016346
_02016340:
add r1, r2, #0x0
- blx strcpy
+ bl strcpy
_02016346:
add r0, sp, #0x0
bl FUN_02016230
@@ -33770,10 +33770,10 @@ _02016346: b _020163B2
_02016362:
add r0, sp, #0x20
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x20
add r1, sp, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020163B0
ldr r1, [sp, #0x48]
@@ -33787,7 +33787,7 @@ _02016362: add r0, sp, #0x20
add r1, r4, #0x0
add r2, r6, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r6, r0
beq _0201639C
add r0, r4, #0x0
@@ -33795,7 +33795,7 @@ _02016362: mov r4, #0x0
_0201639C:
add r0, sp, #0x20
- blx FS_CloseFile
+ bl FS_CloseFile
cmp r5, #0x0
bne _020163B2
add r0, r4, #0x0
@@ -33836,13 +33836,13 @@ FUN_020163BC: ; 0x020163BC strh r2, [r0, #0x22]
ldr r0, _02016424 ; =0x021C4918
strb r2, [r0, #0x4]
- blx TP_Init
+ bl TP_Init
add r0, sp, #0x0
- blx TP_GetUserInfo
+ bl TP_GetUserInfo
cmp r0, #0x1
add r0, sp, #0x0
bne _02016402
- blx TP_SetCalibrateParam
+ bl TP_SetCalibrateParam
add sp, #0x8
pop {r3, pc}
_02016402:
@@ -33855,7 +33855,7 @@ _02016402: ldr r1, _02016434 ; =0x00001208
strh r1, [r0, #0x6]
add r0, sp, #0x0
- blx TP_SetCalibrateParam
+ bl TP_SetCalibrateParam
add sp, #0x8
pop {r3, pc}
.balign 4
@@ -33965,19 +33965,19 @@ _020164C8: bne _020164F4
add r4, sp, #0x8
_020164E4:
- blx TP_RequestSamplingAsync
+ bl TP_RequestSamplingAsync
add r0, r4, #0x0
- blx TP_WaitRawResult
+ bl TP_WaitRawResult
cmp r0, #0x0
bne _020164E4
b _020164FA
_020164F4:
add r0, sp, #0x8
- blx TP_GetLatestRawPointInAuto
+ bl TP_GetLatestRawPointInAuto
_020164FA:
add r0, sp, #0x0
add r1, sp, #0x8
- blx TP_GetCalibratedPoint
+ bl TP_GetCalibratedPoint
add r1, sp, #0x0
ldrh r3, [r1, #0x6]
cmp r3, #0x0
@@ -34260,7 +34260,7 @@ _020166F4: mov r0, #0x0
add r1, r3, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
_020166FE:
ldr r1, [sp, #0x4]
lsl r7, r6, #0x1
@@ -34272,7 +34272,7 @@ _020166FE: mov r0, #0x0
add r1, r6, r1
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
ldr r1, _020167F0 ; =0x021C4D28
str r0, [r1, #0x0]
ldr r1, [sp, #0x4]
@@ -34313,19 +34313,19 @@ _0201675C: ldr r1, [r5, #0x0]
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
b _02016772
_02016768:
ldr r1, [r5, #0x0]
mov r0, #0x2
mov r2, #0x4
- blx OS_AllocFromArenaHi
+ bl OS_AllocFromArenaHi
_02016772:
cmp r0, #0x0
beq _0201678E
ldr r1, [r5, #0x0]
mov r2, #0x0
- blx tempName_NNS_FndCreateExpHeapEx
+ bl tempName_NNS_FndCreateExpHeapEx
ldr r1, _020167F0 ; =0x021C4D28
ldr r2, [r1, #0x0]
ldr r1, [sp, #0x0]
@@ -34443,7 +34443,7 @@ FUN_02016834: ; 0x02016834 add r5, r1, #0x0
str r2, [sp, #0x0]
add r7, r3, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _0201684C
bl ErrorHandling
@@ -34463,7 +34463,7 @@ _0201684C: ldr r1, [sp, #0x0]
add r0, r6, #0x0
add r2, r7, #0x0
- blx tempName_NNS_FndAllocFromExpHeapEx
+ bl tempName_NNS_FndAllocFromExpHeapEx
str r0, [sp, #0x4]
cmp r0, #0x0
beq _020168B6
@@ -34474,7 +34474,7 @@ _0201684C: ldr r1, [sp, #0x0]
mov r2, #0x0
lsl r4, r7, #0x2
- blx tempName_NNS_FndCreateExpHeapEx
+ bl tempName_NNS_FndCreateExpHeapEx
ldr r1, _020168CC ; =0x021C4D28
ldr r2, [r1, #0x0]
str r0, [r2, r4]
@@ -34517,7 +34517,7 @@ _020168CC: .word 0x021C4D28 FUN_020168D0: ; 0x020168D0
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _020168E0
bl ErrorHandling
@@ -34530,7 +34530,7 @@ _020168E0: ldr r0, [r1, r0]
cmp r0, #0x0
beq _0201693E
- blx thunk_FUN_020adc8c
+ bl thunk_FUN_020adc8c
ldr r1, _02016940 ; =0x021C4D28
ldr r0, [r1, #0x10]
ldrb r0, [r0, r4]
@@ -34543,7 +34543,7 @@ _020168E0: beq _02016912
cmp r1, #0x0
beq _02016912
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
b _02016916
_02016912:
bl ErrorHandling
@@ -34584,16 +34584,16 @@ FUN_02016944: ; 0x02016944 bne _02016956
bl ErrorHandling
_02016956:
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
add r4, #0x10
str r0, [sp, #0x0]
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
- blx tempName_NNS_FndAllocFromExpHeapEx
+ bl tempName_NNS_FndAllocFromExpHeapEx
add r4, r0, #0x0
ldr r0, [sp, #0x0]
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
cmp r4, #0x0
beq _02016984
ldr r1, [r4, #0xc]
@@ -34732,14 +34732,14 @@ _02016A5E: ldrh r0, [r1, r5]
sub r0, r0, #0x1
strh r0, [r1, r5]
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
sub r6, #0x10
add r4, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
add r0, r4, #0x0
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
pop {r3-r7, pc}
_02016A80:
bl ErrorHandling
@@ -34752,7 +34752,7 @@ FUN_02016A8C: ; 0x02016A8C push {r4-r6, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _02016A9E
bl ErrorHandling
@@ -34781,7 +34781,7 @@ _02016AC8: sub r4, #0x10
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
ldr r0, _02016AF4 ; =0x021C4D28
lsl r4, r5, #0x1
ldr r0, [r0, #0xc]
@@ -34814,7 +34814,7 @@ FUN_02016AF8: ; 0x02016AF8 ldrb r0, [r1, r0]
lsl r0, r0, #0x2
ldr r0, [r2, r0]
- blx FUN_020ADDC8
+ bl FUN_020ADDC8
pop {r3, pc}
_02016B12:
bl ErrorHandling
@@ -34835,7 +34835,7 @@ FUN_02016B20: ; 0x02016B20 ldrb r1, [r4, r1]
lsl r1, r1, #0x2
ldr r1, [r3, r1]
- blx FUN_020AE82C
+ bl FUN_020AE82C
pop {r4, pc}
_02016B3A:
bl ErrorHandling
@@ -34848,14 +34848,14 @@ FUN_02016B44: ; 0x02016B44 push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _02016B56
bl ErrorHandling
_02016B56:
add r0, r5, #0x0
sub r0, #0x10
- blx FUN_020ADDC0
+ bl FUN_020ADDC0
add r4, #0x10
cmp r0, r4
blo _02016B84
@@ -34872,7 +34872,7 @@ _02016B56: lsl r0, r0, #0x2
ldr r0, [r1, r0]
add r1, r5, #0x0
- blx FUN_020ADE2C
+ bl FUN_020ADE2C
pop {r3-r5, pc}
_02016B84:
bl ErrorHandling
@@ -34896,7 +34896,7 @@ FUN_02016B94: ; 0x02016B94 mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x0]
mov r0, #0x0
strh r0, [r4, #0x4]
@@ -34916,9 +34916,9 @@ FUN_02016BBC: ; 0x02016BBC ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
ldr r2, [r4, #0xc]
- blx GX_SetGraphicsMode
+ bl GX_SetGraphicsMode
ldr r0, [r4, #0x8]
- blx GXS_SetGraphicsMode
+ bl GXS_SetGraphicsMode
mov r2, #0x1
lsl r2, r2, #0x1a
ldr r1, [r2, #0x0]
@@ -34944,12 +34944,12 @@ FUN_02016BF4: ; 0x02016BF4 ldr r0, [r2, #0x0]
ldr r1, [r2, #0x4]
ldr r2, [r2, #0xc]
- blx GX_SetGraphicsMode
+ bl GX_SetGraphicsMode
bl FUN_0201E6D8
pop {r3, pc}
_02016C0C:
ldr r0, [r2, #0x8]
- blx GXS_SetGraphicsMode
+ bl GXS_SetGraphicsMode
bl FUN_0201E740
pop {r3, pc}
@@ -35546,7 +35546,7 @@ _0201705A: ldr r1, [r6, r5]
ldr r2, [r4, #0x8]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x0]
ldr r2, [r4, #0x8]
add r1, r0, r5
@@ -37134,7 +37134,7 @@ _02017BFC: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C5C ; =0x04000020
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C14:
@@ -37146,7 +37146,7 @@ _02017C14: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C60 ; =0x04000030
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C2C:
@@ -37158,7 +37158,7 @@ _02017C2C: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C64 ; =0x04001020
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C44:
@@ -37170,7 +37170,7 @@ _02017C44: ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C68 ; =0x04001030
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_02017C58:
add sp, #0x8
pop {r3-r5, pc}
@@ -37208,7 +37208,7 @@ FUN_02017C98: ; 0x02017C98 push {r3-r5, lr}
cmp r2, #0x0
bne _02017CA4
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
pop {r3-r5, pc}
_02017CA4:
mov r4, #0x3
@@ -37227,10 +37227,10 @@ _02017CA4: ror r5, r3
add r3, r4, r5
bne _02017CCA
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
pop {r3-r5, pc}
_02017CCA:
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3-r5, pc}
thumb_func_start FUN_02017CD0
@@ -37318,7 +37318,7 @@ FUN_02017D68: ; 0x02017D68 add r0, r4, #0x0
add r1, r6, #0x0
add r5, r2, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r7, #0x7
bhi _02017DF8
add r0, r7, r7
@@ -37340,49 +37340,49 @@ _02017D9A: add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG0Scr
+ bl GX_LoadBG0Scr
pop {r3-r7, pc}
_02017DA6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG1Scr
+ bl GX_LoadBG1Scr
pop {r3-r7, pc}
_02017DB2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG2Scr
+ bl GX_LoadBG2Scr
pop {r3-r7, pc}
_02017DBE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG3Scr
+ bl GX_LoadBG3Scr
pop {r3-r7, pc}
_02017DCA:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG0Scr
+ bl GXS_LoadBG0Scr
pop {r3-r7, pc}
_02017DD6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG1Scr
+ bl GXS_LoadBG1Scr
pop {r3-r7, pc}
_02017DE2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG2Scr
+ bl GXS_LoadBG2Scr
pop {r3-r7, pc}
_02017DEE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG3Scr
+ bl GXS_LoadBG3Scr
_02017DF8:
pop {r3-r7, pc}
.balign 4
@@ -37467,7 +37467,7 @@ FUN_02017E84: ; 0x02017E84 add r0, r4, #0x0
add r1, r6, #0x0
add r5, r2, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r7, #0x7
bhi _02017F14
add r0, r7, r7
@@ -37489,49 +37489,49 @@ _02017EB6: add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG0Char
+ bl GX_LoadBG0Char
pop {r3-r7, pc}
_02017EC2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG1Char
+ bl GX_LoadBG1Char
pop {r3-r7, pc}
_02017ECE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG2Char
+ bl GX_LoadBG2Char
pop {r3-r7, pc}
_02017EDA:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG3Char
+ bl GX_LoadBG3Char
pop {r3-r7, pc}
_02017EE6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG0Char
+ bl GXS_LoadBG0Char
pop {r3-r7, pc}
_02017EF2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG1Char
+ bl GXS_LoadBG1Char
pop {r3-r7, pc}
_02017EFE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG2Char
+ bl GXS_LoadBG2Char
pop {r3-r7, pc}
_02017F0A:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG3Char
+ bl GXS_LoadBG3Char
_02017F14:
pop {r3-r7, pc}
.balign 4
@@ -37548,7 +37548,7 @@ FUN_02017F18: ; 0x02017F18 add r4, r0, #0x0
mov r1, #0x0
add r2, r5, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r6, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
@@ -37600,7 +37600,7 @@ _02017F8C: ldr r1, [sp, #0x4]
ldr r2, [sp, #0x0]
add r0, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
lsl r0, r7, #0x18
ldrb r2, [r4, r6]
ldr r3, [sp, #0x20]
@@ -37623,19 +37623,19 @@ FUN_02017FB4: ; 0x02017FB4 add r0, r5, #0x0
add r1, r4, #0x0
add r7, r3, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r6, #0x4
bhs _02017FD6
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r4, #0x0
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
pop {r3-r7, pc}
_02017FD6:
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r4, #0x0
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
pop {r3-r7, pc}
.balign 4
@@ -38668,7 +38668,7 @@ FUN_02018744: ; 0x02018744 beq _02018766
ldr r2, [r2, #0xc]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02017CD0
@@ -38688,7 +38688,7 @@ FUN_02018768: ; 0x02018768 beq _0201878A
add r0, r2, #0x0
ldr r2, [r3, #0xc]
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02017CD0
@@ -38708,7 +38708,7 @@ FUN_0201878C: ; 0x0201878C beq _020187AE
add r0, r2, #0x0
ldr r2, [r3, #0xc]
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_0201AC68
@@ -38736,28 +38736,28 @@ _020187C2: ; jump table (using 16-bit offset) .short _020187F6 - _020187C2 - 2; case 6
.short _020187FC - _020187C2 - 2; case 7
_020187D2:
- blx G2_GetBG0CharPtr
+ bl G2_GetBG0CharPtr
pop {r3, pc}
_020187D8:
- blx G2_GetBG1CharPtr
+ bl G2_GetBG1CharPtr
pop {r3, pc}
_020187DE:
- blx G2_GetBG2CharPtr
+ bl G2_GetBG2CharPtr
pop {r3, pc}
_020187E4:
- blx G2_GetBG3CharPtr
+ bl G2_GetBG3CharPtr
pop {r3, pc}
_020187EA:
- blx G2S_GetBG0CharPtr
+ bl G2S_GetBG0CharPtr
pop {r3, pc}
_020187F0:
- blx G2S_GetBG1CharPtr
+ bl G2S_GetBG1CharPtr
pop {r3, pc}
_020187F6:
- blx G2S_GetBG2CharPtr
+ bl G2S_GetBG2CharPtr
pop {r3, pc}
_020187FC:
- blx G2S_GetBG3CharPtr
+ bl G2S_GetBG3CharPtr
pop {r3, pc}
_02018802:
mov r0, #0x0
@@ -40023,7 +40023,7 @@ FUN_020190EC: ; 0x020190EC lsl r1, r1, #0x18
ldr r2, [sp, #0x4]
lsr r1, r1, #0x18
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
cmp r7, #0x0
beq _02019148
str r5, [r4, #0x0]
@@ -40754,7 +40754,7 @@ _0201963C: ldrb r4, [r4, #0x7]
mul r2, r4
mul r2, r3
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r3-r5, pc}
thumb_func_start FUN_02019658
@@ -43637,7 +43637,7 @@ FUN_0201AB28: ; 0x0201AB28 bl FUN_020161A4
add r1, sp, #0x0
str r0, [r4, #0x0]
- blx FUN_020B0030
+ bl FUN_020B0030
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r4, pc}
@@ -43652,7 +43652,7 @@ FUN_0201AB44: ; 0x0201AB44 bl FUN_020161A4
add r1, sp, #0x0
str r0, [r4, #0x0]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r4, pc}
@@ -43889,7 +43889,7 @@ _0201ACEA: ldr r2, [r2, #0x0]
ldr r3, [r3, #0x0]
add r1, sp, #0x38
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AD1E:
ldrh r1, [r4, #0x4]
mov r0, #0x8
@@ -43945,7 +43945,7 @@ _0201AD4E: ldr r2, [r2, #0x0]
ldr r3, [r3, #0x0]
add r1, sp, #0x28
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AD8E:
ldrh r1, [r4, #0x4]
mov r0, #0x10
@@ -44035,7 +44035,7 @@ _0201AE04: ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x18
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AE3E:
ldrh r0, [r4, #0x4]
mov r3, #0x80
@@ -44090,7 +44090,7 @@ _0201AE72: ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x8
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AEAC:
add sp, #0x48
pop {r4, pc}
@@ -44364,7 +44364,7 @@ _0201B096: ldr r1, [sp, #0x18]
add r1, r1, r2
mov r2, #0x40
- blx memcpy
+ bl memcpy
ldrh r1, [r4, r6]
add r0, r7, #0x0
asr r2, r1, #0xa
@@ -44454,7 +44454,7 @@ _0201B142: add r0, r7, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx memcpy
+ bl memcpy
_0201B166:
ldr r0, [sp, #0x0]
mov r1, #0x2
@@ -44484,7 +44484,7 @@ _0201B17E: add r0, r7, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx memcpy
+ bl memcpy
_0201B19E:
add r0, r4, #0x0
bl FUN_02016A18
@@ -44499,7 +44499,7 @@ FUN_0201B1A8: ; 0x0201B1A8 add r4, r2, #0x0
bl FUN_020161A4
str r0, [r5, #0x0]
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
cmp r0, #0x0
beq _0201B1D2
bl FUN_0201B254
@@ -44507,12 +44507,12 @@ FUN_0201B1A8: ; 0x0201B1A8 bne _0201B1D2
ldr r0, [r5, #0x0]
ldr r1, [r0, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r5, #0x0]
- blx FUN_020BB59C
+ bl FUN_020BB59C
_0201B1D2:
ldr r0, [r5, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -44526,7 +44526,7 @@ FUN_0201B1E4: ; 0x0201B1E4 add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
cmp r0, #0x0
beq _0201B20A
bl FUN_0201B254
@@ -44534,12 +44534,12 @@ FUN_0201B1E4: ; 0x0201B1E4 bne _0201B20A
ldr r0, [r5, #0x0]
ldr r1, [r0, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r5, #0x0]
- blx FUN_020BB59C
+ bl FUN_020BB59C
_0201B20A:
ldr r0, [r5, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -44557,7 +44557,7 @@ FUN_0201B21C: ; 0x0201B21C bl FUN_0201B1A8
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- blx FUN_020B80B4
+ bl FUN_020B80B4
pop {r3-r5, pc}
thumb_func_start FUN_0201B234
@@ -44574,7 +44574,7 @@ FUN_0201B234: ; 0x0201B234 _0201B24A:
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- blx FUN_020B80B4
+ bl FUN_020B80B4
pop {r3-r5, pc}
thumb_func_start FUN_0201B254
@@ -44601,20 +44601,20 @@ FUN_0201B26C: ; 0x0201B26C add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B2A0 ; =0x021CEDD4
add r0, r4, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B2A4 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r6, #0x0
str r2, [r1, #0x7c]
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
add r0, r5, #0x0
- blx FUN_020BAC98
+ bl FUN_020BAC98
pop {r4-r6, pc}
nop
_0201B2A0: .word 0x021CEDD4
@@ -44627,24 +44627,24 @@ FUN_0201B2A8: ; 0x0201B2A8 add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B2E4 ; =0x021CEDD4
add r0, r4, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B2E8 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
str r2, [r1, #0x7c]
add r0, r6, #0x0
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
mov r1, #0x0
ldr r0, [r5, #0x4]
add r2, r1, #0x0
mov r3, #0x1
- blx FUN_020BAFB8
- blx FUN_020BB394
+ bl FUN_020BAFB8
+ bl FUN_020BB394
pop {r4-r6, pc}
.balign 4
_0201B2E4: .word 0x021CEDD4
@@ -44712,13 +44712,13 @@ FUN_0201B314: ; 0x0201B314 add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _0201B38C ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0201B390 ; =0xBFFF0000
ldr r0, _0201B394 ; =0x04000580
str r1, [r0, #0x0]
@@ -44745,11 +44745,11 @@ _0201B3A4: .word FUN_020223BC FUN_0201B3A8: ; 0x0201B3A8
push {r4, lr}
add r4, r1, #0x0
- blx FUN_020BC13C
+ bl FUN_020BC13C
cmp r4, #0x0
beq _0201B3BE
add r1, r4, #0x0
- blx FUN_020B7790
+ bl FUN_020B7790
mov r0, #0x1
pop {r4, pc}
_0201B3BE:
@@ -44775,13 +44775,13 @@ _0201B3D2: str r1, [sp, #0x0]
cmp r5, #0x0
beq _0201B4D0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
str r0, [sp, #0xc]
cmp r6, #0x0
beq _0201B412
@@ -44882,19 +44882,19 @@ _0201B4A6: add r0, r5, #0x0
add r1, r7, #0x0
add r2, r6, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
ldr r1, [r5, #0x4]
add r0, r5, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r5, #0x0
mov r1, #0x1
- blx FUN_020B7D28
+ bl FUN_020B7D28
add r0, r5, #0x0
mov r1, #0x1
- blx FUN_020B7C78
+ bl FUN_020B7C78
_0201B4D0:
mov r0, #0x1
add sp, #0x10
@@ -45237,22 +45237,22 @@ FUN_0201B6D0: ; 0x0201B6D0 ldrsh r3, [r4, r3]
bl FUN_0201B808
add r0, sp, #0x1c
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B764 ; =0x021CEDD4
add r0, r5, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B768 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r7, #0x0
str r2, [r1, #0x7c]
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
ldr r0, [r4, #0x24]
add r1, sp, #0x10
str r0, [sp, #0x10]
@@ -45260,7 +45260,7 @@ FUN_0201B6D0: ; 0x0201B6D0 str r0, [sp, #0x18]
mov r0, #0x1b
mov r2, #0x3
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, sp, #0x28
bl FUN_0201B82C
add r4, r0, #0x0
@@ -45268,7 +45268,7 @@ FUN_0201B6D0: ; 0x0201B6D0 mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, r4, #0x0
add sp, #0x34
pop {r4-r7, pc}
@@ -45296,12 +45296,12 @@ FUN_0201B76C: ; 0x0201B76C add r2, r0, #0x0
bl FUN_0201B808
add r0, r5, #0x0
- blx FUN_020B8474
- blx FUN_020B849C
+ bl FUN_020B8474
+ bl FUN_020B849C
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
ldr r0, [r4, #0x10]
lsl r2, r0, #0xc
ldr r0, [r4, #0xc]
@@ -45314,7 +45314,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x1b
add r1, sp, #0x10
mov r2, #0x3
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, sp, #0x1c
bl FUN_0201B82C
add r4, r0, #0x0
@@ -45322,7 +45322,7 @@ FUN_0201B76C: ; 0x0201B76C mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, r4, #0x0
add sp, #0x28
pop {r3-r5, pc}
@@ -45382,26 +45382,26 @@ FUN_0201B82C: ; 0x0201B82C mov r0, #0x29
add r1, sp, #0x4
str r2, [sp, #0x8]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x40
add r1, sp, #0x0
mov r2, #0x1
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r1, #0x0
mov r0, #0x41
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r0, #0x70
add r1, r4, #0x0
mov r2, #0x3
- blx FUN_020BB1C0
- blx FUN_020BB394
+ bl FUN_020BB1C0
+ bl FUN_020BB394
add r4, sp, #0x8
_0201B86A:
add r0, r4, #0x0
- blx G3X_GetBoxTestResult
+ bl G3X_GetBoxTestResult
cmp r0, #0x0
bne _0201B86A
ldr r0, [sp, #0x8]
@@ -45561,7 +45561,7 @@ FUN_0201B970: ; 0x0201B970 push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B984 ; =0x020EDF50
lsl r1, r1, #0x2
ldr r0, [r0, r1]
@@ -45574,7 +45574,7 @@ FUN_0201B988: ; 0x0201B988 push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
add r1, #0x5a
ldr r0, _0201B99C ; =0x020EDF50
lsl r1, r1, #0x2
@@ -45588,7 +45588,7 @@ FUN_0201B9A0: ; 0x0201B9A0 push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B9B4 ; =0x020EDC7E
lsl r1, r1, #0x1
ldrh r0, [r0, r1]
@@ -45603,7 +45603,7 @@ FUN_0201B9B8: ; 0x0201B9B8 mov r1, #0x5a
lsr r0, r0, #0x10
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B9D0 ; =0x020EDF50
lsl r1, r1, #0x2
ldr r0, [r0, r1]
@@ -45845,7 +45845,7 @@ _0201BB8E: mul r0, r1
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_0201BBA2:
@@ -45863,7 +45863,7 @@ _0201BBA2: add r1, r5, #0x0
add r2, r4, #0x0
add r3, r6, #0x0
- blx MTX_ScaleApply22
+ bl MTX_ScaleApply22
pop {r4-r6, pc}
nop
_0201BBC8: .word 0x0000FFFF
@@ -45891,14 +45891,14 @@ FUN_0201BBD0: ; 0x0201BBD0 str r5, [sp, #0x2c]
str r4, [sp, #0x30]
str r6, [sp, #0x24]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x4]
add r2, r4, #0x0
ldr r0, [sp, #0x20]
add r7, r1, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x4]
lsl r2, r2, #0xa
@@ -45928,7 +45928,7 @@ FUN_0201BBD0: ; 0x0201BBD0 str r0, [sp, #0x34]
add r0, sp, #0x2c
add r1, sp, #0x14
- blx VEC_Normalize
+ bl VEC_Normalize
mov r1, #0x0
ldr r0, [sp, #0x0]
str r1, [sp, #0x34]
@@ -45940,10 +45940,10 @@ FUN_0201BBD0: ; 0x0201BBD0 str r5, [sp, #0x2c]
str r4, [sp, #0x30]
str r6, [sp, #0x24]
- blx VEC_Subtract
+ bl VEC_Subtract
add r0, sp, #0x14
add r1, sp, #0x8
- blx VEC_DotProduct
+ bl VEC_DotProduct
asr r0, r0, #0xc
bpl _0201BC72
neg r0, r0
@@ -45967,7 +45967,7 @@ FUN_0201BC84: ; 0x0201BC84 ldr r2, _0201BCB4 ; =0x0000323D
asr r1, r0, #0x1f
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
add r5, r0, #0x0
ldr r0, _0201BCB8 ; =0x0000FFFF
mov r2, #0x2
@@ -45980,7 +45980,7 @@ FUN_0201BC84: ; 0x0201BC84 lsr r2, r2, #0xc
orr r2, r1
asr r1, r2, #0xc
- blx _s32_div_f
+ bl _s32_div_f
pop {r3-r5, pc}
nop
_0201BCB4: .word 0x0000323D
@@ -46678,7 +46678,7 @@ FUN_0201C1B0: ; 0x0201C1B0 ldr r0, [r0, #0x14]
add r1, r5, #0x0
lsl r2, r2, #0x8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r4, #0x0
bl FUN_02016A18
add r0, r5, #0x0
@@ -46772,7 +46772,7 @@ _0201C272: ldr r1, [r1, #0x0]
ldr r0, [r1, #0x8]
ldr r1, [r1, #0x0]
- blx FUN_020AEF1C
+ bl FUN_020AEF1C
pop {r3-r5, pc}
nop
_0201C298: .word 0x021C5934
@@ -46831,7 +46831,7 @@ _0201C2FA: add r1, r4, #0x0
add r2, r6, #0x0
add r3, r7, #0x0
- blx FUN_020AEE40
+ bl FUN_020AEE40
pop {r3-r7, pc}
.balign 4
_0201C308: .word 0x021C5934
@@ -46843,7 +46843,7 @@ FUN_0201C30C: ; 0x0201C30C ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201C322
- blx FUN_020AEEB8
+ bl FUN_020AEEB8
ldr r0, _0201C324 ; =0x021C5934
mov r1, #0x0
ldr r0, [r0, #0x0]
@@ -46864,7 +46864,7 @@ FUN_0201C328: ; 0x0201C328 ldr r2, _0201C344 ; =FUN_0201C358
add r1, r4, #0x0
add r5, r0, #0x0
- blx FUN_020B4568
+ bl FUN_020B4568
add r0, r5, #0x0
pop {r3-r5, pc}
.balign 4
@@ -47208,7 +47208,7 @@ FUN_0201C578: ; 0x0201C578 add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- blx FUN_020BC2A0
+ bl FUN_020BC2A0
add r1, r0, #0x0
bne _0201C598
add sp, #0x10
@@ -47270,7 +47270,7 @@ _0201C5DE: lsl r2, r2, #0x4
lsl r0, r0, #0x4
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
pop {r3, pc}
.balign 4
@@ -47284,7 +47284,7 @@ FUN_0201C5FC: ; 0x0201C5FC add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- blx FUN_020BC2A0
+ bl FUN_020BC2A0
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_0201C5A4
@@ -47550,10 +47550,10 @@ FUN_0201C7B0: ; 0x0201C7B0 sub sp, #0x30
add r4, r1, #0x0
add r1, sp, #0x24
- blx VEC_Normalize
+ bl VEC_Normalize
add r0, r4, #0x0
add r1, sp, #0x18
- blx VEC_Normalize
+ bl VEC_Normalize
ldr r0, [sp, #0x24]
ldr r4, [sp, #0x18]
str r0, [sp, #0x0]
@@ -47570,14 +47570,14 @@ FUN_0201C7B0: ; 0x0201C7B0 ldr r3, [sp, #0xc]
add r1, r7, #0x0
str r0, [sp, #0x10]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x14]
add r5, r1, #0x0
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
add r2, r4, #0x0
add r3, r6, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x14]
lsl r2, r2, #0xa
@@ -47600,14 +47600,14 @@ FUN_0201C7B0: ; 0x0201C7B0 add r1, r7, #0x0
add r2, r4, #0x0
add r3, r6, #0x0
- blx _ll_mul
+ bl _ll_mul
add r6, r0, #0x0
add r4, r1, #0x0
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
ldr r3, [sp, #0xc]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -47636,7 +47636,7 @@ _0201C862: pop {r3-r7, pc}
_0201C86A:
add r1, r5, #0x0
- blx FX_Atan2
+ bl FX_Atan2
add sp, #0x30
pop {r3-r7, pc}
.balign 4
@@ -47685,7 +47685,7 @@ FUN_0201C878: ; 0x0201C878 ldr r0, [sp, #0x8]
ldr r1, [sp, #0x1c]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47694,14 +47694,14 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x34]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0x0
str r0, [sp, #0x3c]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
str r0, [sp, #0x4c]
add r0, r1, #0x0
@@ -47737,7 +47737,7 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x34]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47746,14 +47746,14 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x28]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x40]
add r5, r1, #0x0
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
str r0, [sp, #0x50]
add r0, r1, #0x0
@@ -47789,7 +47789,7 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x28]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47798,14 +47798,14 @@ FUN_0201C878: ; 0x0201C878 sub r2, r3, r2
ldr r1, [sp, #0x1c]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0x0
str r0, [sp, #0x44]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r3, #0x2
mov r2, #0x0
lsl r3, r3, #0xa
@@ -47835,21 +47835,21 @@ FUN_0201C878: ; 0x0201C878 ldr r1, [sp, #0x34]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r5, r1, #0x0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x48]
add r4, r1, #0x0
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
- blx _ll_mul
+ bl _ll_mul
mov r12, r0
mov r0, #0x2
add r2, r1, #0x0
@@ -47951,7 +47951,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r0, r5, #0x0
add r1, sp, #0x0
add r2, r5, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
ldr r0, [r4, #0x8]
ldr r3, _0201CB1C ; =0x020FFA38
lsl r0, r0, #0x10
@@ -47968,7 +47968,7 @@ FUN_0201CAA8: ; 0x0201CAA8 add r0, r5, #0x0
add r1, sp, #0x0
add r2, r5, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
add sp, #0x24
pop {r4-r5, pc}
nop
@@ -48000,7 +48000,7 @@ FUN_0201CB20: ; 0x0201CB20 add r0, r7, #0x0
add r1, sp, #0x0
add r2, r7, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
lsl r1, r4, #0x2
ldr r3, _0201CB78 ; =0x020EDF50
add r4, #0x5a
@@ -48012,7 +48012,7 @@ FUN_0201CB20: ; 0x0201CB20 add r0, r7, #0x0
add r1, sp, #0x0
add r2, r7, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
add sp, #0x24
pop {r4-r7, pc}
.balign 4
@@ -48033,12 +48033,12 @@ FUN_0201CB7C: ; 0x0201CB7C ldrsh r1, [r1, r2]
add r5, r3, #0x0
ldr r4, [sp, #0x18]
- blx FX_Div
+ bl FX_Div
add r2, r0, #0x0
asr r1, r6, #0x1f
add r0, r6, #0x0
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r6, #0x2
mov r2, #0x0
lsl r6, r6, #0xa
@@ -48061,7 +48061,7 @@ FUN_0201CB7C: ; 0x0201CB7C asr r3, r7, #0x1f
add r2, r7, #0x0
str r0, [r4, #0x0]
- blx _ll_mul
+ bl _ll_mul
mov r3, #0x0
add r2, r6, #0x0
add r2, r0, r2
@@ -48085,7 +48085,7 @@ FUN_0201CBEC: ; 0x0201CBEC mul r0, r2
add r0, r1, r0
lsl r0, r0, #0xc
- blx FX_Sqrt
+ bl FX_Sqrt
asr r0, r0, #0xc
pop {r3, pc}
.balign 4
@@ -48207,11 +48207,11 @@ _0201CCD0: mov r4, #0x4
add r6, r4, #0x0
_0201CCD4:
- blx TP_RequestAutoSamplingStopAsync
+ bl TP_RequestAutoSamplingStopAsync
add r0, r4, #0x0
- blx TP_WaitBusy
+ bl TP_WaitBusy
add r0, r6, #0x0
- blx TP_CheckError
+ bl TP_CheckError
cmp r0, #0x0
beq _0201CCEA
add r5, r5, #0x1
@@ -48276,7 +48276,7 @@ _0201CD4E: ldrh r0, [r0, #0x18]
cmp r0, #0x0
beq _0201CD88
- blx TP_GetLatestIndexInAuto
+ bl TP_GetLatestIndexInAuto
add r5, r0, #0x0
ldr r0, _0201CD90 ; =0x021C5944
mov r1, #0x9
@@ -48320,7 +48320,7 @@ FUN_0201CD94: ; 0x0201CD94 _0201CDA6:
add r0, sp, #0x4
add r1, r5, #0x0
- blx TP_GetCalibratedPoint
+ bl TP_GetCalibratedPoint
ldrh r0, [r6, #0x0]
add r7, r7, #0x1
add r5, #0x8
@@ -48403,11 +48403,11 @@ _0201CE38: add r1, r4, #0x0
add r2, r7, #0x0
mov r3, #0x9
- blx TP_RequestAutoSamplingStartAsync
+ bl TP_RequestAutoSamplingStartAsync
mov r0, #0x2
- blx TP_WaitBusy
+ bl TP_WaitBusy
mov r0, #0x2
- blx TP_CheckError
+ bl TP_CheckError
cmp r0, #0x0
beq _0201CE56
add r5, r5, #0x1
@@ -48536,7 +48536,7 @@ _0201CF0C: ldr r2, [sp, #0x0]
cmp r2, #0x1
bne _0201CF36
- blx _u32_div_f
+ bl _u32_div_f
str r1, [r5, #0x54]
b _0201CF3E
_0201CF36:
@@ -48603,7 +48603,7 @@ _0201CF7C: blo _0201CFB8
cmp r7, #0x4
bne _0201CFB2
- blx _u32_div_f
+ bl _u32_div_f
str r1, [r5, #0x54]
b _0201CFB8
_0201CFB2:
@@ -48721,7 +48721,7 @@ FUN_0201D060: ; 0x0201D060 mov r2, #0x3c
str r1, [r0, #0x0]
mov r0, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r1, _0201D120 ; =0x021C5994
ldr r2, [r5, #0x0]
ldr r0, [r1, #0x0]
@@ -49954,7 +49954,7 @@ FUN_0201D9B0: ; 0x0201D9B0 push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B1A24
+ bl FUN_020B1A24
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201D9C8
@@ -50002,13 +50002,13 @@ _0201DA04: add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1528
+ bl FUN_020B1528
b _0201DA20
_0201DA16:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1768
+ bl FUN_020B1768
_0201DA20:
cmp r4, #0x1
bne _0201DA2C
@@ -50028,7 +50028,7 @@ FUN_0201DA38: ; 0x0201DA38 push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B1A24
+ bl FUN_020B1A24
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201DA50
@@ -50071,7 +50071,7 @@ _0201DA88: add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1340
+ bl FUN_020B1340
cmp r4, #0x1
bne _0201DAA0
mov r0, #0x1
@@ -50123,7 +50123,7 @@ _0201DAE4: .word 0x021C5994 thumb_func_start FUN_0201DAE8
FUN_0201DAE8: ; 0x0201DAE8
push {r3, lr}
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x30
bgt _0201DB18
bge _0201DB60
@@ -50224,7 +50224,7 @@ _0201DB90: ldr r0, [r0, #0x0]
str r1, [r0, #0x14]
_0201DB98:
- blx GX_GetBankForSubOBJ
+ bl GX_GetBankForSubOBJ
cmp r0, #0x0
beq _0201DBAE
cmp r0, #0x8
@@ -50427,7 +50427,7 @@ FUN_0201DD00: ; 0x0201DD00 add r0, r4, #0x0
mov r1, #0x0
lsr r2, r2, #0x3
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_0201DD16:
pop {r4, pc}
@@ -50609,7 +50609,7 @@ FUN_0201DE4C: ; 0x0201DE4C beq _0201DE8A
add r0, r4, #0x0
add r0, #0x10
- blx FUN_020B1A14
+ bl FUN_020B1A14
ldr r1, _0201DECC ; =0x021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x1c]
@@ -50635,7 +50635,7 @@ _0201DE8A: beq _0201DEC4
add r0, r4, #0x0
add r0, #0x10
- blx FUN_020B1A14
+ bl FUN_020B1A14
ldr r1, _0201DECC ; =0x021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x20]
@@ -50707,7 +50707,7 @@ FUN_0201DF10: ; 0x0201DF10 add r5, r0, #0x0
add r4, r1, #0x0
add r6, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
beq _0201DF28
sub r5, r5, r1
@@ -50867,7 +50867,7 @@ FUN_0201E00C: ; 0x0201E00C mov r2, #0x28
str r1, [r0, #0x0]
mov r0, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, _0201E064 ; =0x021C5998
mov r1, #0x30
ldr r0, [r0, #0x0]
@@ -51219,9 +51219,9 @@ _0201E2A4: _0201E2A6:
cmp r4, #0x0
beq _0201E2B6
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
pop {r4, pc}
_0201E2B6:
mov r0, #0x0
@@ -51269,13 +51269,13 @@ FUN_0201E2F8: ; 0x0201E2F8 mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x0
mvn r0, r0
str r0, [r4, #0xc]
add r4, #0x10
add r0, r4, #0x0
- blx FUN_020B19DC
+ bl FUN_020B19DC
pop {r4, pc}
thumb_func_start FUN_0201E314
@@ -51463,7 +51463,7 @@ _0201E460: .word 0x021C5998 thumb_func_start FUN_0201E464
FUN_0201E464: ; 0x0201E464
push {r3, lr}
- blx GX_GetBankForOBJExtPltt
+ bl GX_GetBankForOBJExtPltt
cmp r0, #0x20
beq _0201E472
cmp r0, #0x40
@@ -51481,7 +51481,7 @@ _0201E47E: ldr r0, [r0, #0x0]
str r1, [r0, #0x1c]
_0201E486:
- blx GX_GetBankForSubOBJExtPltt
+ bl GX_GetBankForSubOBJExtPltt
mov r1, #0x1
lsl r1, r1, #0x8
cmp r0, r1
@@ -51516,7 +51516,7 @@ FUN_0201E4BC: ; 0x0201E4BC push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B19DC
+ bl FUN_020B19DC
ldr r0, [r4, #0x4]
mov r2, #0x1
tst r0, r2
@@ -51525,7 +51525,7 @@ FUN_0201E4BC: ; 0x0201E4BC ldr r0, [r4, #0x0]
ldr r1, [r4, #0x24]
add r3, #0x10
- blx FUN_020B1240
+ bl FUN_020B1240
_0201E4DA:
ldr r0, [r4, #0x4]
mov r2, #0x2
@@ -51535,7 +51535,7 @@ _0201E4DA: ldr r1, [r4, #0x28]
add r4, #0x10
add r3, r4, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
_0201E4EE:
pop {r4, pc}
@@ -51767,36 +51767,36 @@ _0201E666: FUN_0201E66C: ; 0x0201E66C
push {r4, lr}
add r4, r0, #0x0
- blx GX_ResetBankForBG
- blx GX_ResetBankForBGExtPltt
- blx GX_ResetBankForSubBG
- blx FUN_020C6034
- blx GX_ResetBankForOBJ
- blx GX_ResetBankForOBJExtPltt
- blx FUN_020C605C
- blx GX_ResetBankForSubOBJ
- blx GX_ResetBankForTex
- blx GX_ResetBankForTexPltt
+ bl GX_ResetBankForBG
+ bl GX_ResetBankForBGExtPltt
+ bl GX_ResetBankForSubBG
+ bl FUN_020C6034
+ bl GX_ResetBankForOBJ
+ bl GX_ResetBankForOBJExtPltt
+ bl FUN_020C605C
+ bl GX_ResetBankForSubOBJ
+ bl GX_ResetBankForTex
+ bl GX_ResetBankForTexPltt
ldr r0, [r4, #0x0]
- blx GX_SetBankForBG
+ bl GX_SetBankForBG
ldr r0, [r4, #0x4]
- blx GX_SetBankForBGExtPltt
+ bl GX_SetBankForBGExtPltt
ldr r0, [r4, #0x8]
- blx GX_SetBankForSubBG
+ bl GX_SetBankForSubBG
ldr r0, [r4, #0xc]
- blx GX_SetBankForSubBGExtPltt
+ bl GX_SetBankForSubBGExtPltt
ldr r0, [r4, #0x10]
- blx GX_SetBankForOBJ
+ bl GX_SetBankForOBJ
ldr r0, [r4, #0x14]
- blx GX_SetBankForOBJExtPltt
+ bl GX_SetBankForOBJExtPltt
ldr r0, [r4, #0x18]
- blx GX_SetBankForSubOBJ
+ bl GX_SetBankForSubOBJ
ldr r0, [r4, #0x1c]
- blx GX_SetBankForSubOBJExtPltt
+ bl GX_SetBankForSubOBJExtPltt
ldr r0, [r4, #0x20]
- blx GX_SetBankForTex
+ bl GX_SetBankForTex
ldr r0, [r4, #0x24]
- blx GX_SetBankForTexPltt
+ bl GX_SetBankForTexPltt
pop {r4, pc}
.balign 4
@@ -51906,7 +51906,7 @@ _0201E784: .word 0xFFFFE0FF thumb_func_start FUN_0201E788
FUN_0201E788: ; 0x0201E788
push {r3, lr}
- blx GX_DispOn
+ bl GX_DispOn
ldr r2, _0201E79C ; =0x04001000
mov r0, #0x1
ldr r1, [r2, #0x0]
@@ -51961,7 +51961,7 @@ FUN_0201E7D8: ; 0x0201E7D8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -51978,7 +51978,7 @@ FUN_0201E7D8: ; 0x0201E7D8 orr r0, r1
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -51998,7 +51998,7 @@ FUN_0201E7D8: ; 0x0201E7D8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
mov r3, #0x0
@@ -52016,7 +52016,7 @@ FUN_0201E7D8: ; 0x0201E7D8 ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52036,7 +52036,7 @@ FUN_0201E7D8: ; 0x0201E7D8 ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52051,7 +52051,7 @@ FUN_0201E7D8: ; 0x0201E7D8 add r5, #0x20
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
nop
_0201E8B4: .word 0x020FFA38
@@ -52069,7 +52069,7 @@ FUN_0201E8B8: ; 0x0201E8B8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52086,7 +52086,7 @@ FUN_0201E8B8: ; 0x0201E8B8 orr r0, r1
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52107,7 +52107,7 @@ FUN_0201E8B8: ; 0x0201E8B8 asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
mov r3, #0x0
@@ -52125,7 +52125,7 @@ FUN_0201E8B8: ; 0x0201E8B8 ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52146,7 +52146,7 @@ FUN_0201E8B8: ; 0x0201E8B8 ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52162,7 +52162,7 @@ FUN_0201E8B8: ; 0x0201E8B8 add r5, #0x14
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
.balign 4
_0201E998: .word 0x020FFA38
@@ -52279,7 +52279,7 @@ _0201EA5C: ldr r0, [r7, #0x4]
ldr r1, [r1, #0x0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r7, #0x4]
ldr r1, [sp, #0x0]
ldr r0, [r5, #0x64]
@@ -52298,7 +52298,7 @@ _0201EA5C: ldr r0, [r0, #0x0]
ldr r1, [r1, #0x0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0x0]
str r1, [r0, #0x0]
ldr r0, [r5, #0x64]
@@ -52477,7 +52477,7 @@ FUN_0201EBA4: ; 0x0201EBA4 beq _0201EBEE
add r1, #0x48
add r2, sp, #0x10
- blx VEC_Subtract
+ bl VEC_Subtract
ldr r0, _0201EC40 ; =0x021C59A4
add r1, sp, #0x10
ldr r0, [r0, #0x0]
@@ -52531,7 +52531,7 @@ _0201EBEE: str r0, [sp, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- blx G3i_LookAt_
+ bl G3i_LookAt_
ldr r1, _0201EC54 ; =0x021CED98
mov r0, #0xe8
ldr r2, [r1, #0x7c]
@@ -52719,9 +52719,9 @@ FUN_0201ED5C: ; 0x0201ED5C str r0, [r2, #0x0]
add r0, r6, #0x0
add r2, sp, #0x30
- blx VEC_Subtract
+ bl VEC_Subtract
add r0, sp, #0x30
- blx VEC_Mag
+ bl VEC_Mag
str r0, [r4, #0x38]
mov r6, #0x0
add r0, sp, #0x24
@@ -52813,7 +52813,7 @@ FUN_0201EE2C: ; 0x0201EE2C ldr r1, [r5, #0x4]
ldr r2, [r5, #0x8]
ldr r3, [r5, #0xc]
- blx G3i_PerspectiveW_
+ bl G3i_PerspectiveW_
ldr r1, _0201EEE8 ; =0x021CED98
mov r0, #0x50
ldr r2, [r1, #0x7c]
@@ -52830,11 +52830,11 @@ _0201EE6C: ldr r4, [r5, #0x38]
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0x1f
asr r3, r4, #0x1f
add r2, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52847,7 +52847,7 @@ _0201EE6C: asr r1, r4, #0x1f
add r0, r4, #0x0
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r6, #0x2
mov r2, #0x0
lsl r6, r6, #0xa
@@ -52868,7 +52868,7 @@ _0201EE6C: neg r2, r3
str r0, [sp, #0x10]
add r0, r4, #0x0
- blx G3i_OrthoW_
+ bl G3i_OrthoW_
ldr r1, _0201EEE8 ; =0x021CED98
mov r0, #0x50
ldr r2, [r1, #0x7c]
@@ -52962,12 +52962,12 @@ FUN_0201EF70: ; 0x0201EF70 add r0, #0x14
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
add r4, #0x20
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
thumb_func_start FUN_0201EF90
@@ -53489,7 +53489,7 @@ FUN_0201F318: ; 0x0201F318 bl ErrorHandling
_0201F324:
add r0, sp, #0x0
- blx MTX_Identity33_
+ bl MTX_Identity33_
add r0, r5, #0x0
add r0, #0xbc
ldr r4, [r0, #0x0]
@@ -53648,13 +53648,13 @@ FUN_0201F454: ; 0x0201F454 add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
str r0, [sp, #0x8]
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
str r0, [sp, #0x4]
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
cmp r0, #0x0
@@ -53722,9 +53722,9 @@ FUN_0201F4EC: ; 0x0201F4EC push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- blx FUN_020B7CF0
+ bl FUN_020B7CF0
add r0, r5, #0x0
- blx FUN_020B7C58
+ bl FUN_020B7C58
str r0, [r4, #0x0]
pop {r3-r5, pc}
@@ -53735,14 +53735,14 @@ FUN_0201F500: ; 0x0201F500 ldr r1, [r2, #0x0]
ldr r2, [r3, #0x0]
add r5, r0, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
ldr r1, [sp, #0x10]
add r0, r5, #0x0
ldr r1, [r1, #0x0]
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
add r0, r4, #0x0
add r1, r5, #0x0
- blx FUN_020B7790
+ bl FUN_020B7790
pop {r3-r5, pc}
.balign 4
@@ -53792,22 +53792,22 @@ _0201F568: mov r0, #0x0
pop {r3-r7, pc}
_0201F56E:
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
str r0, [sp, #0x0]
add r0, r4, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
str r0, [sp, #0x4]
add r0, r4, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r7, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
ldr r1, [sp, #0x0]
cmp r1, r6
bne _0201F5AA
@@ -53859,7 +53859,7 @@ FUN_0201F5D4: ; 0x0201F5D4 add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- blx FUN_020B80B4
+ bl FUN_020B80B4
add r0, r5, #0x0
add r0, #0xa8
ldrb r0, [r0, #0x0]
@@ -53961,7 +53961,7 @@ FUN_0201F69C: ; 0x0201F69C add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- blx FUN_020B80B4
+ bl FUN_020B80B4
add r0, r4, #0x0
bl FUN_0201FBCC
add r5, #0x84
@@ -54681,7 +54681,7 @@ FUN_0201FB9C: ; 0x0201FB9C add r5, r2, #0x0
bl FUN_0201FC90
add r7, r0, #0x0
- blx FUN_020BC13C
+ bl FUN_020BC13C
add r4, r0, #0x0
ldrh r0, [r4, #0xe]
add r0, r4, r0
@@ -54691,7 +54691,7 @@ FUN_0201FB9C: ; 0x0201FB9C cmp r5, #0x0
beq _0201FBC6
add r0, r7, #0x0
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
str r0, [r5, #0x0]
_0201FBC6:
add r0, r4, #0x0
@@ -54803,7 +54803,7 @@ FUN_0201FC70: ; 0x0201FC70 sub sp, #0xc
add r4, r0, #0x0
ldr r0, [r4, #0x78]
- blx FUN_020B772C
+ bl FUN_020B772C
add r4, #0x80
ldr r0, [r4, #0x0]
add r1, sp, #0x4
@@ -54907,7 +54907,7 @@ _0201FD0C: ldr r0, [r4, r1]
add r1, r1, #0x4
add r1, r4, r1
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
mov r0, #0x12
mov r1, #0x1
lsl r0, r0, #0x4
@@ -55078,13 +55078,13 @@ FUN_0201FE6C: ; 0x0201FE6C mov r1, #0x0
lsl r2, r2, #0x2
str r1, [r4, #0x3c]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0xb4
- blx FUN_020B1A24
+ bl FUN_020B1A24
add r0, r4, #0x0
add r0, #0xd8
- blx FUN_020B19DC
+ bl FUN_020B19DC
mov r0, #0x0
str r0, [r4, #0x30]
pop {r4, pc}
@@ -55151,7 +55151,7 @@ _0201FEA6: add r1, r4, #0x0
add r1, #0x26
ldrb r1, [r1, #0x0]
- blx FUN_020B502C
+ bl FUN_020B502C
add r0, r4, #0x0
add r0, #0x27
ldrb r2, [r0, #0x0]
@@ -55163,7 +55163,7 @@ _0201FEA6: mov r3, #0x2
and r1, r2
and r2, r3
- blx FUN_020B4F38
+ bl FUN_020B4F38
add r0, r4, #0x0
mov r2, #0x1
add r0, #0x34
@@ -55272,13 +55272,13 @@ _0201FFE4: ldr r1, [r1, #0x0]
add r0, #0xb4
add r4, #0x40
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x0
mvn r1, r1
cmp r0, r1
beq _0202000E
ldr r0, [r4, #0x5c]
- blx FUN_020B4358
+ bl FUN_020B4358
_0202000E:
add r0, r5, #0x0
add r0, #0xec
@@ -55488,11 +55488,11 @@ _0202014A: lsl r1, r1, #0x10
ldr r0, [r4, #0x4]
lsr r1, r1, #0x10
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- blx FUN_020B1EE4
+ bl FUN_020B1EE4
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -55501,11 +55501,11 @@ _02020168: add r4, #0x40
ldr r0, [r4, #0x6c]
add r1, r3, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- blx FUN_020B242C
+ bl FUN_020B242C
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -55538,7 +55538,7 @@ _020201A8: add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- blx FUN_020B0448
+ bl FUN_020B0448
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -55550,7 +55550,7 @@ _020201C2: add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- blx FUN_020B0448
+ bl FUN_020B0448
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -55578,12 +55578,12 @@ FUN_020201E4: ; 0x020201E4 _020201F4:
add r0, #0x40
add r0, #0x8
- blx FUN_020B1EC4
+ bl FUN_020B1EC4
pop {r3, pc}
_020201FE:
add r0, #0x40
add r0, #0x8
- blx FUN_020B224C
+ bl FUN_020B224C
pop {r3, pc}
thumb_func_start FUN_02020208
@@ -55599,12 +55599,12 @@ FUN_02020208: ; 0x02020208 _02020218:
add r0, #0x40
add r0, #0x8
- blx FUN_020B1EA4
+ bl FUN_020B1EA4
pop {r3, pc}
_02020222:
add r0, #0x40
add r0, #0x8
- blx FUN_020B2194
+ bl FUN_020B2194
pop {r3, pc}
thumb_func_start FUN_0202022C
@@ -55878,16 +55878,16 @@ FUN_020203CC: ; 0x020203CC lsl r0, r0, #0x6
add r1, r4, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
mov r1, #0x1
add r0, r4, #0x0
lsl r1, r1, #0xa
- blx DC_FlushRange
+ bl DC_FlushRange
mov r2, #0x1
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0xa
- blx GX_LoadOAM
+ bl GX_LoadOAM
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -55904,12 +55904,12 @@ FUN_02020404: ; 0x02020404 lsl r0, r0, #0x6
add r1, r4, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
mov r2, #0x1
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0xa
- blx GXS_LoadOAM
+ bl GXS_LoadOAM
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -56048,12 +56048,12 @@ FUN_0202050C: ; 0x0202050C add r4, #0x40
ldr r0, [r4, #0x4]
mov r1, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r4, #0x8
add r1, r0, #0x0
ldr r2, [r5, #0x40]
add r0, r4, #0x0
- blx FUN_020B1F80
+ bl FUN_020B1F80
pop {r3-r5, pc}
.balign 4
@@ -56065,22 +56065,22 @@ FUN_0202052C: ; 0x0202052C add r4, r6, #0x0
add r4, #0x40
add r5, r0, #0x0
- blx FUN_020B43A4
+ bl FUN_020B43A4
str r0, [r4, #0x5c]
ldr r0, [r4, #0x4]
mov r1, #0x0
ldr r5, [r5, #0x4]
- blx FUN_020AFC04
+ bl FUN_020AFC04
str r0, [sp, #0x18]
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x1
- blx FUN_020B1A14
+ bl FUN_020B1A14
add r7, r0, #0x0
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x2
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x0
mvn r1, r1
str r1, [sp, #0x0]
@@ -56097,7 +56097,7 @@ FUN_0202052C: ; 0x0202052C ldr r2, [r6, #0x40]
ldr r3, [r4, #0x5c]
add r0, #0x8
- blx FUN_020B1EFC
+ bl FUN_020B1EFC
add sp, #0x1c
pop {r4-r7, pc}
@@ -56111,10 +56111,10 @@ FUN_02020588: ; 0x02020588 ldr r0, [r4, #0x6c]
add r7, r1, #0x0
mov r1, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
str r0, [sp, #0xc]
ldr r0, [r4, #0x68]
- blx FUN_020B23D8
+ bl FUN_020B23D8
add r6, r0, #0x0
mov r1, #0x28
add r0, r7, #0x0
@@ -56137,11 +56137,11 @@ FUN_02020588: ; 0x02020588 ldr r1, [r4, #0x70]
ldr r2, [r4, #0x74]
add r0, #0x8
- blx FUN_020B20C8
+ bl FUN_020B20C8
add r4, #0x8
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- blx FUN_020B242C
+ bl FUN_020B242C
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -56166,9 +56166,9 @@ _02020600: _02020602:
cmp r4, #0x0
beq _02020612
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
pop {r4, pc}
_02020612:
mov r0, #0x0
@@ -56194,19 +56194,19 @@ FUN_02020618: ; 0x02020618 ldr r0, [r5, r0]
add r1, #0xb4
add r2, #0xd8
- blx thunk_FUN_020b5040
+ bl thunk_FUN_020b5040
mov r0, #0x45
lsl r0, r0, #0x2
ldr r0, [r5, r0]
- blx FUN_020B326C
- blx FUN_020B2B58
+ bl FUN_020B326C
+ bl FUN_020B2B58
add r1, r4, #0x0
mov r0, #0x45
add r1, #0x26
lsl r0, r0, #0x2
ldrb r1, [r1, #0x0]
ldr r0, [r5, r0]
- blx FUN_020B502C
+ bl FUN_020B502C
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -56222,7 +56222,7 @@ FUN_02020618: ; 0x02020618 mov r3, #0x2
and r1, r2
and r2, r3
- blx FUN_020B4F38
+ bl FUN_020B4F38
b _0202068E
_02020680:
mov r0, #0x45
@@ -56230,12 +56230,12 @@ _02020680: mov r1, #0x0
ldr r0, [r5, r0]
add r2, r1, #0x0
- blx FUN_020B4F38
+ bl FUN_020B4F38
_0202068E:
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
- blx FUN_020B2A08
+ bl FUN_020B2A08
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -56244,11 +56244,11 @@ _0202068E: ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
- blx FUN_020B2A08
+ bl FUN_020B2A08
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x20]
- blx FUN_020B28B4
+ bl FUN_020B28B4
ldrh r0, [r4, #0x24]
ldr r2, _02020770 ; =0x020FFA38
asr r0, r0, #0x4
@@ -56258,14 +56258,14 @@ _0202068E: lsl r1, r1, #0x1
ldrsh r0, [r2, r0]
ldrsh r1, [r2, r1]
- blx FUN_020B2794
+ bl FUN_020B2794
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
neg r0, r0
neg r1, r1
neg r2, r2
- blx FUN_020B2A08
+ bl FUN_020B2A08
_020206DC:
add r0, r4, #0x0
add r0, #0x28
@@ -56328,16 +56328,16 @@ _0202074E: add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- blx FUN_020B317C
+ bl FUN_020B317C
b _02020764
_0202075A:
add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- blx FUN_020B2D9C
+ bl FUN_020B2D9C
_02020764:
- blx FUN_020B2B08
- blx FUN_020B31F0
+ bl FUN_020B2B08
+ bl FUN_020B31F0
add sp, #0xc
pop {r3-r6, pc}
.balign 4
@@ -56895,9 +56895,9 @@ FUN_02020AFC: ; 0x02020AFC strh r0, [r1, #0x0]
ldr r1, _02020B2C ; =FUN_02020B30
mov r0, #0x40
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x40
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
pop {r3, pc}
.balign 4
_02020B24: .word 0x021C59B0
@@ -56946,7 +56946,7 @@ _02020B7C: .word FUN_02020B30 FUN_02020B80: ; 0x02020B80
push {r4-r5, lr}
sub sp, #0xc
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
ldr r1, _02020BE4 ; =0x0400010C
add r3, sp, #0x0
ldrh r1, [r1, #0x0]
@@ -56978,7 +56978,7 @@ FUN_02020B80: ; 0x02020B80 str r2, [sp, #0x4]
str r3, [sp, #0x8]
_02020BC4:
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
ldr r2, [sp, #0x4]
ldr r1, [sp, #0x8]
lsr r0, r2, #0x10
@@ -57015,7 +57015,7 @@ FUN_02020BFC: ; 0x02020BFC ldr r2, _02020C10 ; =0x000082EA
lsl r0, r0, #0x6
mov r3, #0x0
- blx _ll_udiv
+ bl _ll_udiv
pop {r3, pc}
.balign 4
_02020C10: .word 0x000082EA
@@ -57029,7 +57029,7 @@ FUN_02020C14: ; 0x02020C14 ldr r2, _02020C28 ; =0x01FF6210
lsl r0, r0, #0x6
mov r3, #0x0
- blx _ll_udiv
+ bl _ll_udiv
pop {r3, pc}
.balign 4
_02020C28: .word 0x01FF6210
@@ -57040,7 +57040,7 @@ ErrorHandling: ; 0x02020C2C bl FUN_02031810
cmp r0, #0x0
beq _02020C42
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
beq _02020C42
bl FUN_0208A9B8
@@ -57881,7 +57881,7 @@ FUN_02021220: ; 0x02021220 push {r3, lr}
ldr r0, [r0, #0x0]
bl FUN_02020E0C
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
pop {r3, pc}
.balign 4
@@ -57897,7 +57897,7 @@ FUN_02021230: ; 0x02021230 _02021240:
ldr r0, [r0, #0x10]
_02021242:
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
pop {r3, pc}
thumb_func_start FUN_02021248
@@ -57908,13 +57908,13 @@ FUN_02021248: ; 0x02021248 str r1, [sp, #0x0]
str r2, [sp, #0x4]
str r3, [sp, #0x8]
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r7, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
add r4, r0, #0x0
cmp r7, #0x0
beq _0202127E
@@ -57969,13 +57969,13 @@ FUN_020212B8: ; 0x020212B8 bl FUN_020212E4
ldr r1, [r4, #0x4]
add r0, r4, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0x0
mov r1, #0x1
- blx FUN_020B7D28
+ bl FUN_020B7D28
add r0, r4, #0x0
mov r1, #0x1
- blx FUN_020B7C78
+ bl FUN_020B7C78
pop {r4, pc}
.balign 4
@@ -57984,10 +57984,10 @@ FUN_020212E4: ; 0x020212E4 push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
pop {r3-r5, pc}
thumb_func_start FUN_020212F8
@@ -57997,9 +57997,9 @@ FUN_020212F8: ; 0x020212F8 add r4, r0, #0x0
add r1, sp, #0x4
add r2, sp, #0x0
- blx FUN_020B7CF0
+ bl FUN_020B7CF0
add r0, r4, #0x0
- blx FUN_020B7C58
+ bl FUN_020B7C58
add sp, #0x8
pop {r4, pc}
@@ -58016,7 +58016,7 @@ FUN_02021310: ; 0x02021310 add r1, r6, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx memcpy
+ bl memcpy
add r0, r4, #0x0
pop {r4-r6, pc}
.balign 4
@@ -58025,7 +58025,7 @@ FUN_02021310: ; 0x02021310 FUN_02021334: ; 0x02021334
push {r3-r5, lr}
add r5, r0, #0x0
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
add r4, r0, #0x0
bne _02021344
bl ErrorHandling
@@ -58040,7 +58040,7 @@ FUN_0202134C: ; 0x0202134C push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx FUN_020B33A0
+ bl FUN_020B33A0
add r5, #0x80
str r4, [r5, #0x0]
pop {r3-r5, pc}
@@ -58052,7 +58052,7 @@ FUN_0202135C: ; 0x0202135C add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- blx FUN_020B3334
+ bl FUN_020B3334
add r2, r5, #0x0
ldmia r4!, {r0-r1}
stmia r2!, {r0-r1}
@@ -58068,7 +58068,7 @@ FUN_0202135C: ; 0x0202135C cmp r0, #0x0
beq _0202138C
add r1, r5, #0x0
- blx FUN_020B3390
+ bl FUN_020B3390
_0202138C:
pop {r3-r7, pc}
.balign 4
@@ -58150,14 +58150,14 @@ _02021400: ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
add r7, r1, #0x0
str r0, [sp, #0x30]
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
@@ -58187,14 +58187,14 @@ _02021400: str r0, [sp, #0x34]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x34]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x38]
add r4, r1, #0x0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x38]
lsl r2, r2, #0xa
@@ -58230,14 +58230,14 @@ _02021400: ldr r0, [sp, #0xc]
ldr r2, [sp, #0x48]
ldr r3, [sp, #0x4c]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x50]
add r5, r1, #0x0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x44]
ldr r2, [sp, #0x3c]
ldr r3, [sp, #0x40]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x50]
lsl r2, r2, #0xa
@@ -58265,14 +58265,14 @@ _02021400: ldr r1, [sp, #0x54]
ldr r2, [sp, #0x48]
ldr r3, [sp, #0x4c]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x58]
str r1, [sp, #0x4]
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x54]
ldr r2, [sp, #0x3c]
ldr r3, [sp, #0x40]
- blx _ll_mul
+ bl _ll_mul
mov r12, r0
add r2, r1, #0x0
mov r0, #0x2
@@ -59038,7 +59038,7 @@ _02021AA2: add r0, #0x8
add r1, #0x8
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
ldrh r0, [r4, #0x2]
strh r0, [r5, #0x2]
pop {r3-r5, pc}
@@ -59150,7 +59150,7 @@ _02021B74: _02021B80:
add r0, r6, #0x0
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
add r0, r4, #0x0
@@ -59220,7 +59220,7 @@ _02021BEC: _02021BFA:
add r0, r4, #0x0
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0x0
bne _02021B80
_02021C06:
@@ -59301,7 +59301,7 @@ _02021C98: add r1, r2, #0x0
add r2, r7, #0x0
add r3, r5, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0x0
ldr r1, [sp, #0x8]
add r0, r1, r0
@@ -59313,7 +59313,7 @@ _02021C98: add r1, r5, #0x0
mov r2, #0xa
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
ldr r0, [sp, #0x4]
add r5, r1, #0x0
@@ -59589,7 +59589,7 @@ _02021EA8: add r0, #0x8
add r1, r7, #0x0
add r2, r6, #0x0
- blx memcpy
+ bl memcpy
mov r2, #0x0
cmp r4, #0x0
bls _02021ED4
@@ -59643,7 +59643,7 @@ _02021F0C: add r0, r6, #0x0
add r1, r5, #0x0
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
pop {r4-r6, pc}
_02021F22:
bl ErrorHandling
@@ -59710,7 +59710,7 @@ _02021F7A: add r2, r2, #0x1
add r1, #0x8
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
ldrh r1, [r5, #0x2]
ldrh r0, [r4, #0x2]
add r0, r1, r0
@@ -60242,15 +60242,15 @@ FUN_02022318: ; 0x02022318 bl FUN_02016998
add r4, r0, #0x0
str r6, [r4, #0x0]
- blx FUN_020BB7F4
- blx G3X_InitMtxStack
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
mov r1, #0x2
ldr r0, _020223B8 ; =0x04000540
cmp r7, #0x0
str r1, [r0, #0x0]
bne _02022364
lsl r0, r5, #0x7
- blx FUN_020AFA28
+ bl FUN_020AFA28
add r6, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r6, #0x0
@@ -60262,20 +60262,20 @@ FUN_02022318: ; 0x02022318 lsl r0, r5, #0x11
mov r1, #0x0
add r3, r6, #0x0
- blx FUN_020AF9C4
+ bl FUN_020AF9C4
b _0202236E
_02022364:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
mov r1, #0x1
- blx FUN_020AEB70
+ bl FUN_020AEB70
_0202236E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
bne _02022398
ldr r0, [sp, #0x20]
lsl r0, r0, #0x8
- blx FUN_020AFBFC
+ bl FUN_020AFBFC
add r5, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r5, #0x0
@@ -60286,14 +60286,14 @@ _0202236E: lsl r0, r0, #0xd
add r2, r5, #0x0
mov r3, #0x1
- blx FUN_020AFBA8
+ bl FUN_020AFBA8
b _020223A4
_02022398:
ldr r0, [sp, #0x20]
mov r1, #0x1
lsl r0, r0, #0x1d
lsr r0, r0, #0x10
- blx FUN_020AEB70
+ bl FUN_020AEB70
_020223A4:
ldr r0, [sp, #0x24]
cmp r0, #0x0
@@ -60359,13 +60359,13 @@ FUN_020223D4: ; 0x020223D4 add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _02022444 ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _02022448 ; =0xBFFF0000
ldr r0, _0202244C ; =0x04000580
str r1, [r0, #0x0]
@@ -60381,34 +60381,34 @@ _0202244C: .word 0x04000580 thumb_func_start FUN_02022450
FUN_02022450: ; 0x02022450
push {r3, lr}
- blx FS_IsAvailable
+ bl FS_IsAvailable
cmp r0, #0x0
bne _02022460
- blx OS_Terminate
+ bl OS_Terminate
pop {r3, pc}
_02022460:
ldr r0, _020224BC ; =0x027FF00C
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0202248A
- blx CARD_Init
+ bl CARD_Init
mov r2, #0x16
ldr r0, _020224C0 ; =0x027FFE00
ldr r1, _020224C4 ; =0x027FF000
lsl r2, r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r2, #0x16
ldr r0, _020224C0 ; =0x027FFE00
ldr r1, _020224C8 ; =0x027FFA80
lsl r2, r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _020224CC ; =0x4A414441
ldr r0, _020224BC ; =0x027FF00C
str r1, [r0, #0x0]
_0202248A:
ldr r0, _020224D0 ; =0x020EE6D4
mov r1, #0x3
- blx FS_FindArchive
+ bl FS_FindArchive
ldr r1, _020224C4 ; =0x027FF000
ldr r2, [r1, #0x48]
str r2, [r0, #0x2c]
@@ -60427,7 +60427,7 @@ _0202248A: cmp r1, r0
beq _020224B8
_020224B4:
- blx OS_Terminate
+ bl OS_Terminate
_020224B8:
pop {r3, pc}
nop
@@ -60445,17 +60445,17 @@ FUN_020224D8: ; 0x020224D8 sub sp, #0x48
add r4, r0, #0x0
add r0, sp, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020224FC
ldr r1, [sp, #0x24]
ldr r0, _02022500 ; =0x027FFC2C
str r1, [r0, #0x0]
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
_020224FC:
add sp, #0x48
pop {r4, pc}
@@ -60521,7 +60521,7 @@ FUN_0202254C: ; 0x0202254C ldr r2, _020225E0 ; =0x000204A8
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _020225E4 ; =0x021C59C8
str r4, [r0, #0x0]
bl FUN_02023570
@@ -60534,7 +60534,7 @@ FUN_0202254C: ; 0x0202254C add r0, r4, #0x0
ldr r1, _020225E8 ; =0x00001021
add r0, #0x14
- blx MATHi_CRC16InitTable
+ bl MATHi_CRC16InitTable
ldr r0, _020225EC ; =0x00020224
add r0, r4, r0
bl FUN_020230E4
@@ -60547,7 +60547,7 @@ FUN_0202254C: ; 0x0202254C mov r0, #0x0
add r1, r4, r1
mov r2, #0x8
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02022AD8
str r0, [r4, #0x10]
@@ -60686,7 +60686,7 @@ _0202267A: mvn r0, r0
add r1, r6, #0x0
lsl r2, r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r7, #0x1
add r5, r4, #0x0
@@ -61984,18 +61984,18 @@ _02023006: add r0, r0, #0x4
cmp r3, #0x2
blt _02023006
- blx CARD_TryWaitBackupAsync
+ bl CARD_TryWaitBackupAsync
cmp r0, #0x0
bne _02023034
- blx CARD_CancelBackupAsync
+ bl CARD_CancelBackupAsync
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
_02023034:
mov r0, #0x1
bl FUN_02016454
@@ -62042,7 +62042,7 @@ FUN_02023074: ; 0x02023074 add r0, sp, #0x0
mov r1, #0xff
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r1, r5, #0x0
bl FUN_020228A4
@@ -62243,7 +62243,7 @@ FUN_020231F4: ; 0x020231F4 add r1, r6, #0x0
lsl r2, r2, #0x10
ldr r4, _02023240 ; =0x020EE700
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02023244 ; =0x020EE6DC
mov r7, #0x0
ldr r0, [r0, #0x0]
@@ -62257,7 +62257,7 @@ _02023216: ldr r1, [sp, #0x4]
mov r0, #0x0
add r1, r6, r1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #0x4]
ldr r1, [r4, #0xc]
add r0, r6, r0
@@ -62290,7 +62290,7 @@ FUN_02023248: ; 0x02023248 add r3, #0xe
strh r2, [r4, #0xc]
add r2, r3, #0x0
- blx MATH_CalcCRC16CCITT
+ bl MATH_CalcCRC16CCITT
strh r0, [r4, #0xe]
pop {r3-r5, pc}
nop
@@ -62323,7 +62323,7 @@ _02023298: add r3, #0xe
add r0, #0x14
add r2, r3, #0x0
- blx MATH_CalcCRC16CCITT
+ bl MATH_CalcCRC16CCITT
ldrh r1, [r4, #0xe]
cmp r1, r0
bne _020232AC
@@ -62670,7 +62670,7 @@ _0202356C: .word 0x000204A0 thumb_func_start FUN_02023570
FUN_02023570: ; 0x02023570
push {r3-r5, lr}
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62680,16 +62680,16 @@ FUN_02023570: ; 0x02023570 _02023584:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
ldr r0, _020235C8 ; =0x00001302
- blx CARD_IdentifyBackup
+ bl CARD_IdentifyBackup
cmp r0, #0x0
beq _0202359A
ldr r5, _020235C8 ; =0x00001302
b _020235AA
_0202359A:
ldr r0, _020235CC ; =0x00001202
- blx CARD_IdentifyBackup
+ bl CARD_IdentifyBackup
cmp r0, #0x0
beq _020235A8
ldr r5, _020235CC ; =0x00001202
@@ -62699,10 +62699,10 @@ _020235A8: _020235AA:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
cmp r5, #0x0
beq _020235C2
mov r0, #0x1
@@ -62737,7 +62737,7 @@ FUN_020235EC: ; 0x020235EC add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62747,7 +62747,7 @@ FUN_020235EC: ; 0x020235EC _02023608:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
mov r3, #0x0
str r3, [sp, #0x0]
mov r1, #0x1
@@ -62759,15 +62759,15 @@ _02023608: add r1, r6, #0x0
add r2, r7, #0x0
str r3, [sp, #0x10]
- blx CARDi_RequestStreamCommand
- blx CARD_WaitBackupAsync
+ bl CARDi_RequestStreamCommand
+ bl CARD_WaitBackupAsync
add r5, r0, #0x0
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
cmp r5, #0x0
bne _02023652
ldr r0, _02023658 ; =0x021C59C8
@@ -62798,7 +62798,7 @@ FUN_02023668: ; 0x02023668 add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62808,7 +62808,7 @@ FUN_02023668: ; 0x02023668 _02023684:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -62820,7 +62820,7 @@ _02023684: mov r2, #0x4
add r3, r0, #0x0
str r0, [sp, #0x10]
- blx CARDi_RequestStreamCommand
+ bl CARDi_RequestStreamCommand
cmp r0, #0x0
bne _020236B2
add r0, r4, #0x0
@@ -62843,7 +62843,7 @@ _020236B2: add r0, r6, #0x0
add r1, r5, #0x0
add r2, r7, #0x0
- blx CARDi_RequestStreamCommand
+ bl CARDi_RequestStreamCommand
add r0, r4, #0x0
add sp, #0x18
pop {r3-r7, pc}
@@ -62862,11 +62862,11 @@ FUN_020236E4: ; 0x020236E4 bne _02023738
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
- blx CARD_GetResultCode
+ bl OS_ReleaseLockID
+ bl CARD_GetResultCode
cmp r0, #0x0
beq _02023714
cmp r0, #0x4
@@ -62907,10 +62907,10 @@ FUN_02023740: ; 0x02023740 lsl r0, r5, #0x10
lsr r0, r0, #0x10
add r4, r1, #0x0
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
ldr r0, _02023768 ; =0x021C59C8
ldr r0, [r0, #0x0]
bl FUN_02016A18
@@ -62933,7 +62933,7 @@ FUN_02023770: ; 0x02023770 mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x5c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r4, #0x10
add r0, r4, #0x0
bl FUN_02023840
@@ -62960,14 +62960,14 @@ FUN_020237A0: ; 0x020237A0 push {r4, lr}
sub sp, #0x50
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
str r0, [r4, #0x0]
add r0, r4, #0x0
add r0, #0x8
str r1, [r4, #0x4]
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
add r0, sp, #0x0
- blx OS_GetOwnerInfo
+ bl OS_GetOwnerInfo
add r0, sp, #0x0
ldrb r1, [r0, #0x2]
strb r1, [r4, #0xe]
@@ -62983,7 +62983,7 @@ FUN_020237CC: ; 0x020237CC sub sp, #0x8
add r4, r0, #0x0
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
mov r2, #0x0
add r3, sp, #0x0
_020237DC:
@@ -63009,7 +63009,7 @@ _020237EC: FUN_020237FC: ; 0x020237FC
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r3, [r4, #0x0]
ldr r2, [r4, #0x4]
eor r0, r3
@@ -63072,12 +63072,12 @@ FUN_02023840: ; 0x02023840 add r1, #0x14
bl FUN_0201265C
add r0, r4, #0x4
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r1, r4, #0x0
str r0, [r4, #0x20]
add r0, r4, #0x4
add r1, #0x14
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
str r0, [r4, #0x24]
str r1, [r4, #0x28]
mov r0, #0x0
@@ -63132,7 +63132,7 @@ FUN_020238A4: ; 0x020238A4 add r1, #0x14
bl FUN_0201265C
add r0, r4, #0x4
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
str r0, [r4, #0x20]
pop {r4, pc}
.balign 4
@@ -63149,7 +63149,7 @@ FUN_020238C8: ; 0x020238C8 mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02024F50
add r0, r4, #0x4
@@ -63224,7 +63224,7 @@ FUN_02023948: ; 0x02023948 mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x2
strb r0, [r4, #0x19]
pop {r4, pc}
@@ -63738,7 +63738,7 @@ FUN_02023C48: ; 0x02023C48 add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_020669A0
add r0, r4, #0x0
@@ -64792,7 +64792,7 @@ FUN_02024378: ; 0x02024378 mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _020243C0 ; =0xBEEFCAFE
mov r1, #0x0
str r0, [r4, #0x0]
@@ -64802,7 +64802,7 @@ FUN_02024378: ; 0x02024378 sub r0, #0x2d
add r0, r4, r0
mov r1, #0xff
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r1, #0xff
add r0, r1, #0x0
add r0, #0x9
@@ -66285,7 +66285,7 @@ FUN_02024E6C: ; 0x02024E6C ldr r2, _02024EA4 ; =0x0000074C
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_020250A4
mov r0, #0x7
@@ -66296,12 +66296,12 @@ FUN_02024E6C: ; 0x02024E6C ldr r0, _02024EAC ; =0x0000FFFF
add r1, r4, r1
mov r2, #0x8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r1, _02024EB0 ; =0x00000734
ldr r0, _02024EAC ; =0x0000FFFF
add r1, r4, r1
mov r2, #0xb
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
pop {r4, pc}
.balign 4
_02024EA4: .word 0x0000074C
@@ -66410,7 +66410,7 @@ FUN_02024F50: ; 0x02024F50 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldrh r1, [r4, #0x0]
mov r0, #0xf
bic r1, r0
@@ -66625,7 +66625,7 @@ FUN_020250A4: ; 0x020250A4 mov r1, #0x0
lsl r2, r2, #0x8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0x0
add r0, r1, #0x0
_020250B6:
@@ -67062,12 +67062,12 @@ FUN_02025374: ; 0x02025374 mov r1, #0x3c
str r0, [sp, #0x0]
add r0, r7, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0x0
ldr r0, [sp, #0x0]
mov r1, #0x3c
add r0, r7, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r5, #0x4]
cmp r4, #0x0
beq _020253DE
@@ -67085,7 +67085,7 @@ _020253BA: sub r0, r6, #0x1
add r0, r1, r0
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
sub r4, r4, r0
mov r0, #0x0
strb r0, [r5, #0xa]
@@ -67248,7 +67248,7 @@ _020254D6: add r0, r5, #0x0
add r1, r7, #0x0
mov r2, #0x88
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
strh r6, [r5, #0x0]
add r4, r4, #0x1
add r5, #0x88
@@ -67414,7 +67414,7 @@ _020255F8: ldr r0, [sp, #0x0]
ldr r1, [sp, #0x10]
lsl r2, r2, #0x6
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x10]
bl FUN_02016A18
add sp, #0x2c
@@ -67936,7 +67936,7 @@ FUN_02025964: ; 0x02025964 mov r1, #0x0
mov r2, #0x3c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -67972,7 +67972,7 @@ FUN_0202597C: ; 0x0202597C ldr r2, _020259DC ; =0x000009B4
add r0, r4, #0x0
add r1, r7, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r0, #0x94
mov r1, #0x9b
@@ -68380,7 +68380,7 @@ _02025C72: lsl r1, r1, #0x4
add r1, r2, r1
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_020239BC
ldr r1, [sp, #0x0]
@@ -68620,7 +68620,7 @@ FUN_02025E20: ; 0x02025E20 add r0, r5, r0
add r1, sp, #0xc
mov r2, #0xc8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x8]
add r1, sp, #0xc
add r0, r4, #0x0
@@ -68897,7 +68897,7 @@ FUN_02025FFC: ; 0x02025FFC add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69039,12 +69039,12 @@ FUN_020260EC: ; 0x020260EC add r1, sp, #0x34
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _02026168 ; =0x00000978
add r1, sp, #0xc
add r0, r7, r0
mov r2, #0x28
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r3, [sp, #0x0]
add r1, sp, #0x34
add r3, r1, r3
@@ -69182,7 +69182,7 @@ FUN_020261EC: ; 0x020261EC add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69304,7 +69304,7 @@ FUN_020262BC: ; 0x020262BC add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69460,7 +69460,7 @@ _020263D6: add r0, r4, r0
add r0, r2, r0
mov r2, #0x3
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
.balign 4
_020263F0: .word 0x0000010F
@@ -69737,7 +69737,7 @@ _020265C6: add r0, r4, r0
add r0, r1, r0
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
nop
_020265DC: .word 0x0000020F
@@ -69910,12 +69910,12 @@ FUN_020266E0: ; 0x020266E0 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2d
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r0, #0x2d
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x0
add r0, #0x8c
@@ -71169,7 +71169,7 @@ _02026F6A: add r0, r5, #0x0
mov r1, #0x0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r6, [r5, #0x0]
add r4, r4, #0x1
add r5, #0x74
@@ -71183,7 +71183,7 @@ _02026F86: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x98
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, _02026FC8 ; =0x00001234
ldr r0, _02026FCC ; =0x000004FC
add r6, r6, #0x1
@@ -71196,7 +71196,7 @@ _02026F86: mov r1, #0x0
add r0, r7, r0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r5, _02026FD4 ; =0x0000081C
mov r4, #0x0
mov r6, #0x12
@@ -71241,7 +71241,7 @@ FUN_02026FE8: ; 0x02026FE8 mov r1, #0x0
mov r2, #0x98
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027004 ; =0x00001234
str r0, [r4, #0x0]
add r0, r4, #0x0
@@ -71708,7 +71708,7 @@ _02027330: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027340 ; =0x00001234
str r0, [r4, #0x0]
pop {r4, pc}
@@ -71938,7 +71938,7 @@ _020274DA: add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x74
- blx memcpy
+ bl memcpy
pop {r3-r5, pc}
nop
_020274E8: .word 0x00001234
@@ -72316,7 +72316,7 @@ _02027760: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x98
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027770 ; =0x00001234
str r0, [r4, #0x0]
pop {r4, pc}
@@ -72540,7 +72540,7 @@ _020278FE: add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x98
- blx memcpy
+ bl memcpy
pop {r3-r5, pc}
nop
_0202790C: .word 0x00001234
@@ -73145,11 +73145,11 @@ FUN_02027D0C: ; 0x02027D0C bne _02027D6A
ldr r1, _02027D78 ; =0xEDB88320
add r0, sp, #0x4
- blx MATHi_CRC32InitTableRev
+ bl MATHi_CRC32InitTableRev
add r0, sp, #0x4
add r1, r4, #0x0
mov r2, #0x74
- blx MATH_CalcCRC32
+ bl MATH_CalcCRC32
add r6, r0, #0x0
mov r5, #0x0
_02027D3C:
@@ -73159,11 +73159,11 @@ _02027D3C: add r4, r0, #0x0
ldr r1, _02027D78 ; =0xEDB88320
add r0, sp, #0x4
- blx MATHi_CRC32InitTableRev
+ bl MATHi_CRC32InitTableRev
add r0, sp, #0x4
add r1, r4, #0x0
mov r2, #0x74
- blx MATH_CalcCRC32
+ bl MATH_CalcCRC32
cmp r0, r6
bne _02027D62
mov r0, #0x0
@@ -73398,7 +73398,7 @@ FUN_02027ED0: ; 0x02027ED0 _02027EDC:
bl FUN_0201B9EC
add r1, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
add r1, r5, r0
@@ -73548,7 +73548,7 @@ FUN_02027FDC: ; 0x02027FDC add r4, r0, #0x0
ldrb r0, [r4, #0x0]
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x5
@@ -73863,7 +73863,7 @@ FUN_020281E8: ; 0x020281E8 mov r0, #0x0
add r1, r7, #0x0
lsl r2, r2, #0x6
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
lsl r0, r0, #0x4
add r1, r0, #0x0
@@ -74192,7 +74192,7 @@ _0202843A: add r5, #0x40
mul r0, r4
add r0, r5, r0
- blx FUN_0209700C
+ bl FUN_0209700C
pop {r3-r5, pc}
thumb_func_start FUN_02028448
@@ -74255,7 +74255,7 @@ _020284A2: mov r2, #0x30
add r0, r0, r1
add r1, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0xc
add r1, r7, #0x0
mul r1, r0
@@ -74263,7 +74263,7 @@ _020284A2: mov r2, #0xc
add r0, r0, r1
add r1, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r5, r5, #0x1
add r6, #0x30
add r4, #0xc
@@ -74279,7 +74279,7 @@ _020284D2: add r1, r2, r1
mov r0, #0x0
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r2, [sp, #0x0]
mov r1, #0x5d
add r2, #0x40
@@ -74287,7 +74287,7 @@ _020284D2: add r1, r2, r1
mov r0, #0x0
mov r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x7a
lsl r2, r2, #0x4
add r1, r2, #0x0
@@ -74322,7 +74322,7 @@ FUN_02028518: ; 0x02028518 str r1, [sp, #0x0]
add r0, r4, r5
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x4]
add r6, r7, #0x0
mov r3, #0xc
@@ -74336,16 +74336,16 @@ FUN_02028518: ; 0x02028518 mul r2, r3
add r1, r6, r2
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
add r1, r4, r5
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [sp, #0x8]
mov r0, #0x0
add r1, r6, r1
mov r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
ldr r1, _02028588 ; =0x0000FFFF
add r2, r7, r5
@@ -74531,7 +74531,7 @@ _020286BC: mov r0, #0x0
add r1, r6, r4
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
ldr r1, _020286E8 ; =0x0000FFFF
add r2, r5, r4
@@ -74592,7 +74592,7 @@ FUN_02028724: ; 0x02028724 mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _0202874C ; =0x0000FFFF
mov r1, #0x0
add r2, r4, #0x0
@@ -75445,12 +75445,12 @@ _02028CC0: add r0, #0x1c
add r1, #0x46
mov r2, #0x2a
- blx memcpy
+ bl memcpy
add r4, #0x46
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x2a
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -76175,7 +76175,7 @@ FUN_0202918C: ; 0x0202918C ldr r0, [sp, #0x0]
bl FUN_02029EC0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _020291DA
@@ -76244,7 +76244,7 @@ FUN_0202920C: ; 0x0202920C ldr r0, [sp, #0x0]
bl FUN_02029EC0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x1
@@ -76317,7 +76317,7 @@ FUN_020292BC: ; 0x020292BC mov r1, #0x0
mov r2, #0x3a
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -76866,7 +76866,7 @@ _020296B4: add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x3a
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldrb r0, [r6, #0x1c]
cmp r0, #0x10
bhi _02029722
@@ -77396,7 +77396,7 @@ FUN_02029A8C: ; 0x02029A8C add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_02029ACC
add r5, r0, #0x0
@@ -77682,7 +77682,7 @@ FUN_02029C60: ; 0x02029C60 add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r4, pc}
thumb_func_start FUN_02029C74
@@ -78013,21 +78013,21 @@ _02029E6C: bls _02029EAE
add r0, r7, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r4, r4, r0
add r0, r7, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r7, r1, #0x0
cmp r4, #0x3b
bls _02029EAE
add r0, r4, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r6, r6, r0
add r0, r4, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
ldr r0, _02029EB8 ; =0x000003E7
add r4, r1, #0x0
cmp r6, r0
@@ -78069,7 +78069,7 @@ FUN_02029ECC: ; 0x02029ECC mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r0, #0x0
str r0, [r4, #0x0]
pop {r4, pc}
@@ -78527,7 +78527,7 @@ FUN_0202A1F0: ; 0x0202A1F0 mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x1
strb r0, [r4, #0x3]
pop {r4, pc}
@@ -78607,14 +78607,14 @@ _0202A280: add r1, r2, #0x0
add r0, #0x8
mov r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A28E:
add r1, r2, #0x0
add r0, #0x2c
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A29C:
@@ -78626,7 +78626,7 @@ _0202A2A4: add r1, r2, #0x0
add r0, #0xc
mov r2, #0x1c
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A2B2:
@@ -78697,14 +78697,14 @@ _0202A318: add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A326:
add r3, #0x2c
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A334:
ldrb r4, [r3, #0x0]
@@ -78721,7 +78721,7 @@ _0202A346: add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x1c
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A354:
ldr r0, [r2, #0x0]
@@ -78917,14 +78917,14 @@ FUN_0202A474: ; 0x0202A474 add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
_0202A48A:
add r3, #0x18
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
thumb_func_start FUN_0202A498
@@ -78935,13 +78935,13 @@ FUN_0202A498: ; 0x0202A498 add r1, r2, #0x0
add r0, #0xc0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
_0202A4AA:
add r1, r2, #0x0
add r0, #0x18
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
.balign 4
@@ -78990,7 +78990,7 @@ _0202A502: add r0, #0x1e
sub r0, r0, r1
mov r1, #0x1e
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_0202A510:
@@ -79014,7 +79014,7 @@ FUN_0202A524: ; 0x0202A524 ldrh r0, [r0, #0x16]
mov r1, #0xfa
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3, pc}
@@ -79211,11 +79211,11 @@ FUN_0202A670: ; 0x0202A670 add r0, r4, #0x4
mov r1, #0x0
mov r2, #0xfa
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r4, pc}
.balign 4
@@ -79347,7 +79347,7 @@ FUN_0202A754: ; 0x0202A754 ldr r2, _0202A77C ; =0x0000063C
add r1, r5, r1
add r6, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202A780 ; =0x00000101
strb r4, [r5, r0]
sub r0, r0, #0x1
@@ -79420,30 +79420,30 @@ _0202A7EE: add r0, #0xa8
add r1, #0x8
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202A7FC:
add r0, r5, r4
add r1, r6, #0x0
add r0, #0xca
add r1, #0x18
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r1, r6, #0x0
add r0, #0xd2
add r1, #0x20
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r6, #0x28
add r0, #0xda
add r1, r6, #0x0
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r1, r7, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r7, pc}
nop
_0202A834: .word 0x00002710
@@ -79460,7 +79460,7 @@ FUN_0202A838: ; 0x0202A838 add r1, r5, r1
lsl r2, r2, #0x2
add r6, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202A860 ; =0x00000103
strb r4, [r5, r0]
sub r0, r0, #0x1
@@ -79499,7 +79499,7 @@ FUN_0202A878: ; 0x0202A878 add r0, r5, r0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -79601,7 +79601,7 @@ FUN_0202A92C: ; 0x0202A92C add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
bl FUN_0201BA60
str r0, [r4, #0x0]
bl FUN_0201BA60
@@ -80197,7 +80197,7 @@ _0202ACB4: ldr r0, [sp, #0x0]
add r1, r1, r6
sub r2, #0x28
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
lsl r0, r4, #0x2
add r1, r5, r0
mov r0, #0x1
@@ -80267,7 +80267,7 @@ _0202AD3C: mul r1, r2
add r0, r6, #0x0
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
lsl r0, r4, #0x2
add r1, r5, r0
mov r0, #0x12
@@ -80763,7 +80763,7 @@ _0202B07E: ldr r1, [sp, #0x14]
mov r0, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x10]
mov r7, #0x0
cmp r0, #0x0
@@ -81145,18 +81145,18 @@ FUN_0202B390: ; 0x0202B390 mov r0, #0x0
add r1, #0xc
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r4, #0x0
mov r0, #0x0
add r1, #0xcc
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r1, #0x63
lsl r1, r1, #0x2
mov r0, #0x0
add r1, r4, r1
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_0202B3F8
pop {r4, pc}
@@ -81175,7 +81175,7 @@ FUN_0202B3C4: ; 0x0202B3C4 _0202B3D4:
add r0, r2, #0x0
mov r1, #0xf
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xf
sub r1, r0, r1
str r1, [r4, #0x4]
@@ -81307,7 +81307,7 @@ FUN_0202B470: ; 0x0202B470 add r0, r6, #0x0
add r1, r5, #0x0
mov r2, #0x28
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
add sp, #0x10
pop {r4-r6, pc}
@@ -81686,7 +81686,7 @@ FUN_0202B710: ; 0x0202B710 add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [sp, #0x0]
add r0, sp, #0x8
@@ -81939,7 +81939,7 @@ FUN_0202B8B8: ; 0x0202B8B8 mov r1, #0x0
lsl r2, r2, #0x4
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r7, #0x0
_0202B8C8:
mov r4, #0x0
@@ -82044,7 +82044,7 @@ _0202B968: mov r1, #0x1d
bl FUN_0202A150
add r1, r7, #0x0
- blx _u32_div_f
+ bl _u32_div_f
add r7, r0, #0x0
_0202B984:
str r7, [r5, #0x0]
@@ -82074,7 +82074,7 @@ _0202B9A0: ldr r2, [r0, #0x28]
mov r0, #0x64
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0x0
_0202B9C4:
str r1, [r5, #0x0]
@@ -82115,7 +82115,7 @@ FUN_0202B9EC: ; 0x0202B9EC mov r1, #0x0
lsl r2, r2, #0x2
str r0, [sp, #0x4]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl FUN_0202881C
mov r1, #0x1
@@ -82232,7 +82232,7 @@ FUN_0202BAD4: ; 0x0202BAD4 mov r1, #0x0
mov r2, #0xe0
add r4, r3, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, sp, #0x10
ldrb r0, [r0, #0x10]
cmp r0, #0x0
@@ -82244,7 +82244,7 @@ FUN_0202BAD4: ; 0x0202BAD4 add r0, r5, r0
add r1, #0x50
str r0, [sp, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x10
ldrb r3, [r1, #0x18]
mov r0, #0x0
@@ -82305,7 +82305,7 @@ _0202BB64: add r1, r6, #0x0
add r1, #0x50
str r0, [sp, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, sp, #0x10
ldrb r2, [r0, #0x18]
mov r3, #0x0
@@ -82588,7 +82588,7 @@ FUN_0202BD6C: ; 0x0202BD6C mov r1, #0x0
mov r2, #0x4c
add r7, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
bl FUN_0202881C
mov r1, #0x1
@@ -82646,7 +82646,7 @@ FUN_0202BDF0: ; 0x0202BDF0 mov r1, #0x0
mov r2, #0x4c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x0]
mov r1, #0x90
mul r1, r0
@@ -82715,7 +82715,7 @@ _0202BE7E: add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x4c
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r6, #0x0
bl FUN_02016A18
pop {r4-r6, pc}
@@ -82734,7 +82734,7 @@ FUN_0202BEA0: ; 0x0202BEA0 ldr r2, _0202BED8 ; =0x00000688
mov r0, #0x0
add r1, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r6, #0xab
add r7, r4, #0x0
@@ -82764,7 +82764,7 @@ FUN_0202BEDC: ; 0x0202BEDC ldr r2, _0202BF14 ; =0x00000588
mov r0, #0x0
add r1, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r6, #0xab
add r7, r4, #0x0
@@ -82873,14 +82873,14 @@ FUN_0202BF90: ; 0x0202BF90 str r0, [r3, r2]
add r0, r2, #0x4
str r1, [r3, r0]
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r2, _0202BFD4 ; =0x00000678
str r0, [r5, r2]
add r0, r2, #0x4
add r2, #0x8
str r1, [r5, r0]
add r0, r5, r2
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
pop {r4-r6, pc}
nop
_0202BFCC: .word 0x00000588
@@ -82971,7 +82971,7 @@ FUN_0202C060: ; 0x0202C060 sub sp, #0x8
add r4, r0, #0x0
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
mov r0, #0x1a
mov r3, #0x0
add r5, sp, #0x0
@@ -82999,7 +82999,7 @@ _0202C084: FUN_0202C094: ; 0x0202C094
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r2, _0202C0B4 ; =0x00000678
ldr r3, [r4, r2]
add r2, r2, #0x4
@@ -83178,7 +83178,7 @@ FUN_0202C1C8: ; 0x0202C1C8 ldr r1, _0202C1F0 ; =0x021C59D8
ldr r0, _0202C1F4 ; =FUN_0202C1F8
ldr r1, [r1, #0x4]
- blx WM_SetParentParameter
+ bl WM_SetParentParameter
cmp r0, #0x2
beq _0202C1EC
bl FUN_0202C1AC
@@ -83225,22 +83225,22 @@ FUN_0202C21C: ; 0x0202C21C mov r0, #0x1
pop {r4, pc}
_0202C230:
- blx WMi_GetStatusAddress
+ bl WMi_GetStatusAddress
add r4, r0, #0x0
mov r0, #0x66
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x4
- blx DC_InvalidateRange
+ bl DC_InvalidateRange
mov r0, #0x66
mov r1, #0x0
lsl r0, r0, #0x2
str r1, [r4, r0]
add r0, r4, r0
mov r1, #0x4
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202C280 ; =FUN_0202C288
- blx WM_StartParent
+ bl WM_StartParent
cmp r0, #0x2
beq _0202C264
bl FUN_0202C1AC
@@ -83334,13 +83334,13 @@ _0202C2DA: ldr r0, _0202C38C ; =0x02105D54
add r1, #0x15
mov r2, #0x3
- blx memcmp
+ bl memcmp
cmp r0, #0x0
beq _0202C330
_0202C318:
ldrh r1, [r5, #0x10]
mov r0, #0x0
- blx WM_Disconnect
+ bl WM_Disconnect
cmp r0, #0x2
beq _0202C378
bl FUN_0202C1AC
@@ -83429,7 +83429,7 @@ _0202C3AC: ldr r0, _0202C400 ; =FUN_0202C404
lsr r2, r2, #0x10
add r3, r4, r3
- blx WM_StartMP
+ bl WM_StartMP
cmp r0, #0x2
beq _0202C3E8
bl FUN_0202C1AC
@@ -83502,7 +83502,7 @@ FUN_0202C460: ; 0x0202C460 mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202C480 ; =FUN_0202C484
- blx WM_EndMP
+ bl WM_EndMP
cmp r0, #0x2
beq _0202C47A
bl FUN_0202C1AC
@@ -83535,7 +83535,7 @@ _0202C4A2: FUN_0202C4A4: ; 0x0202C4A4
push {r3, lr}
ldr r0, _0202C4BC ; =FUN_0202C4C0
- blx WM_EndParent
+ bl WM_EndParent
cmp r0, #0x2
beq _0202C4B8
bl FUN_0202C1AC
@@ -83691,7 +83691,7 @@ _0202C5D4: .word 0x021C59D8 thumb_func_start FUN_0202C5D8
FUN_0202C5D8: ; 0x0202C5D8
push {r3-r7, lr}
- blx WM_GetAllowedChannel
+ bl WM_GetAllowedChannel
add r5, r0, #0x0
mov r0, #0x2
lsl r0, r0, #0xe
@@ -83751,7 +83751,7 @@ _0202C64C: sub r0, #0x28
strh r2, [r3, r0]
_0202C650:
- blx WM_GetDispersionScanPeriod
+ bl WM_GetDispersionScanPeriod
ldr r2, _0202C684 ; =0x021C59D8
ldr r1, _0202C690 ; =0x000012E6
ldr r3, [r2, #0x4]
@@ -83766,7 +83766,7 @@ _0202C650: sub r1, r1, #0x6
ldr r0, _0202C694 ; =FUN_0202C698
add r1, r2, r1
- blx WM_StartScan
+ bl WM_StartScan
cmp r0, #0x2
beq _0202C680
bl FUN_0202C1AC
@@ -83820,7 +83820,7 @@ _0202C6D0: sub r0, #0xf0
add r0, r2, r0
mov r1, #0xc0
- blx DC_InvalidateRange
+ bl DC_InvalidateRange
ldr r0, _0202C760 ; =0x021C59D8
ldr r1, [r0, #0x4]
ldr r0, _0202C768 ; =0x00001320
@@ -83910,7 +83910,7 @@ _0202C790: .word 0x00001310 FUN_0202C794: ; 0x0202C794
push {r3, lr}
ldr r0, _0202C7AC ; =FUN_0202C7B0
- blx WM_EndScan
+ bl WM_EndScan
cmp r0, #0x2
beq _0202C7A8
bl FUN_0202C1AC
@@ -83971,7 +83971,7 @@ _0202C800: ldr r0, _0202C84C ; =0x02105D54
add r1, #0x1
mov r2, #0x3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_02033534
add r1, sp, #0x4
strb r0, [r1, #0x0]
@@ -83984,7 +83984,7 @@ _0202C800: mov r3, #0x1
add r1, r2, r1
add r2, sp, #0x4
- blx WM_StartConnectEx
+ bl WM_StartConnectEx
cmp r0, #0x2
beq _0202C83E
bl FUN_0202C1AC
@@ -84109,7 +84109,7 @@ FUN_0202C908: ; 0x0202C908 ldr r0, _0202C954 ; =FUN_0202C958
lsr r2, r2, #0x10
add r3, r4, r3
- blx WM_StartMP
+ bl WM_StartMP
cmp r0, #0x2
beq _0202C942
bl FUN_0202C1AC
@@ -84185,7 +84185,7 @@ FUN_0202C9BC: ; 0x0202C9BC mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202C9DC ; =FUN_0202C9E0
- blx WM_EndMP
+ bl WM_EndMP
cmp r0, #0x2
beq _0202C9D6
bl FUN_0202C1AC
@@ -84223,7 +84223,7 @@ FUN_0202CA04: ; 0x0202CA04 bl FUN_0202C198
ldr r0, _0202CA28 ; =FUN_0202CA2C
mov r1, #0x0
- blx WM_Disconnect
+ bl WM_Disconnect
cmp r0, #0x2
beq _0202CA24
bl FUN_0202C1AC
@@ -84256,7 +84256,7 @@ FUN_0202CA44: ; 0x0202CA44 mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202CA64 ; =FUN_0202CA68
- blx WM_Reset
+ bl WM_Reset
cmp r0, #0x2
beq _0202CA5E
bl FUN_0202C1AC
@@ -84300,7 +84300,7 @@ FUN_0202CA88: ; 0x0202CA88 add r0, r1, r0
ldr r1, [r1, r2]
add r7, r3, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202CAD8 ; =0x0000FFFF
add r1, r7, #0x0
str r0, [sp, #0x0]
@@ -84312,7 +84312,7 @@ FUN_0202CA88: ; 0x0202CA88 ldr r0, _0202CADC ; =FUN_0202CAE0
add r2, r5, #0x0
add r3, r6, #0x0
- blx WM_SetMPDataToPortEx
+ bl WM_SetMPDataToPortEx
cmp r0, #0x2
bne _0202CACA
add sp, #0xc
@@ -84405,7 +84405,7 @@ FUN_0202CB50: ; 0x0202CB50 _0202CB60:
mov r0, #0x0
add r1, r0, #0x0
- blx FUN_02090CC8
+ bl FUN_02090CC8
mov r0, #0x0
bl FUN_0202C198
pop {r3, pc}
@@ -84497,7 +84497,7 @@ FUN_0202CBFC: ; 0x0202CBFC push {r3-r5, lr}
sub sp, #0x8
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
ldr r0, _0202CC84 ; =0x027FFC3C
ldr r3, [r0, #0x0]
add r0, sp, #0x0
@@ -84566,7 +84566,7 @@ _0202CC94: .word 0x00003039 FUN_0202CC98: ; 0x0202CC98
push {r4, lr}
add r4, r0, #0x0
- blx WM_GetAllowedChannel
+ bl WM_GetAllowedChannel
mov r1, #0x2
lsl r1, r1, #0xe
cmp r0, r1
@@ -84693,7 +84693,7 @@ FUN_0202CD90: ; 0x0202CD90 str r1, [sp, #0x0]
mov r1, #0x3
mov r2, #0x11
- blx WM_MeasureChannel
+ bl WM_MeasureChannel
pop {r3, pc}
.balign 4
@@ -84900,7 +84900,7 @@ FUN_0202CF0C: ; 0x0202CF0C ldr r0, [r0, #0x4]
mov r2, #0x2
add r0, #0x40
- blx WM_Initialize
+ bl WM_Initialize
cmp r0, #0x2
beq _0202CF34
bl FUN_0202C1AC
@@ -84929,7 +84929,7 @@ FUN_0202CF40: ; 0x0202CF40 pop {r3, pc}
_0202CF5A:
ldr r0, _0202CF80 ; =FUN_0202CEF4
- blx WM_SetIndCallback
+ bl WM_SetIndCallback
cmp r0, #0x0
beq _0202CF76
bl FUN_0202C1AC
@@ -85073,14 +85073,14 @@ _0202D066: ldr r1, _0202D09C ; =0x00001220
add r1, r2, r1
mov r2, #0xc0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202D094 ; =0x021C59D8
ldr r1, [r0, #0x4]
ldr r0, _0202D09C ; =0x00001220
add r0, r1, r0
mov r1, #0xc0
- blx DC_FlushRange
- blx DC_WaitWriteBufferEmpty
+ bl DC_FlushRange
+ bl DC_WaitWriteBufferEmpty
bl FUN_0202C7E8
pop {r4-r6, pc}
_0202D08E:
@@ -85102,7 +85102,7 @@ FUN_0202D0A0: ; 0x0202D0A0 ldr r1, _0202D0CC ; =FUN_0202CB08
lsr r0, r0, #0x10
mov r2, #0x0
- blx WM_SetPortCallback
+ bl WM_SetPortCallback
cmp r0, #0x0
beq _0202D0C2
mov r0, #0x9
@@ -85210,7 +85210,7 @@ FUN_0202D178: ; 0x0202D178 mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202D198 ; =FUN_0202CB50
- blx WM_End
+ bl WM_End
cmp r0, #0x2
beq _0202D194
mov r0, #0x9
@@ -85344,7 +85344,7 @@ FUN_0202D240: ; 0x0202D240 add r1, r6, #0x0
lsr r2, r2, #0x10
add r3, r4, #0x0
- blx WM_SetGameInfo
+ bl WM_SetGameInfo
_0202D26E:
add sp, #0x8
pop {r4-r6, pc}
@@ -85383,7 +85383,7 @@ FUN_0202D298: ; 0x0202D298 cmp r0, #0x4
bne _0202D2BE
ldr r0, _0202D2CC ; =FUN_0202D27C
- blx WM_SetEntry
+ bl WM_SetEntry
cmp r0, #0x2
bne _0202D2BE
mov r0, #0x1
@@ -85670,7 +85670,7 @@ FUN_0202D4A8: ; 0x0202D4A8 add r0, r1, #0x0
mov r1, #0xa
ldrsh r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #0x0
pop {r3, pc}
.balign 4
@@ -85922,7 +85922,7 @@ _0202D660: ldr r0, [r5, #0x0]
ldr r1, [r4, #0x0]
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202D66A:
ldrh r0, [r5, #0xc]
ldr r1, [r4, #0x0]
@@ -86096,7 +86096,7 @@ _0202D7A4: add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x10
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4, #0x4]
ldr r7, [sp, #0x0]
cmp r0, #0x0
@@ -86130,7 +86130,7 @@ FUN_0202D7D8: ; 0x0202D7D8 mov r1, #0x0
mov r2, #0x20
add r5, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
lsl r7, r4, #0x4
mov r0, #0xf
add r1, r7, #0x0
@@ -86138,7 +86138,7 @@ FUN_0202D7D8: ; 0x0202D7D8 mov r1, #0x0
add r2, r7, #0x0
str r0, [r5, #0x18]
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r4, [r5, #0x1c]
str r6, [r5, #0x14]
pop {r3-r7, pc}
@@ -86152,7 +86152,7 @@ FUN_0202D804: ; 0x0202D804 ldr r0, [r4, #0x18]
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [r4, #0x0]
str r0, [r4, #0x4]
@@ -86623,7 +86623,7 @@ FUN_0202DB14: ; 0x0202DB14 str r0, [r1, #0x0]
mov r1, #0x0
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r6, #0x0
ldr r7, _0202DBA0 ; =0x021C59E4
add r4, r6, #0x0
@@ -86746,7 +86746,7 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r0, [r0, #0x0]
add r0, #0x64
add r0, r0, r5
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
add r0, r7, #0x0
mov r1, #0x1
mov r2, #0x0
@@ -86756,7 +86756,7 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r1, [r1, #0x0]
add r1, #0x54
add r1, r1, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_02029B38
ldr r1, _0202DCD8 ; =0x021C59E4
@@ -86791,14 +86791,14 @@ FUN_0202DBE0: ; 0x0202DBE0 ldr r1, [r1, #0x0]
add r1, #0x48
add r1, r1, r5
- blx FUN_02096CCC
+ bl FUN_02096CCC
ldr r0, _0202DCD8 ; =0x021C59E4
mov r1, #0x0
ldr r0, [r0, #0x0]
mov r2, #0x20
add r0, #0x8
add r0, r0, r5
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202DCD8 ; =0x021C59E4
ldr r1, [r0, #0x0]
ldr r0, [r1, #0x0]
@@ -86874,7 +86874,7 @@ FUN_0202DD08: ; 0x0202DD08 add r3, r1, #0x0
mul r3, r2
add r1, r5, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r4, #0x62
ldr r2, _0202DD78 ; =0x021C59E4
ldrb r3, [r4, #0x0]
@@ -86924,7 +86924,7 @@ FUN_0202DD80: ; 0x0202DD80 add r1, #0x8
add r1, r1, r4
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202DDE0 ; =0x021C59E4
add r1, r5, #0x0
ldr r0, [r0, #0x0]
@@ -87002,7 +87002,7 @@ _0202DE0A: ldr r0, [r1, r0]
add r6, #0x28
add r1, r6, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _0202DE70 ; =0x021C59E4
mov r0, #0x4
ldr r1, [r1, #0x0]
@@ -87639,7 +87639,7 @@ FUN_0202E29C: ; 0x0202E29C str r0, [r1, #0x8]
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
bl FUN_0202CEEC
add r1, r0, #0x0
mov r0, #0xf
@@ -87655,7 +87655,7 @@ FUN_0202E29C: ; 0x0202E29C ldr r0, _0202E338 ; =0x00000CA4
ldr r0, [r1, r0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
bl FUN_02023AC4
add r1, r0, #0x0
mov r0, #0xf
@@ -87671,7 +87671,7 @@ FUN_0202E29C: ; 0x0202E29C ldr r0, _0202E33C ; =0x00000CBC
ldr r0, [r1, r0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0202E334 ; =0x021C59E8
mov r1, #0x33
ldr r3, _0202E340 ; =0x00000333
@@ -87807,7 +87807,7 @@ _0202E3D2: mul r1, r2
add r0, r7, #0x0
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r7, pc}
_0202E412:
add r6, r6, #0x1
@@ -87844,7 +87844,7 @@ _0202E434: mul r3, r2
add r0, r7, #0x0
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202E464 ; =0x021C59E8
mov r2, #0x1
ldr r1, [r0, #0x8]
@@ -87862,7 +87862,7 @@ FUN_0202E470: ; 0x0202E470 push {r3, lr}
cmp r1, #0x0
beq _0202E47A
- blx OS_Terminate
+ bl OS_Terminate
_0202E47A:
ldr r0, _0202E484 ; =0x021C59E8
mov r1, #0x2
@@ -87894,10 +87894,10 @@ FUN_0202E49C: ; 0x0202E49C ldr r1, _0202E4C4 ; =FUN_0202E470
mov r0, #0x8
mov r2, #0x0
- blx FUN_02090DB8
+ bl FUN_02090DB8
cmp r0, #0x1
beq _0202E4BC
- blx OS_Terminate
+ bl OS_Terminate
_0202E4BC:
pop {r3, pc}
nop
@@ -87992,7 +87992,7 @@ _0202E544: ldr r0, [r0, #0x8]
lsl r2, r2, #0xa
add r0, #0x54
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
nop
_0202E564: .word 0x021C59E8
@@ -88709,7 +88709,7 @@ _0202EACE: add r2, r0, #0x0
add r0, r4, #0x0
add r1, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_02023AC4
add r2, r0, #0x0
ldr r0, _0202EB6C ; =0x021C59E8
@@ -88718,7 +88718,7 @@ _0202EACE: ldr r0, [r1, r0]
add r1, r5, #0x0
add r1, #0x30
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_020239BC
str r0, [r5, #0x0]
@@ -88733,7 +88733,7 @@ _0202EACE: add r0, r1, r0
add r1, r5, #0x0
add r1, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_0202D358
add r5, #0x54
strb r0, [r5, #0x0]
@@ -88755,14 +88755,14 @@ _0202EB24: ldr r0, [r0, #0x8]
add r1, r5, #0x0
mov r2, #0x54
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202EB4E:
ldr r0, _0202EB6C ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EB70 ; =0x00000CC4
add r0, r1, r0
mov r1, #0x5c
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202EB6C ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EB70 ; =0x00000CC4
@@ -88794,7 +88794,7 @@ FUN_0202EB7C: ; 0x0202EB7C ldr r0, _0202EBCC ; =0x00000CC4
add r0, r1, r0
mov r1, #0x5c
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202EBC8 ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EBCC ; =0x00000CC4
@@ -89240,7 +89240,7 @@ _0202EEE4: .word 0x0000FFFF FUN_0202EEE8: ; 0x0202EEE8
push {r3-r5, lr}
add r5, r0, #0x0
- blx WM_GetDispersionBeaconPeriod
+ bl WM_GetDispersionBeaconPeriod
add r4, r0, #0x0
cmp r5, #0x1a
blo _0202EEFA
@@ -89369,7 +89369,7 @@ _0202EFC2: add r1, r4, #0x0
mul r1, r2
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202EFD8:
pop {r3-r5, pc}
nop
@@ -89484,7 +89484,7 @@ FUN_0202F094: ; 0x0202F094 ldr r1, _0202F0B4 ; =0x00000CBC
add r0, r4, #0x0
ldr r1, [r3, r1]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
nop
_0202F0B0: .word 0x021C59E8
@@ -89545,7 +89545,7 @@ FUN_0202F10C: ; 0x0202F10C ldr r1, _0202F120 ; =0x021C59E8
mov r2, #0x54
ldr r1, [r1, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_0202F0B8
pop {r3, pc}
nop
@@ -89606,7 +89606,7 @@ _0202F178: ldr r2, _0202F2C0 ; =0x0000068C
str r0, [r1, #0x4]
add r1, r4, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0202F2BC ; =0x021C59F4
ldr r1, _0202F2C4 ; =0x00000658
ldr r0, [r2, #0x4]
@@ -89795,7 +89795,7 @@ FUN_0202F2F0: ; 0x0202F2F0 ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r4, #0x0
cmp r6, #0x0
ble _0202F360
@@ -89828,7 +89828,7 @@ _0202F360: ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r5, #0x0
cmp r6, #0x0
ble _0202F3A2
@@ -89860,7 +89860,7 @@ _0202F3A2: add r0, r1, r0
mov r1, #0x0
lsl r2, r2, #0x6
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r1, #0xb5
ldr r2, [r0, #0x4]
@@ -89894,7 +89894,7 @@ _0202F3DA: mov r1, #0x0
add r0, #0x4c
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r2, #0x42
ldr r1, [r0, #0x4]
@@ -89930,7 +89930,7 @@ _0202F420: ldr r0, [r3, r0]
mov r1, #0x0
lsl r2, r2, #0x1
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r1, #0x47
ldr r3, [r0, #0x4]
@@ -90109,7 +90109,7 @@ FUN_0202F5A4: ; 0x0202F5A4 ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r4, #0x0
cmp r6, #0x0
ble _0202F606
@@ -90142,7 +90142,7 @@ _0202F606: ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r5, #0x0
cmp r6, #0x0
ble _0202F648
@@ -90174,7 +90174,7 @@ _0202F648: add r0, r1, r0
mov r1, #0x0
lsl r2, r2, #0x6
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r1, #0xb5
ldr r2, [r0, #0x4]
@@ -90208,7 +90208,7 @@ _0202F680: mov r1, #0x0
add r0, #0x4c
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r2, #0x42
ldr r1, [r0, #0x4]
@@ -90244,7 +90244,7 @@ _0202F6C6: ldr r0, [r3, r0]
mov r1, #0x0
lsl r2, r2, #0x1
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r1, #0x47
ldr r3, [r0, #0x4]
@@ -92269,7 +92269,7 @@ _020306F2: ldr r1, [r6, #0xc]
ldr r2, [r5, r2]
ldr r3, [r6, #0x4]
- blx _ll_mul
+ bl _ll_mul
add r3, r0, #0x0
add r2, r1, #0x0
ldr r0, [r6, #0x10]
@@ -92316,7 +92316,7 @@ _02030746: ldr r1, [r6, #0xc]
ldr r2, [r6, #0x0]
ldr r3, [r6, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r3, [r6, #0x10]
ldr r2, [r6, #0x14]
add r0, r3, r0
@@ -93084,7 +93084,7 @@ _02030D22: ldr r0, [sp, #0x8]
add r1, r2, r1
ldr r2, [sp, #0xc]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02030D42:
ldr r1, [r5, #0x0]
ldr r0, [sp, #0xc]
@@ -94087,7 +94087,7 @@ FUN_02031480: ; 0x02031480 ldr r2, _020314CC ; =0x00000253
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0203149C:
ldr r1, _020314C8 ; =0x021C59FC
mov r3, #0x0
@@ -94363,7 +94363,7 @@ _02031672: add r1, r7, #0x0
add r0, r0, r5
mov r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #0x1
add r5, r5, #0x2
cmp r4, #0x8
@@ -94405,7 +94405,7 @@ FUN_020316AC: ; 0x020316AC add r3, #0x18
add r0, r1, #0x0
add r1, r3, r4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _020316DC ; =0x021C59FC
mov r0, #0x14
ldr r1, [r1, #0x0]
@@ -94459,7 +94459,7 @@ FUN_02031704: ; 0x02031704 add r4, #0x18
mul r3, r2
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r5, pc}
nop
_0203172C: .word 0x021C59FC
@@ -94486,7 +94486,7 @@ FUN_02031734: ; 0x02031734 mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020317BC ; =0x021C5A00
mov r2, #0x32
ldr r1, [r0, #0x0]
@@ -95249,7 +95249,7 @@ _02031D04: bl FUN_0202EDF8
cmp r0, #0x0
beq _02031D18
- blx WM_GetLinkLevel
+ bl WM_GetLinkLevel
mov r1, #0x3
sub r0, r1, r0
bl FUN_02033EEC
@@ -95320,7 +95320,7 @@ _02031D42: ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95331,7 +95331,7 @@ _02031D42: mov r1, #0x0
mov r2, #0x14
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r0, #0x0
add r5, #0x43
strb r0, [r5, #0x0]
@@ -95404,7 +95404,7 @@ _02031E32: ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95452,7 +95452,7 @@ FUN_02031E8C: ; 0x02031E8C ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -95680,7 +95680,7 @@ FUN_02032058: ; 0x02032058 ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95691,7 +95691,7 @@ FUN_02032058: ; 0x02032058 mov r1, #0x0
mov r2, #0x14
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r0, #0x0
add r5, #0x43
strb r0, [r5, #0x0]
@@ -96289,7 +96289,7 @@ FUN_02032510: ; 0x02032510 ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -96376,7 +96376,7 @@ FUN_020325D0: ; 0x020325D0 ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -98019,7 +98019,7 @@ FUN_02033288: ; 0x02033288 mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020332D8 ; =0x021C5A00
mov r2, #0x18
ldr r1, [r0, #0x0]
@@ -98085,7 +98085,7 @@ FUN_02033310: ; 0x02033310 mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02033360 ; =0x021C5A00
mov r2, #0x19
ldr r1, [r0, #0x0]
@@ -98265,7 +98265,7 @@ _02033482: mov r1, #0x0
ldr r0, [r0, #0x0]
add r2, r4, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020334D4 ; =0x021C5A00
mov r1, #0x0
ldr r2, [r0, #0x0]
@@ -98730,7 +98730,7 @@ FUN_020337E8: ; 0x020337E8 add r0, #0x1f
mov r1, #0x1f
bic r0, r1
- blx FUN_02096B14
+ bl FUN_02096B14
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_02016A18
@@ -98743,14 +98743,14 @@ FUN_0203380C: ; 0x0203380C push {r4, lr}
bl FUN_02028228
add r4, r0, #0x0
- blx FUN_02096FB0
+ bl FUN_02096FB0
cmp r0, #0x0
bne _0203382A
ldr r1, _0203382C ; =0x4144414A
add r0, r4, #0x0
- blx thunk_FUN_02097190
+ bl thunk_FUN_02097190
add r0, r4, #0x0
- blx thunk_FUN_02096e4c
+ bl thunk_FUN_02096e4c
_0203382A:
pop {r4, pc}
.balign 4
@@ -98763,10 +98763,10 @@ FUN_02033830: ; 0x02033830 bl FUN_02028228
add r4, r0, #0x0
add r1, sp, #0x0
- blx FUN_02096CCC
+ bl FUN_02096CCC
add r0, r4, #0x0
add r1, sp, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
add sp, #0xc
pop {r3-r4, pc}
@@ -98776,11 +98776,11 @@ FUN_0203384C: ; 0x0203384C bl FUN_020286EC
bl FUN_02028228
add r4, r0, #0x0
- blx FUN_02096F80
+ bl FUN_02096F80
cmp r0, #0x0
beq _0203386E
add r0, r4, #0x0
- blx FUN_02096F18
+ bl FUN_02096F18
cmp r0, #0x0
beq _0203386E
mov r0, #0x1
@@ -98810,7 +98810,7 @@ FUN_02033874: ; 0x02033874 mvn r1, r1
str r1, [r0, #0x0]
add r0, r5, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _020338AE
add sp, #0x8
@@ -98821,7 +98821,7 @@ _020338AE: _020338B0:
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_02096B78
+ bl FUN_02096B78
cmp r0, #0x0
beq _020338C6
ldr r0, [sp, #0x0]
@@ -98832,16 +98832,16 @@ _020338B0: _020338C6:
add r0, r6, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
cmp r0, #0x0
ble _020338F4
add r0, r6, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
str r0, [sp, #0x4]
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
ldr r1, [sp, #0x4]
cmp r1, r0
bne _020338F4
@@ -98856,7 +98856,7 @@ _020338F4: cmp r0, #0x0
bge _0203390A
add r0, r4, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _0203390A
ldr r0, [sp, #0x0]
@@ -98889,7 +98889,7 @@ FUN_02033918: ; 0x02033918 ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, r7, #0x0
- blx FUN_020973B4
+ bl FUN_020973B4
cmp r0, #0x0
bne _02033950
add sp, #0x18
@@ -98899,10 +98899,10 @@ _02033950: ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, sp, #0xc
- blx FUN_02096D2C
+ bl FUN_02096D2C
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_02096DA0
+ bl FUN_02096DA0
cmp r0, #0x0
bgt _0203396C
add sp, #0x18
@@ -98916,11 +98916,11 @@ _0203396C: _02033974:
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_02096DA0
+ bl FUN_02096DA0
str r0, [sp, #0x8]
add r0, r7, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
ldr r1, [sp, #0x8]
cmp r1, r0
bne _02033994
@@ -98933,7 +98933,7 @@ _02033994: cmp r0, #0x0
bge _020339A6
add r0, r5, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _020339A6
str r4, [r6, #0x0]
@@ -99014,7 +99014,7 @@ _02033A1C: add r0, r7, #0x0
add r1, r1, r3
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, #0x0
bl FUN_0202E1BC
b _02033A5C
@@ -99058,7 +99058,7 @@ FUN_02033A70: ; 0x02033A70 bl FUN_0202DFD8
ldr r1, [sp, #0x8]
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02033AA6:
ldr r0, [sp, #0x28]
cmp r0, #0x0
@@ -99234,7 +99234,7 @@ _02033C06: ldr r0, _02033CB4 ; =0x00300010
add r7, r1, #0x0
and r7, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
b _02033C2C
_02033C1E:
ldr r0, _02033CB8 ; =0x04001000
@@ -99242,7 +99242,7 @@ _02033C1E: ldr r0, _02033CB4 ; =0x00300010
add r7, r1, #0x0
and r7, r0
- blx GX_GetBankForSubOBJ
+ bl GX_GetBankForSubOBJ
_02033C2C:
cmp r7, #0x10
beq _02033C38
@@ -99413,24 +99413,24 @@ FUN_02033D3C: ; 0x02033D3C mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r5, #0x1
bne _02033D80
ldr r0, [sp, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
b _02033D8C
_02033D80:
ldr r0, [sp, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GXS_LoadOBJPltt
+ bl GXS_LoadOBJPltt
_02033D8C:
ldr r0, [sp, #0x4]
bl FUN_02016A18
@@ -99466,10 +99466,10 @@ _02033DC8: mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r5, #0x1
bne _02033DF0
mov r0, #0x1
@@ -99478,7 +99478,7 @@ _02033DC8: ldr r0, _02033E64 ; =0x00300010
add r4, r1, #0x0
and r4, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
b _02033E00
_02033DF0:
mov r0, #0x1
@@ -99487,7 +99487,7 @@ _02033DF0: ldr r0, _02033E64 ; =0x00300010
add r4, r1, #0x0
and r4, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
_02033E00:
cmp r4, #0x10
beq _02033E0C
@@ -99529,14 +99529,14 @@ _02033E34: mov r2, #0x2
ldr r0, [r0, #0x14]
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
b _02033E52
_02033E46:
ldr r0, [sp, #0x0]
mov r2, #0x2
ldr r0, [r0, #0x14]
lsl r2, r2, #0x8
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
_02033E52:
ldr r0, [sp, #0x4]
bl FUN_02016A18
@@ -99728,12 +99728,12 @@ _02033FA4: mov r1, #0x0
bl FUN_0200E3A0
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _02034154 ; =FUN_02033F50
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x0
add r1, r0, #0x0
bl FUN_02015F10
@@ -100068,7 +100068,7 @@ _020342E4: bne _02034308
mov r0, #0x1
add r1, r0, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _020342E4
_02034308:
add r0, sp, #0x14
@@ -100180,7 +100180,7 @@ _0203440A: add r0, r5, #0x0
add r1, r4, r1
add r2, r7, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x8]
add r5, r5, r7
cmp r0, #0x0
@@ -100191,7 +100191,7 @@ _0203440A: add r1, r4, #0x2
mul r2, r3
lsl r2, r2, #0x1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x1]
ldrb r0, [r4, #0x0]
mul r0, r1
@@ -100207,7 +100207,7 @@ _0203443A: mul r2, r3
lsr r0, r0, #0x10
lsl r2, r2, #0x1
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
_0203444E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
@@ -100218,7 +100218,7 @@ _0203444E: add r0, r5, #0x0
add r1, r4, r1
mul r2, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x1]
ldrb r0, [r4, #0x0]
mul r0, r1
@@ -100231,7 +100231,7 @@ _0203446C: mul r2, r3
add r1, r4, r1
lsl r2, r2, #0x1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_02016A18
add sp, #0xc
@@ -100425,7 +100425,7 @@ FUN_020345A8: ; 0x020345A8 ldr r2, _020345D8 ; =0x00000708
add r0, r0, r1
add r1, r5, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_02016A18
add r0, r5, #0x0
@@ -101482,7 +101482,7 @@ FUN_02034CB4: ; 0x02034CB4 mov r1, #0x0
lsl r2, r2, #0x2
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_020347D8
cmp r0, #0x0
@@ -101518,7 +101518,7 @@ FUN_02034CEC: ; 0x02034CEC mov r0, #0x0
add r1, r5, r1
lsl r2, r2, #0x8
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0xa
add r1, r4, #0x0
bl LoadFromNARC_7
@@ -101614,7 +101614,7 @@ FUN_02034D98: ; 0x02034D98 add r4, r0, #0x0
mov r1, #0x0
mov r2, #0xa0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0x6c
bl FUN_0204ADE0
@@ -102016,14 +102016,14 @@ _02035010: bne _0203502A
add r0, r6, #0x0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
bne _02035038
_0203502A:
mov r1, #0x19
add r0, r6, #0x0
lsl r1, r1, #0x4
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
bne _0203503C
_02035038:
@@ -103505,7 +103505,7 @@ FUN_02035C18: ; 0x02035C18 add r6, r2, #0x0
bl FUN_020201DC
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
add r2, r0, #0x0
lsl r1, r2, #0x1
add r1, r2, r1
@@ -103551,7 +103551,7 @@ FUN_02035C78: ; 0x02035C78 add r4, r0, #0x0
bl FUN_020201DC
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x1
bne _02035C9E
add r0, r4, #0x0
@@ -103792,7 +103792,7 @@ FUN_02035E50: ; 0x02035E50 ldr r1, [r4, r1]
mov r2, #0x40
add r6, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104326,7 +104326,7 @@ FUN_020362E4: ; 0x020362E4 add r2, r0, #0x0
ldr r0, [sp, #0x8]
ldr r1, [r4, r1]
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104390,7 +104390,7 @@ _0203638A: mov r1, #0x0
mov r2, #0x40
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0xc]
bl FUN_0206BB1C
str r0, [r5, #0x0]
@@ -104490,7 +104490,7 @@ _02036474: mov r1, #0x0
mov r2, #0x40
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x4]
str r0, [r5, #0x0]
ldr r0, [r6, #0xc]
@@ -104964,7 +104964,7 @@ FUN_0203684C: ; 0x0203684C ldr r1, [r4, r1]
mov r2, #0x30
add r7, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104982,7 +104982,7 @@ FUN_0203684C: ; 0x0203684C str r1, [sp, #0x0]
mov r1, #0x0
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0xc]
bl FUN_0206BB1C
str r0, [r5, #0x0]
@@ -105511,7 +105511,7 @@ FUN_02036CEC: ; 0x02036CEC mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -106335,7 +106335,7 @@ _02037360: _0203736C:
ldr r0, _0203738C ; =0x00000005
mov r1, #0x2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r1, #0x0
str r1, [r4, #0x64]
ldr r0, [r4, #0x0]
@@ -106446,7 +106446,7 @@ FUN_02037400: ; 0x02037400 mov r1, #0x0
mov r2, #0xb8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0xb
mov r1, #0x10
bl FUN_02016998
@@ -106576,7 +106576,7 @@ _02037546: cmp r0, #0x0
bne _0203756E
ldr r0, _02037590 ; =0x00000005
- bl FUN_02005F60
+ bl UnloadOverlayByID
b _0203756E
_02037562:
ldr r1, [r0, #0x4]
@@ -107138,7 +107138,7 @@ FUN_0203797C: ; 0x0203797C mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -107520,7 +107520,7 @@ FUN_02037C7C: ; 0x02037C7C mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl LoadPlayerDataAddress
str r0, [r4, #0x4]
@@ -107569,7 +107569,7 @@ FUN_02037CF0: ; 0x02037CF0 mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -107970,7 +107970,7 @@ FUN_0203800C: ; 0x0203800C mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
bl FUN_0206BB1C
add r1, r7, #0x0
@@ -109131,7 +109131,7 @@ _02038956: bl FUN_020127C0
mov r2, #0x3c
mov r3, #0x0
- blx _ll_sdiv
+ bl _ll_sdiv
add r3, r0, #0x0
ldr r1, [sp, #0x8]
ldr r2, [r5, #0x0]
@@ -109223,7 +109223,7 @@ FUN_02038A3C: ; 0x02038A3C ldr r0, _02038AAC ; =0x020F2BE8
add r1, sp, #0x8
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r4, #0x0
mov r7, #0xc
add r6, sp, #0x8
@@ -109236,7 +109236,7 @@ _02038A68: _02038A72:
bl FUN_0201B9EC
add r1, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r2, r0, #0x18
ldrb r1, [r6, r4]
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index b70ef94e..872e976a 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -7227,7 +7227,7 @@ _02049A14: str r0, [r5, #0x6c]
ldr r0, _02049AC8 ; =0x00000012
mov r1, #0x2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r5, #0x0
bl FUN_0204FC5C
ldr r0, [r4, #0x14]
@@ -7387,7 +7387,7 @@ _02049B76: mov r0, #0x0
str r0, [r5, #0x6c]
ldr r0, _02049BE4 ; =0x00000012
- bl FUN_02005F60
+ bl UnloadOverlayByID
ldr r0, [r4, #0x14]
mov r2, #0x1
str r0, [sp, #0x0]
@@ -132323,7 +132323,7 @@ FUN_02085C08: ; 0x02085C08 mov r0, #0x35
bl FUN_020168D0
ldr r0, _02085D68 ; =0x00000008
- bl FUN_02005F60
+ bl UnloadOverlayByID
mov r0, #0x1
pop {r3-r5, pc}
nop
@@ -137757,40 +137757,40 @@ FUN_02088854: ; 0x02088854 thumb_func_start FUN_02088858
FUN_02088858: ; 0x02088858
- ldr r3, _02088860 ; =FUN_02005FDC
+ ldr r3, _02088860 ; =HandleLoadOverlay
ldr r0, _02088864 ; =0x00000004
mov r1, #0x2
bx r3
.balign 4
-_02088860: .word FUN_02005FDC
+_02088860: .word HandleLoadOverlay
_02088864: .word 0x00000004
thumb_func_start FUN_02088868
FUN_02088868: ; 0x02088868
- ldr r3, _02088870 ; =FUN_02005F60
+ ldr r3, _02088870 ; =UnloadOverlayByID
ldr r0, _02088874 ; =0x00000004
bx r3
nop
-_02088870: .word FUN_02005F60
+_02088870: .word UnloadOverlayByID
_02088874: .word 0x00000004
thumb_func_start FUN_02088878
FUN_02088878: ; 0x02088878
- ldr r3, _02088880 ; =FUN_02005FDC
+ ldr r3, _02088880 ; =HandleLoadOverlay
ldr r0, _02088884 ; =0x0000000D
mov r1, #0x2
bx r3
.balign 4
-_02088880: .word FUN_02005FDC
+_02088880: .word HandleLoadOverlay
_02088884: .word 0x0000000D
thumb_func_start FUN_02088888
FUN_02088888: ; 0x02088888
- ldr r3, _02088890 ; =FUN_02005F60
+ ldr r3, _02088890 ; =UnloadOverlayByID
ldr r0, _02088894 ; =0x0000000D
bx r3
nop
-_02088890: .word FUN_02005F60
+_02088890: .word UnloadOverlayByID
_02088894: .word 0x0000000D
thumb_func_start FUN_02088898
@@ -137810,21 +137810,21 @@ FUN_02088898: ; 0x02088898 thumb_func_start FUN_020888BC
FUN_020888BC: ; 0x020888BC
- ldr r3, _020888C4 ; =FUN_02005FDC
+ ldr r3, _020888C4 ; =HandleLoadOverlay
ldr r0, _020888C8 ; =0x0000004F
mov r1, #0x2
bx r3
.balign 4
-_020888C4: .word FUN_02005FDC
+_020888C4: .word HandleLoadOverlay
_020888C8: .word 0x0000004F
thumb_func_start FUN_020888CC
FUN_020888CC: ; 0x020888CC
- ldr r3, _020888D4 ; =FUN_02005F60
+ ldr r3, _020888D4 ; =UnloadOverlayByID
ldr r0, _020888D8 ; =0x0000004F
bx r3
nop
-_020888D4: .word FUN_02005F60
+_020888D4: .word UnloadOverlayByID
_020888D8: .word 0x0000004F
thumb_func_start FUN_020888DC
diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s index e5d80405..3ae14dd4 100644 --- a/arm9/asm/unk_020910EC.s +++ b/arm9/asm/unk_020910EC.s @@ -4770,7 +4770,9 @@ _0209530C: strb r7, [r0, #-0x4] strb r6, [r0, #-0x3] ldmia sp!, {r4-r9,pc} -_02095324: ; 0x02095324 + + arm_func_start FUN_02095324 +FUN_02095324: ; 0x02095324 ldr r0, _0209532C ; =0x021C8C84 bx lr .balign 4 diff --git a/arm9/asm/unk_020AF030.s b/arm9/asm/unk_020AF030.s index ec33e3fa..3851b8c7 100644 --- a/arm9/asm/unk_020AF030.s +++ b/arm9/asm/unk_020AF030.s @@ -1960,7 +1960,9 @@ _020B0824: ; 0x020B0824 cmp r2, r1 strcc r1, [r4, #0x0] ldmia sp!, {r4,pc} -_020B0830: ; 0x020B0830 + + arm_func_start FUN_020B0830 +FUN_020B0830: ; 0x020B0830 ldrh r3, [r0, #0x6] ldrh r2, [r0, #0x8] mov r12, #0x0 diff --git a/arm9/files/FILE_10C400.s b/arm9/files/FILE_10C400.s index 5cf27f33..254620ef 100644 --- a/arm9/files/FILE_10C400.s +++ b/arm9/files/FILE_10C400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x10C400, 0x20 - .balign 512, 255 + diff --git a/arm9/files/FILE_10C600.s b/arm9/files/FILE_10C600.s index d2608c8c..cc95b047 100644 --- a/arm9/files/FILE_10C600.s +++ b/arm9/files/FILE_10C600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x10C600, 0x20 - .balign 512, 255 + diff --git a/arm9/files/FILE_10C800.s b/arm9/files/FILE_10C800.s index 8cb22116..74fe3237 100644 --- a/arm9/files/FILE_10C800.s +++ b/arm9/files/FILE_10C800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x10C800, 0x20 - .balign 512, 255 + diff --git a/arm9/files/FILE_10CA00.s b/arm9/files/FILE_10CA00.s index 46e1e03b..ecff1f01 100644 --- a/arm9/files/FILE_10CA00.s +++ b/arm9/files/FILE_10CA00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x10CA00, 0x20 - .balign 512, 255 + diff --git a/arm9/files/FILE_10CC00.s b/arm9/files/FILE_10CC00.s index 2876942a..b2a71be1 100644 --- a/arm9/files/FILE_10CC00.s +++ b/arm9/files/FILE_10CC00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x10CC00, 0x386E0 - .balign 512, 255 + diff --git a/arm9/files/FILE_145400.s b/arm9/files/FILE_145400.s index 31de6e12..69b7e8af 100644 --- a/arm9/files/FILE_145400.s +++ b/arm9/files/FILE_145400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x145400, 0x261A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_16B600.s b/arm9/files/FILE_16B600.s index 33e75c23..a6fe3459 100644 --- a/arm9/files/FILE_16B600.s +++ b/arm9/files/FILE_16B600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x16B600, 0x18D80 - .balign 512, 255 + diff --git a/arm9/files/FILE_184400.s b/arm9/files/FILE_184400.s index 936860c0..ebfbae38 100644 --- a/arm9/files/FILE_184400.s +++ b/arm9/files/FILE_184400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x184400, 0x32E0 - .balign 512, 255 + diff --git a/arm9/files/FILE_187800.s b/arm9/files/FILE_187800.s index 38b64eec..dc6a9524 100644 --- a/arm9/files/FILE_187800.s +++ b/arm9/files/FILE_187800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x187800, 0x1B760 - .balign 512, 255 + diff --git a/arm9/files/FILE_1A3000.s b/arm9/files/FILE_1A3000.s index 3febcf47..e9931349 100644 --- a/arm9/files/FILE_1A3000.s +++ b/arm9/files/FILE_1A3000.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x1A3000, 0xA1A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_1AD200.s b/arm9/files/FILE_1AD200.s index 24bfcb9b..ab9aa578 100644 --- a/arm9/files/FILE_1AD200.s +++ b/arm9/files/FILE_1AD200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x1AD200, 0x20 - .balign 512, 255 + diff --git a/arm9/files/FILE_1AD400.s b/arm9/files/FILE_1AD400.s index f66becc6..f4cbb321 100644 --- a/arm9/files/FILE_1AD400.s +++ b/arm9/files/FILE_1AD400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x1AD400, 0x329E0 - .balign 512, 255 + diff --git a/arm9/files/FILE_1DFE00.s b/arm9/files/FILE_1DFE00.s index 5e5e8a7c..edd9bbad 100644 --- a/arm9/files/FILE_1DFE00.s +++ b/arm9/files/FILE_1DFE00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x1DFE00, 0x19260 - .balign 512, 255 + diff --git a/arm9/files/FILE_1F9200.s b/arm9/files/FILE_1F9200.s index e2e33721..4cc1228a 100644 --- a/arm9/files/FILE_1F9200.s +++ b/arm9/files/FILE_1F9200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x1F9200, 0x2EBE0 - .balign 512, 255 + diff --git a/arm9/files/FILE_227E00.s b/arm9/files/FILE_227E00.s index ab307e3a..103ad10a 100644 --- a/arm9/files/FILE_227E00.s +++ b/arm9/files/FILE_227E00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x227E00, 0xF520 - .balign 512, 255 + diff --git a/arm9/files/FILE_237400.s b/arm9/files/FILE_237400.s index 45907862..a912c8e4 100644 --- a/arm9/files/FILE_237400.s +++ b/arm9/files/FILE_237400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x237400, 0x4680 - .balign 512, 255 + diff --git a/arm9/files/FILE_23BC00.s b/arm9/files/FILE_23BC00.s index 72123ecb..ee3f7e21 100644 --- a/arm9/files/FILE_23BC00.s +++ b/arm9/files/FILE_23BC00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x23BC00, 0x28500 - .balign 512, 255 + diff --git a/arm9/files/FILE_264200.s b/arm9/files/FILE_264200.s index 5e654387..d4a20793 100644 --- a/arm9/files/FILE_264200.s +++ b/arm9/files/FILE_264200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x264200, 0x6E80 - .balign 512, 255 + diff --git a/arm9/files/FILE_26B200.s b/arm9/files/FILE_26B200.s index 0c91220f..66491b3a 100644 --- a/arm9/files/FILE_26B200.s +++ b/arm9/files/FILE_26B200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x26B200, 0x17CE0 - .balign 512, 255 + diff --git a/arm9/files/FILE_283000.s b/arm9/files/FILE_283000.s index 6b536136..09f585cf 100644 --- a/arm9/files/FILE_283000.s +++ b/arm9/files/FILE_283000.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x283000, 0x100 - .balign 512, 255 + diff --git a/arm9/files/FILE_283200.s b/arm9/files/FILE_283200.s index 461d9ac6..68180b84 100644 --- a/arm9/files/FILE_283200.s +++ b/arm9/files/FILE_283200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x283200, 0x2400 - .balign 512, 255 + diff --git a/arm9/files/FILE_285600.s b/arm9/files/FILE_285600.s index 02c6eb09..ca6a17ed 100644 --- a/arm9/files/FILE_285600.s +++ b/arm9/files/FILE_285600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x285600, 0x5C0 - .balign 512, 255 + diff --git a/arm9/files/FILE_285C00.s b/arm9/files/FILE_285C00.s index 70fab4a8..62f45299 100644 --- a/arm9/files/FILE_285C00.s +++ b/arm9/files/FILE_285C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x285C00, 0xF00 - .balign 512, 255 + diff --git a/arm9/files/FILE_286C00.s b/arm9/files/FILE_286C00.s index 7d4ff42d..65aaf12c 100644 --- a/arm9/files/FILE_286C00.s +++ b/arm9/files/FILE_286C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x286C00, 0x1900 - .balign 512, 255 + diff --git a/arm9/files/FILE_288600.s b/arm9/files/FILE_288600.s index cdb33573..57c96796 100644 --- a/arm9/files/FILE_288600.s +++ b/arm9/files/FILE_288600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x288600, 0x9A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_289000.s b/arm9/files/FILE_289000.s index 0d794c29..eeffd74a 100644 --- a/arm9/files/FILE_289000.s +++ b/arm9/files/FILE_289000.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x289000, 0x560 - .balign 512, 255 + diff --git a/arm9/files/FILE_289600.s b/arm9/files/FILE_289600.s index 813f71fe..2a60cc62 100644 --- a/arm9/files/FILE_289600.s +++ b/arm9/files/FILE_289600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x289600, 0x800 - .balign 512, 255 + diff --git a/arm9/files/FILE_289E00.s b/arm9/files/FILE_289E00.s index 34da6195..f133baff 100644 --- a/arm9/files/FILE_289E00.s +++ b/arm9/files/FILE_289E00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x289E00, 0xBA0 - .balign 512, 255 + diff --git a/arm9/files/FILE_28AA00.s b/arm9/files/FILE_28AA00.s index d8827a3a..4fa54cf0 100644 --- a/arm9/files/FILE_28AA00.s +++ b/arm9/files/FILE_28AA00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28AA00, 0x1780 - .balign 512, 255 + diff --git a/arm9/files/FILE_28C200.s b/arm9/files/FILE_28C200.s index b69d6856..ae636e3f 100644 --- a/arm9/files/FILE_28C200.s +++ b/arm9/files/FILE_28C200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28C200, 0x900 - .balign 512, 255 + diff --git a/arm9/files/FILE_28CC00.s b/arm9/files/FILE_28CC00.s index 8b411001..1382f7cf 100644 --- a/arm9/files/FILE_28CC00.s +++ b/arm9/files/FILE_28CC00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28CC00, 0x600 - .balign 512, 255 + diff --git a/arm9/files/FILE_28D200.s b/arm9/files/FILE_28D200.s index fe324802..8639f01a 100644 --- a/arm9/files/FILE_28D200.s +++ b/arm9/files/FILE_28D200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28D200, 0x600 - .balign 512, 255 + diff --git a/arm9/files/FILE_28D800.s b/arm9/files/FILE_28D800.s index f787e794..01333fec 100644 --- a/arm9/files/FILE_28D800.s +++ b/arm9/files/FILE_28D800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28D800, 0x4A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_28DE00.s b/arm9/files/FILE_28DE00.s index 6658c9fc..d75cd7de 100644 --- a/arm9/files/FILE_28DE00.s +++ b/arm9/files/FILE_28DE00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28DE00, 0x320 - .balign 512, 255 + diff --git a/arm9/files/FILE_28E200.s b/arm9/files/FILE_28E200.s index d36e77ce..78a01f74 100644 --- a/arm9/files/FILE_28E200.s +++ b/arm9/files/FILE_28E200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28E200, 0x4C0 - .balign 512, 255 + diff --git a/arm9/files/FILE_28E800.s b/arm9/files/FILE_28E800.s index bdc1ef52..37f22bb0 100644 --- a/arm9/files/FILE_28E800.s +++ b/arm9/files/FILE_28E800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28E800, 0x9A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_28F200.s b/arm9/files/FILE_28F200.s index f8b95b6a..7fbec89b 100644 --- a/arm9/files/FILE_28F200.s +++ b/arm9/files/FILE_28F200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x28F200, 0xCC0 - .balign 512, 255 + diff --git a/arm9/files/FILE_290000.s b/arm9/files/FILE_290000.s index 7e15ff90..63a6e035 100644 --- a/arm9/files/FILE_290000.s +++ b/arm9/files/FILE_290000.s @@ -1,4 +1,5 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x290000, 0x560 - .balign 512, 255 + .section .bss + .space 0x20 diff --git a/arm9/files/FILE_290600.s b/arm9/files/FILE_290600.s index fda50640..35fec2fd 100644 --- a/arm9/files/FILE_290600.s +++ b/arm9/files/FILE_290600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x290600, 0xB40 - .balign 512, 255 + diff --git a/arm9/files/FILE_291200.s b/arm9/files/FILE_291200.s index ce12a90a..9055004d 100644 --- a/arm9/files/FILE_291200.s +++ b/arm9/files/FILE_291200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x291200, 0xCC0 - .balign 512, 255 + diff --git a/arm9/files/FILE_292000.s b/arm9/files/FILE_292000.s index d50a3ef1..27028058 100644 --- a/arm9/files/FILE_292000.s +++ b/arm9/files/FILE_292000.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x292000, 0xC60 - .balign 512, 255 + diff --git a/arm9/files/FILE_292E00.s b/arm9/files/FILE_292E00.s index b5a8d36d..f0c68d4e 100644 --- a/arm9/files/FILE_292E00.s +++ b/arm9/files/FILE_292E00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x292E00, 0x1140 - .balign 512, 255 + diff --git a/arm9/files/FILE_294000.s b/arm9/files/FILE_294000.s index 8a03373c..920669f6 100644 --- a/arm9/files/FILE_294000.s +++ b/arm9/files/FILE_294000.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x294000, 0x900 - .balign 512, 255 + diff --git a/arm9/files/FILE_294A00.s b/arm9/files/FILE_294A00.s index 452c8165..ce644972 100644 --- a/arm9/files/FILE_294A00.s +++ b/arm9/files/FILE_294A00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x294A00, 0x9C0 - .balign 512, 255 + diff --git a/arm9/files/FILE_295400.s b/arm9/files/FILE_295400.s index b21be08b..7bc87c21 100644 --- a/arm9/files/FILE_295400.s +++ b/arm9/files/FILE_295400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x295400, 0x4A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_295A00.s b/arm9/files/FILE_295A00.s index 1017f6aa..25378684 100644 --- a/arm9/files/FILE_295A00.s +++ b/arm9/files/FILE_295A00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x295A00, 0x940 - .balign 512, 255 + diff --git a/arm9/files/FILE_296400.s b/arm9/files/FILE_296400.s index 118ca39a..1f9defa1 100644 --- a/arm9/files/FILE_296400.s +++ b/arm9/files/FILE_296400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x296400, 0x320 - .balign 512, 255 + diff --git a/arm9/files/FILE_296800.s b/arm9/files/FILE_296800.s index 68ac75b9..256bd99d 100644 --- a/arm9/files/FILE_296800.s +++ b/arm9/files/FILE_296800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x296800, 0xCA0 - .balign 512, 255 + diff --git a/arm9/files/FILE_297600.s b/arm9/files/FILE_297600.s index 1887c4af..664db335 100644 --- a/arm9/files/FILE_297600.s +++ b/arm9/files/FILE_297600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x297600, 0x8A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_298000.s b/arm9/files/FILE_298000.s index ffdcde2a..b7181b03 100644 --- a/arm9/files/FILE_298000.s +++ b/arm9/files/FILE_298000.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x298000, 0x600 - .balign 512, 255 + diff --git a/arm9/files/FILE_298600.s b/arm9/files/FILE_298600.s index d4bef86c..2a12d4fc 100644 --- a/arm9/files/FILE_298600.s +++ b/arm9/files/FILE_298600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x298600, 0x320 - .balign 512, 255 + diff --git a/arm9/files/FILE_298A00.s b/arm9/files/FILE_298A00.s index 258432c2..796aa1a3 100644 --- a/arm9/files/FILE_298A00.s +++ b/arm9/files/FILE_298A00.s @@ -1,4 +1,5 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x298A00, 0xFC0 - .balign 512, 255 + .section .bss + .space 0x20 diff --git a/arm9/files/FILE_299A00.s b/arm9/files/FILE_299A00.s index 71432656..07724718 100644 --- a/arm9/files/FILE_299A00.s +++ b/arm9/files/FILE_299A00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x299A00, 0x400 - .balign 512, 255 + diff --git a/arm9/files/FILE_299E00.s b/arm9/files/FILE_299E00.s index 4fb90fe1..4de78184 100644 --- a/arm9/files/FILE_299E00.s +++ b/arm9/files/FILE_299E00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x299E00, 0x2480 - .balign 512, 255 + diff --git a/arm9/files/FILE_29C400.s b/arm9/files/FILE_29C400.s index 3b880c03..51f17874 100644 --- a/arm9/files/FILE_29C400.s +++ b/arm9/files/FILE_29C400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x29C400, 0x2380 - .balign 512, 255 + diff --git a/arm9/files/FILE_29E800.s b/arm9/files/FILE_29E800.s index f3cf72cb..658eb523 100644 --- a/arm9/files/FILE_29E800.s +++ b/arm9/files/FILE_29E800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x29E800, 0x3040 - .balign 512, 255 + diff --git a/arm9/files/FILE_2A1A00.s b/arm9/files/FILE_2A1A00.s index d917b776..f1bae30a 100644 --- a/arm9/files/FILE_2A1A00.s +++ b/arm9/files/FILE_2A1A00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2A1A00, 0x47A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2A6200.s b/arm9/files/FILE_2A6200.s index ae62fcc6..868864db 100644 --- a/arm9/files/FILE_2A6200.s +++ b/arm9/files/FILE_2A6200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2A6200, 0x2540 - .balign 512, 255 + diff --git a/arm9/files/FILE_2A8800.s b/arm9/files/FILE_2A8800.s index 967d96f3..5c379955 100644 --- a/arm9/files/FILE_2A8800.s +++ b/arm9/files/FILE_2A8800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2A8800, 0x15A0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2A9E00.s b/arm9/files/FILE_2A9E00.s index 21839769..e89790e3 100644 --- a/arm9/files/FILE_2A9E00.s +++ b/arm9/files/FILE_2A9E00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2A9E00, 0x2C20 - .balign 512, 255 + diff --git a/arm9/files/FILE_2ACC00.s b/arm9/files/FILE_2ACC00.s index 2068bd4c..1b79ca62 100644 --- a/arm9/files/FILE_2ACC00.s +++ b/arm9/files/FILE_2ACC00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2ACC00, 0xD00 - .balign 512, 255 + diff --git a/arm9/files/FILE_2ADA00.s b/arm9/files/FILE_2ADA00.s index 9f464dac..820b4821 100644 --- a/arm9/files/FILE_2ADA00.s +++ b/arm9/files/FILE_2ADA00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2ADA00, 0x1080 - .balign 512, 255 + diff --git a/arm9/files/FILE_2AEC00.s b/arm9/files/FILE_2AEC00.s index e6a54fb3..0a0062ff 100644 --- a/arm9/files/FILE_2AEC00.s +++ b/arm9/files/FILE_2AEC00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2AEC00, 0x3DE0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2B2A00.s b/arm9/files/FILE_2B2A00.s index 44eba0d2..c7542e17 100644 --- a/arm9/files/FILE_2B2A00.s +++ b/arm9/files/FILE_2B2A00.s @@ -1,4 +1,6 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2B2A00, 0x4AC0 - .balign 512, 255 + .section .bss + .space 0x20 + diff --git a/arm9/files/FILE_2B7600.s b/arm9/files/FILE_2B7600.s index 8258b44e..f0f81a80 100644 --- a/arm9/files/FILE_2B7600.s +++ b/arm9/files/FILE_2B7600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2B7600, 0x1C40 - .balign 512, 255 + diff --git a/arm9/files/FILE_2B9400.s b/arm9/files/FILE_2B9400.s index 17ffa8d8..e7245019 100644 --- a/arm9/files/FILE_2B9400.s +++ b/arm9/files/FILE_2B9400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2B9400, 0x3000 - .balign 512, 255 + diff --git a/arm9/files/FILE_2BC400.s b/arm9/files/FILE_2BC400.s index e34ef7f4..eb62b3a8 100644 --- a/arm9/files/FILE_2BC400.s +++ b/arm9/files/FILE_2BC400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2BC400, 0x2660 - .balign 512, 255 + diff --git a/arm9/files/FILE_2BEC00.s b/arm9/files/FILE_2BEC00.s index c229a70e..8042a682 100644 --- a/arm9/files/FILE_2BEC00.s +++ b/arm9/files/FILE_2BEC00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2BEC00, 0x2440 - .balign 512, 255 + diff --git a/arm9/files/FILE_2C1200.s b/arm9/files/FILE_2C1200.s index f357627d..332f0c01 100644 --- a/arm9/files/FILE_2C1200.s +++ b/arm9/files/FILE_2C1200.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2C1200, 0x1600 - .balign 512, 255 + diff --git a/arm9/files/FILE_2C2800.s b/arm9/files/FILE_2C2800.s index bddd6f01..6e38ff10 100644 --- a/arm9/files/FILE_2C2800.s +++ b/arm9/files/FILE_2C2800.s @@ -1,4 +1,6 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2C2800, 0x23A0 - .balign 512, 255 + .section .bss + .space 0x20 + diff --git a/arm9/files/FILE_2C4C00.s b/arm9/files/FILE_2C4C00.s index d41910b0..6764e3f8 100644 --- a/arm9/files/FILE_2C4C00.s +++ b/arm9/files/FILE_2C4C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2C4C00, 0xE20 - .balign 512, 255 + diff --git a/arm9/files/FILE_2C5C00.s b/arm9/files/FILE_2C5C00.s index c24ed641..d98bfcf3 100644 --- a/arm9/files/FILE_2C5C00.s +++ b/arm9/files/FILE_2C5C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2C5C00, 0x3EC0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2C9C00.s b/arm9/files/FILE_2C9C00.s index 72b30caa..77531a9c 100644 --- a/arm9/files/FILE_2C9C00.s +++ b/arm9/files/FILE_2C9C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2C9C00, 0x20 - .balign 512, 255 + diff --git a/arm9/files/FILE_2C9E00.s b/arm9/files/FILE_2C9E00.s index 91cc4599..1da6375d 100644 --- a/arm9/files/FILE_2C9E00.s +++ b/arm9/files/FILE_2C9E00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2C9E00, 0x4AE0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2CEA00.s b/arm9/files/FILE_2CEA00.s index e9a4ed70..f1e5beab 100644 --- a/arm9/files/FILE_2CEA00.s +++ b/arm9/files/FILE_2CEA00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2CEA00, 0x1220 - .balign 512, 255 + diff --git a/arm9/files/FILE_2CFE00.s b/arm9/files/FILE_2CFE00.s index 513e7dea..ae6d4e43 100644 --- a/arm9/files/FILE_2CFE00.s +++ b/arm9/files/FILE_2CFE00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2CFE00, 0x5DE0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2D5C00.s b/arm9/files/FILE_2D5C00.s index adc46cc2..250d2a37 100644 --- a/arm9/files/FILE_2D5C00.s +++ b/arm9/files/FILE_2D5C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2D5C00, 0x1E20 - .balign 512, 255 + diff --git a/arm9/files/FILE_2D7C00.s b/arm9/files/FILE_2D7C00.s index 4fc876ea..293a4962 100644 --- a/arm9/files/FILE_2D7C00.s +++ b/arm9/files/FILE_2D7C00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2D7C00, 0x1BE0 - .balign 512, 255 + diff --git a/arm9/files/FILE_2D9800.s b/arm9/files/FILE_2D9800.s index 772b6549..0c21e6e4 100644 --- a/arm9/files/FILE_2D9800.s +++ b/arm9/files/FILE_2D9800.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2D9800, 0x460 - .balign 512, 255 + diff --git a/arm9/files/FILE_2D9E00.s b/arm9/files/FILE_2D9E00.s index 934f9168..a358769d 100644 --- a/arm9/files/FILE_2D9E00.s +++ b/arm9/files/FILE_2D9E00.s @@ -1,4 +1,5 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2D9E00, 0x52C0 - .balign 512, 255 + .section .bss + .space 0x40 diff --git a/arm9/files/FILE_2DF200.s b/arm9/files/FILE_2DF200.s index b5761253..93f5cfda 100644 --- a/arm9/files/FILE_2DF200.s +++ b/arm9/files/FILE_2DF200.s @@ -1,4 +1,6 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2DF200, 0xA720 - .balign 512, 255 + .section .bss + .space 0x160 + diff --git a/arm9/files/FILE_2E9A00.s b/arm9/files/FILE_2E9A00.s index 8b6338f7..1b03c961 100644 --- a/arm9/files/FILE_2E9A00.s +++ b/arm9/files/FILE_2E9A00.s @@ -1,4 +1,5 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2E9A00, 0x5580 - .balign 512, 255 + .section .bss + .space 0xa0 diff --git a/arm9/files/FILE_2EF000.s b/arm9/files/FILE_2EF000.s index b8304264..e29ca1e0 100644 --- a/arm9/files/FILE_2EF000.s +++ b/arm9/files/FILE_2EF000.s @@ -1,4 +1,6 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2EF000, 0x2540 - .balign 512, 255 + .section .bss + .space 0x120 + diff --git a/arm9/files/FILE_2F1600.s b/arm9/files/FILE_2F1600.s index 643b88fc..7669a577 100644 --- a/arm9/files/FILE_2F1600.s +++ b/arm9/files/FILE_2F1600.s @@ -1,4 +1,5 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2F1600, 0xE2A0 - .balign 512, 255 + .section .bss + .space 0x1980 diff --git a/arm9/files/FILE_2FFA00.s b/arm9/files/FILE_2FFA00.s index 8fb7cb9c..9e8819b8 100644 --- a/arm9/files/FILE_2FFA00.s +++ b/arm9/files/FILE_2FFA00.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x2FFA00, 0x3920 - .balign 512, 255 + diff --git a/arm9/files/FILE_303400.s b/arm9/files/FILE_303400.s index a180411b..52f17ff8 100644 --- a/arm9/files/FILE_303400.s +++ b/arm9/files/FILE_303400.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x303400, 0x9100 - .balign 512, 255 + diff --git a/arm9/files/FILE_30C600.s b/arm9/files/FILE_30C600.s index 72531ed0..faf88157 100644 --- a/arm9/files/FILE_30C600.s +++ b/arm9/files/FILE_30C600.s @@ -1,4 +1,4 @@ .include "asm/macros.inc" - .text + .section .text .incbin "baserom.nds", 0x30C600, 0x820 - .balign 512, 255 + diff --git a/arm9/global.inc b/arm9/global.inc index 17fd4c67..dfebf783 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -141,8 +141,8 @@ .extern FUN_02005E80
.extern FUN_02005E90
.extern FUN_02005F14
-.extern FUN_02005F60
-.extern FUN_02005FDC
+.extern UnloadOverlayByID
+.extern HandleLoadOverlay
.extern FUN_020061E8
.extern FUN_0200621C
.extern FUN_02006234
@@ -4900,3 +4900,710 @@ .extern MOD08_0222A494
.extern MOD08_0222A568
.extern MOD08_0222A6A4
+.extern FUN_02003084
+.extern FUN_0200317C
+.extern FUN_02003A30
+.extern FUN_02004D34
+.extern FUN_02004F64
+.extern FUN_0200C7F0
+.extern FUN_02011A90
+.extern FUN_02011AF0
+.extern FUN_02013450
+.extern FUN_0201B954
+.extern FUN_0201B9B8
+.extern FUN_02027A14
+.extern FUN_02027BDC
+.extern FUN_020799F4
+.extern FUN_02082878
+.extern FUN_02082880
+.extern FUN_020828BC
+.extern FUN_02082E64
+.extern FUN_02083130
+.extern FUN_02083170
+.extern FUN_02083228
+.extern FUN_020832A4
+.extern FUN_020832DC
+.extern FUN_020832EC
+.extern FUN_02083308
+.extern FUN_0208336C
+.extern FUN_020833D4
+.extern FUN_02083404
+.extern FUN_021DD4F4
+.extern FUN_021DD518
+.extern FUN_021DD540
+.extern FUN_021DD58C
+.extern FUN_021DD594
+.extern FUN_021DD59C
+.extern FUN_021DD604
+.extern FUN_021DD60C
+.extern FUN_021DD620
+.extern FUN_021DD678
+.extern FUN_021DD6B8
+.extern FUN_021DD6CC
+.extern FUN_02211FF0
+.extern FUN_0202E49C
+.extern MOD08_02228574
+.extern MOD08_0222A6C8
+.extern MOD13_02223494
+.extern MOD13_02213174
+.extern MOD13_02213270
+.extern MOD13_022132CC
+.extern MOD13_02213368
+.extern MOD13_02213944
+.extern MOD13_02213CB0
+.extern MOD13_0221411C
+.extern MOD13_02214D6C
+.extern MOD13_02214F18
+.extern MOD13_02215028
+.extern MOD13_02215360
+.extern MOD13_02215474
+.extern MOD13_02219798
+.extern MOD13_02219C9C
+.extern MOD13_02219D58
+.extern MOD13_0221A794
+.extern MOD13_0221A7EC
+.extern MOD13_0221A8A4
+.extern FS_OpenFileDirect
+.extern FUN_020D9564
+.extern WM_GetNextTgid
+.extern WM_ReadMPData
+.extern WM_StartMPEx
+.extern FUN_020A8358
+.extern FUN_020A83D0
+.extern FUN_020A846C
+.extern FUN_020A84D8
+.extern disableBankForX_
+.extern FS_ChangeDir
+.extern FS_InitArchive
+.extern FS_LoadArchive
+.extern FS_RegisterArchiveName
+.extern FS_SetArchiveProc
+.extern FS_UnloadArchiveTables
+.extern FUN_0200D06C
+.extern FUN_02013870
+.extern FUN_02013974
+.extern FUN_020139B0
+.extern FUN_02013A58
+.extern FUN_02021E8C
+.extern FUN_0208540C
+.extern FUN_02085424
+.extern FUN_02085428
+.extern FUN_0208545C
+.extern FUN_020854A0
+.extern FUN_02088F0C
+.extern FUN_02088F4C
+.extern FUN_020892C4
+.extern FUN_020892CC
+.extern FUN_020892EC
+.extern FUN_02089300
+.extern FUN_02089310
+.extern FUN_02089338
+.extern FUN_02095324
+.extern FUN_02095330
+.extern FUN_02095AE0
+.extern FUN_02095B0C
+.extern FUN_02095BB0
+.extern FUN_02095BE0
+.extern FUN_02095CDC
+.extern FUN_02095D68
+.extern FUN_02096190
+.extern FUN_020967A4
+.extern FUN_020B5C88
+.extern FUN_020B5CE4
+.extern FUN_020B5D3C
+.extern FUN_020B5E50
+.extern FUN_020B6180
+.extern FUN_020B6240
+.extern FUN_020B62F8
+.extern FUN_020B6388
+.extern FUN_020B63CC
+.extern FUN_020B7168
+.extern FUN_020B7218
+.extern FUN_020C2444
+.extern FUN_020C5E04
+.extern FUN_020D0D84
+.extern FUN_020D0EB0
+.extern FUN_020D0FF0
+.extern FUN_021EB9A4
+.extern FUN_021EB9D8
+.extern FUN_021EBAE8
+.extern FUN_021EBB80
+.extern FUN_021EBC60
+.extern FUN_020051EC
+.extern FUN_02006D18
+.extern FUN_020081A8
+.extern FUN_02011938
+.extern FUN_02011A00
+.extern FUN_02013CD4
+.extern FUN_02013D18
+.extern FUN_02013D5C
+.extern FUN_02024594
+.extern FUN_020246DC
+.extern FUN_02024748
+.extern FUN_020247C8
+.extern FUN_0202484C
+.extern FUN_020248BC
+.extern FUN_02024D00
+.extern FUN_02024D58
+.extern FUN_0208A328
+.extern FUN_0208A32C
+.extern FUN_0208A330
+.extern FUN_0208A334
+.extern FUN_020AEAF4
+.extern FUN_020AEC60
+.extern FUN_020AEDF4
+.extern G2x_SetBlendBrightnessExt_
+.extern FUN_02002F90
+.extern FUN_02004C80
+.extern FUN_02004CA4
+.extern FUN_02004CAC
+.extern FUN_02004CB4
+.extern FUN_02004CFC
+.extern FUN_02004D04
+.extern FUN_02004D20
+.extern FUN_02004D4C
+.extern FUN_02004E80
+.extern FUN_02004E8C
+.extern FUN_02004E98
+.extern FUN_02004F28
+.extern FUN_02004F70
+.extern FUN_02007EEC
+.extern FUN_0200955C
+.extern FUN_02011A30
+.extern FUN_02013D98
+.extern FUN_02013DD4
+.extern FUN_02013E14
+.extern FUN_02013E44
+.extern FUN_02013E84
+.extern FUN_02013EB0
+.extern FUN_02013F2C
+.extern FUN_0201AB24
+.extern FUN_0201AF08
+.extern FUN_0201AF50
+.extern FUN_0201BBD0
+.extern FUN_0201BC84
+.extern FUN_020202A8
+.extern FUN_02020300
+.extern FUN_020203CC
+.extern FUN_0206B88C
+.extern FUN_0206B898
+.extern FUN_02087B98
+.extern FUN_02087BB8
+.extern FUN_02087BD8
+.extern FUN_02087BF8
+.extern MOD11_0222FF84
+.extern MOD11_0222FFC8
+.extern MOD11_0223022C
+.extern MOD11_02230270
+.extern MOD11_02243420
+.extern MOD11_02244248
+.extern MOD11_02245D38
+.extern MOD11_02246274
+.extern MOD11_022465A0
+.extern MOD11_02246870
+.extern MOD11_02246B9C
+.extern MOD11_02246D1C
+.extern MOD11_022473F8
+.extern MOD11_022476C0
+.extern MOD11_022482A4
+.extern MOD11_02249D90
+.extern MOD11_02249E04
+.extern MOD11_02249E58
+.extern MOD11_0224B310
+.extern MOD11_0224C12C
+.extern FX_DivS32
+.extern G2x_ChangeBlendBrightness_
+.extern GX_DisableBankForARM7
+.extern GX_DisableBankForBGExtPltt
+.extern GX_DisableBankForClearImage
+.extern GX_DisableBankForOBJExtPltt
+.extern GX_DisableBankForOBJExtPltt_2
+.extern GX_DisableBankForSubBGExtPltt
+.extern GX_DisableBankForSubOBJExtPltt
+.extern GX_DisableBankForSubOBJExtPltt_2
+.extern GX_DisableBankForTexPltt
+.extern GX_DisableBankForTexPltt_2
+.extern GX_SetBankForARM7
+.extern OS_WaitVBlankIntr
+.extern PM_GetLEDPattern
+.extern PMi_SendLEDPatternCommand
+.extern swprintf
+.extern WM_EndKeySharing
+.extern WM_GetOtherElements
+.extern WM_ReadStatus
+.extern WM_SetWEPKeyEx2
+.extern WM_StartDataSharing
+.extern WM_StartKeySharing
+.extern WM_StepDataSharing
+.extern FUN_02002218
+.extern FUN_02006A34
+.extern FUN_02006A8C
+.extern FUN_02006AE4
+.extern FUN_02006B38
+.extern FUN_02006C30
+.extern FUN_02006C5C
+.extern FUN_02018F4C
+.extern FUN_02019270
+.extern FUN_0201928C
+.extern FUN_020192B8
+.extern FUN_02019684
+.extern FUN_02020240
+.extern FUN_0202032C
+.extern FUN_02020334
+.extern FUN_02020A40
+.extern FUN_02020AB0
+.extern FUN_02021B04
+.extern FUN_020220C4
+.extern FUN_02022144
+.extern FUN_020669BC
+.extern FUN_02066A6C
+.extern FUN_02066A94
+.extern FUN_02068824
+.extern FUN_0206885C
+.extern FUN_02068A44
+.extern FUN_02068B70
+.extern FUN_020690C8
+.extern FUN_02069ECC
+.extern FUN_0206B2B0
+.extern FUN_0206B2FC
+.extern FUN_0206B43C
+.extern FUN_0206B458
+.extern FUN_0206B4B4
+.extern FUN_0206B4E4
+.extern FUN_0206B598
+.extern FUN_0206B668
+.extern FUN_0206B688
+.extern FUN_0206BB48
+.extern FUN_0206E108
+.extern FUN_0206E10C
+.extern FUN_0206E768
+.extern FUN_020B1A1C
+.extern G3X_ResetMtxStack_2
+.extern FUN_0200825C
+.extern FUN_02013DEC
+.extern FUN_02001658
+.extern FUN_02001B80
+.extern FUN_02004928
+.extern FUN_02009BB8
+.extern FUN_0200B2E0
+.extern FUN_0200B318
+.extern FUN_0200E31C
+.extern FUN_020128C4
+.extern FUN_0201B21C
+.extern FUN_0201D2AC
+.extern FUN_0201E1B4
+.extern FUN_02020184
+.extern FUN_0202595C
+.extern FUN_02025960
+.extern FUN_02025964
+.extern FUN_02025C00
+.extern FUN_02025C18
+.extern FUN_02025C38
+.extern FUN_02025CD8
+.extern FUN_02025D40
+.extern FUN_02025D48
+.extern FUN_02025DC8
+.extern FUN_02025DD4
+.extern FUN_02025EDC
+.extern FUN_02025F0C
+.extern FUN_02025F30
+.extern FUN_02025F44
+.extern FUN_02025F80
+.extern FUN_02025F98
+.extern FUN_02025FA4
+.extern FUN_02025FD8
+.extern FUN_02026050
+.extern FUN_02026068
+.extern FUN_02026074
+.extern FUN_02026080
+.extern FUN_0202616C
+.extern FUN_02026188
+.extern FUN_02026194
+.extern FUN_020261C8
+.extern FUN_0202623C
+.extern FUN_02026258
+.extern FUN_02026264
+.extern FUN_0202630C
+.extern FUN_02026354
+.extern FUN_02026370
+.extern FUN_0202639C
+.extern FUN_020263C8
+.extern FUN_020263F4
+.extern FUN_02026444
+.extern FUN_02026450
+.extern FUN_02026470
+.extern FUN_02026490
+.extern FUN_0202649C
+.extern FUN_020264F0
+.extern FUN_020264FC
+.extern FUN_0202651C
+.extern FUN_0202653C
+.extern FUN_02026548
+.extern FUN_02026554
+.extern FUN_020265B8
+.extern FUN_020265E0
+.extern FUN_02026600
+.extern FUN_02026620
+.extern FUN_02026634
+.extern FUN_02026648
+.extern FUN_02026654
+.extern FUN_02026664
+.extern FUN_02026688
+.extern FUN_020266D4
+.extern FUN_020266E0
+.extern FUN_02026714
+.extern FUN_0202671C
+.extern FUN_02026778
+.extern FUN_02026874
+.extern FUN_020268A0
+.extern FUN_020268E8
+.extern FUN_02026940
+.extern FUN_02026A0C
+.extern FUN_02026A58
+.extern FUN_02026A9C
+.extern FUN_02026AE8
+.extern FUN_02026B20
+.extern FUN_02026B58
+.extern FUN_02026B90
+.extern FUN_02026C38
+.extern FUN_02026C68
+.extern FUN_02026C88
+.extern FUN_02026C90
+.extern FUN_02026C98
+.extern FUN_02026CA0
+.extern FUN_02026CA8
+.extern FUN_02026CC0
+.extern FUN_02029160
+.extern FUN_0202916C
+.extern FUN_0202D31C
+.extern FUN_0202D344
+.extern FUN_0202D380
+.extern FUN_0202DEC0
+.extern FUN_0202DEF4
+.extern FUN_0202E068
+.extern FUN_020307A8
+.extern FUN_020307BC
+.extern FUN_020307D0
+.extern FUN_0203086C
+.extern FUN_02031000
+.extern FUN_0203105C
+.extern FUN_02031354
+.extern FUN_020318A4
+.extern FUN_020335A4
+.extern FUN_02049824
+.extern FUN_02049CB0
+.extern FUN_0204CAA0
+.extern FUN_0204CAB0
+.extern FUN_0204CAC0
+.extern FUN_0204CAD0
+.extern FUN_0204CAF0
+.extern FUN_0204CB00
+.extern FUN_0204CB10
+.extern FUN_0204CB20
+.extern FUN_0204CC48
+.extern FUN_0204CC9C
+.extern FUN_0204CCE0
+.extern FUN_0204CDB4
+.extern FUN_0204CF60
+.extern FUN_0204D118
+.extern FUN_0204D168
+.extern FUN_0204D320
+.extern FUN_0204D610
+.extern FUN_0204D76C
+.extern FUN_0204D830
+.extern FUN_0204E1E8
+.extern FUN_0204E200
+.extern FUN_0204E214
+.extern FUN_0204E254
+.extern FUN_0204E34C
+.extern FUN_0204E35C
+.extern FUN_0204E3A4
+.extern FUN_0204E3EC
+.extern FUN_0204E440
+.extern FUN_0204E494
+.extern FUN_0204E4B4
+.extern FUN_0204E4D4
+.extern FUN_0204E50C
+.extern FUN_0204E544
+.extern FUN_0204E598
+.extern FUN_0204E5EC
+.extern FUN_0204E60C
+.extern FUN_0204E62C
+.extern FUN_0204E664
+.extern FUN_0204E69C
+.extern FUN_0204E6CC
+.extern FUN_0204E6FC
+.extern FUN_0204E758
+.extern FUN_0204E778
+.extern FUN_0204E794
+.extern FUN_0204E7CC
+.extern FUN_0204E8B0
+.extern FUN_0204EAD8
+.extern FUN_0204EB14
+.extern FUN_0204EE9C
+.extern FUN_0204EEBC
+.extern FUN_0204F074
+.extern FUN_0204F08C
+.extern FUN_0204F0A8
+.extern FUN_0204F0C8
+.extern FUN_0204F1B0
+.extern FUN_0204F210
+.extern FUN_0204F610
+.extern FUN_0204F63C
+.extern FUN_0204F660
+.extern FUN_0204F678
+.extern FUN_0204F69C
+.extern FUN_0204F6C8
+.extern FUN_0204F70C
+.extern FUN_0204F72C
+.extern FUN_0204F74C
+.extern FUN_0204F774
+.extern FUN_0204F7D4
+.extern FUN_0204F7E4
+.extern FUN_0204F7FC
+.extern FUN_0204FB14
+.extern FUN_0204FCF4
+.extern FUN_0204FD24
+.extern FUN_0204FD38
+.extern FUN_0204FDE4
+.extern FUN_0205537C
+.extern FUN_0205EB38
+.extern FUN_0205EBEC
+.extern FUN_0205EC18
+.extern FUN_0205EC48
+.extern FUN_0205EC6C
+.extern FUN_0205EDAC
+.extern FUN_0205EDBC
+.extern FUN_0205EDCC
+.extern FUN_0205EDD8
+.extern FUN_0205EDE8
+.extern FUN_0205F730
+.extern FUN_0205F750
+.extern FUN_0205F770
+.extern FUN_0206151C
+.extern FUN_02061B0C
+.extern FUN_020BB408
+.extern MOD05_021D8024
+.extern MOD05_021D80A4
+.extern MOD05_021E53B4
+.extern MOD05_021E5420
+.extern MOD05_021E5D0C
+.extern MOD05_021E5E8C
+.extern MOD05_021E7C1C
+.extern MOD05_021EF4F8
+.extern MOD05_021F0318
+.extern MOD05_021F043C
+.extern MOD05_021F04F8
+.extern MOD05_021F4CD4
+.extern FUN_02006948
+.extern FUN_02006C88
+.extern FUN_02020A6C
+.extern FUN_02012690
+.extern MOD20_02252978
+.extern FUN_02020BF4
+.extern FUN_02020BFC
+.extern FUN_020893F0
+.extern FUN_02089418
+.extern FUN_02069B60
+.extern FUN_02089444
+.extern FUN_0208946C
+.extern MOD20_02252B68
+.extern MOD20_02252C08
+.extern MOD20_02253794
+.extern MOD20_022537B8
+.extern MOD20_02252B48
+.extern MOD20_02252C40
+.extern MOD20_022538BC
+.extern MOD20_02252B28
+.extern MOD20_02252D24
+.extern MOD20_022538A4
+.extern MOD20_022538A8
+.extern MOD20_022538AC
+.extern MOD20_022538B0
+.extern MOD20_02253E74
+.extern MOD20_02253F14
+.extern MOD20_02253F28
+.extern MOD20_02253F78
+.extern MOD20_02253FBC
+.extern MOD20_02254014
+.extern MOD20_022542AC
+.extern MOD20_0225298C
+.extern MOD20_022529A0
+.extern MOD20_02252C14
+.extern MOD20_02252D34
+.extern MOD20_02252D7C
+.extern MOD20_022536F4
+.extern MOD20_022537E0
+.extern MOD20_02253888
+.extern MOD20_022538A0
+.extern MOD20_02254130
+.extern MOD20_02254198
+.extern MOD20_02252DB4
+.extern MOD11_02252DB4
+.extern FUN_02039754
+.extern MOD20_02252C30
+.extern MOD20_02252C38
+.extern MOD20_02252DEC
+.extern MOD20_022538B8
+.extern MOD20_02253F44
+.extern MOD20_02252C34
+.extern FUN_0204C0CC
+.extern FUN_0204C0D4
+.extern FUN_0204C0E8
+.extern MOD20_022529B4
+.extern MOD20_02252C3C
+.extern MOD20_0225396C
+.extern MOD20_02253F80
+.extern MOD20_022539C4
+.extern MOD20_02253F64
+.extern MOD20_02253F9C
+.extern MOD20_02253FA4
+.extern FUN_02020A98
+.extern FUN_02020ACC
+.extern FUN_0204BF14
+.extern FUN_0204BF1C
+.extern FUN_0204BF44
+.extern FUN_0204BF84
+.extern FUN_0204BF88
+.extern FUN_020893E0
+.extern FUN_020B0830
+.extern FUN_020B0888
+.extern FUN_020B0D58
+.extern FUN_020B1AF8
+.extern FUN_02013E5C
+.extern FUN_02013ECC
+.extern FUN_02013EF0
+.extern FUN_02013F0C
+.extern FUN_02014590
+.extern FUN_020145A8
+.extern FUN_020145C8
+.extern FUN_0201466C
+.extern FUN_020146C4
+.extern FUN_0201D324
+.extern FUN_0201E1C8
+.extern FUN_0201FD98
+.extern FUN_02020AE8
+.extern FUN_02020C44
+.extern FUN_02020C90
+.extern FUN_02020CB0
+.extern FUN_02020CD4
+.extern FUN_0202714C
+.extern FUN_020272D4
+.extern FUN_02027310
+.extern FUN_02027348
+.extern FUN_02027380
+.extern FUN_02027448
+.extern FUN_020274F0
+.extern FUN_02027528
+.extern FUN_02027564
+.extern FUN_02027590
+.extern FUN_0202766C
+.extern FUN_02027778
+.extern FUN_020277B4
+.extern FUN_02027A58
+.extern FUN_02027A94
+.extern FUN_02027AC4
+.extern FUN_02027B0C
+.extern FUN_02027B44
+.extern FUN_02027B78
+.extern FUN_02027C28
+.extern FUN_02027C58
+.extern FUN_02027CA0
+.extern FUN_02027CA8
+.extern FUN_02027CB0
+.extern FUN_02027CB8
+.extern FUN_02027CF8
+.extern FUN_02027CFC
+.extern FUN_02027D00
+.extern FUN_02027D04
+.extern FUN_02083268
+.extern FUN_02083298
+.extern FUN_02083A34
+.extern FUN_02083A7C
+.extern SDK_OVERLAY_MODULE_00_ID
+.extern SDK_OVERLAY_MODULE_01_ID
+.extern SDK_OVERLAY_MODULE_02_ID
+.extern SDK_OVERLAY_MODULE_03_ID
+.extern SDK_OVERLAY_MODULE_04_ID
+.extern SDK_OVERLAY_MODULE_05_ID
+.extern SDK_OVERLAY_MODULE_06_ID
+.extern SDK_OVERLAY_MODULE_07_ID
+.extern SDK_OVERLAY_MODULE_08_ID
+.extern SDK_OVERLAY_MODULE_09_ID
+.extern SDK_OVERLAY_MODULE_10_ID
+.extern SDK_OVERLAY_MODULE_11_ID
+.extern SDK_OVERLAY_MODULE_12_ID
+.extern SDK_OVERLAY_MODULE_13_ID
+.extern SDK_OVERLAY_MODULE_14_ID
+.extern SDK_OVERLAY_MODULE_15_ID
+.extern SDK_OVERLAY_MODULE_16_ID
+.extern SDK_OVERLAY_MODULE_17_ID
+.extern SDK_OVERLAY_MODULE_18_ID
+.extern SDK_OVERLAY_MODULE_19_ID
+.extern SDK_OVERLAY_MODULE_20_ID
+.extern SDK_OVERLAY_MODULE_21_ID
+.extern SDK_OVERLAY_MODULE_22_ID
+.extern SDK_OVERLAY_MODULE_23_ID
+.extern SDK_OVERLAY_MODULE_24_ID
+.extern SDK_OVERLAY_MODULE_25_ID
+.extern SDK_OVERLAY_MODULE_26_ID
+.extern SDK_OVERLAY_MODULE_27_ID
+.extern SDK_OVERLAY_MODULE_28_ID
+.extern SDK_OVERLAY_MODULE_29_ID
+.extern SDK_OVERLAY_MODULE_30_ID
+.extern SDK_OVERLAY_MODULE_31_ID
+.extern SDK_OVERLAY_MODULE_32_ID
+.extern SDK_OVERLAY_MODULE_33_ID
+.extern SDK_OVERLAY_MODULE_34_ID
+.extern SDK_OVERLAY_MODULE_35_ID
+.extern SDK_OVERLAY_MODULE_36_ID
+.extern SDK_OVERLAY_MODULE_37_ID
+.extern SDK_OVERLAY_MODULE_38_ID
+.extern SDK_OVERLAY_MODULE_39_ID
+.extern SDK_OVERLAY_MODULE_40_ID
+.extern SDK_OVERLAY_MODULE_41_ID
+.extern SDK_OVERLAY_MODULE_42_ID
+.extern SDK_OVERLAY_MODULE_43_ID
+.extern SDK_OVERLAY_MODULE_44_ID
+.extern SDK_OVERLAY_MODULE_45_ID
+.extern SDK_OVERLAY_MODULE_46_ID
+.extern SDK_OVERLAY_MODULE_47_ID
+.extern SDK_OVERLAY_MODULE_48_ID
+.extern SDK_OVERLAY_MODULE_49_ID
+.extern SDK_OVERLAY_MODULE_50_ID
+.extern SDK_OVERLAY_MODULE_51_ID
+.extern SDK_OVERLAY_MODULE_52_ID
+.extern SDK_OVERLAY_MODULE_53_ID
+.extern SDK_OVERLAY_MODULE_54_ID
+.extern SDK_OVERLAY_MODULE_55_ID
+.extern SDK_OVERLAY_MODULE_56_ID
+.extern SDK_OVERLAY_MODULE_57_ID
+.extern SDK_OVERLAY_MODULE_58_ID
+.extern SDK_OVERLAY_MODULE_59_ID
+.extern SDK_OVERLAY_MODULE_60_ID
+.extern SDK_OVERLAY_MODULE_61_ID
+.extern SDK_OVERLAY_MODULE_62_ID
+.extern SDK_OVERLAY_MODULE_63_ID
+.extern SDK_OVERLAY_MODULE_64_ID
+.extern SDK_OVERLAY_MODULE_65_ID
+.extern SDK_OVERLAY_MODULE_66_ID
+.extern SDK_OVERLAY_MODULE_67_ID
+.extern SDK_OVERLAY_MODULE_68_ID
+.extern SDK_OVERLAY_MODULE_69_ID
+.extern SDK_OVERLAY_MODULE_70_ID
+.extern SDK_OVERLAY_MODULE_71_ID
+.extern SDK_OVERLAY_MODULE_72_ID
+.extern SDK_OVERLAY_MODULE_73_ID
+.extern SDK_OVERLAY_MODULE_74_ID
+.extern SDK_OVERLAY_MODULE_75_ID
+.extern SDK_OVERLAY_MODULE_76_ID
+.extern SDK_OVERLAY_MODULE_77_ID
+.extern SDK_OVERLAY_MODULE_78_ID
+.extern SDK_OVERLAY_MODULE_79_ID
+.extern SDK_OVERLAY_MODULE_80_ID
+.extern SDK_OVERLAY_MODULE_81_ID
+.extern SDK_OVERLAY_MODULE_82_ID
+.extern SDK_OVERLAY_MODULE_83_ID
+.extern SDK_OVERLAY_MODULE_84_ID
+.extern SDK_OVERLAY_MODULE_85_ID
+.extern SDK_OVERLAY_MODULE_86_ID
diff --git a/arm9/lib/include/MB_mb.h b/arm9/lib/include/MB_mb.h new file mode 100644 index 00000000..128ea480 --- /dev/null +++ b/arm9/lib/include/MB_mb.h @@ -0,0 +1,45 @@ +// +// Created by red031000 on 2020-05-06. +// + +#ifndef POKEDIAMOND_MB_MB_H +#define POKEDIAMOND_MB_MB_H + +#include "consts.h" + +#define MB_TYPE_ILLEGAL 0 +#define MB_TYPE_NORMAL 1 +#define MB_TYPE_MULTIBOOT 2 + +typedef struct { + u16 length; + u16 rssi; + u16 bssid[3]; + u16 ssidLength; + u8 ssid[32]; + u16 capaInfo; + struct { + u16 basic; + u16 support; + } rateSet; + u16 beaconperiod; + u16 dtimPeriod; + u16 channel; + u16 cfpPeriod; + u16 cfpMaxDuration; +} MBParentBssDesc; + +typedef struct { + u16 boot_type; + MBParentBssDesc parent_bss_desc; +} MBParam; + +static inline const MBParam *MB_GetMultiBootParam() { + return (const MBParam *)HW_WM_BOOT_BUF; +} + +static inline BOOL MB_IsMultiBootChild() { + return MB_GetMultiBootParam()->boot_type == MB_TYPE_MULTIBOOT; +} + +#endif //POKEDIAMOND_MB_MB_H diff --git a/arm9/lib/include/OS_emulator.h b/arm9/lib/include/OS_emulator.h new file mode 100644 index 00000000..54105258 --- /dev/null +++ b/arm9/lib/include/OS_emulator.h @@ -0,0 +1,13 @@ +// +// Created by red031000 on 2020-05-05. +// + +#ifndef POKEDIAMOND_OS_EMULATOR_H +#define POKEDIAMOND_OS_EMULATOR_H + +#include "consts.h" + +BOOL OS_IsRunOnEmulator(); +u32 OS_GetConsoleType(); + +#endif //POKEDIAMOND_OS_EMULATOR_H diff --git a/arm9/lib/include/OS_init.h b/arm9/lib/include/OS_init.h index 1ff2837c..dd2b20c7 100644 --- a/arm9/lib/include/OS_init.h +++ b/arm9/lib/include/OS_init.h @@ -7,13 +7,18 @@ #include "types.h" #include "consts.h" +#include "OS_tcm.h" #include "OS_spinLock.h" #include "OS_thread.h" #include "OS_protectionRegion.h" #include "OS_entropy.h" +#include "OS_emulator.h" #include "OS_arena.h" #include "OS_alloc.h" #include "OS_system.h" +#include "OS_terminate_proc.h" +#include "OS_interrupt.h" +#include "OS_reset.h" void OS_Init(); diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h new file mode 100644 index 00000000..b8425b4e --- /dev/null +++ b/arm9/lib/include/OS_interrupt.h @@ -0,0 +1,29 @@ +// +// Created by red031000 on 2020-05-07. +// + +#ifndef POKEDIAMOND_OS_INTERRUPT_H +#define POKEDIAMOND_OS_INTERRUPT_H + +#include "types.h" + +typedef void (*OSIrqFunction) (void); + +typedef struct +{ + void (*func) (void *); + u32 enable; + void* arg; +} OSIrqCallbackInfo; + +typedef u32 OSIrqMask; + +extern OSIrqFunction OS_IRQTable[]; +extern OSIrqCallbackInfo OSi_IrqCallbackInfo[7+1]; + +void OS_InitIrqTable(); +void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function); +OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit); +void OSi_EnterDmaCallback(u32 dmaNo, void (*callback) (void *), void *arg); + +#endif //POKEDIAMOND_OS_INTERRUPT_H diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h new file mode 100644 index 00000000..c3b60c98 --- /dev/null +++ b/arm9/lib/include/OS_reset.h @@ -0,0 +1,20 @@ +// +// Created by red031000 on 2020-05-06. +// + +#ifndef POKEDIAMOND_OS_RESET_H +#define POKEDIAMOND_OS_RESET_H + +#include "consts.h" +#include "PXI_fifo.h" + +#define OS_PXI_COMMAND_MASK 0x7f00 +#define OS_PXI_COMMAND_SHIFT 8 +#define OS_PXI_COMMAND_RESET 0x10 + +void OS_InitReset(); +void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err); +void OSi_SendToPxi(u16 data); +void OS_ResetSystem(u32 parameter); + +#endif //POKEDIAMOND_OS_RESET_H diff --git a/arm9/lib/include/OS_system.h b/arm9/lib/include/OS_system.h index 93903315..9a79c0d1 100644 --- a/arm9/lib/include/OS_system.h +++ b/arm9/lib/include/OS_system.h @@ -6,6 +6,7 @@ #define POKEDIAMOND_OS_SYSTEM_H #include "consts.h" +#include "function_target.h" typedef enum { OS_PROCMODE_USER=16, diff --git a/arm9/lib/include/OS_tcm.h b/arm9/lib/include/OS_tcm.h new file mode 100644 index 00000000..7112ca0e --- /dev/null +++ b/arm9/lib/include/OS_tcm.h @@ -0,0 +1,12 @@ +// +// Created by red031000 on 2020-05-05. +// + +#ifndef POKEDIAMOND_OS_TCM_H +#define POKEDIAMOND_OS_TCM_H + +#include "consts.h" + +u32 OS_GetDTCMAddress(); + +#endif //POKEDIAMOND_OS_TCM_H diff --git a/arm9/lib/include/OS_terminate_proc.h b/arm9/lib/include/OS_terminate_proc.h new file mode 100644 index 00000000..26741e5d --- /dev/null +++ b/arm9/lib/include/OS_terminate_proc.h @@ -0,0 +1,11 @@ +// +// Created by red031000 on 2020-05-07. +// + +#ifndef POKEDIAMOND_OS_TERMINATE_PROC_H +#define POKEDIAMOND_OS_TERMINATE_PROC_H + +void OS_Terminate(); +void OS_Halt(); + +#endif //POKEDIAMOND_OS_TERMINATE_PROC_H diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/include/OS_thread.h index 4fb70bf7..49ae9f15 100644 --- a/arm9/lib/include/OS_thread.h +++ b/arm9/lib/include/OS_thread.h @@ -7,6 +7,14 @@ typedef struct _OSThread OSThread; +struct _OSThreadQueue +{ + OSThread *head; + OSThread *tail; +}; + +typedef struct _OSThreadQueue OSThreadQueue; + typedef struct OSThreadInfo { u16 isNeedRescheduling; u16 irqDepth; @@ -20,4 +28,9 @@ struct _OSThread u8 padding[0x80]; //todo: not the correct size but idfk }; +static inline void OS_InitThreadQueue(OSThreadQueue * queue) +{ + queue->head = queue->tail = NULL; +} + #endif //POKEDIAMOND_OS_THREAD_H diff --git a/arm9/lib/include/PXI_fifo.h b/arm9/lib/include/PXI_fifo.h new file mode 100644 index 00000000..1d45dda2 --- /dev/null +++ b/arm9/lib/include/PXI_fifo.h @@ -0,0 +1,33 @@ +// +// Created by red031000 on 2020-05-06. +// + +#ifndef POKEDIAMOND_PXI_FIFO_H +#define POKEDIAMOND_PXI_FIFO_H + +#include "function_target.h" + +ENUMS_ALWAYS_INT_ON +typedef enum { + PXI_FIFO_TAG_EX = 0, // Extension format + PXI_FIFO_TAG_USER_0, // for application programmer, use it in free + PXI_FIFO_TAG_USER_1, // for application programmer, use it in free + PXI_FIFO_TAG_SYSTEM, // SDK inner usage + PXI_FIFO_TAG_NVRAM, // NVRAM + PXI_FIFO_TAG_RTC, // RTC + PXI_FIFO_TAG_TOUCHPANEL, // Touch Panel + PXI_FIFO_TAG_SOUND, // Sound + PXI_FIFO_TAG_PM, // Power Management + PXI_FIFO_TAG_MIC, // Microphone + PXI_FIFO_TAG_WM, // Wireless Manager + PXI_FIFO_TAG_FS, // File System + PXI_FIFO_TAG_OS, // OS + PXI_FIFO_TAG_CTRDG, // Cartridge + PXI_FIFO_TAG_CARD, // Card + PXI_FIFO_TAG_WVR, // Control driving wireless library + PXI_FIFO_TAG_CTRDG_Ex, // Cartridge Ex + PXI_MAX_FIFO_TAG = 32 // MAX FIFO TAG +} PXIFifoTag; +ENUMS_ALWAYS_INT_RESET + +#endif //POKEDIAMOND_PXI_FIFO_H diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h index e07fe323..b99b4148 100644 --- a/arm9/lib/include/consts.h +++ b/arm9/lib/include/consts.h @@ -6,6 +6,7 @@ #define POKEDIAMOND_CONSTS_H #include "mmap.h" +#include "registers.h" #define HW_PSR_CPU_MODE_MASK 0x1f // CPU mode @@ -13,19 +14,6 @@ #define HW_PSR_DISABLE_IRQ 0x80 // Disable IRQ #define HW_PSR_DISABLE_IRQ_FIQ 0xc0 // Disable FIQ and IRQ -#define HW_REG_BASE 0x04000000 -#define REG_VCOUNT_OFFSET 0x006 -#define REG_VCOUNT_ADDR (HW_REG_BASE + REG_VCOUNT_OFFSET) -#define reg_GX_VCOUNT (*(REGType16v *)REG_VCOUNT_ADDR) - -#define REG_KEYINPUT_OFFSET 0x130 -#define REG_KEYINPUT_ADDR (HW_REG_BASE + REG_KEYINPUT_OFFSET) -#define reg_PAD_KEYINPUT (*(REGType16v *)REG_KEYINPUT_ADDR) - -#define REG_GXSTAT_OFFSET 0x600 -#define REG_GXSTAT_ADDR (HW_REG_BASE + REG_GXSTAT_OFFSET) -#define reg_G3X_GXSTAT (*(REGType32v *)REG_GXSTAT_ADDR) - #define HW_C6_PR_4KB 0x16 #define HW_C6_PR_8KB 0x18 #define HW_C6_PR_16KB 0x1a @@ -48,9 +36,17 @@ #define HW_C6_PR_2GB 0x3c #define HW_C6_PR_4GB 0x3e +#define PXI_PROC_ARM7 0x01 + +#define OSi_CONSOLE_NOT_DETECT 0xffffffff + +#define OS_CONSOLE_NITRO 0x80000000 +#define OS_CONSOLE_DEV_CARD 0x02000000 #define OS_CONSOLE_SIZE_MASK 0x00000003 #define OS_CONSOLE_SIZE_4MB 0x00000001 +#define OSi_TCM_REGION_BASE_MASK 0xfffff000 + #define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF) #define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1)) #define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h index 7e74d079..b1c3aa88 100644 --- a/arm9/lib/include/fx.h +++ b/arm9/lib/include/fx.h @@ -46,24 +46,6 @@ typedef s64 fx64c; #define FX64C_INT_ABS(x) FX_INT_ABS(FX64C, x) #define FX64C_FRAC(x) FX_FRAC(FX64C, x) - -#define HW_REG_DIVCNT 0x04000280 -#define HW_REG_DIV_NUMER 0x04000290 -#define HW_REG_DIV_DENOM 0x04000298 -#define HW_REG_DIV_RESULT 0x040002A0 -#define HW_REG_DIVREM_RESULT 0x040002A8 - -#define HW_REG_SQRTCNT 0x040002B0 -#define HW_REG_SQRT_RESULT 0x040002B4 -#define HW_REG_SQRT_PARAM 0x040002B8 - -#define SETREG16(x, y) ((*(vu16 *)x) = y) -#define SETREG32(x, y) ((*(vu32 *)x) = y) -#define SETREG64(x, y) ((*(vu64 *)x) = y) -#define READREG16(x) (*(vu16 *)x) -#define READREG32(x) (*(vu32 *)x) -#define READREG64(x) (*(vu64 *)x) - #define FX32_MUL(a, b) ((fx32)(((fx64)a * b) >> FX32_INT_SHIFT)) #define FX32_MUL_ADD_MUL(a, b, c, d) ((fx32)(((fx64)a * b + (fx64)c * d) >> FX32_INT_SHIFT)) //the extra term here is for rounding diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h index d94df843..1f8f37f9 100644 --- a/arm9/lib/include/mmap.h +++ b/arm9/lib/include/mmap.h @@ -23,6 +23,8 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define HW_CARD_ROM_HEADER_SIZE 0x00000160 #define HW_DOWNLOAD_PARAMETER_SIZE 0x00000020 +#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20) +#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40) #define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) // Arena data structure #define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer #define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h new file mode 100644 index 00000000..45b36334 --- /dev/null +++ b/arm9/lib/include/registers.h @@ -0,0 +1,55 @@ +// +// Created by red031000 on 2020-05-06. +// + +#ifndef POKEDIAMOND_REGISTERS_H +#define POKEDIAMOND_REGISTERS_H + +#include "types.h" + +#define HW_REG_BASE 0x04000000 +#define REG_VCOUNT_OFFSET 0x006 +#define REG_VCOUNT_ADDR (HW_REG_BASE + REG_VCOUNT_OFFSET) +#define reg_GX_VCOUNT (*(REGType16v *)REG_VCOUNT_ADDR) + +#define REG_KEYINPUT_OFFSET 0x130 +#define REG_KEYINPUT_ADDR (HW_REG_BASE + REG_KEYINPUT_OFFSET) +#define reg_PAD_KEYINPUT (*(REGType16v *)REG_KEYINPUT_ADDR) + +#define REG_DIVCNT_OFFSET 0x280 +#define REG_DIVCNT_ADDR (HW_REG_BASE + REG_DIVCNT_OFFSET) +#define reg_CP_DIVCNT (*(REGType16v *)REG_DIVCNT_ADDR) + +#define REG_DIV_NUMER_OFFSET 0x290 +#define REG_DIV_NUMER_ADDR (HW_REG_BASE + REG_DIV_NUMER_OFFSET) +#define reg_CP_DIV_NUMER (*(REGType64v *)REG_DIV_NUMER_ADDR) + +#define REG_DIV_DENOM_OFFSET 0x298 +#define REG_DIV_DENOM_ADDR (HW_REG_BASE + REG_DIV_DENOM_OFFSET) +#define reg_CP_DIV_DENOM (*(REGType64v *)REG_DIV_DENOM_ADDR) + +#define REG_DIV_RESULT_OFFSET 0x2A0 +#define REG_DIV_RESULT_ADDR (HW_REG_BASE + REG_DIV_RESULT_OFFSET) +#define reg_CP_DIV_RESULT (*(REGType64v *)REG_DIV_RESULT_ADDR) + +#define REG_DIVREM_RESULT_OFFSET 0x2A8 +#define REG_DIVREM_RESULT_ADDR (HW_REG_BASE + REG_DIVREM_RESULT_OFFSET) +#define reg_CP_DIVREM_RESULT (*(REGType64v *)REG_DIVREM_RESULT_ADDR) + +#define REG_SQRTCNT_OFFSET 0x2B0 +#define REG_SQRTCNT_ADDR (HW_REG_BASE + REG_SQRTCNT_OFFSET) +#define reg_CP_SQRTCNT (*(REGType16v *)REG_SQRTCNT_ADDR) + +#define REG_SQRT_RESULT_OFFSET 0x2B4 +#define REG_SQRT_RESULT_ADDR (HW_REG_BASE + REG_SQRT_RESULT_OFFSET) +#define reg_CP_SQRT_RESULT (*(REGType32v *)REG_SQRT_RESULT_ADDR) + +#define REG_SQRT_PARAM_OFFSET 0x2B8 +#define REG_SQRT_PARAM_ADDR (HW_REG_BASE + REG_SQRT_PARAM_OFFSET) +#define reg_CP_SQRT_PARAM (*(REGType64v *)REG_SQRT_PARAM_ADDR) + +#define REG_GXSTAT_OFFSET 0x600 +#define REG_GXSTAT_ADDR (HW_REG_BASE + REG_GXSTAT_OFFSET) +#define reg_G3X_GXSTAT (*(REGType32v *)REG_GXSTAT_ADDR) + +#endif //POKEDIAMOND_REGISTERS_H diff --git a/arm9/lib/src/FX_cp.c b/arm9/lib/src/FX_cp.c index 2ca9d720..08443dc8 100644 --- a/arm9/lib/src/FX_cp.c +++ b/arm9/lib/src/FX_cp.c @@ -16,8 +16,8 @@ ARM_FUNC fx32 FX_Inv(fx32 x){ ARM_FUNC fx32 FX_Sqrt(fx32 x){ if (x > 0) { - SETREG16(HW_REG_SQRTCNT, 0x1); - SETREG64(HW_REG_SQRT_PARAM, (fx64)x << 32); + reg_CP_SQRTCNT = 0x1; + reg_CP_SQRT_PARAM = (fx64)x << 32; return FX_GetSqrtResult(); } else @@ -27,44 +27,44 @@ ARM_FUNC fx32 FX_Sqrt(fx32 x){ } ARM_FUNC fx64c FX_GetDivResultFx64c(){ - while (READREG16(HW_REG_DIVCNT) & 0x8000); - return READREG64(HW_REG_DIV_RESULT); + while (reg_CP_DIVCNT & 0x8000); + return reg_CP_DIV_RESULT; } ARM_FUNC fx32 FX_GetDivResult(){ - while (READREG16(HW_REG_DIVCNT) & 0x8000); - return (READREG64(HW_REG_DIV_RESULT) + (1 << (0x14 - 1))) >> 0x14; + while (reg_CP_DIVCNT & 0x8000); + return (reg_CP_DIV_RESULT + (1 << (0x14 - 1))) >> 0x14; } ARM_FUNC void FX_InvAsync(fx32 x){ - SETREG16(HW_REG_DIVCNT, 0x1); - SETREG64(HW_REG_DIV_NUMER, (fx64)0x00001000 << 32); - SETREG64(HW_REG_DIV_DENOM, (u32)x); + reg_CP_DIVCNT = 0x1; + reg_CP_DIV_NUMER = (fx64)0x00001000 << 32; + reg_CP_DIV_DENOM = (u32)x; } ARM_FUNC fx32 FX_GetSqrtResult(){ - while (READREG16(HW_REG_SQRTCNT) & 0x8000); - return (READREG32(HW_REG_SQRT_RESULT) + (1 << (0xA - 1))) >> 0xA; + while (reg_CP_SQRTCNT & 0x8000); + return (reg_CP_SQRT_RESULT + (1 << (0xA - 1))) >> 0xA; } ARM_FUNC void FX_DivAsync(fx32 numerator, fx32 denominator){ - SETREG16(HW_REG_DIVCNT, 0x1); - SETREG64(HW_REG_DIV_NUMER, (fx64)numerator << 32); - SETREG64(HW_REG_DIV_DENOM, (u32)denominator); + reg_CP_DIVCNT = 0x1; + reg_CP_DIV_NUMER = (fx64)numerator << 32; + reg_CP_DIV_DENOM = (u32)denominator; } ARM_FUNC fx32 FX_DivS32(fx32 numerator, fx32 denominator){ - SETREG16(HW_REG_DIVCNT, 0x0); - SETREG32(HW_REG_DIV_NUMER, (u32)numerator); //32bit write for some reason - SETREG64(HW_REG_DIV_DENOM, (u32)denominator); - while (READREG16(HW_REG_DIVCNT) & 0x8000); - return READREG32(HW_REG_DIV_RESULT); + reg_CP_DIVCNT = 0x0; + *(REGType32 *)REG_DIV_NUMER_ADDR = (u32)numerator; //32bit write for some reason + reg_CP_DIV_DENOM = (u32)denominator; + while (reg_CP_DIVCNT & 0x8000); + return *(REGType32 *)REG_DIV_RESULT_ADDR; } ARM_FUNC fx32 FX_ModS32(fx32 num, fx32 mod){ - SETREG16(HW_REG_DIVCNT, 0x0); - SETREG32(HW_REG_DIV_NUMER, (u32)num); //32bit write for some reason - SETREG64(HW_REG_DIV_DENOM, (u32)mod); - while (READREG16(HW_REG_DIVCNT) & 0x8000); - return READREG32(HW_REG_DIVREM_RESULT); + reg_CP_DIVCNT = 0x0; + *(REGType32 *)REG_DIV_NUMER_ADDR = (u32)num; //32bit write for some reason + reg_CP_DIV_DENOM = (u32)mod; + while (reg_CP_DIVCNT & 0x8000); + return *(REGType32 *)REG_DIVREM_RESULT_ADDR; } diff --git a/arm9/lib/src/FX_vec.c b/arm9/lib/src/FX_vec.c index af36fe89..95805f33 100644 --- a/arm9/lib/src/FX_vec.c +++ b/arm9/lib/src/FX_vec.c @@ -55,10 +55,10 @@ ARM_FUNC fx32 VEC_Mag(struct Vecx32 *a){ fx64 l2 = (fx64)a->x * a->x; l2 += (fx64)a->y * a->y; l2 += (fx64)a->z * a->z; - SETREG16(HW_REG_SQRTCNT, 0x1); - SETREG64(HW_REG_SQRT_PARAM, l2 * 4); - while (READREG16(HW_REG_SQRTCNT) & 0x8000); //wait for coprocessor to finish - return ((fx32)READREG32(HW_REG_SQRT_RESULT) + 1) >> 1; + reg_CP_SQRTCNT = 0x1; + reg_CP_SQRT_PARAM = l2 * 4; + while (reg_CP_SQRTCNT & 0x8000); //wait for coprocessor to finish + return ((fx32)reg_CP_SQRT_RESULT + 1) >> 1; } ARM_FUNC void VEC_Normalize(struct Vecx32 *a, struct Vecx32 *dst){ @@ -66,15 +66,15 @@ ARM_FUNC void VEC_Normalize(struct Vecx32 *a, struct Vecx32 *dst){ l2 += (fx64)a->y * a->y; l2 += (fx64)a->z * a->z; //1/sqrt(l) is computed by calculating sqrt(l)*(1/l) - SETREG16(HW_REG_DIVCNT, 0x2); - SETREG64(HW_REG_DIV_NUMER, 0x0100000000000000); - SETREG64(HW_REG_DIV_DENOM, l2); - SETREG16(HW_REG_SQRTCNT, 0x1); - SETREG64(HW_REG_SQRT_PARAM, l2 * 4); - while (READREG16(HW_REG_SQRTCNT) & 0x8000); //wait for sqrt to finish - fx32 sqrtresult = READREG32(HW_REG_SQRT_RESULT); - while (READREG16(HW_REG_DIVCNT) & 0x8000); //wait for division to finish - l2 = READREG64(HW_REG_DIV_RESULT); + reg_CP_DIVCNT = 0x2; + reg_CP_DIV_NUMER = 0x0100000000000000; + reg_CP_DIV_DENOM = l2; + reg_CP_SQRTCNT = 0x1; + reg_CP_SQRT_PARAM = l2 * 4; + while (reg_CP_SQRTCNT & 0x8000); //wait for sqrt to finish + fx32 sqrtresult = reg_CP_SQRT_RESULT; + while (reg_CP_DIVCNT & 0x8000); //wait for division to finish + l2 = reg_CP_DIV_RESULT; l2 = sqrtresult * l2; dst->x = (l2 * a->x + (1LL << (0x2D - 1))) >> 0x2D; dst->y = (l2 * a->y + (1LL << (0x2D - 1))) >> 0x2D; @@ -86,15 +86,15 @@ ARM_FUNC void VEC_Fx16Normalize(struct Vecx16 *a, struct Vecx16 *dst){ l2 += a->y * a->y; l2 += a->z * a->z; //1/sqrt(l) is computed by calculating sqrt(l)*(1/l) - SETREG16(HW_REG_DIVCNT, 0x2); - SETREG64(HW_REG_DIV_NUMER, 0x0100000000000000); - SETREG64(HW_REG_DIV_DENOM, l2); - SETREG16(HW_REG_SQRTCNT, 0x1); - SETREG64(HW_REG_SQRT_PARAM, l2 * 4); - while (READREG16(HW_REG_SQRTCNT) & 0x8000); //wait for sqrt to finish - fx32 sqrtresult = READREG32(HW_REG_SQRT_RESULT); - while (READREG16(HW_REG_DIVCNT) & 0x8000); //wait for division to finish - l2 = READREG64(HW_REG_DIV_RESULT); + reg_CP_DIVCNT = 0x2; + reg_CP_DIV_NUMER = 0x0100000000000000; + reg_CP_DIV_DENOM = l2; + reg_CP_SQRTCNT = 0x1; + reg_CP_SQRT_PARAM = l2 * 4; + while (reg_CP_SQRTCNT & 0x8000); //wait for sqrt to finish + fx32 sqrtresult = reg_CP_SQRT_RESULT; + while (reg_CP_DIVCNT & 0x8000); //wait for division to finish + l2 = reg_CP_DIV_RESULT; l2 = sqrtresult * l2; dst->x = (l2 * a->x + (1LL << (0x2D - 1))) >> 0x2D; dst->y = (l2 * a->y + (1LL << (0x2D - 1))) >> 0x2D; diff --git a/arm9/lib/src/OS_arena.c b/arm9/lib/src/OS_arena.c index eb04e60b..ae05b49c 100644 --- a/arm9/lib/src/OS_arena.c +++ b/arm9/lib/src/OS_arena.c @@ -5,8 +5,8 @@ #include "consts.h"
#include "OS_arena.h"
#include "OS_protectionRegion.h"
+#include "OS_emulator.h"
-extern u32 OS_GetConsoleType();
extern BOOL OSi_MainExArenaEnabled;
extern BOOL OSi_Initialized; // TODO: located at 0x021d36f0
void SDK_MAIN_ARENA_LO(); // TODO: technically this should be defined in the lcf
diff --git a/arm9/lib/src/OS_emulator.c b/arm9/lib/src/OS_emulator.c new file mode 100644 index 00000000..1be0e163 --- /dev/null +++ b/arm9/lib/src/OS_emulator.c @@ -0,0 +1,18 @@ +// +// Created by red031000 on 2020-05-05. +// + +#include "OS_emulator.h" +#include "function_target.h" + +extern u32 OSi_ConsoleTypeCache; //todo fix bss + +ARM_FUNC BOOL OS_IsRunOnEmulator() { + return FALSE; +} + +ARM_FUNC u32 OS_GetConsoleType() { + OSi_ConsoleTypeCache = OS_CONSOLE_NITRO | OS_CONSOLE_DEV_CARD | OS_CONSOLE_SIZE_4MB; + + return OSi_ConsoleTypeCache; +} diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c index 90b01ffa..7467c672 100644 --- a/arm9/lib/src/OS_init.c +++ b/arm9/lib/src/OS_init.c @@ -7,14 +7,12 @@ extern void PXI_Init(); extern void OS_InitLock(); -extern void OS_InitIrqTable(); extern void OS_SetIrqStackChecker(); extern void OS_InitException(); extern void MI_Init(); extern void OS_InitVAlarm(); extern void OSi_InitVramExclusive(); extern void OS_InitThread(); -extern void OS_InitReset(); extern void CTRDG_Init(); extern void CARD_Init(); extern void PM_Init(); diff --git a/arm9/lib/src/OS_interrupt.c b/arm9/lib/src/OS_interrupt.c new file mode 100644 index 00000000..f7a6d005 --- /dev/null +++ b/arm9/lib/src/OS_interrupt.c @@ -0,0 +1,79 @@ +// +// Created by red031000 on 2020-05-07. +// + +#include "consts.h" +#include "function_target.h" +#include "OS_interrupt.h" +#include "OS_thread.h" + +#pragma optimize_for_size on + +extern OSThreadQueue OSi_IrqThreadQueue; +extern OSIrqMask OS_EnableIrqMask(OSIrqMask intr); + +ARM_FUNC void OS_InitIrqTable() { + OS_InitThreadQueue(&OSi_IrqThreadQueue); +} + +ARM_FUNC void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function) { + s32 i; + OSIrqCallbackInfo *info; + + for (i = 0; i < 0x16; i++) { + if (intrBit & 1) { + info = NULL; + + if (8 <= i && i <= 11) { + info = &OSi_IrqCallbackInfo[i - 8]; + } + else if (3 <= i && i <= 6) { + info = &OSi_IrqCallbackInfo[i - 3 + 4]; + } + else { + OS_IRQTable[i] = function; + } + + if (info) { + info->func = (void (*)(void *))function; + info->arg = 0; + info->enable = TRUE; + } + } + intrBit >>= 1; + } +} + +ARM_FUNC OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit) { + s32 i = 0; + OSIrqFunction *funcPtr = &OS_IRQTable[0]; + + do { + if (intrBit & 1) + { + if (8 <= i && i <= 11) { + i = i - 8; + return (void (*)(void))OSi_IrqCallbackInfo[i].func; + } + else if (3 <= i && i <= 6) { + i++; + return (void (*)(void))OSi_IrqCallbackInfo[i].func; + } + + return *funcPtr; + } + intrBit >>= 1; + funcPtr++; + i++; + } while (i < 0x16); + return 0; +} + +ARM_FUNC void OSi_EnterDmaCallback(u32 dmaNo, void (*callback) (void *), void *arg) +{ + OSIrqMask mask = 1UL << (dmaNo + 8); + OSi_IrqCallbackInfo[dmaNo].func = callback; + OSi_IrqCallbackInfo[dmaNo].arg = arg; + + OSi_IrqCallbackInfo[dmaNo].enable = OS_EnableIrqMask(mask) & mask; +} diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c new file mode 100644 index 00000000..28d815a9 --- /dev/null +++ b/arm9/lib/src/OS_reset.c @@ -0,0 +1,63 @@ +// +// Created by red031000 on 2020-05-06. +// + +#include "function_target.h" +#include "OS_reset.h" +#include "MB_mb.h" +#include "OS_terminate_proc.h" + +extern u16 OSi_IsInitReset; +extern vu16 OSi_IsResetOccurred; +extern void PXI_Init(); +extern u32 PXI_IsCallbackReady(u32 param1, u32 param2); +extern void PXI_SetFifoRecvCallback(u32 param1, void* callback); +extern u32 PXI_SendWordByFifo(u32 param1, u32 data, u32 param2); +extern void CARD_LockRom(u16 lockId); +extern u32 OS_GetLockID(); +extern void MI_StopDma(u32 dma); +extern void OS_SetIrqMask(u32 mask); +extern void OS_ResetRequestIrqMask(u32 mask); +extern void OSi_DoResetSystem(); //in itcm, should technically be in this file + +ARM_FUNC void OS_InitReset() { + if (OSi_IsInitReset) { + return; + } + OSi_IsInitReset = TRUE; + PXI_Init(); + while (!PXI_IsCallbackReady(PXI_FIFO_TAG_OS, PXI_PROC_ARM7)) { } + + PXI_SetFifoRecvCallback(PXI_FIFO_TAG_OS, OSi_CommonCallback); +} + +ARM_FUNC static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err) { +#pragma unused(tag, err) //needed because otherwise -W all errors + u16 command = (u16)((data & OS_PXI_COMMAND_MASK) >> OS_PXI_COMMAND_SHIFT); + if (command == OS_PXI_COMMAND_RESET) + { + OSi_IsResetOccurred = TRUE; + return; + } + OS_Terminate(); +} + +ARM_FUNC static void OSi_SendToPxi(u16 data) { + while (PXI_SendWordByFifo(PXI_FIFO_TAG_OS, (u32)data << 0x8, FALSE)) {} +} + +ARM_FUNC void OS_ResetSystem(u32 parameter) { + if (MB_IsMultiBootChild()) { + OS_Terminate(); + } + CARD_LockRom((u16)OS_GetLockID()); + MI_StopDma(0); + MI_StopDma(1); + MI_StopDma(2); + MI_StopDma(3); + OS_SetIrqMask(0x40000); + OS_ResetRequestIrqMask((u32)~0); + *(u32 *)HW_RESET_PARAMETER_BUF = parameter; + OSi_SendToPxi(OS_PXI_COMMAND_RESET); + OSi_DoResetSystem(); //oh boy this is in itcm, that's gonna be fun to deal with Kappa +} diff --git a/arm9/lib/src/OS_system.c b/arm9/lib/src/OS_system.c index c2b08681..e5dfcb47 100644 --- a/arm9/lib/src/OS_system.c +++ b/arm9/lib/src/OS_system.c @@ -2,7 +2,6 @@ // Created by mart on 4/23/20. // -#include "function_target.h" #include "OS_system.h" ARM_FUNC asm OSIntrMode OS_EnableInterrupts() { diff --git a/arm9/lib/src/OS_tcm.c b/arm9/lib/src/OS_tcm.c new file mode 100644 index 00000000..5a168c58 --- /dev/null +++ b/arm9/lib/src/OS_tcm.c @@ -0,0 +1,13 @@ +// +// Created by red031000 on 2020-05-05. +// + +#include "OS_tcm.h" +#include "function_target.h" + +ARM_FUNC asm u32 OS_GetDTCMAddress() { + mrc p15, 0x0, r0, c9, c1, 0x0 + ldr r1, =OSi_TCM_REGION_BASE_MASK + and r0, r0, r1 + bx lr +} diff --git a/arm9/lib/src/OS_terminate_proc.c b/arm9/lib/src/OS_terminate_proc.c new file mode 100644 index 00000000..eb267c6b --- /dev/null +++ b/arm9/lib/src/OS_terminate_proc.c @@ -0,0 +1,21 @@ +// +// Created by red031000 on 2020-05-07. +// + +#include "types.h" +#include "OS_terminate_proc.h" +#include "function_target.h" +#include "OS_system.h" + +ARM_FUNC void OS_Terminate() { + while (TRUE) { + (void)OS_DisableInterrupts(); + OS_Halt(); + } +} + +ARM_FUNC asm void OS_Halt() { + mov r0, #0x0 + mcr p15, 0x0, r0, c7, c0, 0x4 + bx lr +} diff --git a/arm9/macros.lcf.inc b/arm9/macros.lcf.inc index f72f93fa..f58c2432 100644 --- a/arm9/macros.lcf.inc +++ b/arm9/macros.lcf.inc @@ -1,15 +1,9 @@ -#define OVERLAY_TABLE(module, number) \ -WRITEW number; \ -WRITEW module##_START; \ -WRITEW module##_SIZE; \ -WRITEW module##_BSSSIZE; \ -WRITEW module##_STATIC_INIT_START; \ -WRITEW module##_STATIC_INIT_END; \ -WRITEW number; \ +#define OVERLAY_TABLE(module, number) \ +WRITEW number; \ +WRITEW SDK_OVERLAY_##module##_START; \ +WRITEW SDK_OVERLAY_##module##_SIZE; \ +WRITEW SDK_OVERLAY_##module##_BSSSIZE; \ +WRITEW SDK_OVERLAY_##module##_STATIC_INIT_START; \ +WRITEW SDK_OVERLAY_##module##_STATIC_INIT_END; \ +WRITEW number; \ WRITEW 0; - -#define OVERLAY_FILE(number, offset, filename) \ -.MODULE.##number : AT (offset) { \ - . = ALIGN(512); \ - filename (.text) \ -} > MODULE_##number diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s index 70f9f9c2..e8a42167 100644 --- a/arm9/modules/03/asm/module_03_dummy.s +++ b/arm9/modules/03/asm/module_03_dummy.s @@ -1,4 +1,2 @@ .section .data .space 32 - .section .bss - .space 32 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index e4c836c6..085ce35d 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -61,9 +61,9 @@ _021D752C: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7564 - ldr r0, _021D7678 ; =0x00000006 + ldr r0, _021D7678 ; =SDK_OVERLAY_MODULE_06_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay _021D7564: ldr r2, [r4, #0x70] mov r0, #3 @@ -174,7 +174,7 @@ _021D7666: .balign 4, 0 _021D7670: .word 0x04000050 _021D7674: .word 0x04001050 -_021D7678: .word 0x00000006 +_021D7678: .word SDK_OVERLAY_MODULE_06_ID thumb_func_start MOD05_021D767C MOD05_021D767C: ; 0x021D767C @@ -367,8 +367,8 @@ _021D7806: lsl r0, r0, #8 lsr r0, r0, #0x1c beq _021D7856 - ldr r0, _021D7860 ; =0x00000006 - bl FUN_02005F60 + ldr r0, _021D7860 ; =SDK_OVERLAY_MODULE_06_ID + bl UnloadOverlayByID _021D7856: mov r0, #1 pop {r3, r4, r5, pc} @@ -376,7 +376,7 @@ _021D785A: mov r0, #0 pop {r3, r4, r5, pc} nop -_021D7860: .word 0x00000006 +_021D7860: .word SDK_OVERLAY_MODULE_06_ID thumb_func_start MOD05_021D7864 MOD05_021D7864: ; 0x021D7864 @@ -9485,16 +9485,16 @@ _021DBE9C: .word 0x02050E2D MOD05_021DBEA0: ; 0x021DBEA0 push {r4, lr} add r4, r0, #0 - ldr r0, _021DBEB8 ; =0x00000033 + ldr r0, _021DBEB8 ; =SDK_OVERLAY_MODULE_51_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay add r0, r4, #0 bl FUN_02254A68 add r4, #0x80 str r0, [r4] pop {r4, pc} .balign 4, 0 -_021DBEB8: .word 0x00000033 +_021DBEB8: .word SDK_OVERLAY_MODULE_51_ID thumb_func_start MOD05_021DBEBC MOD05_021DBEBC: ; 0x021DBEBC @@ -9516,11 +9516,11 @@ MOD05_021DBECC: ; 0x021DBECC add r0, #0x80 ldr r0, [r0] bl FUN_02254AB8 - ldr r0, _021DBEE0 ; =0x00000033 - bl FUN_02005F60 + ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID + bl UnloadOverlayByID pop {r3, pc} nop -_021DBEE0: .word 0x00000033 +_021DBEE0: .word SDK_OVERLAY_MODULE_51_ID thumb_func_start MOD05_021DBEE4 MOD05_021DBEE4: ; 0x021DBEE4 @@ -24576,11 +24576,11 @@ _021E33A0: ldr r0, [r5, #0xc] bl FUN_0204C1A8 add r6, r0, #0 - ldr r0, _021E341C ; =0x00000013 - bl FUN_02005F60 - ldr r0, _021E3420 ; =0x00000014 + ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID + bl UnloadOverlayByID + ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay add r0, r6, #0 bl FUN_0204BEB8 mov r0, #1 @@ -24624,8 +24624,8 @@ _021E3414: add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021E341C: .word 0x00000013 -_021E3420: .word 0x00000014 +_021E341C: .word SDK_OVERLAY_MODULE_19_ID +_021E3420: .word SDK_OVERLAY_MODULE_20_ID thumb_func_start MOD05_021E3424 MOD05_021E3424: ; 0x021E3424 @@ -50085,9 +50085,9 @@ MOD05_021EFAAC: ; 0x021EFAAC bl FUN_0205F1E4 cmp r0, #0 bne _021EFAF8 - ldr r0, _021EFB0C ; =0x00000014 + ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay mov r0, #1 bl FUN_0200A03C str r0, [sp] @@ -50100,16 +50100,16 @@ MOD05_021EFAAC: ; 0x021EFAAC add sp, #4 pop {r3, r4, r5, r6, pc} _021EFAF8: - ldr r0, _021EFB10 ; =0x00000013 + ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay ldr r0, [r5, #8] bl FUN_02252440 add sp, #4 pop {r3, r4, r5, r6, pc} nop -_021EFB0C: .word 0x00000014 -_021EFB10: .word 0x00000013 +_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID +_021EFB10: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFB14 MOD05_021EFB14: ; 0x021EFB14 @@ -50165,8 +50165,8 @@ MOD05_021EFB50: ; 0x021EFB50 ldr r0, [r5, #4] mov r1, #0 str r1, [r0, #0x14] - ldr r0, _021EFBAC ; =0x00000014 - bl FUN_02005F60 + ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID + bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} _021EFB94: @@ -50174,29 +50174,29 @@ _021EFB94: bl FUN_02252504 cmp r0, #0 beq _021EFBA8 - ldr r0, _021EFBB0 ; =0x00000013 - bl FUN_02005F60 + ldr r0, _021EFBB0 ; =SDK_OVERLAY_MODULE_19_ID + bl UnloadOverlayByID mov r0, #1 pop {r4, r5, r6, pc} _021EFBA8: mov r0, #0 pop {r4, r5, r6, pc} .balign 4, 0 -_021EFBAC: .word 0x00000014 -_021EFBB0: .word 0x00000013 +_021EFBAC: .word SDK_OVERLAY_MODULE_20_ID +_021EFBB0: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFBB4 MOD05_021EFBB4: ; 0x021EFBB4 push {r4, lr} add r4, r0, #0 - ldr r0, _021EFBC8 ; =0x00000013 + ldr r0, _021EFBC8 ; =SDK_OVERLAY_MODULE_19_ID mov r1, #2 - bl FUN_02005FDC + bl HandleLoadOverlay ldr r0, [r4, #8] bl FUN_02252440 pop {r4, pc} .balign 4, 0 -_021EFBC8: .word 0x00000013 +_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFBCC MOD05_021EFBCC: ; 0x021EFBCC @@ -50213,15 +50213,15 @@ MOD05_021EFBD8: ; 0x021EFBD8 bl FUN_02252504 cmp r0, #0 beq _021EFBEE - ldr r0, _021EFBF4 ; =0x00000013 - bl FUN_02005F60 + ldr r0, _021EFBF4 ; =SDK_OVERLAY_MODULE_19_ID + bl UnloadOverlayByID mov r0, #1 pop {r3, pc} _021EFBEE: mov r0, #0 pop {r3, pc} nop -_021EFBF4: .word 0x00000013 +_021EFBF4: .word SDK_OVERLAY_MODULE_19_ID thumb_func_start MOD05_021EFBF8 MOD05_021EFBF8: ; 0x021EFBF8 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 7f7ae7cf..8288a770 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -128,8 +128,8 @@ _0222D6AC: bl MOD11_0222FC38
cmp r0, #1
bne _0222D6D2
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #7
str r0, [r4]
mov r0, #0x3d
@@ -147,9 +147,9 @@ _0222D6D4: str r0, [r4]
b _0222D7EA
_0222D6DA:
- ldr r0, _0222D7F4 ; =0x00000008
+ ldr r0, _0222D7F4 ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r6, #0
bl MOD11_0222DB50
mov r0, #9
@@ -184,8 +184,8 @@ _0222D720: bl MOD11_0222FE58
cmp r0, #1
bne _0222D7EA
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #5
bl FUN_020168D0
mov r0, #0x3e
@@ -279,8 +279,8 @@ _0222D7EA: add sp, #0x28
pop {r4, r5, r6, pc}
.align 2, 0
-_0222D7F0: .word 0x00000007
-_0222D7F4: .word 0x00000008
+_0222D7F0: .word SDK_OVERLAY_MODULE_07_ID
+_0222D7F4: .word SDK_OVERLAY_MODULE_08_ID
thumb_func_start MOD11_0222D7F8
MOD11_0222D7F8: ; 0x0222D7F8
@@ -302,16 +302,16 @@ MOD11_0222D7F8: ; 0x0222D7F8 add r0, r4, #0
mov r1, #3
bl MOD11_02231338
- ldr r0, _0222D838 ; =0x00000008
- bl FUN_02005F60
- ldr r0, _0222D83C ; =0x00000009
+ ldr r0, _0222D838 ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D83C ; =SDK_OVERLAY_MODULE_09_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
pop {r4, pc}
.align 2, 0
_0222D834: .word 0x000023FB
-_0222D838: .word 0x00000008
-_0222D83C: .word 0x00000009
+_0222D838: .word SDK_OVERLAY_MODULE_08_ID
+_0222D83C: .word SDK_OVERLAY_MODULE_09_ID
thumb_func_start MOD11_0222D840
MOD11_0222D840: ; 0x0222D840
@@ -349,11 +349,11 @@ MOD11_0222D840: ; 0x0222D840 MOD11_0222D88C: ; 0x0222D88C
push {r3, r4, r5, lr}
add r4, r0, #0
- ldr r0, _0222D938 ; =0x00000009
- bl FUN_02005F60
- ldr r0, _0222D93C ; =0x00000008
+ ldr r0, _0222D938 ; =SDK_OVERLAY_MODULE_09_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D93C ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r4, #0
mov r1, #0
bl MOD11_02231338
@@ -363,7 +363,7 @@ MOD11_0222D88C: ; 0x0222D88C add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02031190
add r1, r0, #0
add r0, r4, #0
@@ -415,8 +415,8 @@ MOD11_0222D88C: ; 0x0222D88C bl FUN_02008D24
pop {r3, r4, r5, pc}
.align 2, 0
-_0222D938: .word 0x00000009
-_0222D93C: .word 0x00000008
+_0222D938: .word SDK_OVERLAY_MODULE_09_ID
+_0222D93C: .word SDK_OVERLAY_MODULE_08_ID
_0222D940: .word 0x000023FB
thumb_func_start MOD11_0222D944
@@ -663,14 +663,14 @@ MOD11_0222DB50: ; 0x0222DB50 add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02022300
add r5, r0, #0
bl FUN_020222F8
add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_0201B9D4
ldr r1, _0222DF0C ; =0x00002430
str r0, [r4, r1]
@@ -915,14 +915,14 @@ _0222DC42: ldr r1, _0222DF24 ; =0x00002224
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4, #0x28]
mov r1, #2
bl FUN_020031FC
ldr r1, _0222DF28 ; =0x00002304
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl MOD11_02230C68
mov r1, #0
@@ -1396,13 +1396,13 @@ _0222E220: bl FUN_0201C350
add r0, r4, #0
bl FUN_02016A18
- ldr r0, _0222E25C ; =0x00000008
- bl FUN_02005F60
+ ldr r0, _0222E25C ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
bl FUN_02033590
cmp r0, #0
bne _0222E244
- ldr r0, _0222E260 ; =0x00000010
- bl FUN_02005F60
+ ldr r0, _0222E260 ; =SDK_OVERLAY_MODULE_16_ID
+ bl UnloadOverlayByID
_0222E244:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -1411,8 +1411,8 @@ _0222E24C: .word 0x00002410 _0222E250: .word 0x000023F9
_0222E254: .word 0x00002430
_0222E258: .word 0x00000704
-_0222E25C: .word 0x00000008
-_0222E260: .word 0x00000010
+_0222E25C: .word SDK_OVERLAY_MODULE_08_ID
+_0222E260: .word SDK_OVERLAY_MODULE_16_ID
thumb_func_start MOD11_0222E264
MOD11_0222E264: ; 0x0222E264
@@ -1440,25 +1440,25 @@ _0222E282: mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r6, _0222E454 ; =0x0225D9A8
add r3, sp, #0x10
add r2, r3, #0
@@ -3032,13 +3032,13 @@ MOD11_0222EF50: ; 0x0222EF50 add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0
ldr r2, _0222EFC8 ; =0x00007FFF
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0222EFCC ; =0xBFFF0000
ldr r0, _0222EFD0 ; =0x04000580
str r1, [r0]
@@ -3384,13 +3384,13 @@ MOD11_0222F284: ; 0x0222F284 bl FUN_02033590
cmp r0, #0
bne _0222F296
- ldr r0, _0222F298 ; =0x00000010
+ ldr r0, _0222F298 ; =SDK_OVERLAY_MODULE_16_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
_0222F296:
pop {r3, pc}
.align 2, 0
-_0222F298: .word 0x00000010
+_0222F298: .word SDK_OVERLAY_MODULE_16_ID
thumb_func_start MOD11_0222F29C
MOD11_0222F29C: ; 0x0222F29C
@@ -3454,31 +3454,31 @@ _0222F30E: mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #5
mov r2, #2
mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r6, _0222F4CC ; =0x0225D9B8
add r3, sp, #0x30
add r2, r3, #0
@@ -4229,7 +4229,7 @@ MOD11_0222F988: ; 0x0222F988 ldr r2, _0222FAB4 ; =0x00002444
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
add r1, r6, #0
bl MOD11_0222E520
@@ -4244,9 +4244,9 @@ _0222F9C6: mov r0, #0
pop {r4, r5, r6, pc}
_0222F9CA:
- ldr r0, _0222FAB8 ; =0x00000007
+ ldr r0, _0222FAB8 ; =SDK_OVERLAY_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4263,7 +4263,7 @@ _0222F9DE: ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0
bl FUN_020313CC
cmp r0, #3
@@ -4363,7 +4363,7 @@ _0222FAA4: pop {r4, r5, r6, pc}
nop
_0222FAB4: .word 0x00002444
-_0222FAB8: .word 0x00000007
+_0222FAB8: .word SDK_OVERLAY_MODULE_07_ID
thumb_func_start MOD11_0222FABC
MOD11_0222FABC: ; 0x0222FABC
@@ -4435,7 +4435,7 @@ _0222FB2E: ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4612,9 +4612,9 @@ _0222FCA2: mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0222FCA8:
- ldr r0, _0222FE54 ; =0x00000007
+ ldr r0, _0222FE54 ; =SDK_OVERLAY_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r0, #5
mov r1, #0x2c
bl FUN_02016998
@@ -4625,7 +4625,7 @@ _0222FCA8: mov r0, #0
add r1, r6, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r7, [r6]
ldr r0, [r7, #0x14]
cmp r0, #5
@@ -4818,7 +4818,7 @@ _0222FE48: add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_0222FE54: .word 0x00000007
+_0222FE54: .word SDK_OVERLAY_MODULE_07_ID
thumb_func_start MOD11_0222FE58
MOD11_0222FE58: ; 0x0222FE58
@@ -6514,7 +6514,7 @@ _02230AA2: mul r1, r0
add r0, r1, #0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x20]
cmp r0, #0
bne _02230AC2
@@ -6686,7 +6686,7 @@ _02230BFC: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #8]
_02230C28:
ldr r0, [sp, #0x18]
@@ -7242,7 +7242,7 @@ MOD11_02230FCC: ; 0x02230FCC ldr r0, _02231224 ; =0x06010000
ldr r1, [r4, r1]
lsl r2, r2, #0x10
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x22
lsl r0, r0, #4
ldr r5, [r4, r0]
@@ -7252,7 +7252,7 @@ MOD11_02230FCC: ; 0x02230FCC mov r2, #2
add r1, r5, #0
lsl r2, r2, #8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x19
lsl r0, r0, #0x16
str r0, [sp, #0x24]
@@ -11434,7 +11434,7 @@ _02232FB4: ldr r1, [r5, r1]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_02233040:
@@ -11456,7 +11456,7 @@ _02233040: add r0, #0xa
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_0223306E:
@@ -11497,7 +11497,7 @@ _02233094: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
add sp, #0x1c
str r0, [r5, r1]
@@ -12655,7 +12655,7 @@ _022339C6: ldrb r0, [r2, r0]
mul r0, r1
mov r1, #7
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
ldr r1, [sp]
lsr r0, r0, #0x10
@@ -12664,7 +12664,7 @@ _022339C6: lsr r4, r0, #1
ldr r1, [sp, #4]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -12680,7 +12680,7 @@ _022339C6: _02233A1E:
ldr r1, [sp]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0xa0
str r0, [r1]
@@ -12695,7 +12695,7 @@ _02233A1E: b _02233A6A
_02233A3E:
ldr r1, [sp, #4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -13311,7 +13311,7 @@ _02233EEA: _02233EF4:
ldr r0, [r4]
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _02233F42
_02233F00:
@@ -14219,7 +14219,7 @@ _022345FE: b _02234648
_02234606:
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234648
_02234610:
@@ -14442,7 +14442,7 @@ MOD11_022347B0: ; 0x022347B0 add r6, r0, #0
bl FUN_0201B9EC
add r1, r4, #1
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4d
add r1, r6, r1
lsl r0, r0, #2
@@ -14548,7 +14548,7 @@ _02234890: _0223489A:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _022348F6
_022348A6:
@@ -14709,7 +14709,7 @@ _022349C0: _022349CA:
ldr r0, [sp, #0xc]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234A26
_022349D6:
@@ -15703,7 +15703,7 @@ _0223519E: _022351A0:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
@@ -16388,7 +16388,7 @@ _022356AA: lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _0223572C
ldr r1, [r4, #0x64]
@@ -16476,7 +16476,7 @@ _02235784: lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _022357DA
ldr r1, [r4, #0x64]
@@ -16623,7 +16623,7 @@ _022358DE: _022358E0:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
cmp r0, #0
bne _022358F0
@@ -16802,7 +16802,7 @@ MOD11_02235A2C: ; 0x02235A2C _02235A3C:
bl FUN_0201B9EC
ldr r1, _02235A80 ; =0x000001D3
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
ldr r1, [r6, #0x64]
lsl r0, r0, #0x10
@@ -17258,7 +17258,7 @@ _02235D7E: add r5, r2, #0
mul r5, r1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, r5]
mov r0, #0x38
bic r2, r0
@@ -18521,7 +18521,7 @@ _022367DE: _022367EA:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0xc]
add r5, r1, #0
add r5, r5, r0
@@ -19867,7 +19867,7 @@ MOD11_02237290: ; 0x02237290 bne _0223731C
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0223732C ; =0x00003120
strb r1, [r4, r0]
ldrb r1, [r4, r0]
@@ -20322,7 +20322,7 @@ MOD11_02237584: ; 0x02237584 mov r0, #0x28
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237668 ; =0x00002154
add r0, #0x1e
str r0, [r4, r1]
@@ -20331,7 +20331,7 @@ MOD11_02237584: ; 0x02237584 mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #1
ldr r0, _0223766C ; =0x00002160
str r1, [r4, r0]
@@ -20496,7 +20496,7 @@ MOD11_022376D0: ; 0x022376D0 mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r5, r4]
b _022377AC
_022377A4:
@@ -20701,7 +20701,7 @@ _02237900: str r2, [r5, r1]
lsl r0, r4, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
add r0, r0, #2
ldr r2, [r5, r1]
@@ -20723,12 +20723,12 @@ _02237900: add r1, r0, #0
ldr r0, _02237AB0 ; =0x00002144
ldr r0, [r5, r0]
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
@@ -20753,7 +20753,7 @@ _02237900: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
_022379CC:
@@ -21220,7 +21220,7 @@ _02237D8A: beq _02237DA8
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #1
add r0, sp, #0x18
ldrh r2, [r0, r1]
@@ -21713,7 +21713,7 @@ MOD11_02238130: ; 0x02238130 add r1, r1, #4
ldr r1, [r2, r1]
mul r0, r3
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02238178 ; =0x00002154
str r0, [r4, r1]
ldr r0, [r4, r1]
@@ -22681,7 +22681,7 @@ MOD11_022388C0: ; 0x022388C0 lsl r2, r2, #2
add r2, r4, r2
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238900 ; =0x00002154
str r1, [r4, r0]
@@ -22743,7 +22743,7 @@ MOD11_02238904: ; 0x02238904 mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022389F4 ; =0x00002144
str r0, [r5, r1]
mov r0, #0x71
@@ -22906,7 +22906,7 @@ MOD11_02238A84: ; 0x02238A84 add r1, r1, #4
ldr r1, [r3, r1]
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238AB8 ; =0x00002154
str r1, [r4, r0]
@@ -23905,12 +23905,12 @@ _02239222: bne _022392EC
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _022392EC
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r5, r1, #0
add r0, r4, #0
mov r1, #0xa0
@@ -23918,7 +23918,7 @@ _02239222: bl FUN_020671BC
sub r0, r0, #1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #0xa
@@ -23999,7 +23999,7 @@ _02239324: _0223932E:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [sp, #0xc]
ldr r0, _02239378 ; =0x0225E15C
ldrb r0, [r0, r2]
@@ -24716,7 +24716,7 @@ _022398F0: _022398F8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
bge _0223991E
add r0, r5, #0
@@ -24799,7 +24799,7 @@ _022399A0: _022399A2:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
ble _022399C2
add r0, r5, #0
@@ -25529,7 +25529,7 @@ _02239F82: beq _02239FB0
bl FUN_0201B9EC
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0
ldr r0, [r0, r1]
@@ -25721,7 +25721,7 @@ MOD11_0223A0D8: ; 0x0223A0D8 bne _0223A126
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _0223A126
@@ -26840,7 +26840,7 @@ _0223A96C: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A980:
ldr r0, [sp, #0x1c]
@@ -26850,7 +26850,7 @@ _0223A980: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A994:
ldr r0, [r4]
@@ -26870,7 +26870,7 @@ _0223A994: mov r0, #0xaa
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
b _0223A9D0
_0223A9C2:
@@ -26878,7 +26878,7 @@ _0223A9C2: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A9D0:
mov r1, #2
@@ -29543,7 +29543,7 @@ _0223BFEE: add r0, r2, #0
ldr r2, _0223C208 ; =0x0225DCF1
ldrb r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp]
b _0223C03A
_0223C026:
@@ -29697,7 +29697,7 @@ _0223C12E: add r0, r1, #0
mul r0, r5
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C218 ; =0x00002D8C
add r2, r4, r6
ldr r1, [r2, r1]
@@ -29706,7 +29706,7 @@ _0223C12E: mul r1, r0
add r0, r1, #0
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
ldr r0, _0223C21C ; =0x00002DAC
add r2, r4, r6
@@ -29722,7 +29722,7 @@ _0223C170: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
_0223C182:
cmp r1, #0xff
@@ -29735,7 +29735,7 @@ _0223C18A: strh r2, [r0]
mov r0, #0xff
lsl r0, r0, #0x10
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C224 ; =0x040002B8
add r2, r1, #0
str r0, [r1]
@@ -29772,7 +29772,7 @@ _0223C1CC: ldr r1, _0223C228 ; =0x040002B4
ldr r0, _0223C22C ; =0x000FFFF0
ldr r1, [r1]
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
mov r5, #0
_0223C1E0:
@@ -31753,7 +31753,7 @@ MOD11_0223D1DC: ; 0x0223D1DC ldr r2, _0223D22C ; =0x0000314C
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
bl MOD11_02245494
add r0, r5, #0
@@ -36663,7 +36663,7 @@ MOD11_0223F770: ; 0x0223F770 str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -36709,7 +36709,7 @@ MOD11_0223F7CC: ; 0x0223F7CC str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -37667,7 +37667,7 @@ _0223FF42: beq _0223FF9E
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _0223FF82
ldr r0, [sp, #0x1c]
@@ -38595,7 +38595,7 @@ _02240688: ldr r2, _02240880 ; =0x0225E179
ldrb r1, [r2, r1]
mul r0, r4
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
@@ -38606,7 +38606,7 @@ _02240688: mov r0, #0x82
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022406B6:
@@ -38644,7 +38644,7 @@ _022406B6: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240708:
@@ -38664,7 +38664,7 @@ _02240708: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240732:
@@ -38678,7 +38678,7 @@ _02240732: mov r0, #6
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224074E:
@@ -38693,7 +38693,7 @@ _0224074E: mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224076E:
@@ -38713,7 +38713,7 @@ _0224076E: mov r0, #0x32
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240798:
@@ -38730,7 +38730,7 @@ _02240798: mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407BE:
@@ -38748,7 +38748,7 @@ _022407BE: add r0, #0x64
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407E6:
@@ -38763,7 +38763,7 @@ _022407E6: add r0, r4, #0
mul r0, r6
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240806:
@@ -38781,7 +38781,7 @@ _02240806: mov r0, #0x78
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224082A:
@@ -38795,13 +38795,13 @@ _0224082A: mov r0, #0xa
mul r0, r4
mov r1, #6
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240846:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
cmp r0, r4
ble _02240860
@@ -39876,7 +39876,7 @@ _0224106A: bne _022410A4
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _022410A4
@@ -42997,7 +42997,7 @@ MOD11_02242870: ; 0x02242870 _022428B8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _0224290A
ldr r0, _02242918 ; =0x00003044
@@ -46522,7 +46522,7 @@ _02244356: mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r6, r0, #0
ldr r0, [sp, #0x14]
lsl r1, r7, #1
@@ -46534,7 +46534,7 @@ _02244356: mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
mov r0, #0xd
str r0, [sp]
@@ -46630,7 +46630,7 @@ _0224442E: mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
_02244440:
ldr r0, [sp, #0x58]
@@ -46658,7 +46658,7 @@ _02244456: mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
b _02244488
_02244478:
@@ -46721,14 +46721,14 @@ _022444DE: bne _0224451C
ldr r1, [sp, #0x54]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #8]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _02244584 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224451C
mov r0, #1
@@ -46806,7 +46806,7 @@ _02244594: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
_022445A6:
ldr r0, [sp, #0x50]
@@ -46834,7 +46834,7 @@ _022445BC: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
b _022445EE
_022445DE:
@@ -46897,14 +46897,14 @@ _02244644: bne _02244682
ldr r1, [sp, #0x4c]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #0xc]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _022448A0 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _02244682
mov r0, #1
@@ -47517,7 +47517,7 @@ _02244AF4: _02244AFC:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _02244B16
ldr r1, _02244C1C ; =0x0000213C
@@ -47586,7 +47586,7 @@ _02244B7C: _02244B84:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r7
bge _02244C00
ldr r2, _02244C04 ; =0x00002174
@@ -48866,7 +48866,7 @@ _02245558: mov r0, #0
add r1, r6, #0
mov r2, #0x1c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r5, r4
ldr r0, _02245584 ; =0x000021A4
add r4, r4, #1
@@ -49765,11 +49765,11 @@ _02245C7A: mov r0, #0
add r1, r7, #0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0
add r1, r6, #0
mov r2, #4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02245D24 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, [sp, #8]
@@ -50618,7 +50618,7 @@ _02246346: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_02246354:
add r0, r5, #0
@@ -50866,7 +50866,7 @@ _02246532: str r0, [sp, #0x1c]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_0224654A:
ldr r0, [sp, #0x54]
@@ -51718,7 +51718,7 @@ MOD11_02246B58: ; 0x02246B58 blo _02246B76
bl FUN_0201B9EC
mov r1, #0x70
- blx _u32_div_f
+ bl _u32_div_f
add r6, r1, #0
mov r0, #0
_02246B76:
@@ -51758,7 +51758,7 @@ _02246BA8: ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BC2:
cmp r6, r7
@@ -51768,7 +51768,7 @@ _02246BC2: ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BD6:
add r4, r4, #3
@@ -52481,7 +52481,7 @@ _0224711C: cmp r2, r1
bhs _02247164
lsl r0, r2, #7
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _0224718C ; =0x0000311E
ldrb r2, [r5, r1]
mov r1, #0x1e
@@ -53156,7 +53156,7 @@ _02247616: beq _02247696
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02247696
ldr r0, [sp, #4]
@@ -53237,7 +53237,7 @@ MOD11_022476C0: ; 0x022476C0 _022476CC:
mov r4, #1
_022476CE:
- blx _s32_div_f
+ bl _s32_div_f
cmp r0, #0
bne _022476D8
add r0, r4, #0
@@ -53740,7 +53740,7 @@ _02247A56: ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x78]
add r0, r1, r0
str r0, [sp, #0x78]
@@ -53755,7 +53755,7 @@ _02247A56: ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x74]
add r0, r1, r0
str r0, [sp, #0x74]
@@ -54211,7 +54211,7 @@ _02247E08: add r6, r0, #0
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xc0
add r2, r5, #0
mul r2, r0
@@ -54974,7 +54974,7 @@ _022483C6: beq _022483E6
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
blt _022483E8
_022483E6:
@@ -55214,12 +55214,12 @@ _0224859A: beq _02248650
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248650
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _022485D0
cmp r1, #1
@@ -55322,7 +55322,7 @@ _02248688: beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55396,7 +55396,7 @@ _02248712: beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55482,7 +55482,7 @@ _022487AC: beq _0224887A
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _0224887A
add r0, r5, #0
@@ -56527,7 +56527,7 @@ _02248F98: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56561,7 +56561,7 @@ _02248FDC: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56599,7 +56599,7 @@ _02249024: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56634,7 +56634,7 @@ _0224906A: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56669,7 +56669,7 @@ _022490B0: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56704,7 +56704,7 @@ _022490F6: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56740,7 +56740,7 @@ _0224913A: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56765,7 +56765,7 @@ _02249168: _02249172:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r6]
cmp r0, #0xc
@@ -56833,7 +56833,7 @@ _022491EA: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56859,7 +56859,7 @@ _0224921E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57417,7 +57417,7 @@ _0224965C: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57444,7 +57444,7 @@ _02249692: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57654,7 +57654,7 @@ _02249838: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57689,7 +57689,7 @@ _0224987E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57725,7 +57725,7 @@ _022498C6: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57761,7 +57761,7 @@ _0224990E: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57800,7 +57800,7 @@ _02249958: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57836,7 +57836,7 @@ _022499A0: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57870,7 +57870,7 @@ _022499E4: add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57894,7 +57894,7 @@ _02249A12: _02249A1A:
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r7]
cmp r0, #0xc
@@ -59203,7 +59203,7 @@ _0224A3F2: _0224A3FC:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x64]
add r2, r0, #0
mul r2, r6
@@ -60053,7 +60053,7 @@ _0224AA5A: _0224AA64:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x6c]
add r2, r0, #0
mul r2, r6
@@ -61458,7 +61458,7 @@ _0224B564: mov r1, #0xa
ldr r0, [r5, r0]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, sp, #0x90
@@ -61489,7 +61489,7 @@ _0224B594: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5B2:
@@ -61503,7 +61503,7 @@ _0224B5B2: mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5CE:
@@ -61561,7 +61561,7 @@ _0224B620: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224B648
@@ -61578,7 +61578,7 @@ _0224B648: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61590,7 +61590,7 @@ _0224B660: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61613,7 +61613,7 @@ _0224B678: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61636,7 +61636,7 @@ _0224B6A6: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -61727,7 +61727,7 @@ _0224B774: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B78A:
@@ -61748,7 +61748,7 @@ _0224B798: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7B2:
@@ -61762,7 +61762,7 @@ _0224B7B2: mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7CE:
@@ -61777,7 +61777,7 @@ _0224B7CE: add r0, #0x64
str r0, [sp, #0x2c]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7EC:
@@ -61802,7 +61802,7 @@ _0224B808: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61816,7 +61816,7 @@ _0224B81E: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61835,7 +61835,7 @@ _0224B83A: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x78]
@@ -61855,7 +61855,7 @@ _0224B862: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61875,7 +61875,7 @@ _0224B88C: mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61910,14 +61910,14 @@ _0224B8E6: bne _0224B90A
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B90A
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B90A:
@@ -61927,14 +61927,14 @@ _0224B90A: bne _0224B92E
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B92E
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B92E:
@@ -61944,14 +61944,14 @@ _0224B92E: bne _0224B952
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B952
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B952:
@@ -61961,14 +61961,14 @@ _0224B952: bne _0224B976
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B976
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B976:
@@ -61996,7 +61996,7 @@ _0224B98E: mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B9B0:
@@ -62129,7 +62129,7 @@ _0224BA5C: mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAAA:
@@ -62148,7 +62148,7 @@ _0224BAAA: mov r0, #0x4b
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAD0:
@@ -62164,7 +62164,7 @@ _0224BAD4: mov r0, #0xc
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224BAF8
@@ -62203,7 +62203,7 @@ _0224BAF8: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -62223,7 +62223,7 @@ _0224BB54: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62244,7 +62244,7 @@ _0224BB66: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -62270,7 +62270,7 @@ _0224BB92: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62303,7 +62303,7 @@ _0224BBE0: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BC24
_0224BC08:
@@ -62319,7 +62319,7 @@ _0224BC0E: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BC24:
ldr r0, [sp, #0x84]
@@ -62329,7 +62329,7 @@ _0224BC24: str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62347,7 +62347,7 @@ _0224BC24: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
b _0224BC76
_0224BC60:
@@ -62359,14 +62359,14 @@ _0224BC60: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
_0224BC76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x78]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0x48]
mov r1, #0x10
@@ -62406,7 +62406,7 @@ _0224BCB2: ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BCD6:
@@ -62432,7 +62432,7 @@ _0224BCE2: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BD24
_0224BD08:
@@ -62448,7 +62448,7 @@ _0224BD0E: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BD24:
ldr r0, [sp, #0x84]
@@ -62458,7 +62458,7 @@ _0224BD24: str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62476,7 +62476,7 @@ _0224BD24: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
b _0224BD76
_0224BD60:
@@ -62488,14 +62488,14 @@ _0224BD60: mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
_0224BD76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x10]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0xc]
mov r1, #2
@@ -62520,7 +62520,7 @@ _0224BD76: ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BDBE:
@@ -62628,7 +62628,7 @@ _0224BE8C: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BE9A:
ldr r1, _0224BF0C ; =0x000080CF
@@ -62658,7 +62658,7 @@ _0224BEC4: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BEDE
_0224BED4:
@@ -62681,7 +62681,7 @@ _0224BEDE: mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BF00:
ldr r0, [sp, #0x84]
@@ -62707,7 +62707,7 @@ MOD11_0224BF10: ; 0x0224BF10 mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
bne _0224BF36
mov r4, #1
@@ -62812,7 +62812,7 @@ _0224BFE0: bl FUN_0201B9EC
ldr r1, _0224C040 ; =0x0225E244
ldrb r1, [r1, r5]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224C026
ldr r1, [sp]
@@ -64223,7 +64223,7 @@ _0224C9A6: mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _0224CA54
@@ -64295,7 +64295,7 @@ MOD11_0224CA64: ; 0x0224CA64 mov r0, #0
add r1, r4, #0
lsl r2, r2, #2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
ldrb r1, [r5]
lsl r0, r0, #2
@@ -66824,7 +66824,7 @@ MOD11_0224DE50: ; 0x0224DE50 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -66918,7 +66918,7 @@ MOD11_0224DF18: ; 0x0224DF18 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r6, [r4, #0xc]
lsl r0, r0, #2
@@ -66957,7 +66957,7 @@ MOD11_0224DF60: ; 0x0224DF60 mov r0, #0
add r1, r4, #0
mov r2, #0x3c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r7, #0
strb r7, [r4, #0xa]
strb r7, [r4, #0xb]
@@ -67569,7 +67569,7 @@ _0224E422: add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -67637,7 +67637,7 @@ _0224E4AE: add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -68275,7 +68275,7 @@ MOD11_0224E9C0: ; 0x0224E9C0 mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -72931,11 +72931,11 @@ MOD11_02250F94: ; 0x02250F94 add r0, r2, #0
ldr r2, _02251010 ; =0x0225E831
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #0
bl FUN_0201B9EC
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
ldr r0, [r4]
bgt _02250FEA
@@ -73224,7 +73224,7 @@ _0225122E: blt _0225121C
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x10
ldr r4, [r0, r1]
@@ -74576,7 +74576,7 @@ _02251CEC: mov r1, #0
mov r2, #1
add r5, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4]
add r1, r6, #0
bl MOD11_02230260
@@ -77140,7 +77140,7 @@ _0225319A: bl MOD11_02231244
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77153,7 +77153,7 @@ _0225319A: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_022531DC:
ldr r0, [r4]
@@ -77168,7 +77168,7 @@ _022531DC: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253200:
ldr r0, [r4]
@@ -77184,7 +77184,7 @@ _02253200: bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253226:
add r0, r5, #0
@@ -77195,7 +77195,7 @@ _02253226: bl MOD11_02231250
add r1, r7, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225323E:
mov r0, #0x10
str r0, [sp]
@@ -77292,7 +77292,7 @@ _022532F6: bl MOD11_02231244
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77305,7 +77305,7 @@ _022532F6: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253332:
ldr r0, [r4]
@@ -77320,7 +77320,7 @@ _02253332: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253356:
ldr r0, [r4]
@@ -77336,7 +77336,7 @@ _02253356: bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_0225337C:
add r0, r5, #0
@@ -77347,7 +77347,7 @@ _0225337C: bl MOD11_02231250
add r1, r6, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02253394:
mov r3, #0
str r3, [sp]
@@ -79823,7 +79823,7 @@ _022546D4: asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0
mov r1, #4
add r5, r0, #0
@@ -81204,7 +81204,7 @@ MOD11_02255188: ; 0x02255188 add r1, sp, #0x28
mov r2, #0x2c
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #4]
bl MOD11_0222FF78
ldr r1, [sp, #0xc]
@@ -82911,7 +82911,7 @@ MOD11_02255EAC: ; 0x02255EAC mov r0, #0x64
mul r0, r1
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #4
strh r0, [r1, #2]
mov r0, #4
@@ -82952,7 +82952,7 @@ _02255F12: mul r0, r1
add r1, r2, #4
ldr r1, [r6, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, sp, #4
strh r0, [r1, #2]
_02255F24:
@@ -84395,7 +84395,7 @@ MOD11_022569DC: ; 0x022569DC add r1, r5, #0
mov r2, #8
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp]
bl MOD11_0222FF74
add r4, r0, #0
@@ -85259,7 +85259,7 @@ _0225705C: add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x45
bl MOD11_02257F60
add r1, r5, #0
@@ -85273,7 +85273,7 @@ _0225705C: add r1, r1, r3
ldr r3, _02257144 ; =0x0225EA12
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #6
@@ -85295,7 +85295,7 @@ _022570E8: add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x44
bl MOD11_02257F60
add r1, r5, #0
@@ -85309,7 +85309,7 @@ _022570E8: add r1, r1, r3
ldr r3, _0225714C ; =0x0225E9E2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #1
@@ -85908,7 +85908,7 @@ MOD11_022574F0: ; 0x022574F0 add r0, r6, #0
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85923,7 +85923,7 @@ MOD11_022574F0: ; 0x022574F0 ldr r0, [sp, #0x20]
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85940,7 +85940,7 @@ MOD11_022574F0: ; 0x022574F0 add r1, r1, r3
ldr r3, _02257648 ; =0x0225EC92
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r4, [r4, #4]
@@ -85957,7 +85957,7 @@ MOD11_022574F0: ; 0x022574F0 ldr r3, _02257650 ; =0x0225EC96
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
ldr r0, [sp, #0x18]
@@ -86022,7 +86022,7 @@ _02257670: ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r1, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86039,7 +86039,7 @@ _02257670: add r0, r0, r1
add r1, r7, #0
add r1, #0x40
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022576D6:
@@ -86077,7 +86077,7 @@ _022576DA: ldr r3, _02257750 ; =0x0225EABA
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r3, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86095,7 +86095,7 @@ _022576DA: ldr r3, _02257758 ; =0x0225EABE
add r0, #0x40
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r7, #0
bl FUN_02016A18
add sp, #8
@@ -86122,7 +86122,7 @@ MOD11_0225775C: ; 0x0225775C add r0, r4, #0
mov r1, #0xff
mov r2, #0x60
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #4]
ldr r0, [r0, #0xc]
bl MOD11_022300BC
@@ -86153,7 +86153,7 @@ MOD11_0225775C: ; 0x0225775C ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r1, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86170,7 +86170,7 @@ MOD11_0225775C: ; 0x0225775C add r0, r0, r1
add r1, r7, #0
add r1, #0x60
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022577EE:
@@ -86208,7 +86208,7 @@ _022577F2: ldr r3, _02257870 ; =0x0225EA2A
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r3, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86226,7 +86226,7 @@ _022577F2: ldr r3, _02257878 ; =0x0225EA2E
add r0, #0x60
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
add r0, r7, #0
@@ -86250,7 +86250,7 @@ MOD11_0225787C: ; 0x0225787C mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86276,7 +86276,7 @@ MOD11_0225787C: ; 0x0225787C ldr r3, _022578FC ; =0x0225EA5A
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r3, _02257900 ; =0x0225EA5C
@@ -86290,7 +86290,7 @@ MOD11_0225787C: ; 0x0225787C ldr r3, _02257904 ; =0x0225EA5E
ldrh r2, [r3, r2]
add r0, r4, r0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, r6, r7, pc}
@@ -86310,7 +86310,7 @@ MOD11_02257908: ; 0x02257908 mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86335,7 +86335,7 @@ MOD11_02257908: ; 0x02257908 ldr r3, _02257964 ; =0x0225E9FA
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, pc}
@@ -86376,7 +86376,7 @@ _02257982: ldr r3, _022579B4 ; =0x0225E9CA
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579B0: .word 0x0225E9C8
@@ -86406,7 +86406,7 @@ MOD11_022579B8: ; 0x022579B8 ldr r3, _022579F4 ; =0x0225E99A
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579F0: .word 0x0225E998
@@ -86473,7 +86473,7 @@ _02257A26: add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xd
mov r0, #0x1a
lsl r2, r2, #6
@@ -86483,7 +86483,7 @@ _02257A26: add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xa
lsl r2, r2, #8
add r0, r5, #0
@@ -86492,7 +86492,7 @@ _02257A26: add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xb
lsl r0, r0, #4
@@ -86503,7 +86503,7 @@ _02257A26: add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x18
bl FUN_02019178
add r0, r7, #0
@@ -86598,7 +86598,7 @@ _02257B1E: add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0x15
mov r0, #0x1a
lsl r2, r2, #6
@@ -86608,7 +86608,7 @@ _02257B1E: add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #3
lsl r2, r2, #0xa
add r0, r5, #0
@@ -86617,7 +86617,7 @@ _02257B1E: add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xd
lsl r0, r0, #4
@@ -86628,7 +86628,7 @@ _02257B1E: add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
add r0, r6, #0
@@ -86671,8 +86671,8 @@ _02257C10: _02257C22:
ldr r6, [r5, #0x40]
add r0, r6, #0
- blx _s32_div_f
- blx abs
+ bl _s32_div_f
+ bl abs
mov r1, #0xb
lsl r0, r0, #0x10
add r3, r5, #0
@@ -86793,7 +86793,7 @@ _02257CE6: add r2, r3, r2
add r1, r1, r2
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257D42
_02257D16:
ldrb r0, [r0, r4]
@@ -86816,7 +86816,7 @@ _02257D16: add r1, r1, r3
add r1, r2, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257D42:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86877,7 +86877,7 @@ _02257D9C: add r0, r6, r0
add r1, r3, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257DD0
_02257DBA:
ldrb r0, [r0, r4]
@@ -86889,7 +86889,7 @@ _02257DBA: add r1, r1, r2
add r0, r6, r0
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257DD0:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86957,7 +86957,7 @@ _02257E3E: bge _02257E7E
lsl r0, r0, #8
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
cmp r6, #0
ldr r1, [r5]
bge _02257E62
@@ -87043,14 +87043,14 @@ _02257ECE: add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
lsr r0, r0, #8
b _02257EEC
_02257EE2:
add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
_02257EEC:
add r2, r0, #0
cmp r0, #0
@@ -87103,18 +87103,18 @@ _02257F38: add r0, r7, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r7, #0x18
lsl r0, r0, #0x18
asr r1, r1, #0x18
asr r0, r0, #0x18
sub r0, r1, r0
- blx abs
+ bl abs
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -87281,7 +87281,7 @@ MOD11_0225805C: ; 0x0225805C mov r1, #0
mov r2, #0xc
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r2, #0xfa
str r5, [r4]
ldr r0, _0225808C ; =MOD11_02258090
@@ -87493,7 +87493,7 @@ _022581FC: asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
add r3, r0, #0
add r5, r1, #0
@@ -87722,7 +87722,7 @@ MOD11_022583D8: ; 0x022583D8 add r1, r5, #0
mov r2, #0x10
add r7, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r4, [r5, #4]
strb r6, [r5, #8]
strb r7, [r5, #9]
@@ -87748,7 +87748,7 @@ MOD11_0225840C: ; 0x0225840C mov r0, #0
add r1, r4, #0
mov r2, #0x10
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r4, pc}
.align 2, 0
@@ -87763,7 +87763,7 @@ MOD11_02258428: ; 0x02258428 mov r1, #0
lsl r2, r2, #8
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0
ldr r0, _0225844C ; =0x0000069F
mvn r1, r1
@@ -87891,7 +87891,7 @@ _02258512: ldr r0, [sp, #0x18]
add r2, r7, #0
add r0, #0xc
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r5, #0
bl FUN_02016A18
add r4, r4, #1
@@ -87919,7 +87919,7 @@ _0225854E: mov r2, #2
ldr r1, [r6, #0x58]
lsl r2, r2, #8
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, r6, #0
mov r7, #0x46
mov r4, #0
@@ -87932,7 +87932,7 @@ _02258592: add r0, r5, r0
mov r1, #0xff
mov r2, #0x18
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #1
_022585A2:
cmp r4, #4
@@ -87981,7 +87981,7 @@ _022585DE: ldr r1, [r6, #0x5c]
ldr r0, [r6, #0x58]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #7
mov r1, #0xca
add r2, sp, #0x14
@@ -87992,7 +87992,7 @@ _022585DE: ldr r1, [r6, #0x60]
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
bl FUN_02002BE4
@@ -88226,7 +88226,7 @@ MOD11_02258820: ; 0x02258820 add r0, r3, #0
add r1, #0x18
mov r2, #0x22
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0225883A:
ldr r0, _0225893C ; =0x000006A2
mov r1, #0
@@ -88333,7 +88333,7 @@ _022588D0: ldr r0, _02258950 ; =0x04001050
mov r1, #2
mov r3, #0x1b
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
add r0, r7, #0
bl MOD11_0225ACB0
ldr r0, [sp, #0x2c]
@@ -89077,7 +89077,7 @@ _02258F20: add r0, r5, r0
mov r1, #0
mov r2, #4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02258F54 ; =0x000006EC
ldr r0, [r5, r0]
bl MOD11_0225D648
@@ -89445,7 +89445,7 @@ MOD11_0225916C: ; 0x0225916C add r4, r0, #0
mov r1, #0
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r5, [r4]
ldr r0, _02259254 ; =0xFFFF9C64
strb r6, [r4, #0x12]
@@ -89458,7 +89458,7 @@ MOD11_0225916C: ; 0x0225916C ldr r0, _02259258 ; =0x0000639C
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xc]
mov r0, #0xa
ldrsh r1, [r4, r0]
@@ -89466,7 +89466,7 @@ MOD11_0225916C: ; 0x0225916C lsl r0, r0, #4
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xe]
ldr r0, _0225925C ; =0x0000070E
bl FUN_020054C8
@@ -91621,7 +91621,7 @@ MOD11_0225A428: ; 0x0225A428 add r1, r4, r1
asr r5, r1, #3
mov r1, #8
- blx FX_ModS32
+ bl FX_ModS32
cmp r0, #0
beq _0225A450
add r5, r5, #1
@@ -92109,7 +92109,7 @@ _0225A7CE: ldr r0, [r0, #0x14]
ldr r1, [r1, #0x18]
ldr r2, [sp, #0xc]
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
ldr r0, [sp, #0x44]
bl FUN_02016A18
_0225A814:
@@ -92426,7 +92426,7 @@ _0225AA24: lsl r3, r3, #0x14
ldr r0, [r0, #0x18]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225AA9E:
add r4, r4, #1
_0225AAA0:
@@ -92821,7 +92821,7 @@ _0225AD90: add r0, r4, r0
mov r1, #0
mov r2, #0x24
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0225ADAC ; =0x00000514
add r0, r5, #0
add r1, r4, #0
@@ -92845,7 +92845,7 @@ MOD11_0225ADB0: ; 0x0225ADB0 add r0, r4, r0
mov r2, #0x24
str r1, [r4, #8]
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0225ADCE:
pop {r4, pc}
@@ -93706,13 +93706,13 @@ _0225B454: lsl r0, r0, #2
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xc]
mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xe]
mov r0, #8
ldrsh r0, [r5, r0]
@@ -93829,7 +93829,7 @@ _0225B55A: ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
b _0225B5B6
_0225B586:
@@ -93852,7 +93852,7 @@ _0225B590: mov r0, #8
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
add r4, #0xff
_0225B5B6:
@@ -93869,7 +93869,7 @@ _0225B5B6: mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, #0x90
cmp r4, #0
bge _0225B5E2
@@ -94210,7 +94210,7 @@ _0225B866: add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x60]
@@ -94218,7 +94218,7 @@ _0225B866: add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, r6, r7, pc}
_0225B888:
ldr r1, [r5, #0x60]
@@ -94226,7 +94226,7 @@ _0225B888: add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x5c]
@@ -94234,7 +94234,7 @@ _0225B888: add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225B8A8:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -94819,7 +94819,7 @@ _0225BD10: ldr r0, _0225BDD8 ; =0x0225F6A0
add r1, sp, #8
mov r2, #6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0
mov r1, #2
mov r2, #3
@@ -95001,7 +95001,7 @@ MOD11_0225BE30: ; 0x0225BE30 str r0, [sp, #0x48]
ldr r0, _0225C13C ; =0x0225F690
add r1, sp, #0x50
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x58
add r0, r6, #0
add r1, #2
@@ -96552,7 +96552,7 @@ MOD11_0225C9D4: ; 0x0225C9D4 mov r1, #0
lsl r2, r2, #6
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0
pop {r4, pc}
.align 2, 0
@@ -96741,7 +96741,7 @@ _0225CB32: add r0, r5, #0
mov r1, #0
mov r2, #0x1c
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp, #0x18]
ldr r2, _0225CBA8 ; =0x0225FE48
add r0, r7, #0
@@ -96958,7 +96958,7 @@ _0225CCBC: sub r0, r0, r3
str r0, [sp]
ldr r0, _0225CDA0 ; =0x04000050
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
ldrb r0, [r4, #0x1a]
add r0, r0, #1
strb r0, [r4, #0x1a]
@@ -97076,7 +97076,7 @@ _0225CDD4: add r0, r5, #0
mov r1, #0
mov r2, #0x30
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, _0225CEA4 ; =0x0225FE7C
@@ -98000,7 +98000,7 @@ _0225D496: mov r1, #0
mov r2, #0x18
str r0, [sp]
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r5, [sp]
mov r4, #0
_0225D4CE:
@@ -98351,7 +98351,7 @@ _0225D74C: mov r1, #0
mov r2, #0x20
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp]
add r0, r7, #0
add r2, sp, #4
@@ -98497,7 +98497,7 @@ _0225D886: bne _0225D8DA
ldr r0, [r4, #0x10]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_0201B93C
@@ -98505,7 +98505,7 @@ _0225D886: asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0
ldr r1, [r4, #8]
mov r2, #2
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s new file mode 100644 index 00000000..36381bcf --- /dev/null +++ b/arm9/modules/12/asm/module_12.s @@ -0,0 +1,48108 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD12_0222D5C0 +MOD12_0222D5C0: ; 0x0222D5C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _0222D85C ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _0222D860 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0222D864 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x15 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222D868 ; =0x00001658 + add r0, r5, #0 + mov r2, #0x15 + bl FUN_02006268 + ldr r2, _0222D868 ; =0x00001658 + mov r1, #0 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x15 + bl MOD12_022312D8 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r4] + lsl r1, r1, #2 + str r4, [r0, r1] + ldr r2, [r4] + mov r3, #2 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r4] + str r0, [r4, #0xc] + add r0, r4, #0 + bl MOD12_0222DCEC + mov r0, #0x15 + bl FUN_02002FD0 + str r0, [r4, #0x5c] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r4, #0x5c] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x15 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r4, #0x5c] + lsl r2, r1, #9 + mov r3, #0x15 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r4, #0x5c] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x15 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r4, #0x5c] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x15 + bl FUN_02003008 + mov r0, #0x15 + bl FUN_02016B94 + str r0, [r4, #0x30] + mov r0, #0x40 + mov r1, #0x15 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r2, #0x23 + add r1, r4, #0 + lsl r2, r2, #4 + ldr r0, [r4] + add r1, #0xc + add r2, r4, r2 + bl MOD12_02231A24 + ldr r1, _0222D86C ; =0x0000081C + str r0, [r4, r1] + ldr r0, [r4, #0x30] + bl MOD12_0222DB50 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x15 + bl FUN_02002C50 + mov r0, #0x15 + bl FUN_0200BB14 + ldr r1, _0222D870 ; =0x022449C8 + ldr r2, _0222D874 ; =0x0224499C + mov r3, #0x20 + str r0, [r4, #0x24] + bl FUN_0200BB6C + ldr r1, _0222D878 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r4, #0x24] + bl FUN_0200BB34 + str r0, [r4, #0x28] + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + ldr r2, _0222D87C ; =0x022449B0 + bl FUN_0200BF60 + ldr r0, [r4, #0x24] + bl FUN_0200BB68 + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D24 + mov r0, #0x15 + bl FUN_02006D98 + str r0, [r4, #0x10] + bl MOD12_0222DCAC + mov r0, #0x15 + bl FUN_02211F5C + mov r1, #1 + str r0, [r4, #0x2c] + bl FUN_02211FF0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xbf + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x44] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc0 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x48] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc5 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x4c] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc6 + mov r3, #0x15 + bl FUN_0200A86C + str r0, [r4, #0x50] + mov r0, #8 + mov r1, #0x15 + bl FUN_02011744 + str r0, [r4, #0x60] + mov r0, #0x15 + bl FUN_0200AA80 + str r0, [r4, #0x54] + mov r0, #0x1e + lsl r0, r0, #4 + mov r1, #0x15 + bl FUN_020219F4 + str r0, [r4, #0x58] + add r0, r4, #0 + bl MOD12_0222DFC4 + add r0, r4, #0 + bl MOD12_0222E0F8 + add r0, r4, #0 + bl MOD12_0222DC80 + add r0, r4, #0 + bl MOD12_022335B0 + add r0, r4, #0 + bl MOD12_0222DD20 + add r0, r4, #0 + bl MOD12_0222DE30 + ldr r7, _0222D880 ; =0x00000123 + mov r6, #0 + add r5, sp, #0xc +_0222D7BC: + ldr r1, [r4] + mov r2, #0 + ldrb r0, [r1, r7] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _0222D7BC + ldr r0, _0222D86C ; =0x0000081C + add r1, sp, #0xc + ldr r0, [r4, r0] + bl MOD12_02232C08 + ldr r0, _0222D86C ; =0x0000081C + mov r1, #0 + ldr r0, [r4, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD12_02231B4C + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233758 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x15 + str r1, [sp, #8] + mov r1, #0x1f + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0222D884 ; =MOD12_0222DB18 + ldr r2, _0222D888 ; =0x0000EA60 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r0, _0222D88C ; =0x00000824 + mov r1, #1 + strb r1, [r4, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _0222D890 ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r4] + ldr r0, _0222D894 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _0222D898 ; =MOD12_0222DAE4 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0222D85C: .word 0xFFFFE0FF +_0222D860: .word 0x04001000 +_0222D864: .word 0xFFFF1FFF +_0222D868: .word 0x00001658 +_0222D86C: .word 0x0000081C +_0222D870: .word 0x022449C8 +_0222D874: .word 0x0224499C +_0222D878: .word 0x00100010 +_0222D87C: .word 0x022449B0 +_0222D880: .word 0x00000123 +_0222D884: .word MOD12_0222DB18 +_0222D888: .word 0x0000EA60 +_0222D88C: .word 0x00000824 +_0222D890: .word 0x0000046F +_0222D894: .word 0x00000171 +_0222D898: .word MOD12_0222DAE4 + + thumb_func_start MOD12_0222D89C +MOD12_0222D89C: ; 0x0222D89C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0222D8BE + cmp r0, #1 + beq _0222D8CC + cmp r0, #2 + beq _0222D986 + b _0222D994 +_0222D8BE: + bl FUN_0200E308 + cmp r0, #1 + bne _0222D994 + mov r0, #1 + str r0, [r5] + b _0222D994 +_0222D8CC: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _0222D93E + ldr r2, _0222D99C ; =0x00000822 + ldr r1, _0222D9A0 ; =0x00001648 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0222D9A4 ; =0x02244A10 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0222D910 + cmp r0, #1 + bne _0222D8FA + ldr r0, _0222D99C ; =0x00000822 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0222D900 +_0222D8FA: + ldr r0, _0222D9A8 ; =0x0000164A + ldrh r1, [r4, r0] + ldr r0, _0222D99C ; =0x00000822 +_0222D900: + strh r1, [r4, r0] + ldr r0, _0222D9A0 ; =0x00001648 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0222D93E +_0222D910: + cmp r0, #3 + bne _0222D93E + mov r0, #2 + str r0, [r5] + ldr r0, _0222D9A0 ; =0x00001648 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x15 + mov r1, #0x20 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0222D994 +_0222D93E: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD12_022410A0 + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, r4, #0 + bl MOD12_02241114 + ldr r0, _0222D9AC ; =0x00001650 + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0222D994 + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x15 + mov r1, #0x20 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0222D994 +_0222D986: + bl FUN_0200E308 + cmp r0, #1 + bne _0222D994 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0222D994: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222D99C: .word 0x00000822 +_0222D9A0: .word 0x00001648 +_0222D9A4: .word 0x02244A10 +_0222D9A8: .word 0x0000164A +_0222D9AC: .word 0x00001650 + + thumb_func_start MOD12_0222D9B0 +MOD12_0222D9B0: ; 0x0222D9B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + ldr r0, [r4, #0x2c] + bl FUN_02212024 + add r0, r4, #0 + bl MOD12_0222DDC4 + add r0, r4, #0 + bl MOD12_0222DEEC + add r0, r4, #0 + bl MOD12_0222E0F4 + add r0, r4, #0 + bl MOD12_0222E0FC + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + bl MOD12_022319FC + ldr r0, _0222DAD8 ; =0x0000081C + ldr r0, [r4, r0] + bl MOD12_02231AE8 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl FUN_0200C398 + ldr r0, [r4, #0x24] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233848 + ldr r0, [r4, #0x10] + bl FUN_020072E8 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x60] + bl FUN_020117BC + ldr r0, [r4, #0x5c] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x5c] + bl FUN_02002FEC + ldr r0, [r4, #0x58] + bl FUN_02021A20 + ldr r0, [r4, #0x54] + bl FUN_0200AB18 + ldr r0, [r4, #0x44] + bl FUN_0200A8B8 + ldr r0, [r4, #0x48] + bl FUN_0200A8B8 + ldr r0, [r4, #0x4c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x50] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x15 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _0222DADC ; =SDK_OVERLAY_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _0222DAE0 ; =SDK_OVERLAY_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0222DAD8: .word 0x0000081C +_0222DADC: .word SDK_OVERLAY_MODULE_08_ID +_0222DAE0: .word SDK_OVERLAY_MODULE_17_ID + + thumb_func_start MOD12_0222DAE4 +MOD12_0222DAE4: ; 0x0222DAE4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r4, #0x5c] + bl FUN_0200372C + ldr r0, [r4, #0x30] + bl FUN_0201AB60 + ldr r3, _0222DB10 ; =0x027E0000 + ldr r1, _0222DB14 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_0222DB10: .word 0x027E0000 +_0222DB14: .word 0x00003FF8 + + thumb_func_start MOD12_0222DB18 +MOD12_0222DB18: ; 0x0222DB18 + push {r4, lr} + ldr r0, _0222DB48 ; =0x00000824 + add r4, r1, #0 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0222DB3E + ldr r0, [r4, #0x10] + bl FUN_02006ED4 + bl FUN_02215A44 + ldr r0, [r4, #0x28] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _0222DB4C ; =0x04000540 + mov r1, #1 + str r1, [r0] +_0222DB3E: + ldr r1, [r4, #0x30] + mov r0, #0x15 + bl FUN_020335F0 + pop {r4, pc} + .align 2, 0 +_0222DB48: .word 0x00000824 +_0222DB4C: .word 0x04000540 + + thumb_func_start MOD12_0222DB50 +MOD12_0222DB50: ; 0x0222DB50 + push {r4, r5, lr} + sub sp, #0x8c + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _0222DC70 ; =0x022449E8 + add r3, sp, #0x10 + mov r2, #5 +_0222DB60: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DB60 + add r0, sp, #0x10 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _0222DC74 ; =0x0224498C + add r3, sp, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0222DC78 ; =0x02244A50 + add r3, sp, #0x38 + mov r2, #0xa +_0222DBC0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222DBC0 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _0222DC7C ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD12_022319A4 + add sp, #0x8c + pop {r4, r5, pc} + .align 2, 0 +_0222DC70: .word 0x022449E8 +_0222DC74: .word 0x0224498C +_0222DC78: .word 0x02244A50 +_0222DC7C: .word 0x04000008 + + thumb_func_start MOD12_0222DC80 +MOD12_0222DC80: ; 0x0222DC80 + push {lr} + sub sp, #0x14 + add r1, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #3 + lsl r0, r0, #8 + str r0, [sp, #0x10] + ldr r0, [r1, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #0xb + bl FUN_02019064 + add sp, #0x14 + pop {pc} + + thumb_func_start MOD12_0222DCAC +MOD12_0222DCAC: ; 0x0222DCAC + push {r3, r4, r5, lr} + ldr r3, _0222DCE4 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222DCE8 ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _0222DCD4 + bl ErrorHandling +_0222DCD4: + cmp r5, #0 + bne _0222DCDC + bl ErrorHandling +_0222DCDC: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222DCE4: .word 0x021064B8 +_0222DCE8: .word 0x021064C0 + + thumb_func_start MOD12_0222DCEC +MOD12_0222DCEC: ; 0x0222DCEC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0222DCFA + bl ErrorHandling +_0222DCFA: + ldr r1, _0222DD1C ; =0x00000172 + mov r0, #0 + add r2, r1, #0 + add r2, #0xbf +_0222DD02: + ldr r3, [r4] + add r3, r3, r0 + ldrb r5, [r3, r1] + add r3, r4, r0 + add r0, r0, #1 + strb r5, [r3, r2] + cmp r0, #4 + blt _0222DD02 + add r0, r4, #0 + bl MOD12_02235D7C + pop {r3, r4, r5, pc} + nop +_0222DD1C: .word 0x00000172 + + thumb_func_start MOD12_0222DD20 +MOD12_0222DD20: ; 0x0222DD20 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0222DDB8 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x5c] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0222DDBC ; =0x000080ED + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x5c] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_0200C0DC + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_02235194 + add r0, r4, #0 + bl MOD12_022350F8 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0xc + bl MOD12_02233A8C + add r0, r4, #0 + ldr r2, [r4] + ldr r1, _0222DDC0 ; =0x0000011E + add r0, #0xc + ldrb r1, [r2, r1] + bl MOD12_02233EEC + ldr r0, [r4, #0x5c] + ldr r1, [r4, #0x24] + ldr r2, [r4, #0x28] + bl MOD12_02233B04 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233B7C + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_02233FAC + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + bl MOD12_022342A8 + add sp, #0x18 + pop {r4, pc} + nop +_0222DDB8: .word 0x000080E9 +_0222DDBC: .word 0x000080ED +_0222DDC0: .word 0x0000011E + + thumb_func_start MOD12_0222DDC4 +MOD12_0222DDC4: ; 0x0222DDC4 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc + bl MOD12_02233F78 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233AD4 + add r0, r4, #0 + bl MOD12_02235114 + add r0, r4, #0 + add r0, #0xc + bl MOD12_0223524C + ldr r0, [r4, #0x28] + bl MOD12_022351E0 + ldr r0, [r4, #0x28] + ldr r1, _0222DE28 ; =0x000080E9 + bl FUN_0200C368 + ldr r0, [r4, #0x28] + ldr r1, _0222DE2C ; =0x000080ED + bl FUN_0200C368 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02233BBC + ldr r0, [r4, #0x28] + bl MOD12_02233B58 + ldr r0, [r4, #0x28] + bl MOD12_02233FF8 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02234044 + ldr r0, [r4, #0x28] + bl MOD12_02234334 + add r4, #0xc + add r0, r4, #0 + bl MOD12_0223439C + pop {r4, pc} + nop +_0222DE28: .word 0x000080E9 +_0222DE2C: .word 0x000080ED + + thumb_func_start MOD12_0222DE30 +MOD12_0222DE30: ; 0x0222DE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r1, #3 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DED8 ; =0x000080EF + str r0, [sp, #0x14] + ldr r0, [r5, #0x5c] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _0222DEDC ; =0x000080F0 + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [r5, #0x5c] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl FUN_0200C0DC + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + bl MOD12_022334A4 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + bl MOD12_022333F8 + ldr r2, _0222DEE0 ; =0x000080F4 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + add r3, r2, #0 + bl MOD12_02240E34 + ldr r7, _0222DEE4 ; =0x000080F6 + ldr r6, _0222DEE8 ; =0x00000123 + mov r4, #0 +_0222DE9E: + ldr r1, [r5] + mov r2, #0 + ldrb r0, [r1, r6] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + cmp r0, #0 + beq _0222DEBE + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0 + b _0222DEC0 +_0222DEBE: + mov r3, #0 +_0222DEC0: + add r0, r4, r7 + str r0, [sp] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r2, #2 + bl MOD12_02240E00 + add r4, r4, #1 + cmp r4, #4 + blt _0222DE9E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222DED8: .word 0x000080EF +_0222DEDC: .word 0x000080F0 +_0222DEE0: .word 0x000080F4 +_0222DEE4: .word 0x000080F6 +_0222DEE8: .word 0x00000123 + + thumb_func_start MOD12_0222DEEC +MOD12_0222DEEC: ; 0x0222DEEC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + ldr r1, _0222DF24 ; =0x000080EF + bl FUN_0200C368 + ldr r0, [r5, #0x28] + bl MOD12_0223353C + ldr r0, [r5, #0x28] + bl MOD12_02233478 + ldr r1, _0222DF28 ; =0x000080F4 + ldr r0, [r5, #0x28] + add r2, r1, #0 + bl MOD12_02240E84 + ldr r6, _0222DF2C ; =0x000080F6 + mov r4, #0 +_0222DF12: + ldr r0, [r5, #0x28] + add r1, r4, r6 + bl MOD12_02240E7C + add r4, r4, #1 + cmp r4, #4 + blt _0222DF12 + pop {r4, r5, r6, pc} + nop +_0222DF24: .word 0x000080EF +_0222DF28: .word 0x000080F4 +_0222DF2C: .word 0x000080F6 + + thumb_func_start MOD12_0222DF30 +MOD12_0222DF30: ; 0x0222DF30 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #0 + bne _0222DF9A + mov r0, #0 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #3 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #5 + mov r3, #2 + bl FUN_020068C8 + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + add r0, r5, #0 + bl MOD12_022335B0 + cmp r4, #1 + bne _0222DFBE + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0222DF9A: + mov r0, #2 + lsl r1, r0, #0xd + mov r2, #0 + mov r3, #0x15 + bl FUN_02017F18 + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_02018744 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC +_0222DFBE: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0222DFC4 +MOD12_0222DFC4: ; 0x0222DFC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #2 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #4 + bl FUN_020068C8 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl MOD12_0222DF30 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x5c] + mov r1, #0x2d + mov r2, #0x1d + mov r3, #0x15 + bl FUN_020030E8 + mov r0, #0x15 + mov r1, #0x20 + bl FUN_02016998 + add r7, r0, #0 + mov r0, #0x15 + mov r1, #0x20 + bl FUN_02016998 + str r0, [sp, #0x10] + ldr r0, [r5, #0x5c] + mov r1, #0 + bl FUN_020031FC + add r4, r0, #0 + ldr r0, [r5, #0x5c] + mov r1, #0 + bl FUN_02003204 + str r0, [sp, #0x14] + ldr r0, _0222E0EC ; =0x022451D0 + add r1, r7, #0 + ldrb r0, [r0] + mov r2, #0x20 + lsl r6, r0, #5 + add r0, r4, r6 + bl MIi_CpuCopy16 + ldr r1, [r5] + ldr r0, _0222E0F0 ; =0x00000123 + mov r2, #0x20 + ldrb r1, [r1, r0] + ldr r0, _0222E0EC ; =0x022451D0 + ldrb r0, [r0, r1] + ldr r1, [sp, #0x10] + lsl r0, r0, #5 + add r0, r4, r0 + bl MIi_CpuCopy16 + ldr r2, [r5] + ldr r1, _0222E0F0 ; =0x00000123 + add r0, r7, #0 + ldrb r2, [r2, r1] + ldr r1, _0222E0EC ; =0x022451D0 + ldrb r1, [r1, r2] + mov r2, #0x20 + lsl r1, r1, #5 + add r1, r4, r1 + bl MIi_CpuCopy16 + ldr r0, [sp, #0x10] + add r1, r4, r6 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldr r2, [r5] + ldr r1, _0222E0F0 ; =0x00000123 + add r0, r7, #0 + ldrb r2, [r2, r1] + ldr r1, _0222E0EC ; =0x022451D0 + ldrb r1, [r1, r2] + lsl r2, r1, #5 + ldr r1, [sp, #0x14] + add r1, r1, r2 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + add r1, r1, r6 + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E0EC: .word 0x022451D0 +_0222E0F0: .word 0x00000123 + + thumb_func_start MOD12_0222E0F4 +MOD12_0222E0F4: ; 0x0222E0F4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E0F8 +MOD12_0222E0F8: ; 0x0222E0F8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E0FC +MOD12_0222E0FC: ; 0x0222E0FC + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222E100 +MOD12_0222E100: ; 0x0222E100 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E128 + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #2 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E148 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E148 +_0222E128: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r2] + ldr r4, _0222E14C ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E148 + mov r0, #1 + pop {r4, pc} +_0222E148: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222E14C: .word 0x00000127 + + thumb_func_start MOD12_0222E150 +MOD12_0222E150: ; 0x0222E150 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020832EC + cmp r0, #0 + bne _0222E164 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E164: + ldrh r0, [r4] + cmp r0, #0 + bne _0222E196 + ldr r3, _0222E1BC ; =0x0000040C + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #3 + strb r1, [r5, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe4 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x14 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E1B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E1B6 +_0222E196: + ldr r4, _0222E1C0 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E1B6 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E1B6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E1BC: .word 0x0000040C +_0222E1C0: .word 0x00000127 + + thumb_func_start MOD12_0222E1C4 +MOD12_0222E1C4: ; 0x0222E1C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E218 + ldr r0, [r5] + bl FUN_020832EC + cmp r0, #1 + bne _0222E1E2 + ldr r0, _0222E23C ; =0x0000040C + mov r1, #0x2d + strb r1, [r5, r0] + b _0222E1F0 +_0222E1E2: + ldr r1, [r5] + ldr r0, _0222E240 ; =0x0000011F + ldrb r0, [r1, r0] + bl MOD12_02235A98 + ldr r1, _0222E23C ; =0x0000040C + strb r0, [r5, r1] +_0222E1F0: + ldr r3, _0222E244 ; =0x0000040E + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #1 + strb r1, [r5, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe6 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x14 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E238 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E238 +_0222E218: + ldr r4, _0222E248 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E238 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E238: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E23C: .word 0x0000040C +_0222E240: .word 0x0000011F +_0222E244: .word 0x0000040E +_0222E248: .word 0x00000127 + + thumb_func_start MOD12_0222E24C +MOD12_0222E24C: ; 0x0222E24C + mov r0, #1 + bx lr + + thumb_func_start MOD12_0222E250 +MOD12_0222E250: ; 0x0222E250 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp] + ldrh r1, [r1] + add r4, r0, #0 + cmp r1, #0 + beq _0222E268 + cmp r1, #1 + beq _0222E288 + cmp r1, #2 + beq _0222E2B0 + b _0222E2F0 +_0222E268: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E300 + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E288: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222E308 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E300 + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E2B0: + add r1, sp, #4 + bl MOD12_0223900C + ldr r1, [r4] + ldr r0, _0222E308 ; =0x00000127 + ldrb r0, [r1, r0] + cmp r0, #4 + bge _0222E2E4 + lsl r2, r0, #1 + add r3, sp, #4 + add r1, r3, r2 + ldr r7, _0222E30C ; =0x0000023E + add r2, r4, r2 + add r3, r3, r0 +_0222E2CC: + ldrh r6, [r1] + ldr r5, _0222E310 ; =0x00000236 + add r1, r1, #2 + strh r6, [r2, r5] + ldrb r6, [r3, #8] + add r5, r4, r0 + add r0, r0, #1 + strb r6, [r5, r7] + add r2, r2, #2 + add r3, r3, #1 + cmp r0, #4 + blt _0222E2CC +_0222E2E4: + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _0222E300 +_0222E2F0: + mov r1, #0xce + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD12_0223808C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222E300: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E308: .word 0x00000127 +_0222E30C: .word 0x0000023E +_0222E310: .word 0x00000236 + + thumb_func_start MOD12_0222E314 +MOD12_0222E314: ; 0x0222E314 + push {r3, r4, r5, r6, r7, lr} + ldr r2, _0222E394 ; =0x00000235 + add r4, r0, #0 + ldrb r0, [r4, r2] + add r1, r4, r0 + sub r0, r2, #4 + ldrb r0, [r1, r0] + add r1, r2, #0 + add r1, #0xf3 + strb r0, [r4, r1] + str r0, [sp] + add r0, r2, #0 + ldrb r1, [r4, r2] + add r0, #0xf4 + strb r1, [r4, r0] + ldr r0, [sp] + add r1, r4, r0 + add r0, r2, #0 + add r0, #9 + ldrb r3, [r1, r0] + add r0, r2, #0 + add r0, #0xf5 + strb r3, [r4, r0] + add r3, r2, #0 + mov r0, #0 + add r3, #0xf6 + strb r0, [r4, r3] + ldrb r2, [r4, r2] + cmp r2, #0 + ble _0222E374 + ldr r7, _0222E398 ; =0x0000023E + mov r5, #1 + add r3, r7, #0 +_0222E356: + ldr r2, _0222E39C ; =0x00000231 + add r6, r4, r0 + ldrb r2, [r6, r2] + add r2, r4, r2 + ldrb r6, [r2, r7] + ldrb r2, [r1, r3] + cmp r6, r2 + bne _0222E36A + ldr r2, _0222E3A0 ; =0x0000032B + strb r5, [r4, r2] +_0222E36A: + ldr r2, _0222E394 ; =0x00000235 + add r0, r0, #1 + ldrb r2, [r4, r2] + cmp r0, r2 + blt _0222E356 +_0222E374: + mov r1, #1 + lsl r1, r1, #0xa + ldr r2, [sp] + add r0, r4, #0 + add r1, r4, r1 + bl MOD12_02235274 + ldr r1, _0222E3A4 ; =0x00000406 + ldr r2, [sp] + add r0, r4, #0 + add r1, r4, r1 + bl MOD12_02235274 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E394: .word 0x00000235 +_0222E398: .word 0x0000023E +_0222E39C: .word 0x00000231 +_0222E3A0: .word 0x0000032B +_0222E3A4: .word 0x00000406 + + thumb_func_start MOD12_0222E3A8 +MOD12_0222E3A8: ; 0x0222E3A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E3D4 + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #4 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E3F4 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E3F4 +_0222E3D4: + ldr r4, _0222E3F8 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E3F4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E3F4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E3F8: .word 0x00000127 + + thumb_func_start MOD12_0222E3FC +MOD12_0222E3FC: ; 0x0222E3FC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + bne _0222E42C + ldr r3, _0222E458 ; =0x0000040C + mov r0, #0 + strb r0, [r4, r3] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #6 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E452 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222E452 +_0222E42C: + ldr r5, _0222E45C ; =0x00000127 + ldr r3, [r4] + sub r2, r5, #4 + ldrb r1, [r3, r5] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + add r0, r4, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E452 + ldr r0, _0222E458 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E452: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E458: .word 0x0000040C +_0222E45C: .word 0x00000127 + + thumb_func_start MOD12_0222E460 +MOD12_0222E460: ; 0x0222E460 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + beq _0222E472 + cmp r0, #1 + beq _0222E4A2 + b _0222E4C2 +_0222E472: + ldr r0, _0222E4F0 ; =0x0000040C + mov r1, #4 + strb r1, [r4, r0] + add r1, r0, #0 + sub r1, #0xe1 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _0222E486 + mov r1, #5 + b _0222E488 +_0222E486: + mov r1, #0 +_0222E488: + mov r2, #0xce + add r0, r0, #1 + strb r1, [r4, r0] + lsl r2, r2, #2 + add r1, r4, r2 + sub r2, #0x10 + ldrb r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02238224 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] +_0222E4A2: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #7 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E4EC + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222E4EC +_0222E4C2: + ldr r5, _0222E4F4 ; =0x00000127 + ldr r3, [r4] + sub r2, r5, #4 + ldrb r1, [r3, r5] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + add r0, r4, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E4EC + ldr r0, _0222E4F0 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] + add r0, r0, #1 + strb r1, [r4, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E4EC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E4F0: .word 0x0000040C +_0222E4F4: .word 0x00000127 + + thumb_func_start MOD12_0222E4F8 +MOD12_0222E4F8: ; 0x0222E4F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r1, [r4] + add r5, r0, #0 + cmp r1, #0xc + bls _0222E506 + b _0222E6B6 +_0222E506: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222E512: ; jump table + .short _0222E52C - _0222E512 - 2 ; case 0 + .short _0222E542 - _0222E512 - 2 ; case 1 + .short _0222E556 - _0222E512 - 2 ; case 2 + .short _0222E576 - _0222E512 - 2 ; case 3 + .short _0222E59C - _0222E512 - 2 ; case 4 + .short _0222E5B6 - _0222E512 - 2 ; case 5 + .short _0222E5D6 - _0222E512 - 2 ; case 6 + .short _0222E5FA - _0222E512 - 2 ; case 7 + .short _0222E614 - _0222E512 - 2 ; case 8 + .short _0222E634 - _0222E512 - 2 ; case 9 + .short _0222E658 - _0222E512 - 2 ; case 10 + .short _0222E672 - _0222E512 - 2 ; case 11 + .short _0222E692 - _0222E512 - 2 ; case 12 +_0222E52C: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + bl MOD12_022380FC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E542: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + bl MOD12_02238280 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E556: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xa + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E592 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E576: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222E594 +_0222E592: + b _0222E6CA +_0222E594: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E59C: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + add r1, r5, r3 + sub r2, #0x10 + sub r3, #0xf + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022382A8 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E5B6: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xb + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E5D6: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E5FA: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + add r1, r5, r3 + sub r2, #0x10 + sub r3, #0xf + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_02238370 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E614: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xc + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E634: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E658: + mov r3, #0xce + lsl r3, r3, #2 + add r2, r3, #0 + sub r2, #0x10 + ldrb r2, [r5, r2] + add r1, r5, r3 + add r3, #0xc8 + add r3, r5, r3 + bl MOD12_0223850C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222E672: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xd + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E692: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222E6D0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E6CA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E6CA +_0222E6B6: + mov r2, #0xce + lsl r2, r2, #2 + add r1, r5, r2 + sub r2, #0x10 + ldrb r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02238160 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E6CA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222E6D0: .word 0x00000127 + + thumb_func_start MOD12_0222E6D4 +MOD12_0222E6D4: ; 0x0222E6D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222E700 + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E720 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222E720 +_0222E700: + ldr r4, _0222E724 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _0222E720 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222E720: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222E724: .word 0x00000127 + + thumb_func_start MOD12_0222E728 +MOD12_0222E728: ; 0x0222E728 + ldr r2, _0222E744 ; =0x00000235 + ldrb r3, [r0, r2] + add r3, r3, #1 + strb r3, [r0, r2] + ldrb r0, [r0, r2] + cmp r0, #4 + blo _0222E73A + mov r0, #1 + bx lr +_0222E73A: + mov r0, #5 + strh r0, [r1, #2] + mov r0, #2 + bx lr + nop +_0222E744: .word 0x00000235 + + thumb_func_start MOD12_0222E748 +MOD12_0222E748: ; 0x0222E748 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r7, r1, #0 + ldrh r1, [r7] + str r0, [sp] + cmp r1, #0x18 + bls _0222E758 + b _0222EBFA +_0222E758: + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E764: ; jump table + .short _0222E796 - _0222E764 - 2 ; case 0 + .short _0222E79C - _0222E764 - 2 ; case 1 + .short _0222E7BA - _0222E764 - 2 ; case 2 + .short _0222E7E8 - _0222E764 - 2 ; case 3 + .short _0222E80C - _0222E764 - 2 ; case 4 + .short _0222E834 - _0222E764 - 2 ; case 5 + .short _0222E850 - _0222E764 - 2 ; case 6 + .short _0222E878 - _0222E764 - 2 ; case 7 + .short _0222E9CE - _0222E764 - 2 ; case 8 + .short _0222E9D6 - _0222E764 - 2 ; case 9 + .short _0222E9FA - _0222E764 - 2 ; case 10 + .short _0222EA2C - _0222E764 - 2 ; case 11 + .short _0222EA44 - _0222E764 - 2 ; case 12 + .short _0222EA50 - _0222E764 - 2 ; case 13 + .short _0222EA6E - _0222E764 - 2 ; case 14 + .short _0222EA9C - _0222E764 - 2 ; case 15 + .short _0222EAC0 - _0222E764 - 2 ; case 16 + .short _0222EB12 - _0222E764 - 2 ; case 17 + .short _0222EB2A - _0222E764 - 2 ; case 18 + .short _0222EB36 - _0222E764 - 2 ; case 19 + .short _0222EB48 - _0222E764 - 2 ; case 20 + .short _0222EB66 - _0222E764 - 2 ; case 21 + .short _0222EB94 - _0222E764 - 2 ; case 22 + .short _0222EBB8 - _0222E764 - 2 ; case 23 + .short _0222EBDE - _0222E764 - 2 ; case 24 +_0222E796: + add r0, r1, #1 + strh r0, [r7] + b _0222EC00 +_0222E79C: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EAE4 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222E7BA: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_022383EC + cmp r0, #1 + bne _0222E7E2 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E7E2: + mov r0, #5 + strh r0, [r7] + b _0222EC00 +_0222E7E8: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0xe + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222E82A + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E80C: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222E82C +_0222E82A: + b _0222EC00 +_0222E82C: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E834: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + blt _0222E84A + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E84A: + mov r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E850: + mov r6, #0xce + lsl r6, r6, #2 + add r5, r6, #0 + mov r4, #0 + add r5, #0xc8 +_0222E85A: + ldr r0, [sp] + add r2, r4, #0 + add r1, r0, #0 + add r3, r0, #0 + add r1, r1, r6 + add r3, r3, r5 + bl MOD12_02238660 + add r4, r4, #1 + cmp r4, #4 + blt _0222E85A + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E878: + mov r5, #0 + add r2, sp, #0x40 + add r3, sp, #0x34 + add r6, sp, #4 + mov r0, #4 +_0222E882: + mov r1, #0 + str r1, [r2] + str r5, [r3] + add r4, r6, #0 +_0222E88A: + add r1, r1, #1 + stmia r4!, {r0} + cmp r1, #4 + blt _0222E88A + add r5, r5, #1 + add r2, r2, #4 + add r3, r3, #4 + add r6, #0x10 + cmp r5, #3 + blt _0222E882 + mov r3, #0 + add r6, sp, #0x40 +_0222E8A2: + ldr r0, [sp] + add r1, r0, r3 + ldr r0, _0222EAE4 ; =0x00000231 + ldrb r1, [r1, r0] + ldr r0, [sp] + add r2, r0, r1 + ldr r0, _0222EAEC ; =0x0000023E + ldrb r0, [r2, r0] + lsl r0, r0, #2 + ldr r4, [r6, r0] + add r4, r4, #1 + str r4, [r6, r0] + ldr r0, _0222EAEC ; =0x0000023E + mov r4, #0 + ldrb r0, [r2, r0] + lsl r2, r0, #4 + add r0, sp, #4 + add r5, r0, r2 + add r2, r5, #0 +_0222E8C8: + ldr r0, [r2] + cmp r0, #4 + bne _0222E8D4 + lsl r0, r4, #2 + str r1, [r5, r0] + b _0222E8DC +_0222E8D4: + add r4, r4, #1 + add r2, r2, #4 + cmp r4, #4 + blt _0222E8C8 +_0222E8DC: + add r3, r3, #1 + cmp r3, #4 + blt _0222E8A2 + mov r6, #0 +_0222E8E4: + mov r2, #2 + cmp r6, #2 + bge _0222E910 + add r0, sp, #0x48 + add r1, sp, #0x3c +_0222E8EE: + sub r3, r0, #4 + ldr r5, [r0] + ldr r4, [r3] + cmp r4, r5 + bge _0222E906 + str r4, [r0] + str r5, [r3] + sub r3, r1, #4 + ldr r5, [r1] + ldr r4, [r3] + str r4, [r1] + str r5, [r3] +_0222E906: + sub r2, r2, #1 + sub r0, r0, #4 + sub r1, r1, #4 + cmp r2, r6 + bgt _0222E8EE +_0222E910: + add r6, r6, #1 + cmp r6, #2 + blt _0222E8E4 + ldr r0, [r7, #4] + mov r2, #0x41 + lsl r0, r0, #2 + add r1, sp, #0x34 + ldr r3, [r1, r0] + ldr r0, [sp] + lsl r2, r2, #4 + strb r3, [r0, r2] + mov r3, #0 + ldr r6, _0222EAF0 ; =0x00000411 + add r2, r3, #0 + add r5, sp, #4 +_0222E92E: + ldr r0, [r7, #4] + ldr r4, [sp] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r4, r4, r3 + lsl r0, r0, #4 + add r0, r5, r0 + ldr r0, [r2, r0] + add r3, r3, #1 + add r2, r2, #4 + strb r0, [r4, r6] + cmp r3, #4 + blt _0222E92E + ldr r0, [r7, #4] + lsl r1, r0, #2 + add r0, sp, #0x40 + ldr r0, [r0, r1] + cmp r0, #4 + bhi _0222E992 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E960: ; jump table + .short _0222E992 - _0222E960 - 2 ; case 0 + .short _0222E96A - _0222E960 - 2 ; case 1 + .short _0222E974 - _0222E960 - 2 ; case 2 + .short _0222E97E - _0222E960 - 2 ; case 3 + .short _0222E988 - _0222E960 - 2 ; case 4 +_0222E96A: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #0xa + strb r2, [r0, r1] + b _0222E99C +_0222E974: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #7 + strb r2, [r0, r1] + b _0222E99C +_0222E97E: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #8 + strb r2, [r0, r1] + b _0222E99C +_0222E988: + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #9 + strb r2, [r0, r1] + b _0222E99C +_0222E992: + mov r0, #0xc + strh r0, [r7] + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0222E99C: + ldr r2, _0222EAF8 ; =0x0000040D + ldr r0, [sp] + mov r1, #0 + add r3, r2, #0 + strb r1, [r0, r2] + sub r3, #0xd + add r1, r0, #0 + add r1, r1, r3 + sub r2, #0xe5 + add r3, r0, #0 + ldrb r2, [r3, r2] + bl MOD12_02235274 + ldr r0, [sp] + ldr r3, _0222EAFC ; =0x00000406 + add r1, r0, #0 + add r1, r1, r3 + sub r3, #0xde + add r2, r0, #0 + ldrb r2, [r2, r3] + bl MOD12_02235274 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222E9CE: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E9D6: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0x10 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EADE + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222E9FA: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EADE + ldr r1, _0222EAF4 ; =0x0000040C + ldr r0, [sp] + mov r2, #0 + strb r2, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA2C: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #3 + bge _0222EA3C + mov r0, #7 + strh r0, [r7] + b _0222EC00 +_0222EA3C: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA44: + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA50: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EAE4 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EA6E: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_0223844C + cmp r0, #0 + bne _0222EA94 + mov r0, #0x11 + strh r0, [r7] + b _0222EC00 +_0222EA94: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EA9C: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0x11 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EADE + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EAC0: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EAE8 ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222EAE0 +_0222EADE: + b _0222EC00 +_0222EAE0: + ldr r1, _0222EAF4 ; =0x0000040C + b _0222EB00 + .align 2, 0 +_0222EAE4: .word 0x00000231 +_0222EAE8: .word 0x00000127 +_0222EAEC: .word 0x0000023E +_0222EAF0: .word 0x00000411 +_0222EAF4: .word 0x0000040C +_0222EAF8: .word 0x0000040D +_0222EAFC: .word 0x00000406 +_0222EB00: + ldr r0, [sp] + mov r2, #0 + strb r2, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB12: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + bge _0222EB22 + mov r0, #0xd + strh r0, [r7] + b _0222EC00 +_0222EB22: + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB2A: + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB36: + mov r1, #0xce + ldr r0, [sp] + lsl r1, r1, #2 + add r0, r0, r1 + bl MOD12_02238210 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EB48: + ldr r1, [r7, #4] + ldr r0, [sp] + ldr r2, _0222EC08 ; =0x00000231 + add r0, r0, r1 + ldrb r3, [r0, r2] + add r1, r2, #0 + ldr r0, [sp] + add r1, #0xf7 + strb r3, [r0, r1] + ldr r1, [r7, #4] + add r2, #0xf8 + strb r1, [r0, r2] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_0222EB66: + mov r3, #0xce + ldr r0, [sp] + lsl r3, r3, #2 + add r4, r3, #0 + add r1, r0, #0 + add r1, r1, r3 + sub r4, #0x10 + add r2, r0, #0 + ldrb r2, [r2, r4] + sub r3, #0xf + add r4, r0, #0 + ldrb r3, [r4, r3] + bl MOD12_022384AC + cmp r0, #1 + bne _0222EB8E + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EB8E: + mov r0, #0x18 + strh r0, [r7] + b _0222EC00 +_0222EB94: + mov r1, #0xc3 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + ldr r1, [sp] + mov r4, #0xca + lsl r4, r4, #2 + add r3, r1, #0 + mov r2, #0xf + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EC00 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBB8: + ldr r0, [sp] + mov r1, #0xc3 + ldr r4, _0222EC0C ; =0x00000127 + ldr r3, [r0] + lsl r1, r1, #4 + add r0, r0, r1 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EC00 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBDE: + ldr r0, [r7, #4] + add r0, r0, #1 + str r0, [r7, #4] + cmp r0, #4 + blt _0222EBF4 + mov r0, #0 + str r0, [r7, #4] + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _0222EC00 +_0222EBF4: + mov r0, #0x14 + strh r0, [r7] + b _0222EC00 +_0222EBFA: + add sp, #0x4c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0222EC00: + mov r0, #0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_0222EC08: .word 0x00000231 +_0222EC0C: .word 0x00000127 + + thumb_func_start MOD12_0222EC10 +MOD12_0222EC10: ; 0x0222EC10 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222EC26 + cmp r0, #1 + beq _0222EC2C + cmp r0, #2 + beq _0222EC4C + b _0222EC70 +_0222EC26: + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC2C: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0x12 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EC74 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC4C: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222EC78 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EC74 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EC74 +_0222EC70: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222EC74: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222EC78: .word 0x00000127 + + thumb_func_start MOD12_0222EC7C +MOD12_0222EC7C: ; 0x0222EC7C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrh r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bls _0222EC8A + b _0222EDEE +_0222EC8A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222EC96: ; jump table + .short _0222ECA4 - _0222EC96 - 2 ; case 0 + .short _0222ECC4 - _0222EC96 - 2 ; case 1 + .short _0222ECEA - _0222EC96 - 2 ; case 2 + .short _0222ED4A - _0222EC96 - 2 ; case 3 + .short _0222ED6E - _0222EC96 - 2 ; case 4 + .short _0222EDAA - _0222EC96 - 2 ; case 5 + .short _0222EDCA - _0222EC96 - 2 ; case 6 +_0222ECA4: + mov r0, #0xc3 + mov r3, #0xca + lsl r0, r0, #4 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x15 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222ECE0 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ECC4: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + beq _0222ECE2 +_0222ECE0: + b _0222EE0E +_0222ECE2: + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ECEA: + mov r2, #0x36 + mov r1, #0 + lsl r2, r2, #4 + add r0, r1, #0 + add r2, r4, r2 +_0222ECF4: + ldr r3, [r2] + lsl r3, r3, #0x1a + lsr r3, r3, #0x1e + beq _0222ECFE + add r1, r1, #1 +_0222ECFE: + add r0, r0, #1 + add r2, #0x2c + cmp r0, #4 + blt _0222ECF4 + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #3 + bhs _0222ED1C + cmp r1, #4 + bge _0222ED1C + ldr r0, _0222EE18 ; =0x0000040C + mov r1, #0x2a + strb r1, [r4, r0] + b _0222ED22 +_0222ED1C: + ldr r0, _0222EE18 ; =0x0000040C + mov r1, #0 + strb r1, [r4, r0] +_0222ED22: + ldr r3, _0222EE1C ; =0x0000040E + mov r1, #0 + strb r1, [r4, r3] + add r0, r3, #1 + strb r1, [r4, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r3, #0xe6 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x14 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ED4A: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222ED6E: + mov r1, #0xce + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD12_0223818C + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD12_02235C60 + ldr r0, _0222EE20 ; =0x00000236 + mov r6, #0 + add r1, r0, #0 + add r3, r4, #0 + add r1, #0x20 +_0222ED8C: + ldrh r2, [r3, r0] + add r6, r6, #1 + strh r2, [r3, r1] + add r3, r3, #2 + cmp r6, #4 + blt _0222ED8C + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDAA: + mov r0, #0xc3 + mov r3, #0x23 + lsl r0, r0, #4 + lsl r3, r3, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0x13 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDCA: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222EE14 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EE0E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222EE0E +_0222EDEE: + mov r0, #0x23 + lsl r0, r0, #4 + ldrb r1, [r4, r0] + cmp r1, #4 + blo _0222EE00 + mov r0, #0xf + strh r0, [r5, #2] + mov r0, #2 + pop {r4, r5, r6, pc} +_0222EE00: + mov r1, #0 + add r0, r0, #5 + strb r1, [r4, r0] + mov r0, #3 + strh r0, [r5, #2] + mov r0, #2 + pop {r4, r5, r6, pc} +_0222EE0E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0222EE14: .word 0x00000127 +_0222EE18: .word 0x0000040C +_0222EE1C: .word 0x0000040E +_0222EE20: .word 0x00000236 + + thumb_func_start MOD12_0222EE24 +MOD12_0222EE24: ; 0x0222EE24 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #3 + bhi _0222EED0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222EE3C: ; jump table + .short _0222EE44 - _0222EE3C - 2 ; case 0 + .short _0222EE66 - _0222EE3C - 2 ; case 1 + .short _0222EE90 - _0222EE3C - 2 ; case 2 + .short _0222EEB4 - _0222EE3C - 2 ; case 3 +_0222EE44: + mov r1, #0 + ldr r7, _0222EEF4 ; =0x0000012E + add r2, r3, #0 + add r5, r1, #0 +_0222EE4C: + ldr r0, _0222EEF8 ; =0x00000242 + ldr r6, [r3] + ldrsh r0, [r2, r0] + add r6, r6, r5 + add r1, r1, #1 + strh r0, [r6, r7] + add r2, r2, #2 + add r5, #0xc + cmp r1, #4 + blt _0222EE4C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222EE66: + ldr r5, _0222EEFC ; =0x0000040C + mov r0, #0x2b + strb r0, [r3, r5] + add r0, r5, #1 + mov r1, #0 + strb r1, [r3, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + sub r5, #0xe4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #3 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EE90: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _0222EF00 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EEB4: + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #1 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222EEF0 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222EEF0 +_0222EED0: + mov r0, #0xc3 + lsl r0, r0, #4 + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222EF00 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222EEF0 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0222EEF0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222EEF4: .word 0x0000012E +_0222EEF8: .word 0x00000242 +_0222EEFC: .word 0x0000040C +_0222EF00: .word 0x00000127 + + thumb_func_start MOD12_0222EF04 +MOD12_0222EF04: ; 0x0222EF04 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _0222F15C ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _0222F160 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0222F164 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x16 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _0222F168 ; =0x00000F68 + add r0, r4, #0 + mov r2, #0x16 + bl FUN_02006268 + ldr r2, _0222F168 ; =0x00000F68 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x16 + bl MOD12_022312D8 + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #0 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0xc] + add r0, r5, #0 + bl MOD12_0222F720 + mov r0, #0x16 + bl FUN_02002FD0 + str r0, [r5, #0x50] + mov r1, #1 + bl FUN_020038F0 + mov r2, #2 + ldr r0, [r5, #0x50] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x16 + bl FUN_02003008 + mov r1, #1 + ldr r0, [r5, #0x50] + lsl r2, r1, #9 + mov r3, #0x16 + bl FUN_02003008 + mov r2, #7 + ldr r0, [r5, #0x50] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x16 + bl FUN_02003008 + mov r2, #2 + ldr r0, [r5, #0x50] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x16 + bl FUN_02003008 + mov r0, #0x16 + bl FUN_02016B94 + str r0, [r5, #0x30] + mov r0, #0x40 + mov r1, #0x16 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + ldr r0, [r5, #0x30] + bl MOD12_0222F548 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x16 + bl FUN_02002C50 + mov r0, #0x16 + bl FUN_0200BB14 + ldr r1, _0222F16C ; =0x02244AFC + ldr r2, _0222F170 ; =0x02244AB4 + mov r3, #0x20 + str r0, [r5, #0x28] + bl FUN_0200BB6C + ldr r1, _0222F174 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x28] + bl FUN_0200BB34 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _0222F178 ; =0x02244AC8 + bl FUN_0200BF60 + ldr r0, [r5, #0x28] + bl FUN_0200BB68 + mov r2, #1 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #0x16 + bl FUN_02006D98 + str r0, [r5, #0x10] + bl MOD12_0222F6E0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc4 + mov r3, #0x16 + bl FUN_0200A86C + str r0, [r5, #0x44] + mov r0, #0x16 + bl FUN_0200AA80 + str r0, [r5, #0x48] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x16 + bl FUN_020219F4 + str r0, [r5, #0x4c] + add r0, r5, #0 + bl MOD12_0222F834 + add r0, r5, #0 + bl MOD12_0222F938 + add r0, r5, #0 + bl MOD12_0222F6B4 + add r0, r5, #0 + bl MOD12_0222F748 + add r0, r5, #0 + bl MOD12_0222F7F4 + mov r0, #1 + str r0, [sp] + add r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + add r2, r1, #0 + bl FUN_02003914 + mov r1, #1 + add r0, r1, #0 + str r1, [sp] + add r0, #0xff + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r2, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xe0 + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r1, #2 + bl FUN_02003914 + mov r2, #0 + mov r0, #1 + str r2, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0x50] + ldr r3, _0222F17C ; =0x00007FFF + mov r1, #3 + bl FUN_02003914 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x16 + str r1, [sp, #8] + mov r1, #0x1b + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0222F180 ; =MOD12_0222F4F4 + ldr r2, _0222F184 ; =0x0000EA60 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _0222F188 ; =0x000004F8 + mov r1, #1 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0 + bl FUN_0200415C + ldr r1, _0222F18C ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _0222F190 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _0222F194 ; =MOD12_0222F458 + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _0222F198 ; =0x00000605 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222F15C: .word 0xFFFFE0FF +_0222F160: .word 0x04001000 +_0222F164: .word 0xFFFF1FFF +_0222F168: .word 0x00000F68 +_0222F16C: .word 0x02244AFC +_0222F170: .word 0x02244AB4 +_0222F174: .word 0x00100010 +_0222F178: .word 0x02244AC8 +_0222F17C: .word 0x00007FFF +_0222F180: .word MOD12_0222F4F4 +_0222F184: .word 0x0000EA60 +_0222F188: .word 0x000004F8 +_0222F18C: .word 0x0000046F +_0222F190: .word 0x00000171 +_0222F194: .word MOD12_0222F458 +_0222F198: .word 0x00000605 + + thumb_func_start MOD12_0222F19C +MOD12_0222F19C: ; 0x0222F19C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0222F1C0 + cmp r0, #1 + beq _0222F236 + cmp r0, #2 + bne _0222F1BE + b _0222F2EC +_0222F1BE: + b _0222F2FA +_0222F1C0: + bl FUN_0200E308 + cmp r0, #1 + beq _0222F1CA + b _0222F2FA +_0222F1CA: + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #1 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #2 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + ldr r2, _0222F300 ; =0x00007FFF + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #4 + lsr r2, r2, #1 + mov r3, #6 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0222F300 ; =0x00007FFF + ldr r2, _0222F304 ; =0x0000FFFF + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #8 + mov r3, #6 + bl FUN_02003210 + ldr r0, _0222F308 ; =0x000006E5 + bl FUN_020054C8 + mov r0, #1 + str r0, [r5] + b _0222F2FA +_0222F236: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _0222F2A8 + ldr r2, _0222F30C ; =0x000004F6 + ldr r1, _0222F310 ; =0x00000F14 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0222F314 ; =0x02244B44 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0222F27A + cmp r0, #1 + bne _0222F264 + ldr r0, _0222F30C ; =0x000004F6 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0222F26A +_0222F264: + ldr r0, _0222F318 ; =0x00000F16 + ldrh r1, [r4, r0] + ldr r0, _0222F30C ; =0x000004F6 +_0222F26A: + strh r1, [r4, r0] + ldr r0, _0222F310 ; =0x00000F14 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0222F2A8 +_0222F27A: + cmp r0, #3 + bne _0222F2A8 + mov r0, #2 + str r0, [r5] + ldr r0, _0222F310 ; =0x00000F14 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x16 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x24 + mov r3, #0 + bl FUN_0200E1D0 + b _0222F2FA +_0222F2A8: + ldr r0, _0222F31C ; =0x000004FC + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _0222F31C ; =0x000004FC + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _0222F320 ; =0x00000F1C + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0222F2FA + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x16 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x24 + mov r3, #0 + bl FUN_0200E1D0 + b _0222F2FA +_0222F2EC: + bl FUN_0200E308 + cmp r0, #1 + bne _0222F2FA + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0222F2FA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0222F300: .word 0x00007FFF +_0222F304: .word 0x0000FFFF +_0222F308: .word 0x000006E5 +_0222F30C: .word 0x000004F6 +_0222F310: .word 0x00000F14 +_0222F314: .word 0x02244B44 +_0222F318: .word 0x00000F16 +_0222F31C: .word 0x000004FC +_0222F320: .word 0x00000F1C + + thumb_func_start MOD12_0222F324 +MOD12_0222F324: ; 0x0222F324 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + add r0, r4, #0 + bl MOD12_0222F7C0 + add r0, r4, #0 + bl MOD12_0222F824 + add r0, r4, #0 + bl MOD12_0222F934 + add r0, r4, #0 + bl MOD12_0222F98C + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x30] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x28] + bl FUN_0200BD04 + bl FUN_0201C29C + mov r7, #0xf2 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_0222F3A4: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F3AE + bl FUN_021DD540 +_0222F3AE: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0222F3A4 + add r0, r4, #0 + add r0, #0xc + bl MOD12_02239874 + add r0, r4, #0 + bl MOD12_02239A58 + ldr r0, [r4, #0x10] + bl FUN_020072E8 + mov r0, #2 + bl FUN_02002CF8 + ldr r0, [r4, #0x50] + mov r1, #0 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #1 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #2 + bl FUN_02003038 + ldr r0, [r4, #0x50] + mov r1, #3 + bl FUN_02003038 + ldr r0, [r4, #0x50] + bl FUN_02002FEC + ldr r0, [r4, #0x48] + bl FUN_0200AB18 + ldr r0, [r4, #0x4c] + bl FUN_02021A20 + ldr r0, [r4, #0x44] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl MOD12_02231378 + bl FUN_0201CD04 + ldr r0, [sp] + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x16 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _0222F450 ; =SDK_OVERLAY_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _0222F454 ; =SDK_OVERLAY_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F450: .word SDK_OVERLAY_MODULE_08_ID +_0222F454: .word SDK_OVERLAY_MODULE_17_ID + + thumb_func_start MOD12_0222F458 +MOD12_0222F458: ; 0x0222F458 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0222F4E4 ; =0x00000F63 + sub r1, r0, #2 + ldrb r3, [r6, r1] + sub r1, r0, #3 + ldrb r1, [r6, r1] + sub r5, r0, #1 + ldrb r5, [r6, r5] + lsl r2, r1, #8 + mov r1, #0xff + lsl r1, r1, #8 + and r2, r1 + orr r2, r5 + ldrb r4, [r6, r0] + ldr r5, _0222F4E8 ; =0x04000040 + strh r2, [r5] + lsl r2, r3, #8 + and r2, r1 + orr r2, r4 + strh r2, [r5, #4] + add r2, r0, #4 + ldrb r4, [r6, r2] + add r2, r0, #2 + ldrb r3, [r6, r2] + add r2, r0, #1 + ldrb r2, [r6, r2] + add r0, r0, #3 + ldrb r0, [r6, r0] + lsl r2, r2, #8 + and r2, r1 + orr r0, r2 + strh r0, [r5, #2] + lsl r0, r3, #8 + and r0, r1 + orr r0, r4 + strh r0, [r5, #6] + ldr r0, [r6, #0x10] + bl FUN_020081C4 + mov r7, #0xf2 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222F4B0: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F4BA + bl FUN_021DD58C +_0222F4BA: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0222F4B0 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r6, #0x50] + bl FUN_0200372C + ldr r0, [r6, #0x30] + bl FUN_0201AB60 + ldr r3, _0222F4EC ; =0x027E0000 + ldr r1, _0222F4F0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F4E4: .word 0x00000F63 +_0222F4E8: .word 0x04000040 +_0222F4EC: .word 0x027E0000 +_0222F4F0: .word 0x00003FF8 + + thumb_func_start MOD12_0222F4F4 +MOD12_0222F4F4: ; 0x0222F4F4 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0222F540 ; =0x000004F8 + add r6, r1, #0 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _0222F534 + ldr r0, [r6, #0x10] + bl FUN_02006ED4 + mov r7, #0xf2 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0222F50E: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0222F518 + bl FUN_021DD518 +_0222F518: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0222F50E + bl FUN_02215A44 + ldr r0, [r6, #0x2c] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _0222F544 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_0222F534: + ldr r1, [r6, #0x30] + mov r0, #0x16 + bl FUN_020335F0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222F540: .word 0x000004F8 +_0222F544: .word 0x04000540 + + thumb_func_start MOD12_0222F548 +MOD12_0222F548: ; 0x0222F548 + push {r3, r4, r5, lr} + sub sp, #0xa8 + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _0222F6A0 ; =0x02244B1C + add r3, sp, #0x2c + mov r2, #5 +_0222F558: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F558 + add r0, sp, #0x2c + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _0222F6A4 ; =0x02244AA4 + add r3, sp, #0x1c + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0222F6A8 ; =0x02244B70 + add r3, sp, #0x54 + mov r2, #0xa +_0222F5B8: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222F5B8 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _0222F6AC ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _0222F6B0 ; =0x02244AE0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0xa8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F6A0: .word 0x02244B1C +_0222F6A4: .word 0x02244AA4 +_0222F6A8: .word 0x02244B70 +_0222F6AC: .word 0x04000008 +_0222F6B0: .word 0x02244AE0 + + thumb_func_start MOD12_0222F6B4 +MOD12_0222F6B4: ; 0x0222F6B4 + push {lr} + sub sp, #0x14 + add r1, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r1, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + add sp, #0x14 + pop {pc} + .align 2, 0 + + thumb_func_start MOD12_0222F6E0 +MOD12_0222F6E0: ; 0x0222F6E0 + push {r3, r4, r5, lr} + ldr r3, _0222F718 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _0222F71C ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _0222F708 + bl ErrorHandling +_0222F708: + cmp r5, #0 + bne _0222F710 + bl ErrorHandling +_0222F710: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_0222F718: .word 0x021064B8 +_0222F71C: .word 0x021064C0 + + thumb_func_start MOD12_0222F720 +MOD12_0222F720: ; 0x0222F720 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0222F72E + bl ErrorHandling +_0222F72E: + mov r3, #0 + mov r0, #3 +_0222F732: + add r1, r4, r3 + sub r2, r0, r3 + add r1, #0xd4 + add r3, r3, #1 + strb r2, [r1] + cmp r3, #4 + blt _0222F732 + add r0, r4, #0 + bl MOD12_02239B88 + pop {r4, pc} + + thumb_func_start MOD12_0222F748 +MOD12_0222F748: ; 0x0222F748 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _0222F7B8 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + ldr r0, [r4, #0x50] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl MOD12_0223988C + mov r0, #0 + mvn r0, r0 + ldr r3, _0222F7B8 ; =0x000080E9 + str r0, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r4, #0x50] + bl MOD12_022316F8 + ldr r3, _0222F7B8 ; =0x000080E9 + mov r0, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc8 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, _0222F7BC ; =0x0000C350 + str r0, [sp, #0x18] + add r0, r4, #0 + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + add r0, #0xb4 + bl MOD12_022317C8 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_0222F7B8: .word 0x000080E9 +_0222F7BC: .word 0x0000C350 + + thumb_func_start MOD12_0222F7C0 +MOD12_0222F7C0: ; 0x0222F7C0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x2c] + bl MOD12_022398D8 + add r0, r4, #0 + add r0, #0xb4 + bl MOD12_0223185C + ldr r1, _0222F7F0 ; =0x000080E9 + mov r2, #0 + str r1, [sp] + ldr r0, [r4, #0x2c] + mvn r2, r2 + add r3, r1, #0 + bl MOD12_02231780 + ldr r0, [r4, #0x2c] + ldr r1, _0222F7F0 ; =0x000080E9 + bl FUN_0200C368 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222F7F0: .word 0x000080E9 + + thumb_func_start MOD12_0222F7F4 +MOD12_0222F7F4: ; 0x0222F7F4 + push {r3, lr} + sub sp, #0x18 + add r3, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _0222F820 ; =0x000080EA + mov r1, #3 + str r0, [sp, #0x14] + ldr r0, [r3, #0x50] + ldr r2, [r3, #0x28] + ldr r3, [r3, #0x2c] + bl FUN_0200C0DC + add sp, #0x18 + pop {r3, pc} + .align 2, 0 +_0222F820: .word 0x000080EA + + thumb_func_start MOD12_0222F824 +MOD12_0222F824: ; 0x0222F824 + ldr r3, _0222F82C ; =0x0200C369 + ldr r0, [r0, #0x2c] + ldr r1, _0222F830 ; =0x000080EA + bx r3 + .align 2, 0 +_0222F82C: .word 0x0200C369 +_0222F830: .word 0x000080EA + + thumb_func_start MOD12_0222F834 +MOD12_0222F834: ; 0x0222F834 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #0x16 + str r1, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x15 + mov r3, #3 + bl FUN_020068C8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x22 + mov r3, #0x16 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x16 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _0222F930 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x26 + mov r3, #0x16 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x17 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x14 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xc0 + str r0, [sp, #8] + ldr r0, [r5, #0x50] + mov r1, #0x2d + mov r2, #0x24 + mov r3, #0x16 + bl FUN_020030E8 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F930: .word 0x00001988 + + thumb_func_start MOD12_0222F934 +MOD12_0222F934: ; 0x0222F934 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222F938 +MOD12_0222F938: ; 0x0222F938 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x12 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x13 + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #0x50] + mov r1, #0x2d + mov r2, #0x21 + mov r3, #0x16 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD12_0222F98C +MOD12_0222F98C: ; 0x0222F98C + bx lr + .align 2, 0 + + thumb_func_start MOD12_0222F990 +MOD12_0222F990: ; 0x0222F990 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222F9BC + ldr r0, [r5, #0x50] + bl FUN_020038E4 + cmp r0, #0 + bne _0222F9C0 + ldr r0, [r5] + mov r1, #0x16 + bl MOD12_022314CC + ldr r0, [r5] + bl MOD12_0223150C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222F9C0 +_0222F9BC: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222F9C0: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0222F9C4 +MOD12_0222F9C4: ; 0x0222F9C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #0 + bne _0222FA10 + ldr r0, [r4] + bl FUN_020832EC + cmp r0, #1 + bne _0222F9DE + mov r1, #2 + b _0222F9E0 +_0222F9DE: + mov r1, #1 +_0222F9E0: + add r0, r4, #0 + add r0, #0xe9 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r4, #0 + add r0, #0xeb + strb r1, [r0] + ldr r0, _0222FA34 ; =0x000004FC + add r1, r4, #0 + add r0, r4, r0 + add r4, #0xe2 + mov r2, #0xd + add r3, r4, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FA2E + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _0222FA2E +_0222FA10: + ldr r0, _0222FA34 ; =0x000004FC + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _0222FA38 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FA2E + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FA2E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FA34: .word 0x000004FC +_0222FA38: .word 0x00000127 + + thumb_func_start MOD12_0222FA3C +MOD12_0222FA3C: ; 0x0222FA3C + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222FA74 + add r0, r3, #0 + add r0, #0xd8 + ldrb r0, [r0] + mov r2, #0 + add r0, r3, r0 + add r0, #0xd4 + ldrb r1, [r0] + add r0, r3, #0 + add r0, #0xe2 + strb r1, [r0] + ldr r0, _0222FA98 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FA92 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FA92 +_0222FA74: + ldr r0, _0222FA98 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FA9C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FA92 + mov r0, #1 + pop {r4, pc} +_0222FA92: + mov r0, #0 + pop {r4, pc} + nop +_0222FA98: .word 0x000004FC +_0222FA9C: .word 0x00000127 + + thumb_func_start MOD12_0222FAA0 +MOD12_0222FAA0: ; 0x0222FAA0 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _0222FAE6 + add r1, r3, #0 + mov r0, #0 + add r1, #0xec + strb r0, [r1] + add r2, r0, #0 + add r1, r3, #0 + sub r2, #0x10 + add r1, #0xed + strb r2, [r1] + add r1, r3, #0 + mov r2, #0x10 + add r1, #0xee + strb r2, [r1] + add r1, r3, #0 + add r1, #0xf0 + strh r0, [r1] + ldr r0, _0222FB08 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xe + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FB04 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FB04 +_0222FAE6: + ldr r0, _0222FB08 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FB0C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FB04 + mov r0, #1 + pop {r4, pc} +_0222FB04: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222FB08: .word 0x000004FC +_0222FB0C: .word 0x00000127 + + thumb_func_start MOD12_0222FB10 +MOD12_0222FB10: ; 0x0222FB10 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FB58 ; =0x000004FC + bne _0222FB36 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #0xf + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FB52 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FB52 +_0222FB36: + ldr r3, [r2] + ldr r4, _0222FB5C ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FB52 + mov r0, #1 + pop {r4, pc} +_0222FB52: + mov r0, #0 + pop {r4, pc} + nop +_0222FB58: .word 0x000004FC +_0222FB5C: .word 0x00000127 + + thumb_func_start MOD12_0222FB60 +MOD12_0222FB60: ; 0x0222FB60 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FBA8 ; =0x000004FC + bne _0222FB86 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #2 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FBA2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FBA2 +_0222FB86: + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FBAC ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FBA2 + mov r0, #1 + pop {r4, pc} +_0222FBA2: + mov r0, #0 + pop {r4, pc} + nop +_0222FBA8: .word 0x000004FC +_0222FBAC: .word 0x00000127 + + thumb_func_start MOD12_0222FBB0 +MOD12_0222FBB0: ; 0x0222FBB0 + push {r4, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222FBC2 + cmp r0, #1 + beq _0222FC1C + b _0222FC36 +_0222FBC2: + add r0, r3, #0 + add r0, #0xd8 + ldrb r0, [r0] + cmp r0, #0 + beq _0222FBD6 + cmp r0, #1 + beq _0222FBE0 + cmp r0, #2 + beq _0222FBEA + b _0222FBF4 +_0222FBD6: + add r0, r3, #0 + mov r1, #3 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBE0: + add r0, r3, #0 + mov r1, #4 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBEA: + add r0, r3, #0 + mov r1, #5 + add r0, #0xe9 + strb r1, [r0] + b _0222FBFC +_0222FBF4: + add r0, r3, #0 + mov r1, #6 + add r0, #0xe9 + strb r1, [r0] +_0222FBFC: + add r0, r3, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r3, #0 + add r0, #0xeb + strb r1, [r0] + add r0, r3, #0 + add r0, #0xe2 + ldrb r1, [r0] + add r0, r3, #0 + add r0, #0xe5 + strb r1, [r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FC1C: + ldr r0, _0222FC58 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xd + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FC54 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FC54 +_0222FC36: + ldr r0, _0222FC58 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FC5C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FC54 + mov r0, #1 + pop {r4, pc} +_0222FC54: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222FC58: .word 0x000004FC +_0222FC5C: .word 0x00000127 + + thumb_func_start MOD12_0222FC60 +MOD12_0222FC60: ; 0x0222FC60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0222FC76 + cmp r0, #1 + beq _0222FCA0 + cmp r0, #2 + beq _0222FCBC + b _0222FCDE +_0222FC76: + add r1, r5, #0 + add r1, #0xe2 + ldrb r1, [r1] + ldr r0, [r5] + bl FUN_02083308 + add r1, r5, #0 + add r1, #0xe3 + strb r0, [r1] + add r1, r5, #0 + add r1, #0xe2 + ldrb r1, [r1] + ldr r0, [r5] + bl FUN_0208336C + add r1, r5, #0 + add r1, #0xe4 + strb r0, [r1] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FCA0: + ldr r0, _0222FCE8 ; =0x000004FC + add r1, r5, #0 + add r0, r5, r0 + add r5, #0xe2 + mov r2, #6 + add r3, r5, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FCE2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FCE2 +_0222FCBC: + ldr r0, _0222FCE8 ; =0x000004FC + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _0222FCEC ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FCE2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FCE2 +_0222FCDE: + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FCE2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FCE8: .word 0x000004FC +_0222FCEC: .word 0x00000127 + + thumb_func_start MOD12_0222FCF0 +MOD12_0222FCF0: ; 0x0222FCF0 + ldrh r2, [r1] + cmp r2, #0 + bne _0222FD0A + add r2, r0, #0 + add r2, #0xd8 + ldrb r2, [r2] + add r0, #0xd8 + add r2, r2, #1 + strb r2, [r0] + ldrh r0, [r1] + add r0, r0, #1 + strh r0, [r1] + b _0222FD1C +_0222FD0A: + add r0, #0xd8 + ldrb r0, [r0] + cmp r0, #4 + blo _0222FD16 + mov r0, #1 + bx lr +_0222FD16: + mov r0, #2 + strh r0, [r1, #2] + bx lr +_0222FD1C: + mov r0, #0 + bx lr + + thumb_func_start MOD12_0222FD20 +MOD12_0222FD20: ; 0x0222FD20 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #3 + bhi _0222FDC8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222FD38: ; jump table + .short _0222FD40 - _0222FD38 - 2 ; case 0 + .short _0222FD62 - _0222FD38 - 2 ; case 1 + .short _0222FD84 - _0222FD38 - 2 ; case 2 + .short _0222FDAE - _0222FD38 - 2 ; case 3 +_0222FD40: + add r0, r3, #0 + ldr r1, _0222FDEC ; =0x000006E5 + add r0, #0xf2 + strh r1, [r0] + ldr r0, _0222FDF0 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0x10 + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FD62: + ldr r0, _0222FDF0 ; =0x000004FC + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _0222FDF4 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FD84: + ldr r1, [r3] + ldr r0, _0222FDF8 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #2 + bne _0222FD92 + mov r1, #7 + b _0222FD94 +_0222FD92: + mov r1, #0 +_0222FD94: + add r0, r3, #0 + add r0, #0xe9 + strb r1, [r0] + add r0, r3, #0 + mov r1, #0 + add r0, #0xea + strb r1, [r0] + add r0, r3, #0 + add r0, #0xeb + strb r1, [r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_0222FDAE: + ldr r0, _0222FDF0 ; =0x000004FC + add r1, r3, #0 + add r0, r3, r0 + mov r2, #0xd + add r3, #0xe2 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FDE6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FDE6 +_0222FDC8: + ldr r0, _0222FDF0 ; =0x000004FC + ldr r4, [r3] + add r0, r3, r0 + ldr r3, _0222FDF4 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r4, r3] + sub r3, #0xb + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FDE6 + mov r0, #1 + pop {r3, r4, r5, pc} +_0222FDE6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0222FDEC: .word 0x000006E5 +_0222FDF0: .word 0x000004FC +_0222FDF4: .word 0x00000127 +_0222FDF8: .word 0x00000121 + + thumb_func_start MOD12_0222FDFC +MOD12_0222FDFC: ; 0x0222FDFC + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _0222FE44 ; =0x000004FC + bne _0222FE22 + add r0, r2, r0 + add r1, r2, #0 + mov r2, #1 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _0222FE3E + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _0222FE3E +_0222FE22: + ldr r3, [r2] + ldr r4, _0222FE48 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _0222FE3E + mov r0, #3 + pop {r4, pc} +_0222FE3E: + mov r0, #0 + pop {r4, pc} + nop +_0222FE44: .word 0x000004FC +_0222FE48: .word 0x00000127 + + thumb_func_start MOD12_0222FE4C +MOD12_0222FE4C: ; 0x0222FE4C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _022300E0 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _022300E4 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _022300E8 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #0xa + mov r0, #3 + mov r1, #0x17 + lsl r2, r2, #0x10 + bl FUN_0201681C + ldr r1, _022300EC ; =0x00001BF4 + add r0, r4, #0 + mov r2, #0x17 + bl FUN_02006268 + ldr r2, _022300EC ; =0x00001BF4 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x17 + bl MOD12_022312D8 + str r0, [r5, #0x10] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #1 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0x14] + add r0, r5, #0 + bl MOD12_022306F8 + mov r0, #0x17 + bl FUN_02002FD0 + add r1, r5, #0 + add r1, #0xa4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #2 + ldr r0, [r0] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r1, #1 + ldr r0, [r0] + lsl r2, r1, #9 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #7 + ldr r0, [r0] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x17 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xa4 + mov r2, #2 + ldr r0, [r0] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x17 + bl FUN_02003008 + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + ldr r1, _022300F0 ; =0x0000110C + str r0, [r5, r1] + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EC7C + mov r0, #0x17 + bl FUN_02016B94 + str r0, [r5, #0x74] + mov r0, #0x40 + mov r1, #0x17 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r1, r5, #0 + ldr r0, [r5] + add r1, #0x14 + bl MOD12_0223B49C + ldr r1, _022300F4 ; =0x00001130 + str r0, [r5, r1] + ldr r0, [r5, #0x74] + bl MOD12_02230574 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x17 + bl FUN_02002C50 + mov r0, #0x17 + bl FUN_0200BB14 + ldr r1, _022300F8 ; =0x02244C18 + ldr r2, _022300FC ; =0x02244BD4 + mov r3, #0x20 + str r0, [r5, #0x6c] + bl FUN_0200BB6C + ldr r1, _02230100 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x6c] + bl FUN_0200BB34 + str r0, [r5, #0x70] + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _02230104 ; =0x02244C00 + bl FUN_0200BF60 + ldr r0, [r5, #0x6c] + bl FUN_0200BB68 + mov r2, #1 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #0x17 + bl FUN_02006D98 + str r0, [r5, #0x58] + bl MOD12_022306F0 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc1 + mov r3, #0x17 + bl FUN_0200A86C + add r1, r5, #0 + add r1, #0x98 + str r0, [r1] + mov r0, #0x17 + bl FUN_0200AA80 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x17 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xa0 + str r0, [r1] + mov r0, #9 + mov r1, #0x17 + bl FUN_02011744 + add r1, r5, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r5, #0 + bl MOD12_022308F0 + add r0, r5, #0 + bl MOD12_022309D0 + add r0, r5, #0 + bl MOD12_022306A4 + add r0, r5, #0 + bl MOD12_02230750 + add r0, r5, #0 + bl MOD12_02230880 + ldr r0, _022300F4 ; =0x00001130 + mov r1, #0 + ldr r0, [r5, r0] + mov r2, #1 + add r3, r1, #0 + bl MOD12_0223B758 + add r0, r5, #0 + bl MOD12_0223C248 + add r0, r5, #0 + add r0, #0x14 + bl MOD12_0223D0CC + add r0, r5, #0 + bl MOD12_022309D8 + add r0, r5, #0 + bl MOD12_0223CAF8 + add r0, r5, #0 + bl MOD12_0223D55C + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x17 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x25 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _02230108 ; =MOD12_02230520 + ldr r2, _0223010C ; =0x00013880 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + ldr r0, _02230110 ; =0x00001154 + mov r1, #1 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _02230114 ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _02230118 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + mov r1, #0x39 + add r2, r1, #0 + ldr r0, _0223011C ; =0x04000050 + sub r2, #0x3f + bl G2x_SetBlendBrightness_ + ldr r0, _02230120 ; =0x000006E5 + bl FUN_020054C8 + ldr r0, _02230124 ; =MOD12_022303C0 + add r1, r5, #0 + bl FUN_02015F10 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022300E0: .word 0xFFFFE0FF +_022300E4: .word 0x04001000 +_022300E8: .word 0xFFFF1FFF +_022300EC: .word 0x00001BF4 +_022300F0: .word 0x0000110C +_022300F4: .word 0x00001130 +_022300F8: .word 0x02244C18 +_022300FC: .word 0x02244BD4 +_02230100: .word 0x00100010 +_02230104: .word 0x02244C00 +_02230108: .word MOD12_02230520 +_0223010C: .word 0x00013880 +_02230110: .word 0x00001154 +_02230114: .word 0x0000046F +_02230118: .word 0x00000171 +_0223011C: .word 0x04000050 +_02230120: .word 0x000006E5 +_02230124: .word MOD12_022303C0 + + thumb_func_start MOD12_02230128 +MOD12_02230128: ; 0x02230128 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _0223014A + cmp r0, #1 + beq _02230158 + cmp r0, #2 + beq _0223020E + b _0223021C +_0223014A: + bl FUN_0200E308 + cmp r0, #1 + bne _0223021C + mov r0, #1 + str r0, [r5] + b _0223021C +_02230158: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _022301CA + ldr r2, _02230224 ; =0x00001152 + ldr r1, _02230228 ; =0x00001BE8 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _0223022C ; =0x02244C60 + ldr r2, [r2, r3] + blx r2 + sub r1, r0, #1 + cmp r1, #1 + bhi _0223019C + cmp r0, #1 + bne _02230186 + ldr r0, _02230224 ; =0x00001152 + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0223018C +_02230186: + ldr r0, _02230230 ; =0x00001BEA + ldrh r1, [r4, r0] + ldr r0, _02230224 ; =0x00001152 +_0223018C: + strh r1, [r4, r0] + ldr r0, _02230228 ; =0x00001BE8 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _022301CA +_0223019C: + cmp r0, #3 + bne _022301CA + mov r0, #2 + str r0, [r5] + ldr r0, _02230228 ; =0x00001BE8 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x17 + mov r1, #0x1e + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0223021C +_022301CA: + ldr r0, _02230234 ; =0x00001158 + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _02230234 ; =0x00001158 + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _02230238 ; =0x00001BF0 + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0223021C + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x17 + mov r1, #0x1e + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + b _0223021C +_0223020E: + bl FUN_0200E308 + cmp r0, #1 + bne _0223021C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_0223021C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_02230224: .word 0x00001152 +_02230228: .word 0x00001BE8 +_0223022C: .word 0x02244C60 +_02230230: .word 0x00001BEA +_02230234: .word 0x00001158 +_02230238: .word 0x00001BF0 + + thumb_func_start MOD12_0223023C +MOD12_0223023C: ; 0x0223023C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020133C8 + cmp r0, #0 + beq _02230254 + bl ErrorHandling +_02230254: + add r0, r4, #0 + bl MOD12_02230A40 + bl FUN_02012EAC + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CA1C + add r0, r4, #0 + bl MOD12_0223CB18 + add r0, r4, #0 + bl MOD12_0223D578 + add r0, r4, #0 + bl MOD12_0223DCC0 + add r0, r4, #0 + bl MOD12_02230808 + add r0, r4, #0 + bl MOD12_022308EC + add r0, r4, #0 + bl MOD12_022309CC + add r0, r4, #0 + bl MOD12_022309D4 + add r5, r4, #0 + mov r6, #0 + add r5, #0x78 +_02230296: + add r0, r5, #0 + bl FUN_02019178 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #2 + blt _02230296 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x74] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x74] + bl MOD12_0223B474 + ldr r0, _022303B0 ; =0x00001130 + ldr r0, [r4, r0] + bl MOD12_0223B4C0 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl FUN_0200C398 + ldr r0, [r4, #0x6c] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C300 + ldr r0, [r4, #0x58] + bl FUN_020072E8 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_020117BC + mov r0, #2 + bl FUN_02002CF8 + ldr r0, _022303B4 ; =0x0000110C + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #1 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #2 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #3 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_02002FEC + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl FUN_0200AB18 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x74] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r7, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x17 + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + ldr r0, _022303B8 ; =SDK_OVERLAY_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _022303BC ; =SDK_OVERLAY_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022303B0: .word 0x00001130 +_022303B4: .word 0x0000110C +_022303B8: .word SDK_OVERLAY_MODULE_08_ID +_022303BC: .word SDK_OVERLAY_MODULE_17_ID + + thumb_func_start MOD12_022303C0 +MOD12_022303C0: ; 0x022303C0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _02230494 ; =0x00001134 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02230450 + add r1, r0, #4 + add r3, r4, r1 + ldr r2, [r4, r1] + mov r5, #0 + ldr r1, [r3, #4] + add r2, r2, #1 + adc r1, r5 + add r0, r0, #4 + str r2, [r4, r0] + mov r0, #7 + str r1, [r3, #4] + bl FUN_02004F64 + ldr r1, _02230498 ; =0x00000AF8 + ldr r1, [r4, r1] + mul r0, r1 + ldr r1, _0223049C ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + ldr r7, _022304A0 ; =0x0000114C + add r5, r0, #1 + add r1, r7, #0 + str r0, [r4, r7] + sub r1, #0x14 + ldr r2, [r4, r1] + add r1, r7, #0 + sub r1, #0x10 + add r0, r5, #0 + ldr r6, [r4, r1] + mov r3, #0 + add r1, r3, #0 + eor r1, r6 + eor r0, r2 + orr r0, r1 + beq _0223044C + sub r0, r7, #4 + ldr r0, [r4, r0] + cmp r0, #0x12 + bhi _02230430 + mov ip, r3 + mov r0, ip + sub r1, r5, r2 + sbc r0, r6 + mov r6, #0 + mov r2, #1 + sub r1, r2, r1 + sbc r6, r0 + bhs _02230440 +_02230430: + ldr r1, _022304A4 ; =0x00001138 + str r5, [r4, r1] + add r0, r1, #4 + str r3, [r4, r0] + mov r0, #0 + add r1, #0x10 + str r0, [r4, r1] + b _02230450 +_02230440: + sub r0, r7, #4 + ldr r0, [r4, r0] + add r1, r0, #1 + sub r0, r7, #4 + str r1, [r4, r0] + b _02230450 +_0223044C: + sub r0, r7, #4 + str r3, [r4, r0] +_02230450: + ldr r0, [r4, #0x58] + bl FUN_020081C4 + mov r6, #0 + add r5, r4, #0 +_0223045A: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _02230464 + bl FUN_021DD58C +_02230464: + add r6, r6, #1 + add r5, #0x10 + cmp r6, #4 + blt _0223045A + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_0200372C + ldr r0, [r4, #0x74] + bl FUN_0201AB60 + ldr r3, _022304A8 ; =0x027E0000 + ldr r1, _022304AC ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02230494: .word 0x00001134 +_02230498: .word 0x00000AF8 +_0223049C: .word 0x00001388 +_022304A0: .word 0x0000114C +_022304A4: .word 0x00001138 +_022304A8: .word 0x027E0000 +_022304AC: .word 0x00003FF8 + + thumb_func_start MOD12_022304B0 +MOD12_022304B0: ; 0x022304B0 + push {r3, r4, r5, lr} + ldr r1, _0223051C ; =0x0000110C + add r5, r0, r1 + ldrb r1, [r5, #0x11] + cmp r1, #0 + beq _02230518 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003204 + add r4, r0, #0 + mov r2, #2 + ldr r0, [r5] + add r1, r4, #0 + lsl r2, r2, #8 + bl MIi_CpuCopy16 + ldrb r0, [r5, #0x10] + cmp r0, #1 + bne _02230518 + ldrh r0, [r5, #0xe] + add r1, r4, #0 + str r0, [sp] + ldrh r3, [r5, #8] + ldrh r2, [r5, #6] + ldr r0, [r5] + asr r3, r3, #8 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02003A30 + ldrh r3, [r5, #0xa] + ldrh r1, [r5, #8] + cmp r1, r3 + bne _022304FE + mov r0, #0 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_022304FE: + mov r0, #0xc + ldrsh r2, [r5, r0] + add r0, r1, r2 + cmp r2, #0 + ble _0223050C + cmp r0, r3 + bge _02230514 +_0223050C: + cmp r2, #0 + bge _02230516 + cmp r0, r3 + bgt _02230516 +_02230514: + add r0, r3, #0 +_02230516: + strh r0, [r5, #8] +_02230518: + pop {r3, r4, r5, pc} + nop +_0223051C: .word 0x0000110C + + thumb_func_start MOD12_02230520 +MOD12_02230520: ; 0x02230520 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD12_022304B0 + ldr r0, _0223056C ; =0x00001154 + ldrb r0, [r6, r0] + cmp r0, #1 + bne _02230562 + ldr r0, [r6, #0x58] + bl FUN_02006ED4 + mov r4, #0 + add r5, r6, #0 +_0223053C: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _02230546 + bl FUN_021DD518 +_02230546: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223053C + bl FUN_02215A44 + ldr r0, [r6, #0x70] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _02230570 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02230562: + ldr r1, [r6, #0x74] + mov r0, #0x17 + bl FUN_020335F0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223056C: .word 0x00001154 +_02230570: .word 0x04000540 + + thumb_func_start MOD12_02230574 +MOD12_02230574: ; 0x02230574 + push {r4, r5, lr} + sub sp, #0x8c + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _02230694 ; =0x02244C38 + add r3, sp, #0x10 + mov r2, #5 +_02230584: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02230584 + add r0, sp, #0x10 + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _02230698 ; =0x02244BC4 + add r3, sp, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0223069C ; =0x02244C94 + add r3, sp, #0x38 + mov r2, #0xa +_022305E4: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022305E4 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _022306A0 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #2 + orr r0, r2 + strh r0, [r1] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD12_0223B41C + add sp, #0x8c + pop {r4, r5, pc} + .align 2, 0 +_02230694: .word 0x02244C38 +_02230698: .word 0x02244BC4 +_0223069C: .word 0x02244C94 +_022306A0: .word 0x04000008 + + thumb_func_start MOD12_022306A4 +MOD12_022306A4: ; 0x022306A4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x74] + add r1, #0x78 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r0, #0xb + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r4, #0x74] + add r4, #0x88 + add r1, r4, #0 + mov r2, #1 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + + thumb_func_start MOD12_022306F0 +MOD12_022306F0: ; 0x022306F0 + ldr r3, _022306F4 ; =0x02012CC9 + bx r3 + .align 2, 0 +_022306F4: .word 0x02012CC9 + + thumb_func_start MOD12_022306F8 +MOD12_022306F8: ; 0x022306F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + bne _02230706 + bl ErrorHandling +_02230706: + mov r4, #0xad + lsl r4, r4, #4 + mov r1, #0 + mov r2, #3 + add r6, r4, #5 +_02230710: + sub r3, r2, r1 + lsl r3, r3, #0x18 + add r0, r5, r1 + lsr r3, r3, #0x18 + strb r3, [r0, r4] + add r1, r1, #1 + strb r3, [r0, r6] + cmp r1, #4 + blt _02230710 + add r0, r5, #0 + bl MOD12_0223EE80 + mov r4, #0 + ldr r7, _0223074C ; =0x00000AB4 + add r6, r4, #0 +_0223072E: + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0, r6] + mov r2, #0 + bl FUN_020671BC + bl MOD12_0223EE70 + add r1, r5, r4 + add r4, r4, #1 + add r6, r6, #4 + strb r0, [r1, r7] + cmp r4, #4 + blt _0223072E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223074C: .word 0x00000AB4 + + thumb_func_start MOD12_02230750 +MOD12_02230750: ; 0x02230750 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02230804 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C320 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C450 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223C668 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223C6DC + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C734 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CA44 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CAB8 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223E2B8 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, r4, #0 + bl MOD12_0223E32C + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CB54 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CBC8 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CD40 + add r0, r4, #0 + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + add r0, #0x14 + bl MOD12_0223CDB4 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + bl MOD12_0223CDBC + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02230804: .word 0x000080E9 + + thumb_func_start MOD12_02230808 +MOD12_02230808: ; 0x02230808 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x70] + bl MOD12_0223C324 + ldr r0, [r4, #0x70] + bl MOD12_0223C4E8 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4, #0x70] + bl MOD12_0223C6B8 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C710 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223C878 + ldr r0, [r4, #0x70] + bl MOD12_0223CA94 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CADC + add r0, r4, #0 + bl MOD12_0223E38C + ldr r0, [r4, #0x70] + bl MOD12_0223E308 + ldr r0, [r4, #0x70] + bl MOD12_0223CBA4 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CC70 + ldr r0, [r4, #0x70] + bl MOD12_0223CD90 + add r0, r4, #0 + add r0, #0x14 + bl MOD12_0223CDB8 + ldr r0, [r4, #0x70] + bl MOD12_0223CE0C + ldr r0, [r4, #0x70] + ldr r1, _0223087C ; =0x000080E9 + bl FUN_0200C368 + pop {r4, pc} + .align 2, 0 +_0223087C: .word 0x000080E9 + + thumb_func_start MOD12_02230880 +MOD12_02230880: ; 0x02230880 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _022308E0 ; =0x000080EA + mov r1, #3 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + mov r0, #0x2e + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, _022308E4 ; =0x000080EB + mov r1, #3 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, [r4, #0x6c] + ldr r3, [r4, #0x70] + bl FUN_0200C0DC + ldr r0, _022308E8 ; =0x00001130 + ldr r0, [r4, r0] + bl MOD12_0223B4E0 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_022308E0: .word 0x000080EA +_022308E4: .word 0x000080EB +_022308E8: .word 0x00001130 + + thumb_func_start MOD12_022308EC +MOD12_022308EC: ; 0x022308EC + bx lr + .align 2, 0 + + thumb_func_start MOD12_022308F0 +MOD12_022308F0: ; 0x022308F0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + mov r0, #0x2d + mov r1, #0xd + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + mov r0, #0x2d + mov r1, #0xe + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x1f + mov r3, #0x17 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x17 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _022309C4 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x74] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x17 + bl FUN_020030E8 + add r0, r5, #0 + bl MOD12_0223E734 + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + bl FUN_020031FC + ldr r1, _022309C8 ; =0x0000110C + mov r2, #2 + ldr r1, [r5, r1] + lsl r2, r2, #8 + bl MIi_CpuCopy16 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_022309C4: .word 0x00001988 +_022309C8: .word 0x0000110C + + thumb_func_start MOD12_022309CC +MOD12_022309CC: ; 0x022309CC + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D0 +MOD12_022309D0: ; 0x022309D0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D4 +MOD12_022309D4: ; 0x022309D4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022309D8 +MOD12_022309D8: ; 0x022309D8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _022309E8 + bl ErrorHandling +_022309E8: + mov r1, #0x12 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r3, #0x12 + ldr r0, _02230A38 ; =MOD12_02230A60 + ldr r1, _02230A3C ; =MOD12_02230A7C + lsl r3, r3, #0xa + bl FUN_02012CDC + str r0, [r4, #0xc] + bl FUN_0201343C + add r2, r0, #0 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 + mov r0, #0x3d + mov r1, #3 + mov r2, #0x17 + bl FUN_0201318C + add r1, r0, #0 + ldr r0, [r4, #0xc] + mov r2, #0xa + mov r3, #1 + bl FUN_02013194 + add sp, #8 + pop {r4, pc} + nop +_02230A38: .word MOD12_02230A60 +_02230A3C: .word MOD12_02230A7C + + thumb_func_start MOD12_02230A40 +MOD12_02230A40: ; 0x02230A40 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020133E8 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02012DE4 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02230A60 +MOD12_02230A60: ; 0x02230A60 + push {r4, lr} + ldr r3, _02230A78 ; =0x021064B8 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_0201327C + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02230A78: .word 0x021064B8 + + thumb_func_start MOD12_02230A7C +MOD12_02230A7C: ; 0x02230A7C + push {r4, lr} + ldr r3, _02230A94 ; =0x021064C0 + mov r2, #0 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02230A94: .word 0x021064C0 + + thumb_func_start MOD12_02230A98 +MOD12_02230A98: ; 0x02230A98 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230AE4 ; =0x00001158 + bne _02230AC2 + mov r3, #0xad + lsl r3, r3, #4 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xa + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230ADE + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230ADE +_02230AC2: + ldr r4, _02230AE8 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230ADE + mov r0, #1 + pop {r3, r4, r5, pc} +_02230ADE: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230AE4: .word 0x00001158 +_02230AE8: .word 0x00000127 + + thumb_func_start MOD12_02230AEC +MOD12_02230AEC: ; 0x02230AEC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02230AFE + cmp r0, #1 + beq _02230B52 + b _02230B74 +_02230AFE: + ldr r0, _02230B7C ; =0x00000B37 + mov r2, #0 + strb r2, [r5, r0] + add r1, r0, #1 + strb r2, [r5, r1] + ldr r2, [r5] + ldr r1, _02230B80 ; =0x00000123 + sub r0, r0, #7 + ldrb r2, [r2, r1] + strb r2, [r5, r0] + ldr r2, [r5] + sub r0, r1, #3 + ldrb r0, [r2, r0] + bl MOD12_0223E464 + ldr r1, _02230B84 ; =0x00000B34 + strb r0, [r5, r1] + ldr r0, [r5] + bl FUN_020832EC + cmp r0, #1 + bne _02230B2E + mov r1, #2 + b _02230B30 +_02230B2E: + mov r1, #1 +_02230B30: + ldr r0, _02230B88 ; =0x00000B36 + mov r3, #0xb + strb r1, [r5, r0] + ldr r0, _02230B8C ; =0x00001158 + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #9 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230B78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230B78 +_02230B52: + ldr r0, _02230B8C ; =0x00001158 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02230B90 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230B78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230B78 +_02230B74: + mov r0, #1 + pop {r3, r4, r5, pc} +_02230B78: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230B7C: .word 0x00000B37 +_02230B80: .word 0x00000123 +_02230B84: .word 0x00000B34 +_02230B88: .word 0x00000B36 +_02230B8C: .word 0x00001158 +_02230B90: .word 0x00000127 + + thumb_func_start MOD12_02230B94 +MOD12_02230B94: ; 0x02230B94 + push {r4, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230BDC ; =0x00001158 + bne _02230BBA + add r0, r2, r0 + add r1, r2, #0 + mov r2, #3 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02230BD6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230BD6 +_02230BBA: + ldr r3, [r2] + ldr r4, _02230BE0 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230BD6 + mov r0, #1 + pop {r4, pc} +_02230BD6: + mov r0, #0 + pop {r4, pc} + nop +_02230BDC: .word 0x00001158 +_02230BE0: .word 0x00000127 + + thumb_func_start MOD12_02230BE4 +MOD12_02230BE4: ; 0x02230BE4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bls _02230BF2 + b _02230D7C +_02230BF2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02230BFE: ; jump table + .short _02230C08 - _02230BFE - 2 ; case 0 + .short _02230CFE - _02230BFE - 2 ; case 1 + .short _02230D1C - _02230BFE - 2 ; case 2 + .short _02230D3E - _02230BFE - 2 ; case 3 + .short _02230D5A - _02230BFE - 2 ; case 4 +_02230C08: + mov r0, #0x12 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02230C18 + cmp r0, #1 + bne _02230C1C +_02230C18: + mov r1, #0 + b _02230C1E +_02230C1C: + mov r1, #1 +_02230C1E: + mov r0, #0xc + add r6, r1, #0 + mul r6, r0 + ldr r0, _02230D84 ; =0x02244BE8 + add r1, r0, r6 + mov r0, #0xab + lsl r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02230D88 ; =0x02244BEA + ldrh r7, [r0, r6] + ldr r0, _02230D8C ; =0x0112A880 + add r1, r7, #0 + bl _s32_div_f + ldr r1, _02230D90 ; =0x00000AE8 + mov r3, #0 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldr r2, _02230D94 ; =0x00001388 + lsl r0, r0, #4 + mov ip, r3 + mov r1, ip + add r0, r0, r2 + adc r1, r3 + lsl r2, r2, #1 + bl _ll_udiv + ldr r1, _02230D98 ; =0x00000AEC + str r0, [r4, r1] + add r0, r1, #0 + add r0, #0x10 + strh r7, [r4, r0] + sub r0, r1, #4 + ldr r2, [r4, r0] + ldr r0, _02230D9C ; =0x02244BEE + add r3, r2, #0 + ldrb r0, [r0, r6] + mul r3, r0 + add r0, r1, #4 + str r3, [r4, r0] + sub r0, r1, #4 + ldr r2, [r4, r0] + ldr r0, _02230DA0 ; =0x02244BEF + add r3, r2, #0 + ldrb r0, [r0, r6] + mul r3, r0 + add r0, r1, #0 + add r0, #8 + str r3, [r4, r0] + sub r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #0x30 + bl _u32_div_f + ldr r1, _02230DA4 ; =0x00000AF8 + str r0, [r4, r1] + ldr r0, _02230DA8 ; =0x02244BED + ldrb r2, [r0, r6] + add r0, r1, #6 + strb r2, [r4, r0] + ldr r0, _02230D84 ; =0x02244BE8 + ldrh r2, [r0, r6] + add r0, r1, #0 + sub r0, #0x14 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x48 + ldr r0, [r4, r0] + add r2, r1, #0 + ldrh r3, [r0] + add r2, #0x2c + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #2] + add r2, #0x2e + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #4] + add r2, #0x30 + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #6] + add r2, #0x32 + strh r3, [r4, r2] + add r2, r1, #0 + ldrh r3, [r0, #8] + add r2, #0x34 + strh r3, [r4, r2] + ldrh r2, [r0, #0xa] + add r0, r1, #0 + add r0, #0x36 + strh r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x10 + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xc + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0x14 + str r2, [r4, r0] + add r0, r1, #4 + ldrh r0, [r4, r0] + add r1, #0x18 + strh r0, [r4, r1] + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230CFE: + ldr r0, _02230DAC ; =0x00001158 + mov r3, #0xad + lsl r3, r3, #4 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #0xa + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D1C: + ldr r0, _02230DAC ; =0x00001158 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02230DB0 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D3E: + ldr r0, _02230DAC ; =0x00001158 + mov r2, #0xb + lsl r3, r2, #8 + add r0, r4, r0 + add r1, r4, #0 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D5A: + ldr r0, _02230DAC ; =0x00001158 + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02230DB0 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02230D80 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02230D80 +_02230D7C: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02230D80: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02230D84: .word 0x02244BE8 +_02230D88: .word 0x02244BEA +_02230D8C: .word 0x0112A880 +_02230D90: .word 0x00000AE8 +_02230D94: .word 0x00001388 +_02230D98: .word 0x00000AEC +_02230D9C: .word 0x02244BEE +_02230DA0: .word 0x02244BEF +_02230DA4: .word 0x00000AF8 +_02230DA8: .word 0x02244BED +_02230DAC: .word 0x00001158 +_02230DB0: .word 0x00000127 + + thumb_func_start MOD12_02230DB4 +MOD12_02230DB4: ; 0x02230DB4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r0, [r1] + str r1, [sp] + cmp r0, #0 + bne _02230E0E + ldr r1, _02230E18 ; =0x00000AD4 + mov r4, #0 + ldrb r0, [r5, r1] + add r2, r5, r0 + sub r0, r1, #4 + ldrb r0, [r2, r0] + add r1, #0x2c + strb r0, [r5, r1] + ldr r0, _02230E1C ; =0x00000AD5 + add r1, r0, #0 + add r1, #0x2d +_02230DD6: + add r3, r5, r4 + ldrb r2, [r3, r0] + add r4, r4, #1 + cmp r4, #4 + strb r2, [r3, r1] + blt _02230DD6 + ldr r1, [r5] + ldr r0, _02230E20 ; =0x00000127 + ldrb r6, [r1, r0] + cmp r6, #4 + bge _02230E02 + lsl r0, r6, #2 + ldr r7, _02230E24 ; =0x00000B14 + add r4, r5, r0 +_02230DF2: + ldr r0, [r5] + bl FUN_02082878 + str r0, [r4, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02230DF2 +_02230E02: + ldr r0, [sp] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp] + strh r1, [r0] + b _02230E12 +_02230E0E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02230E12: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02230E18: .word 0x00000AD4 +_02230E1C: .word 0x00000AD5 +_02230E20: .word 0x00000127 +_02230E24: .word 0x00000B14 + + thumb_func_start MOD12_02230E28 +MOD12_02230E28: ; 0x02230E28 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230E74 ; =0x00001158 + bne _02230E52 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #7 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230E6E + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230E6E +_02230E52: + ldr r4, _02230E78 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230E6E + mov r0, #1 + pop {r3, r4, r5, pc} +_02230E6E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230E74: .word 0x00001158 +_02230E78: .word 0x00000127 + + thumb_func_start MOD12_02230E7C +MOD12_02230E7C: ; 0x02230E7C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230EC8 ; =0x00001158 + bne _02230EA6 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230EC2 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230EC2 +_02230EA6: + ldr r4, _02230ECC ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230EC2 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230EC2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230EC8: .word 0x00001158 +_02230ECC: .word 0x00000127 + + thumb_func_start MOD12_02230ED0 +MOD12_02230ED0: ; 0x02230ED0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + ldr r0, _02230F1C ; =0x00001158 + bne _02230EFA + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #8 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230F16 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230F16 +_02230EFA: + ldr r4, _02230F20 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230F16 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F16: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02230F1C: .word 0x00001158 +_02230F20: .word 0x00000127 + + thumb_func_start MOD12_02230F24 +MOD12_02230F24: ; 0x02230F24 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + bne _02230F76 + ldr r1, _02230F98 ; =0x00000AD4 + ldrb r0, [r5, r1] + cmp r0, #3 + blo _02230F3C + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F3C: + add r0, r1, #2 + ldrb r0, [r5, r0] + add r1, #0x5c + strb r0, [r5, r1] + mov r0, #0x12 + ldr r1, [r5] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + bl MOD12_0223E464 + ldr r3, _02230F9C ; =0x00000B34 + mov r1, #0 + strb r0, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + ldr r0, _02230FA0 ; =0x00001158 + sub r3, #0x34 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #6 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02230F94 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02230F94 +_02230F76: + ldr r4, _02230FA4 ; =0x00000127 + ldr r3, [r5] + sub r2, r4, #4 + ldrb r1, [r3, r4] + ldr r0, _02230FA0 ; =0x00001158 + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + add r0, r5, r0 + bl MOD12_022411F4 + cmp r0, #1 + bne _02230F94 + mov r0, #1 + pop {r3, r4, r5, pc} +_02230F94: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02230F98: .word 0x00000AD4 +_02230F9C: .word 0x00000B34 +_02230FA0: .word 0x00001158 +_02230FA4: .word 0x00000127 + + thumb_func_start MOD12_02230FA8 +MOD12_02230FA8: ; 0x02230FA8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02230FBE + cmp r0, #1 + beq _02230FE8 + cmp r0, #2 + beq _02231006 + b _02231028 +_02230FBE: + ldr r0, _0223104C ; =0x00000AD5 + ldr r1, _0223104C ; =0x00000AD5 + ldrb r7, [r3, r0] + mov r6, #0 + add r0, r0, #1 +_02230FC8: + add r5, r3, r6 + ldrb r2, [r5, r0] + add r6, r6, #1 + cmp r6, #3 + strb r2, [r5, r1] + blt _02230FC8 + ldr r0, _02231050 ; =0x00000AD8 + strb r7, [r3, r0] + sub r1, r0, #4 + ldrb r1, [r3, r1] + sub r0, r0, #4 + add r1, r1, #1 + strb r1, [r3, r0] + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] +_02230FE8: + ldr r0, _02231054 ; =0x00001158 + mov r5, #0xad + lsl r5, r5, #4 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #0xa + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02231048 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02231048 +_02231006: + ldr r0, _02231054 ; =0x00001158 + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02231058 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02231048 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02231048 +_02231028: + ldr r1, _0223105C ; =0x00000AD4 + ldrb r0, [r3, r1] + cmp r0, #4 + bhs _02231044 + add r0, r1, #0 + add r0, #0x2d + ldrb r0, [r3, r0] + add r1, #0x2d + add r0, r0, #1 + strb r0, [r3, r1] + mov r0, #4 + strh r0, [r4, #2] + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_02231044: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02231048: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223104C: .word 0x00000AD5 +_02231050: .word 0x00000AD8 +_02231054: .word 0x00001158 +_02231058: .word 0x00000127 +_0223105C: .word 0x00000AD4 + + thumb_func_start MOD12_02231060 +MOD12_02231060: ; 0x02231060 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02231072 + cmp r0, #1 + beq _02231090 + b _022310B2 +_02231072: + ldr r0, _022310BC ; =0x00001158 + mov r3, #0xb + lsl r3, r3, #8 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #0xc + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022310B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022310B6 +_02231090: + ldr r0, _022310BC ; =0x00001158 + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _022310C0 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _022310B6 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022310B6 +_022310B2: + mov r0, #1 + pop {r3, r4, r5, pc} +_022310B6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022310BC: .word 0x00001158 +_022310C0: .word 0x00000127 + + thumb_func_start MOD12_022310C4 +MOD12_022310C4: ; 0x022310C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp] + ldrh r0, [r1] + str r1, [sp, #4] + cmp r0, #0 + beq _022310DE + cmp r0, #1 + beq _022311D4 + cmp r0, #2 + bne _022310DC + b _022311FA +_022310DC: + b _02231222 +_022310DE: + mov r1, #0 + mov r6, #0x4b + ldr r2, [sp] + ldr r5, _02231230 ; =0x00000ADA + add r3, r1, #0 + lsl r6, r6, #2 +_022310EA: + ldr r4, [sp] + ldrsh r0, [r2, r5] + ldr r4, [r4] + add r1, r1, #1 + add r4, r4, r3 + strh r0, [r4, r6] + add r2, r2, #2 + add r3, #0xc + cmp r1, #4 + blt _022310EA + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0] + add r2, sp, #0x1c + bl MOD12_022435E4 + ldr r0, [sp] + mov r1, #1 + ldr r0, [r0] + add r2, sp, #0x14 + bl MOD12_022435E4 + mov r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x1c + add r4, sp, #0xc + add r5, sp, #8 + add r7, r6, #0 +_02231122: + mov r0, #0 + ldrsh r1, [r3, r0] + ldrsh r0, [r2, r7] + strb r6, [r5] + add r6, r6, #1 + add r0, r1, r0 + strh r0, [r4] + add r2, r2, #2 + add r3, r3, #2 + add r4, r4, #2 + add r5, r5, #1 + cmp r6, #4 + blt _02231122 + mov r6, #0 + sub r7, r6, #2 +_02231140: + mov r3, #3 + cmp r6, #3 + bge _02231172 + add r4, sp, #0x10 + add r5, sp, #8 + add r4, #2 + add r5, #3 +_0223114E: + mov r0, #0 + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r7] + cmp r1, r0 + bge _02231168 + strh r1, [r4] + sub r1, r4, #2 + strh r0, [r1] + sub r0, r5, #1 + ldrb r2, [r5] + ldrb r1, [r0] + strb r1, [r5] + strb r2, [r0] +_02231168: + sub r3, r3, #1 + sub r4, r4, #2 + sub r5, r5, #1 + cmp r3, r6 + bgt _0223114E +_02231172: + add r6, r6, #1 + cmp r6, #3 + blt _02231140 + ldr r1, _02231234 ; =0x00000172 + mov r4, #0 + add r3, sp, #8 +_0223117E: + ldr r0, [sp] + ldrb r2, [r3] + ldr r0, [r0] + add r3, r3, #1 + add r0, r0, r4 + add r4, r4, #1 + strb r2, [r0, r1] + cmp r4, #4 + blt _0223117E + ldr r2, _02231238 ; =0x00000B37 + ldr r1, [sp] + mov r0, #0 + strb r0, [r1, r2] + add r3, r2, #1 + strb r0, [r1, r3] + ldr r1, [r1] + ldr r4, _02231234 ; =0x00000172 + sub r3, r2, #7 + ldrb r5, [r1, r4] + ldr r1, [sp] + sub r4, #0x51 + strb r5, [r1, r3] + ldr r1, [r1] + ldrb r1, [r1, r4] + cmp r1, #0 + beq _022311BA + cmp r1, #1 + beq _022311BA + cmp r1, #2 + bne _022311C4 +_022311BA: + ldr r1, _0223123C ; =0x00000B36 + ldr r0, [sp] + mov r2, #6 + strb r2, [r0, r1] + b _022311CA +_022311C4: + ldr r1, [sp] + sub r2, r2, #1 + strb r0, [r1, r2] +_022311CA: + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] +_022311D4: + ldr r1, _02231240 ; =0x00001158 + ldr r0, [sp] + mov r4, #0xb + add r0, r0, r1 + ldr r1, [sp] + lsl r4, r4, #8 + add r3, r1, #0 + mov r2, #9 + add r3, r3, r4 + bl MOD12_02241050 + cmp r0, #1 + bne _02231228 + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + b _02231228 +_022311FA: + ldr r0, [sp] + ldr r4, _02231244 ; =0x00000127 + ldr r3, [r0] + ldr r1, _02231240 ; =0x00001158 + sub r2, r4, #4 + add r0, r0, r1 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02231228 + ldr r0, [sp, #4] + ldrh r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + strh r1, [r0] + b _02231228 +_02231222: + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02231228: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02231230: .word 0x00000ADA +_02231234: .word 0x00000172 +_02231238: .word 0x00000B37 +_0223123C: .word 0x00000B36 +_02231240: .word 0x00001158 +_02231244: .word 0x00000127 + + thumb_func_start MOD12_02231248 +MOD12_02231248: ; 0x02231248 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0223125A + cmp r0, #1 + beq _0223125E + b _0223128E +_0223125A: + add r0, r0, #1 + strh r0, [r4] +_0223125E: + ldr r3, _022312B0 ; =0x00000172 + mov r0, #0 + add r1, sp, #0 +_02231264: + ldr r5, [r2] + add r5, r5, r0 + ldrb r5, [r5, r3] + add r0, r0, #1 + strb r5, [r1] + add r1, r1, #1 + cmp r0, #4 + blt _02231264 + ldr r0, _022312B4 ; =0x00001158 + add r1, r2, #0 + add r0, r2, r0 + mov r2, #4 + add r3, sp, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _022312AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022312AC +_0223128E: + ldr r0, _022312B4 ; =0x00001158 + ldr r3, [r2] + ldr r4, _022312B8 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022312AC + mov r0, #3 + pop {r3, r4, r5, pc} +_022312AC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022312B0: .word 0x00000172 +_022312B4: .word 0x00001158 +_022312B8: .word 0x00000127 + + thumb_func_start MOD12_022312BC +MOD12_022312BC: ; 0x022312BC + push {r3, lr} + ldr r0, _022312D0 ; =SDK_OVERLAY_MODULE_08_ID + mov r1, #2 + bl HandleLoadOverlay + ldr r0, _022312D4 ; =SDK_OVERLAY_MODULE_17_ID + mov r1, #2 + bl HandleLoadOverlay + pop {r3, pc} + .align 2, 0 +_022312D0: .word SDK_OVERLAY_MODULE_08_ID +_022312D4: .word SDK_OVERLAY_MODULE_17_ID + + thumb_func_start MOD12_022312D8 +MOD12_022312D8: ; 0x022312D8 + push {r3, lr} + sub sp, #8 + mov r2, #2 + ldr r1, _022312F0 ; =MOD12_022312F4 + str r2, [sp] + str r1, [sp, #4] + mov r1, #0 + add r3, r1, #0 + bl FUN_02022318 + add sp, #8 + pop {r3, pc} + .align 2, 0 +_022312F0: .word MOD12_022312F4 + + thumb_func_start MOD12_022312F4 +MOD12_022312F4: ; 0x022312F4 + push {r3, lr} + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _02231360 ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r2, [r0] + ldr r1, _02231364 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0] + add r2, r1, #2 + ldrh r3, [r0] + add r1, r1, #2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0] + ldrh r3, [r0] + ldr r2, _02231368 ; =0x0000CFFB + and r3, r2 + strh r3, [r0] + ldrh r3, [r0] + sub r2, #0x1c + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl G3X_SetFog + mov r0, #0 + ldr r2, _0223136C ; =0x00007FFF + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _02231370 ; =0xBFFF0000 + ldr r0, _02231374 ; =0x04000580 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_02231360: .word 0x04000008 +_02231364: .word 0xFFFFCFFD +_02231368: .word 0x0000CFFB +_0223136C: .word 0x00007FFF +_02231370: .word 0xBFFF0000 +_02231374: .word 0x04000580 + + thumb_func_start MOD12_02231378 +MOD12_02231378: ; 0x02231378 + ldr r3, _0223137C ; =0x020223BD + bx r3 + .align 2, 0 +_0223137C: .word 0x020223BD + + thumb_func_start MOD12_02231380 +MOD12_02231380: ; 0x02231380 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + str r2, [sp, #0x20] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x8c] + mov r2, #0 + str r3, [sp, #0x24] + ldr r5, [sp, #0x88] + ldr r4, [sp, #0xa0] + bl FUN_02002E14 + add r7, r0, #0 + asr r1, r7, #2 + lsr r1, r1, #0x1d + add r1, r7, r1 + asr r6, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _022313B0 + add r6, r6, #1 +_022313B0: + add r0, sp, #0x34 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x1c] + add r1, sp, #0x34 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x94] + ldr r1, [sp, #0x90] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x8c] + add r0, sp, #0x34 + str r3, [sp, #0x14] + bl FUN_0201BE3C + ldr r2, [sp, #0x18] + add r0, sp, #0x34 + mov r1, #1 + bl FUN_02011898 + mov r1, #1 + add r2, r1, #0 + add r3, sp, #0x28 + bl FUN_0201D568 + ldr r0, [sp, #0xa8] + cmp r0, #1 + bne _02231408 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r0, r0, #1 + sub r4, r4, r0 +_02231408: + ldr r0, [sp, #0x24] + str r0, [sp, #0x44] + add r0, sp, #0x34 + str r0, [sp, #0x48] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x9c] + bl FUN_0200C334 + str r0, [sp, #0x50] + mov r0, #0 + str r0, [sp, #0x54] + ldr r0, [sp, #0x2c] + str r4, [sp, #0x5c] + str r0, [sp, #0x58] + ldr r0, [sp, #0xa4] + sub r0, #8 + str r0, [sp, #0x60] + ldr r0, [sp, #0xac] + str r0, [sp, #0x64] + ldr r0, [sp, #0xb0] + str r0, [sp, #0x68] + mov r0, #1 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x18] + str r0, [sp, #0x70] + add r0, sp, #0x44 + bl FUN_020117E8 + ldr r1, [sp, #0x98] + add r6, r0, #0 + cmp r1, #0 + beq _02231454 + bl FUN_02011A90 +_02231454: + ldr r2, [sp, #0xa4] + add r0, r6, #0 + add r1, r4, #0 + sub r2, #8 + bl FUN_020118C4 + add r0, sp, #0x34 + bl FUN_02019178 + str r6, [r5] + add r3, sp, #0x28 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + strh r7, [r5, #0x10] + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223147C +MOD12_0223147C: ; 0x0223147C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02011870 + add r0, r4, #4 + bl FUN_0201D5E8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02231490 +MOD12_02231490: ; 0x02231490 + cmp r3, #1 + bne _0223149A + ldrh r3, [r0, #0x10] + lsr r3, r3, #1 + sub r1, r1, r3 +_0223149A: + ldr r3, _022314A4 ; =0x020118C5 + ldr r0, [r0] + sub r2, #8 + bx r3 + nop +_022314A4: .word 0x020118C5 + + thumb_func_start MOD12_022314A8 +MOD12_022314A8: ; 0x022314A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r3, r1, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xc2 + bl FUN_0200A86C + add r5, r0, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022314CC +MOD12_022314CC: ; 0x022314CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r1, #0 + ldr r1, _02231504 ; =0x00000122 + ldrb r1, [r5, r1] + bl MOD12_0224473C + add r7, r0, #0 + mov r6, #0 + add r4, r5, #0 +_022314E0: + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r1, r7, #0 + bl MOD12_02244710 + ldr r1, _02231508 ; =0x0000012A + add r6, r6, #1 + strh r0, [r4, r1] + add r5, r5, #4 + add r4, #0xc + cmp r6, #4 + blt _022314E0 + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02231504: .word 0x00000122 +_02231508: .word 0x0000012A + + thumb_func_start MOD12_0223150C +MOD12_0223150C: ; 0x0223150C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + ldr r4, [sp] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r4, #0 + str r0, [sp, #4] +_0223151C: + ldr r0, [r4] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + mov r6, #0x64 + add r5, r0, #0 + add r0, r6, #0 + ldr r1, [sp] + add r0, #0xbb + ldrb r0, [r1, r0] + cmp r0, #4 + bls _02231538 + b _022316AA +_02231538: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02231544: ; jump table + .short _0223154E - _02231544 - 2 ; case 0 + .short _02231594 - _02231544 - 2 ; case 1 + .short _022315DA - _02231544 - 2 ; case 2 + .short _02231620 - _02231544 - 2 ; case 3 + .short _02231666 - _02231544 - 2 ; case 4 +_0223154E: + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _0223158C + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _02231590 + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + beq _02231590 + b _022316B2 +_0223158C: + mov r6, #0x6e + b _022316B2 +_02231590: + mov r6, #0x69 + b _022316B2 +_02231594: + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _022315D6 + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _022315D2 + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _022315D6 + b _022316B2 +_022315D2: + mov r6, #0x6e + b _022316B2 +_022315D6: + mov r6, #0x69 + b _022316B2 +_022315DA: + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa1 + cmp r5, r0 + beq _0223161C + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _02231618 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _0223161C + b _022316B2 +_02231618: + mov r6, #0x6e + b _022316B2 +_0223161C: + mov r6, #0x69 + b _022316B2 +_02231620: + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa2 + cmp r5, r0 + beq _02231662 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _0223165E + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + beq _02231662 + b _022316B2 +_0223165E: + mov r6, #0x6e + b _022316B2 +_02231662: + mov r6, #0x69 + b _022316B2 +_02231666: + ldr r0, [r4] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + add r0, #0xa0 + cmp r5, r0 + beq _022316A6 + add r0, r6, #0 + add r0, #0xa3 + cmp r5, r0 + beq _022316A6 + add r0, r6, #0 + add r0, #0xa4 + cmp r5, r0 + bne _022316B2 + mov r6, #0x6e + b _022316B2 +_022316A6: + mov r6, #0x69 + b _022316B2 +_022316AA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_022316B2: + ldr r0, [r4] + mov r1, #0x18 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #8] + add r1, r1, r7 + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + mov r1, #0x4a + ldr r2, [sp, #4] + lsl r1, r1, #2 + strh r0, [r2, r1] + add r0, r2, #0 + add r0, #0xc + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + bge _022316F2 + b _0223151C +_022316F2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022316F8 +MOD12_022316F8: ; 0x022316F8 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r6, r2, #0 + mov r2, #0 + mvn r2, r2 + add r5, r0, #0 + add r4, r1, #0 + cmp r3, r2 + beq _0223171A + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + mov r2, #0x2e + mov r3, #0x49 + bl FUN_0200C00C +_0223171A: + mov r1, #0 + ldr r0, [sp, #0x28] + mvn r1, r1 + cmp r0, r1 + beq _02231744 + mov r1, #0x2e + str r1, [sp] + mov r1, #7 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #2 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC +_02231744: + mov r0, #0 + ldr r1, [sp, #0x2c] + mvn r0, r0 + cmp r1, r0 + beq _02231760 + mov r0, #1 + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x4a + bl FUN_0200C124 +_02231760: + mov r0, #0 + ldr r1, [sp, #0x30] + mvn r0, r0 + cmp r1, r0 + beq _0223177C + mov r0, #1 + str r0, [sp] + str r1, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x4b + bl FUN_0200C13C +_0223177C: + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02231780 +MOD12_02231780: ; 0x02231780 + push {r4, r5, r6, lr} + add r4, r2, #0 + mov r2, #0 + mvn r2, r2 + add r5, r0, #0 + add r6, r3, #0 + cmp r1, r2 + beq _02231794 + bl FUN_0200C358 +_02231794: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022317A4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 +_022317A4: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _022317B4 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 +_022317B4: + mov r0, #0 + ldr r1, [sp, #0x10] + mvn r0, r0 + cmp r1, r0 + beq _022317C4 + add r0, r5, #0 + bl FUN_0200C388 +_022317C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022317C8 +MOD12_022317C8: ; 0x022317C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + ldr r5, _02231850 ; =0x02244D18 + str r2, [sp, #4] + str r0, [sp] + add r7, r1, #0 + add r4, sp, #8 + mov r2, #6 +_022317D8: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _022317D8 + ldr r0, [r5] + ldr r5, _02231854 ; =0x02244CE8 + str r0, [r4] + ldr r0, [sp, #0x50] + ldr r4, [sp] + str r0, [sp, #0x20] + ldr r0, [sp, #0x54] + str r3, [sp, #0x1c] + str r0, [sp, #0x24] + ldr r0, [sp, #0x58] + mov r6, #0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x14] + ldr r0, [sp, #0x60] + str r0, [sp, #0x10] + ldr r0, [sp, #0x64] + str r0, [sp, #0x34] +_02231804: + ldr r1, [sp, #4] + add r0, r7, #0 + add r2, sp, #8 + bl FUN_0200C154 + str r0, [r4] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + bl FUN_0200C714 + ldrb r1, [r5, #6] + ldr r0, [r4] + bl FUN_0200C5C0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200C840 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_0200C59C + add r6, r6, #1 + add r4, r4, #4 + add r5, #8 + cmp r6, #6 + blt _02231804 + ldr r0, _02231858 ; =MOD12_02231880 + ldr r1, [sp] + ldr r2, [sp, #0x68] + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x18] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02231850: .word 0x02244D18 +_02231854: .word 0x02244CE8 +_02231858: .word MOD12_02231880 + + thumb_func_start MOD12_0223185C +MOD12_0223185C: ; 0x0223185C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02231864: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02231864 + ldr r0, [r6, #0x18] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r6, #0x18] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02231880 +MOD12_02231880: ; 0x02231880 + push {r3, r4, r5, r6, r7, lr} + ldr r4, _022318A0 ; =0x02244CE8 + add r5, r1, #0 + mov r6, #0 + mov r7, #4 +_0223188A: + ldrsh r1, [r4, r7] + ldr r0, [r5] + bl FUN_0200C8BC + add r6, r6, #1 + add r4, #8 + add r5, r5, #4 + cmp r6, #6 + blt _0223188A + pop {r3, r4, r5, r6, r7, pc} + nop +_022318A0: .word 0x02244CE8 + + thumb_func_start MOD12_022318A4 +MOD12_022318A4: ; 0x022318A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #0x14 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4, #4] + str r6, [r4, #0xc] + ldr r0, [sp, #0x18] + strb r7, [r4, #0x10] + strb r0, [r4, #0x12] + ldr r0, _022318D8 ; =MOD12_0223190C + ldr r2, [sp, #0x1c] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022318D8: .word MOD12_0223190C + + thumb_func_start MOD12_022318DC +MOD12_022318DC: ; 0x022318DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _022318EA + bl ErrorHandling +_022318EA: + ldr r0, [r4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD12_022318F8 +MOD12_022318F8: ; 0x022318F8 + push {r3, lr} + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _02231908 + mov r0, #1 + pop {r3, pc} +_02231908: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD12_0223190C +MOD12_0223190C: ; 0x0223190C + push {r3, r4, lr} + sub sp, #4 + mov r0, #1 + add r4, r1, #0 + bl FUN_0200A344 + cmp r0, #0 + beq _02231972 + ldr r0, [r4, #8] + add r2, r0, #1 + str r2, [r4, #8] + ldrb r0, [r4, #0x11] + ldr r1, [r4, #0xc] + lsl r0, r0, #1 + ldrh r0, [r1, r0] + cmp r2, r0 + ble _02231972 + mov r0, #1 + str r0, [sp] + mov r0, #6 + mov r1, #0 + mov r2, #4 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _02231978 ; =0x000005F8 + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #8] + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r1, [r4, #0x11] + ldrb r0, [r4, #0x10] + cmp r1, r0 + blo _02231972 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _02231966 + add r0, r4, #0 + bl MOD12_022318DC + add sp, #4 + pop {r3, r4, pc} +_02231966: + cmp r0, #0xff + beq _0223196E + sub r0, r0, #1 + strb r0, [r4, #0x12] +_0223196E: + mov r0, #0 + strb r0, [r4, #0x11] +_02231972: + add sp, #4 + pop {r3, r4, pc} + nop +_02231978: .word 0x000005F8 + + thumb_func_start MOD12_0223197C +MOD12_0223197C: ; 0x0223197C + push {r4, lr} + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x32 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0 + mov r0, #0x2e + mvn r1, r1 + lsl r0, r0, #4 + strb r1, [r4, r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_022319A4 +MOD12_022319A4: ; 0x022319A4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _022319F8 ; =0x02244F64 + add r5, r0, #0 + add r7, r4, #0 +_022319AE: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _022319AE + pop {r3, r4, r5, r6, r7, pc} + nop +_022319F8: .word 0x02244F64 + + thumb_func_start MOD12_022319FC +MOD12_022319FC: ; 0x022319FC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_02231A04: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _02231A04 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02231A24 +MOD12_02231A24: ; 0x02231A24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD12_0223197C + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #0xc + mov r1, #0x15 + str r7, [r4, #8] + bl FUN_02011744 + mov r7, #2 + str r0, [r4, #0x3c] + mov r5, #0 + lsl r7, r7, #0xa + b _02231A88 +_02231A4C: + mov r0, #0x15 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + str r0, [r1, #0x20] + mov r0, #0x15 + str r0, [sp] + ldr r1, _02231AE0 ; =0x02244D6C + lsl r2, r5, #1 + ldrh r1, [r1, r2] + mov r0, #0x2d + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BDC + add r6, r0, #0 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r1, [r0, #0x20] + ldr r0, [sp, #0xc] + add r2, r7, #0 + add r0, #0xc + bl MIi_CpuCopy32 + add r0, r6, #0 + bl FUN_02016A18 + add r5, r5, #1 +_02231A88: + cmp r5, #5 + blt _02231A4C + ldr r0, [r4, #4] + mov r7, #2 + ldr r6, [r0, #0x50] + mov r5, #0 + lsl r7, r7, #8 + b _02231AD6 +_02231A98: + mov r0, #0x15 + add r1, r7, #0 + bl FUN_02016998 + lsl r1, r5, #2 + add r1, r4, r1 + str r0, [r1, #0x34] + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r2, _02231AE4 ; =0x02244D54 + lsl r3, r5, #1 + ldrh r2, [r2, r3] + add r0, r6, #0 + mov r1, #0x2d + mov r3, #0x15 + bl FUN_020030E8 + add r0, r6, #0 + mov r1, #1 + bl FUN_020031FC + lsl r1, r5, #2 + add r1, r4, r1 + ldr r1, [r1, #0x34] + add r2, r7, #0 + bl MIi_CpuCopy16 + add r5, r5, #1 +_02231AD6: + cmp r5, #2 + blt _02231A98 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231AE0: .word 0x02244D6C +_02231AE4: .word 0x02244D54 + + thumb_func_start MOD12_02231AE8 +MOD12_02231AE8: ; 0x02231AE8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + bl MOD12_02232638 + ldr r0, [r6, #0x3c] + bl FUN_020117BC + ldr r3, _02231B48 ; =0x000080F8 + str r3, [sp] + ldr r0, [r6, #4] + add r1, r3, #5 + ldr r0, [r0, #0x1c] + sub r2, r3, #7 + bl MOD12_022447C0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl MOD12_0224486C + mov r4, #0 + add r5, r6, #0 +_02231B16: + ldr r0, [r5, #0x20] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02231B16 + mov r5, #0 + add r4, r6, #0 +_02231B28: + ldr r0, [r4, #0x34] + bl FUN_02016A18 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _02231B28 + add r0, r6, #0 + bl MOD12_02232B7C + add r0, r6, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02231B48: .word 0x000080F8 + + thumb_func_start MOD12_02231B4C +MOD12_02231B4C: ; 0x02231B4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r3, [r7, #0xc] + ldr r0, [r7, #4] + str r2, [sp, #8] + ldr r0, [r0, #0x24] + str r1, [sp, #4] + str r0, [sp, #0xc] + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r2, [r7, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02231B76 + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0x10] + b _02231B80 +_02231B76: + mov r0, #0x30 + ldr r1, _02231C70 ; =0x02245074 + mul r0, r2 + add r0, r1, r0 + str r0, [sp, #0x10] +_02231B80: + ldr r0, [sp, #4] + mov r1, #0x30 + ldr r2, _02231C70 ; =0x02245074 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x14] + mov r4, #0 + add r5, r0, #0 +_02231B90: + ldrh r1, [r5, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02231B90 + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r1, [sp, #0x14] + ldr r0, [r7, #4] + ldrh r1, [r1, #2] + ldr r0, [r0, #0x50] + mov r2, #1 + lsl r1, r1, #2 + add r1, r7, r1 + ldr r1, [r1, #0x34] + mov r3, #0 + bl FUN_02003054 + ldr r6, [sp, #0x14] + ldr r4, [sp, #0x10] + mov r5, #0 +_02231BCA: + ldrh r2, [r6, #4] + ldr r0, _02231C74 ; =0x0000FFFF + cmp r2, r0 + beq _02231C00 + ldr r0, [sp, #8] + cmp r0, #1 + beq _02231BDE + ldrh r0, [r4, #4] + cmp r2, r0 + beq _02231C00 +_02231BDE: + lsl r2, r2, #2 + add r1, r5, #4 + add r2, r7, r2 + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0xc] + ldr r2, [r2, #0x20] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r5, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_02231C00: + add r5, r5, #1 + add r6, r6, #2 + add r4, r4, #2 + cmp r5, #4 + blt _02231BCA + mov r1, #0x2e + ldr r0, [sp, #4] + lsl r1, r1, #4 + strb r0, [r7, r1] + add r0, r7, #0 + bl MOD12_02232638 + ldr r0, [sp, #0x14] + ldr r3, [r0, #0x28] + cmp r3, #0 + beq _02231C28 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + add r0, r7, #0 + blx r3 +_02231C28: + ldr r0, [sp, #0x14] + ldrh r1, [r0] + ldr r0, _02231C74 ; =0x0000FFFF + cmp r1, r0 + beq _02231C62 + ldr r0, [sp, #8] + cmp r0, #1 + beq _02231C40 + ldr r0, [sp, #0x10] + ldrh r0, [r0] + cmp r1, r0 + beq _02231C62 +_02231C40: + mov r3, #0xb7 + mov r0, #0x15 + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0x2d + mov r2, #1 + add r3, r7, r3 + bl FUN_02006BB0 + mov r1, #0xb6 + lsl r1, r1, #2 + str r0, [r7, r1] + ldr r0, _02231C78 ; =MOD12_0223336C + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 +_02231C62: + ldr r0, _02231C7C ; =MOD12_022333A8 + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02231C70: .word 0x02245074 +_02231C74: .word 0x0000FFFF +_02231C78: .word MOD12_0223336C +_02231C7C: .word MOD12_022333A8 + + thumb_func_start MOD12_02231C80 +MOD12_02231C80: ; 0x02231C80 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r5, r0] + mov r6, #0 + sub r0, r6, #1 + cmp r1, r0 + bne _02231C96 + bl ErrorHandling +_02231C96: + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r5, r0] + ldr r3, _02231D44 ; =0x02245074 + mov r0, #0x30 + add r2, r1, #0 + mul r2, r0 + add r4, r3, r2 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _02231CB0 + sub r0, #0x31 + pop {r3, r4, r5, r6, r7, pc} +_02231CB0: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02231CBA + bl ErrorHandling +_02231CBA: + ldr r0, [r4, #0x14] + bl FUN_02020988 + add r7, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r7, r0 + bne _02231CD4 + add r0, r5, #0 + bl MOD12_02232E18 + add r7, r0, #0 + add r6, r6, #1 +_02231CD4: + mov r0, #0 + mvn r0, r0 + str r0, [sp] + cmp r7, r0 + bne _02231CE2 + mov r2, #0xff + b _02231CEE +_02231CE2: + ldr r1, [r4, #0x18] + lsl r0, r7, #2 + ldr r0, [r1, r0] + str r0, [sp] + ldr r0, [r4, #0x1c] + ldrb r2, [r0, r7] +_02231CEE: + ldr r3, [r4, #0x2c] + cmp r3, #0 + beq _02231D3E + ldr r1, [sp] + add r0, r5, #0 + blx r3 + mov r1, #0 + mvn r1, r1 + str r0, [sp] + cmp r0, r1 + beq _02231D3E + ldr r2, [r4, #0x24] + cmp r2, #0 + beq _02231D10 + add r0, r5, #0 + add r1, r7, #0 + blx r2 +_02231D10: + mov r0, #0xc6 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD12_0224493C + cmp r6, #0 + ble _02231D36 + mov r0, #0xc7 + mov r1, #1 + lsl r0, r0, #2 + strb r1, [r5, r0] + b _02231D3E +_02231D36: + mov r0, #0xc7 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_02231D3E: + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + nop +_02231D44: .word 0x02245074 + + thumb_func_start MOD12_02231D48 +MOD12_02231D48: ; 0x02231D48 + ldr r1, [r0, #0x10] + cmp r1, #0 + bne _02231D58 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _02231D58 + mov r0, #1 + bx lr +_02231D58: + mov r0, #0 + bx lr + + thumb_func_start MOD12_02231D5C +MOD12_02231D5C: ; 0x02231D5C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r0] + add r1, r2, #1 + ldrb r0, [r3, r2] + ldrb r1, [r3, r1] + ldr r3, [r5] + add r2, #0x51 + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, r0, #0 + ldr r0, [r5, #4] + ldr r1, _02231E28 ; =0x0000011F + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r1, #2 + ldrb r1, [r2, r1] + bl FUN_020832A4 + add r6, r0, #0 + ldr r0, [r5, #4] + add r1, r4, #0 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _02231E2C ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _02231E30 ; =0x000080F0 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x7f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x40 + add r2, r4, #0 + str r3, [sp, #0x18] + bl MOD12_022322C0 + ldr r0, _02231E2C ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _02231E30 ; =0x000080F0 + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x9f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x54 + add r2, r6, #0 + str r3, [sp, #0x18] + bl MOD12_022322C0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, [r5, #4] + mov r0, #1 + str r0, [sp] + mov r1, #0x20 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r2] + add r1, #0xff + ldrb r0, [r0, r1] + mov r1, #0x2d + mov r3, #0x15 + lsl r0, r0, #0x14 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r2, #0x50] + mov r2, #0x25 + bl FUN_02003084 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_02231E28: .word 0x0000011F +_02231E2C: .word 0x00010200 +_02231E30: .word 0x000080F0 + + thumb_func_start MOD12_02231E34 +MOD12_02231E34: ; 0x02231E34 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r5, r6, r0 + ldr r0, _022320A0 ; =0x000002E1 + mov r1, #0xff + strb r1, [r6, r0] + add r0, r5, #0 + str r0, [sp, #0x24] + add r0, #0x50 + str r0, [sp, #0x24] + add r0, r5, #0 + add r7, r6, #0 + str r0, [sp, #0x28] + add r0, #0xa0 + mov r4, #0 + add r7, #0x40 + str r0, [sp, #0x28] + b _02231F80 +_02231E5E: + ldr r0, [r6, #4] + ldr r1, _022320A4 ; =0x00000123 + ldr r0, [r0] + mov r2, #0 + ldrb r1, [r0, r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + lsl r1, r4, #1 + add r2, sp, #0x3c + strh r0, [r2, r1] + add r0, r2, #0 + ldrh r0, [r0, r1] + cmp r0, #0 + beq _02231E8C + mov r0, #0x4b + add r2, r5, r4 + lsl r0, r0, #2 + ldrb r2, [r2, r0] + b _02231E8E +_02231E8C: + mov r2, #0 +_02231E8E: + add r0, sp, #0x34 + strh r2, [r0, r1] + ldr r0, _022320A8 ; =0x00010708 + ldr r1, _022320AC ; =0x02244D94 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + mov r2, #0 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _022320AC ; =0x02244D94 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + add r0, r5, r1 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + bl MOD12_022322C0 + ldr r0, _022320B4 ; =0x00010200 + ldr r1, _022320B8 ; =0x02244E30 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + add r2, r4, #4 + str r0, [sp, #8] + lsl r0, r4, #3 + ldrh r1, [r1, r0] + str r1, [sp, #0xc] + ldr r1, _022320B8 ; =0x02244E30 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x24] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD12_022322C0 + ldr r0, _022320B4 ; =0x00010200 + add r2, r4, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022320B0 ; =0x000080F0 + lsl r1, r4, #3 + str r0, [sp, #8] + ldr r0, _022320B8 ; =0x02244E30 + add r2, #8 + add r1, r0, r1 + ldrh r0, [r1, #4] + str r0, [sp, #0xc] + ldrh r0, [r1, #6] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + ldr r0, [sp, #0x28] + add r0, r0, r1 + mov r1, #0x14 + mul r1, r2 + mov r2, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r1, r7, r1 + add r3, r2, #0 + bl MOD12_022322C0 + lsl r1, r4, #1 + add r0, sp, #0x3c + ldrh r0, [r0, r1] + cmp r0, #0 + bne _02231F7E + mov r0, #0x14 + mul r0, r4 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 + add r1, r4, #4 + mov r0, #0x14 + mul r0, r1 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 + add r1, r4, #0 + add r1, #8 + mov r0, #0x14 + mul r0, r1 + add r0, r6, r0 + ldr r0, [r0, #0x40] + mov r1, #0 + bl FUN_020119D0 +_02231F7E: + add r4, r4, #1 +_02231F80: + cmp r4, #4 + bge _02231F86 + b _02231E5E +_02231F86: + mov r4, #0 + add r7, sp, #0x3c + b _02231FB4 +_02231F8C: + lsl r0, r4, #1 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _02231FA6 + mov r0, #0x13 + add r1, r5, r4 + lsl r0, r0, #4 + ldrb r1, [r1, r0] + add r0, r6, #0 + add r2, r4, #0 + bl MOD12_022325AC + b _02231FB2 +_02231FA6: + mov r1, #0 + add r0, r6, #0 + mvn r1, r1 + add r2, r4, #0 + bl MOD12_022325AC +_02231FB2: + add r4, r4, #1 +_02231FB4: + cmp r4, #4 + blt _02231F8C + mov r4, #0 + mov r7, #0x20 + add r5, sp, #0x3c + b _02232006 +_02231FC0: + lsl r0, r4, #1 + ldrh r2, [r5, r0] + cmp r2, #0 + beq _02232004 + ldr r1, [r6, #4] + ldr r0, [r6, #8] + ldr r3, [r1] + ldr r1, _022320A4 ; =0x00000123 + ldrb r1, [r3, r1] + bl MOD12_02235BEC + cmp r0, #0 + bne _02232004 + str r7, [sp] + ldr r0, [r6, #4] + mov r1, #1 + add r3, r4, #4 + lsl r3, r3, #0x14 + ldr r2, [r6, #0x38] + lsl r1, r1, #8 + add r1, r2, r1 + ldr r0, [r0, #0x50] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + ldr r0, _022320A0 ; =0x000002E1 + ldrb r0, [r6, r0] + cmp r0, #0xff + beq _02232000 + bl ErrorHandling +_02232000: + ldr r0, _022320A0 ; =0x000002E1 + strb r4, [r6, r0] +_02232004: + add r4, r4, #1 +_02232006: + cmp r4, #4 + blt _02231FC0 + add r0, r6, #0 + add r1, sp, #0x3c + bl MOD12_02232470 + mov r4, #0 + b _02232096 +_02232016: + lsl r1, r4, #1 + add r0, sp, #0x3c + ldrh r0, [r0, r1] + cmp r0, #0 + beq _02232094 + add r0, sp, #0x34 + ldrh r0, [r0, r1] + bl FUN_02083114 + str r0, [sp, #0x20] + cmp r0, #0 + bge _02232030 + neg r0, r0 +_02232030: + mov r1, #0xa + bl _s32_div_f + str r0, [sp, #0x1c] + cmp r0, #6 + ble _02232040 + bl ErrorHandling +_02232040: + mov r0, #0x18 + mul r0, r4 + add r7, r6, r0 + lsl r0, r4, #3 + ldr r1, _022320BC ; =0x02244E50 + str r0, [sp, #0x2c] + add r0, r1, r0 + mov r5, #0 + str r0, [sp, #0x30] + b _0223208E +_02232054: + lsl r0, r5, #2 + add r1, r7, r0 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02232066 + bl ErrorHandling +_02232066: + ldr r0, [sp, #0x20] + ldr r3, _022320BC ; =0x02244E50 + str r0, [sp] + ldr r2, [sp, #0x2c] + ldr r1, [r6, #4] + ldr r3, [r3, r2] + lsl r2, r5, #3 + add r2, r3, r2 + ldr r3, [sp, #0x30] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + ldr r3, [r3, #4] + bl MOD12_022334F4 + lsl r1, r5, #2 + add r2, r7, r1 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r2, r1] + add r5, r5, #1 +_0223208E: + ldr r0, [sp, #0x1c] + cmp r5, r0 + blt _02232054 +_02232094: + add r4, r4, #1 +_02232096: + cmp r4, #4 + blt _02232016 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_022320A0: .word 0x000002E1 +_022320A4: .word 0x00000123 +_022320A8: .word 0x00010708 +_022320AC: .word 0x02244D94 +_022320B0: .word 0x000080F0 +_022320B4: .word 0x00010200 +_022320B8: .word 0x02244E30 +_022320BC: .word 0x02244E50 + + thumb_func_start MOD12_022320C0 +MOD12_022320C0: ; 0x022320C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r6, r5, r0 + add r7, r5, #0 + mov r4, #0 + add r6, #0xf0 + add r7, #0x40 + b _0223210E +_022320D6: + ldr r0, _0223216C ; =0x0001090A + ldr r1, _02232170 ; =0x02244D78 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _02232174 ; =0x000080F0 + mov r2, #0 + str r0, [sp, #8] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + mov r3, #2 + str r1, [sp, #0xc] + ldr r1, _02232170 ; =0x02244D78 + add r0, r1, r0 + ldrh r0, [r0, #2] + add r1, r4, #0 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0x14 + mul r1, r0 + add r0, r6, r1 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, r7, r1 + bl MOD12_022322C0 + add r4, r4, #1 +_0223210E: + cmp r4, #3 + blt _022320D6 + ldr r0, [r5, #4] + mov r1, #0x35 + ldr r0, [r0, #0x38] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, _0223216C ; =0x0001090A + ldr r1, _02232174 ; =0x000080F0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r1, [sp, #8] + mov r1, #0x80 + str r1, [sp, #0xc] + mov r1, #0xa4 + str r1, [sp, #0x10] + mov r1, #1 + str r1, [sp, #0x14] + add r2, r5, #0 + mov r1, #0x14 + str r0, [sp, #0x18] + add r2, #0x40 + mul r1, r4 + add r1, r2, r1 + add r0, r5, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD12_022322C0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, [r5, #4] + ldr r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r3, [r2] + ldr r2, _02232178 ; =0x0000011E + ldrb r2, [r3, r2] + bl MOD12_02233448 + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223216C: .word 0x0001090A +_02232170: .word 0x02244D78 +_02232174: .word 0x000080F0 +_02232178: .word 0x0000011E + + thumb_func_start MOD12_0223217C +MOD12_0223217C: ; 0x0223217C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #1 + str r2, [sp] + cmp r0, #4 + bhi _022321A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232196: ; jump table + .short _022321A0 - _02232196 - 2 ; case 0 + .short _022321A6 - _02232196 - 2 ; case 1 + .short _022321A6 - _02232196 - 2 ; case 2 + .short _022321A6 - _02232196 - 2 ; case 3 + .short _022321A6 - _02232196 - 2 ; case 4 +_022321A0: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022321A6: + ldr r0, [r4, #4] + mov r2, #0 + ldr r1, [r0] + ldr r0, _02232208 ; =0x00000123 + ldrb r0, [r1, r0] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r5, #0 + add r1, #0x36 + bl FUN_020671BC + cmp r0, #0 + beq _022321C8 + ldr r0, _0223220C ; =0x000002E1 + ldrb r0, [r4, r0] + cmp r0, r5 + bne _022321CE +_022321C8: + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022321CE: + mov r0, #6 + ldr r1, _02232210 ; =0x02244E00 + mul r0, r5 + add r7, r1, r0 + ldr r1, _02232214 ; =0x02244EA4 + lsl r0, r5, #4 + add r6, r1, r0 + ldr r1, [sp] + add r0, r4, #0 + bl MOD12_02232AB8 + ldr r0, _02232218 ; =MOD12_022327E0 + add r1, r4, #0 + bl MOD12_02232654 + mov r1, #0xbd + lsl r1, r1, #2 + str r7, [r4, r1] + add r0, r1, #4 + str r6, [r4, r0] + add r0, r1, #0 + mov r2, #2 + add r0, #0xc + strb r2, [r4, r0] + add r1, #8 + str r5, [r4, r1] + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232208: .word 0x00000123 +_0223220C: .word 0x000002E1 +_02232210: .word 0x02244E00 +_02232214: .word 0x02244EA4 +_02232218: .word MOD12_022327E0 + + thumb_func_start MOD12_0223221C +MOD12_0223221C: ; 0x0223221C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #1 + cmp r0, #4 + bhi _0223223E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232234: ; jump table + .short _0223223E - _02232234 - 2 ; case 0 + .short _02232242 - _02232234 - 2 ; case 1 + .short _02232246 - _02232234 - 2 ; case 2 + .short _0223224A - _02232234 - 2 ; case 3 + .short _0223224E - _02232234 - 2 ; case 4 +_0223223E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02232242: + mov r6, #0 + b _02232250 +_02232246: + mov r6, #1 + b _02232250 +_0223224A: + mov r6, #2 + b _02232250 +_0223224E: + mov r6, #3 +_02232250: + ldr r0, [r4, #4] + ldr r1, [r0] + ldr r0, _022322B0 ; =0x0000011E + ldrb r0, [r1, r0] + cmp r5, r0 + bne _02232260 + mov r7, #1 + b _02232262 +_02232260: + mov r7, #0 +_02232262: + add r0, r4, #0 + add r1, r2, #0 + bl MOD12_02232AB8 + ldr r0, _022322B4 ; =MOD12_022326A4 + add r1, r4, #0 + bl MOD12_02232654 + mov r0, #6 + ldr r1, _022322B8 ; =0x02244E18 + mul r0, r5 + add r0, r1, r0 + mov r1, #0xbd + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, _022322BC ; =0x02244EE4 + lsl r0, r5, #4 + add r2, r2, r0 + add r0, r1, #4 + str r2, [r4, r0] + mov r2, #3 + lsl r0, r2, #8 + strb r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r5, [r4, r0] + add r0, r1, #0 + add r0, #0xd + strb r6, [r4, r0] + cmp r7, #1 + bne _022322AA + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + sub r1, #0xc + str r0, [r4, r1] +_022322AA: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022322B0: .word 0x0000011E +_022322B4: .word MOD12_022326A4 +_022322B8: .word 0x02244E18 +_022322BC: .word 0x02244EE4 + + thumb_func_start MOD12_022322C0 +MOD12_022322C0: ; 0x022322C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r6, [sp, #0x9c] + ldr r4, [sp, #0xa8] + cmp r0, #0 + beq _022322DA + bl ErrorHandling +_022322DA: + ldr r1, [r7, #4] + cmp r4, #0 + ldr r0, [r1, #0x24] + str r0, [sp, #0x24] + ldr r0, [r1, #0x1c] + str r0, [sp, #0x20] + bne _022322F6 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD12_02232DE8 + b _022322FE +_022322F6: + ldrh r0, [r4, #0x12] + str r0, [sp, #0x2c] + ldrh r0, [r4, #0x10] + str r0, [sp, #0x28] +_022322FE: + cmp r4, #0 + bne _0223233C + add r0, sp, #0x3c + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + lsl r2, r2, #0x18 + add r1, sp, #0x3c + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x1c] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x18] + add r0, sp, #0x3c + str r3, [sp, #0x14] + bl FUN_0201BE3C + b _02232348 +_0223233C: + add r3, r4, #0 + add r2, sp, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} +_02232348: + add r0, sp, #0x3c + mov r1, #2 + mov r2, #0x15 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x30 + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0223236C + ldr r1, [sp, #0x2c] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + sub r6, r6, r0 +_0223236C: + ldr r0, [r7, #0x3c] + str r0, [sp, #0x4c] + add r0, sp, #0x3c + str r0, [sp, #0x50] + ldr r0, [sp, #0x20] + bl FUN_0200CA40 + str r0, [sp, #0x54] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + str r0, [sp, #0x58] + mov r0, #0 + ldr r1, [sp, #0x34] + str r0, [sp, #0x5c] + str r0, [sp, #0x6c] + mov r0, #0x64 + str r1, [sp, #0x60] + mov r1, #0x42 + str r0, [sp, #0x70] + mov r0, #2 + str r0, [sp, #0x74] + mov r0, #0x15 + str r0, [sp, #0x78] + ldr r2, [sp, #0xa0] + lsl r1, r1, #2 + add r1, r2, r1 + add r0, sp, #0x4c + str r6, [sp, #0x64] + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r7, r0, #0 + bl FUN_02011AC0 + mov r2, #0x42 + ldr r3, [sp, #0xa0] + lsl r2, r2, #2 + add r0, r7, #0 + add r1, r6, #0 + add r2, r3, r2 + bl FUN_020118C4 + cmp r4, #0 + bne _022323D0 + add r0, sp, #0x3c + bl FUN_02019178 +_022323D0: + str r7, [r5] + add r3, sp, #0x30 + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x2c] + strh r0, [r5, #0x10] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022323E8 +MOD12_022323E8: ; 0x022323E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r4, #0x44 + add r7, r6, #0 +_022323F4: + ldr r0, [r5, #0x40] + cmp r0, #0 + beq _02232406 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + str r7, [r5, #0x40] +_02232406: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #0xc + blt _022323F4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232414 +MOD12_02232414: ; 0x02232414 + push {r4, lr} + add r4, r0, #0 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223242E + bl MOD12_0223349C + mov r0, #5 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] +_0223242E: + pop {r4, pc} + + thumb_func_start MOD12_02232430 +MOD12_02232430: ; 0x02232430 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0 + mov r7, #0x51 + str r0, [sp, #4] + add r6, r0, #0 + lsl r7, r7, #2 +_02232440: + ldr r5, [sp] + mov r4, #0 +_02232444: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232454 + bl MOD12_02233534 + mov r0, #0x51 + lsl r0, r0, #2 + str r6, [r5, r0] +_02232454: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02232444 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _02232440 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02232470 +MOD12_02232470: ; 0x02232470 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r5, r0, #0 + add r7, r1, #0 + ldr r1, [r5, #4] + ldr r4, _02232504 ; =0x02244E70 + ldr r0, [r1, #0x18] + add r3, sp, #8 + str r0, [sp, #4] + ldr r0, [r1, #0x1c] + mov r2, #6 + str r0, [sp] +_02232488: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02232488 + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r6, sp, #8 + b _022324FC +_0223249A: + lsl r0, r4, #2 + add r1, r5, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022324AC + bl ErrorHandling +_022324AC: + lsl r0, r4, #1 + ldrh r0, [r7, r0] + cmp r0, #0 + beq _022324FA + mov r0, #0xb5 + add r1, r5, r4 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + ldr r0, _02232508 ; =0x000080F6 + ldr r1, _0223250C ; =0x02244DB4 + add r0, r4, r0 + str r0, [sp, #0x1c] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + add r3, sp, #8 + strh r1, [r6] + ldr r1, _0223250C ; =0x02244DB4 + add r0, r1, r0 + ldrh r0, [r0, #2] + ldr r1, [sp] + strh r0, [r6, #2] + ldr r0, [sp, #4] + bl MOD12_02240E98 + lsl r1, r4, #2 + mov r2, #0x13 + mov r3, #0x11 + add r1, r5, r1 + lsl r2, r2, #4 + str r0, [r1, r2] + add r0, r2, #0 + ldr r0, [r1, r0] + mov r1, #0 + mov r2, #2 + ldrsh r1, [r6, r1] + ldrsh r2, [r6, r2] + lsl r3, r3, #0x10 + bl FUN_0200C750 +_022324FA: + add r4, r4, #1 +_022324FC: + cmp r4, #4 + blt _0223249A + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232504: .word 0x02244E70 +_02232508: .word 0x000080F6 +_0223250C: .word 0x02244DB4 + + thumb_func_start MOD12_02232510 +MOD12_02232510: ; 0x02232510 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x13 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #4 +_0223251C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223252C + bl MOD12_02240EC8 + mov r0, #0x13 + lsl r0, r0, #4 + str r6, [r5, r0] +_0223252C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223251C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232538 +MOD12_02232538: ; 0x02232538 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + ldr r0, [r0, #0x24] + add r7, r3, #0 + mov r1, #4 + add r4, r2, #0 + str r0, [sp, #4] + bl FUN_0201886C + mov ip, r0 + lsl r0, r7, #2 + add r0, r5, r0 + ldr r0, [r0, #0x20] + ldr r7, [r4] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r0, r0, #1 + ldrsh r1, [r6, r0] + ldr r0, [r4, #4] + cmp r7, r0 + bgt _0223259E + lsl r6, r7, #5 +_0223256A: + lsl r2, r6, #1 + mov r0, ip + add r5, r0, r2 + ldr r0, [sp] + ldr r3, [r4, #0xc] + add r2, r0, r2 + ldr r0, [r4, #8] + cmp r0, r3 + bgt _02232594 + lsl r3, r0, #1 + add r2, r2, r3 + add r3, r5, r3 +_02232582: + ldrh r5, [r2] + add r0, r0, #1 + add r2, r2, #2 + add r5, r1, r5 + strh r5, [r3] + ldr r5, [r4, #0xc] + add r3, r3, #2 + cmp r0, r5 + ble _02232582 +_02232594: + ldr r0, [r4, #4] + add r7, r7, #1 + add r6, #0x20 + cmp r7, r0 + ble _0223256A +_0223259E: + ldr r0, [sp, #4] + mov r1, #4 + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_022325AC +MOD12_022325AC: ; 0x022325AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r6, _02232624 ; =0x02244DD8 + add r5, r2, #0 + add r4, r0, #0 + add r3, r1, #0 + add r2, sp, #4 + ldmia r6!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + mvn r0, r0 + cmp r3, r0 + beq _022325EC + mov r0, #0x20 + str r0, [sp] + lsl r1, r3, #2 + ldr r0, [r4, #4] + add r3, r5, #4 + lsl r3, r3, #0x14 + ldr r0, [r0, #0x50] + ldr r1, [r7, r1] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_022325EC: + ldr r2, _02232628 ; =0x02244D64 + lsl r1, r5, #1 + mov r0, #0 + add r1, r2, r1 + str r0, [sp] + ldr r3, _0223262C ; =0x02244F24 + lsl r2, r5, #4 + add r2, r3, r2 + add r0, r4, #0 + mov r3, #2 + bl MOD12_02232538 + mov r2, #0x20 + str r2, [sp] + ldr r0, [r4, #4] + add r3, r5, #4 + lsl r3, r3, #0x14 + ldr r1, [r4, #0x38] + add r2, #0xe0 + add r1, r1, r2 + ldr r0, [r0, #0x50] + mov r2, #1 + lsr r3, r3, #0x10 + bl FUN_02003054 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232624: .word 0x02244DD8 +_02232628: .word 0x02244D64 +_0223262C: .word 0x02244F24 + + thumb_func_start MOD12_02232630 +MOD12_02232630: ; 0x02232630 + ldr r3, _02232634 ; =MOD12_02232638 + bx r3 + .align 2, 0 +_02232634: .word MOD12_02232638 + + thumb_func_start MOD12_02232638 +MOD12_02232638: ; 0x02232638 + push {r4, lr} + add r4, r0, #0 + bl MOD12_02232414 + add r0, r4, #0 + bl MOD12_02232430 + add r0, r4, #0 + bl MOD12_02232510 + add r0, r4, #0 + bl MOD12_022323E8 + pop {r4, pc} + + thumb_func_start MOD12_02232654 +MOD12_02232654: ; 0x02232654 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02232664 + bl ErrorHandling +_02232664: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + ldr r2, _02232680 ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232680: .word 0x00000514 + + thumb_func_start MOD12_02232684 +MOD12_02232684: ; 0x02232684 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022326A2 + bl FUN_0200CAB4 + mov r0, #0xb9 + lsl r0, r0, #2 + mov r1, #0 + add r0, r4, r0 + mov r2, #0x20 + str r1, [r4, #0x10] + bl MI_CpuFill8 +_022326A2: + pop {r4, pc} + + thumb_func_start MOD12_022326A4 +MOD12_022326A4: ; 0x022326A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r3, #0xb9 + add r5, r1, #0 + lsl r3, r3, #2 + ldrsh r0, [r5, r3] + cmp r0, #0 + beq _022326BE + cmp r0, #1 + beq _02232730 + cmp r0, #2 + beq _0223274C + b _022327BC +_022326BE: + mov r0, #2 + str r0, [sp] + add r1, r3, #0 + add r2, r3, #0 + add r3, #0x1c + add r1, #0x10 + add r2, #0x14 + ldrb r3, [r5, r3] + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02232538 + ldr r0, _022327DC ; =0x00000301 + add r2, sp, #4 + ldrb r1, [r5, r0] + mov r0, #0x14 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _022327DC ; =0x00000301 + ldr r2, [sp, #4] + ldrb r1, [r5, r0] + mov r0, #0x14 + sub r2, r2, #2 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + ldr r1, [sp, #8] + bl FUN_020118C4 + mov r7, #0xba + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_0223270A: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0223271A + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC +_0223271A: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _0223270A + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r5, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r5, r0] + pop {r4, r5, r6, r7, pc} +_02232730: + add r0, r3, #2 + ldrsh r0, [r5, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022327D8 + mov r1, #0 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r3] + add r0, r0, #1 + strh r0, [r5, r3] +_0223274C: + mov r0, #1 + mov r3, #0xbd + str r0, [sp] + lsl r3, r3, #2 + add r2, r3, #4 + ldr r1, [r5, r3] + add r3, #0xc + ldrb r3, [r5, r3] + ldr r2, [r5, r2] + add r0, r5, #0 + bl MOD12_02232538 + ldr r0, _022327DC ; =0x00000301 + add r2, sp, #4 + ldrb r1, [r5, r0] + mov r0, #0x14 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + add r1, sp, #8 + bl FUN_020119A4 + ldr r0, _022327DC ; =0x00000301 + ldr r2, [sp, #4] + ldrb r1, [r5, r0] + mov r0, #0x14 + add r2, r2, #1 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x40] + ldr r1, [sp, #8] + bl FUN_020118C4 + mov r7, #0xba + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02232796: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022327A6 + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC +_022327A6: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _02232796 + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r5, r0] + add sp, #0xc + add r1, r1, #1 + strh r1, [r5, r0] + pop {r4, r5, r6, r7, pc} +_022327BC: + add r0, r3, #2 + ldrsh r0, [r5, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022327D8 + add r0, r5, #0 + bl MOD12_02232630 + add r0, r5, #0 + bl MOD12_02232684 +_022327D8: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022327DC: .word 0x00000301 + + thumb_func_start MOD12_022327E0 +MOD12_022327E0: ; 0x022327E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r7, _02232A64 ; =0x00000123 + add r4, r1, #0 + mov r6, #0 + add r5, sp, #0x20 +_022327EC: + ldr r0, [r4, #4] + mov r2, #0 + ldr r0, [r0] + ldrb r1, [r0, r7] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #4 + blt _022327EC + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #3 + bhi _02232870 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02232820: ; jump table + .short _02232828 - _02232820 - 2 ; case 0 + .short _0223283A - _02232820 - 2 ; case 1 + .short _0223284C - _02232820 - 2 ; case 2 + .short _0223285E - _02232820 - 2 ; case 3 +_02232828: + mov r0, #8 + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0] + mov r5, #0 + mov r6, #4 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223283A: + mov r0, #9 + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #2] + mov r5, #1 + mov r6, #5 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223284C: + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #4] + mov r5, #2 + mov r6, #6 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_0223285E: + mov r0, #0xb + str r0, [sp, #0xc] + add r0, sp, #0x20 + ldrh r0, [r0, #6] + mov r5, #3 + mov r6, #7 + str r0, [sp, #8] + str r5, [sp, #4] + b _02232878 +_02232870: + mov r5, #0 + add r6, r5, #0 + str r5, [sp, #0xc] + str r5, [sp, #8] +_02232878: + mov r3, #0xb9 + lsl r3, r3, #2 + ldrsh r0, [r4, r3] + cmp r0, #0 + beq _0223288C + cmp r0, #1 + beq _0223295A + cmp r0, #2 + beq _02232976 + b _02232A42 +_0223288C: + mov r0, #2 + str r0, [sp] + add r1, r3, #0 + add r2, r3, #0 + add r3, #0x1c + add r1, #0x10 + add r2, #0x14 + ldrb r3, [r4, r3] + ldr r1, [r4, r1] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02232538 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r5 + add r7, #0x40 + str r0, [sp, #0x10] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r6 + add r7, #0x40 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #0xc] + add r6, r4, #0 + mov r1, #0x14 + add r7, r0, #0 + mul r7, r1 + add r6, #0x40 + ldr r0, [r6, r7] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r2, [sp, #0x28] + ldr r0, [r6, r7] + ldr r1, [sp, #0x2c] + sub r2, r2, #2 + bl FUN_020118C4 + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223294C + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC + mov r7, #0x51 + ldr r0, [sp, #4] + mov r1, #0x18 + mul r1, r0 + mov r6, #0 + add r5, r4, r1 + lsl r7, r7, #2 +_02232934: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232944 + mov r1, #0 + ldr r0, [r0] + sub r2, r1, #2 + bl FUN_0200C7FC +_02232944: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02232934 +_0223294C: + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + add sp, #0x30 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_0223295A: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _02232A5E + mov r1, #0 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r3] + add r0, r0, #1 + strh r0, [r4, r3] +_02232976: + mov r0, #1 + mov r3, #0xbd + str r0, [sp] + lsl r3, r3, #2 + add r2, r3, #4 + ldr r1, [r4, r3] + add r3, #0xc + ldrb r3, [r4, r3] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD12_02232538 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r5 + add r7, #0x40 + str r0, [sp, #0x18] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + add r7, r4, #0 + mov r0, #0x14 + mul r0, r6 + add r7, #0x40 + str r0, [sp, #0x1c] + ldr r0, [r7, r0] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x28] + ldr r0, [r7, r0] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #0xc] + add r6, r4, #0 + mov r1, #0x14 + add r7, r0, #0 + mul r7, r1 + add r6, #0x40 + ldr r0, [r6, r7] + add r1, sp, #0x2c + add r2, sp, #0x28 + bl FUN_020119A4 + ldr r2, [sp, #0x28] + ldr r0, [r6, r7] + ldr r1, [sp, #0x2c] + add r2, r2, #1 + bl FUN_020118C4 + ldr r0, [sp, #8] + cmp r0, #0 + beq _02232A34 + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0 + ldr r0, [r0] + mov r2, #1 + bl FUN_0200C7FC + mov r7, #0x51 + ldr r0, [sp, #4] + mov r1, #0x18 + mul r1, r0 + mov r6, #0 + add r5, r4, r1 + lsl r7, r7, #2 +_02232A1C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232A2C + ldr r0, [r0] + mov r1, #0 + mov r2, #1 + bl FUN_0200C7FC +_02232A2C: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _02232A1C +_02232A34: + mov r0, #0xb9 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + add sp, #0x30 + add r1, r1, #1 + strh r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_02232A42: + add r0, r3, #2 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r3, #2 + strh r1, [r4, r0] + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _02232A5E + add r0, r4, #0 + bl MOD12_02232630 + add r0, r4, #0 + bl MOD12_02232684 +_02232A5E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02232A64: .word 0x00000123 + + thumb_func_start MOD12_02232A68 +MOD12_02232A68: ; 0x02232A68 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02232A78 + bl ErrorHandling +_02232A78: + mov r0, #0xc1 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r2, _02232A94 ; =0x00000528 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 +_02232A94: .word 0x00000528 + + thumb_func_start MOD12_02232A98 +MOD12_02232A98: ; 0x02232A98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02232AB6 + bl FUN_0200CAB4 + mov r0, #0xc1 + lsl r0, r0, #2 + mov r1, #0 + add r0, r4, r0 + mov r2, #0xc + str r1, [r4, #0x14] + bl MI_CpuFill8 +_02232AB6: + pop {r4, pc} + + thumb_func_start MOD12_02232AB8 +MOD12_02232AB8: ; 0x02232AB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xff + beq _02232ACE + ldr r0, _02232AD0 ; =MOD12_02232AD8 + add r1, r5, #0 + bl MOD12_02232A68 + ldr r0, _02232AD4 ; =0x0000030D + strb r4, [r5, r0] +_02232ACE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02232AD0: .word MOD12_02232AD8 +_02232AD4: .word 0x0000030D + + thumb_func_start MOD12_02232AD8 +MOD12_02232AD8: ; 0x02232AD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r0, #0xc1 + add r5, r1, #0 + lsl r0, r0, #2 + add r2, r5, r0 + ldr r0, [r5, #4] + mov r4, #0 + ldr r3, [r0, #0x50] + ldrb r0, [r2, #8] + cmp r0, #0 + beq _02232AF8 + cmp r0, #1 + beq _02232B14 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02232AF8: + mov r0, #0xa + lsl r0, r0, #8 + strh r0, [r2, #4] + ldr r0, _02232B74 ; =0xFFFFFB00 + strh r0, [r2, #6] + mov r0, #4 + ldrsh r1, [r2, r0] + mov r0, #6 + ldrsh r0, [r2, r0] + sub r0, r1, r0 + strh r0, [r2, #4] + ldrb r0, [r2, #8] + add r0, r0, #1 + strb r0, [r2, #8] +_02232B14: + mov r7, #4 + mov r6, #6 + ldrsh r1, [r2, r7] + ldrsh r0, [r2, r6] + add r0, r1, r0 + strh r0, [r2, #4] + ldrsh r6, [r2, r6] + cmp r6, #0 + blt _02232B34 + ldrsh r1, [r2, r7] + lsl r0, r7, #0xa + cmp r1, r0 + blt _02232B34 + strh r0, [r2, #4] + mov r4, #1 + b _02232B46 +_02232B34: + cmp r6, #0 + bge _02232B46 + mov r0, #4 + ldrsh r0, [r2, r0] + cmp r0, #0 + bgt _02232B46 + mov r0, #0 + strh r0, [r2, #4] + mov r4, #1 +_02232B46: + mov r0, #4 + ldrsh r0, [r2, r0] + mov r1, #1 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _02232B78 ; =0x00007FFF + str r0, [sp, #4] + ldrb r2, [r2, #9] + add r0, r3, #0 + mov r3, #0x10 + lsl r2, r2, #0x14 + lsr r2, r2, #0x10 + bl FUN_020039E8 + cmp r4, #1 + bne _02232B70 + add r0, r5, #0 + bl MOD12_02232A98 +_02232B70: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232B74: .word 0xFFFFFB00 +_02232B78: .word 0x00007FFF + + thumb_func_start MOD12_02232B7C +MOD12_02232B7C: ; 0x02232B7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x69 + add r5, r0, #0 + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #4] + add r0, r5, r1 + str r0, [sp] + add r0, r1, #0 + add r0, #0x50 + add r1, #0xa0 + add r4, r5, #0 + add r7, r5, r0 + add r6, r5, r1 +_02232B9A: + mov r0, #0x1b + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BAA + ldr r0, [sp] + bl FUN_02019178 +_02232BAA: + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BBA + add r0, r7, #0 + bl FUN_02019178 +_02232BBA: + mov r0, #0x25 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02232BCA + add r0, r6, #0 + bl FUN_02019178 +_02232BCA: + ldr r0, [sp] + add r4, #0x14 + add r0, #0x14 + str r0, [sp] + ldr r0, [sp, #4] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #4] + cmp r0, #4 + blt _02232B9A + mov r0, #0xa5 + lsl r0, r0, #2 + add r7, r0, #0 + mov r6, #0 + add r4, r5, r0 + add r7, #0xc +_02232BEC: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02232BF8 + add r0, r4, #0 + bl FUN_02019178 +_02232BF8: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #3 + blt _02232BEC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232C08 +MOD12_02232C08: ; 0x02232C08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + mov r0, #0x69 + lsl r0, r0, #2 + add r6, r5, r0 + mov r0, #0 + str r0, [sp, #0x20] + add r0, r6, #0 + str r0, [sp, #0x18] + add r0, #0x50 + str r0, [sp, #0x18] + add r0, r6, #0 + str r0, [sp, #0x14] + add r0, #0xa0 + add r7, r1, #0 + str r6, [sp, #0x1c] + str r0, [sp, #0x14] +_02232C2C: + ldrh r0, [r7] + cmp r0, #0 + beq _02232C52 + ldr r1, [sp, #0x20] + add r4, r6, r1 + mov r1, #0xa + bl FUN_0206AB18 + mov r1, #0x4b + lsl r1, r1, #2 + strb r0, [r4, r1] + ldrh r0, [r7] + mov r1, #0xb + bl FUN_0206AB18 + mov r1, #0x13 + lsl r1, r1, #4 + strb r0, [r4, r1] + b _02232C62 +_02232C52: + ldr r0, [sp, #0x20] + mov r1, #0 + add r4, r6, r0 + mov r0, #0x4b + lsl r0, r0, #2 + strb r1, [r4, r0] + add r0, r0, #4 + strb r1, [r4, r0] +_02232C62: + ldrh r0, [r7] + mov r1, #0x15 + bl FUN_0200AA14 + str r0, [sp, #0x24] + ldr r0, _02232D6C ; =0x00010708 + ldr r1, [sp, #0x24] + str r0, [sp] + ldr r3, [sp, #0x1c] + add r0, r5, #0 + mov r2, #2 + bl MOD12_02232D7C + ldr r0, [sp, #0x24] + bl FUN_02021A20 + mov r0, #0x4b + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r1, sp, #0x34 + add r2, sp, #0x30 + bl FUN_02083130 + ldr r0, [r5, #4] + ldr r1, [sp, #0x34] + ldr r0, [r0, #0x40] + bl FUN_0200A914 + str r0, [sp, #0x28] + ldr r0, [r5, #4] + ldr r1, [sp, #0x30] + ldr r0, [r0, #0x40] + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, _02232D70 ; =0x00010200 + ldr r1, [sp, #0x28] + str r0, [sp] + ldr r3, [sp, #0x18] + add r0, r5, #0 + mov r2, #0 + bl MOD12_02232D7C + ldr r0, _02232D70 ; =0x00010200 + ldr r3, [sp, #0x14] + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD12_02232D7C + ldr r0, [sp, #0x28] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + add r7, r7, #2 + add r0, #0x14 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, #0x14 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _02232C2C + mov r7, #0 + add r4, r7, #0 + add r6, #0xf0 +_02232CF8: + ldr r0, [r5, #4] + mov r1, #0x15 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xd0 + ldrh r0, [r0] + bl MOD12_022314A8 + str r0, [sp, #0x2c] + ldr r0, _02232D74 ; =0x0001090A + ldr r1, [sp, #0x2c] + str r0, [sp] + add r0, r5, #0 + mov r2, #2 + add r3, r6, #0 + bl MOD12_02232D7C + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r7, r7, #1 + add r4, #8 + add r6, #0x14 + cmp r7, #3 + blt _02232CF8 + ldr r3, _02232D78 ; =0x000080F1 + ldr r2, [r5, #4] + add r0, r3, #7 + str r3, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x50] + add r3, #0xc + bl MOD12_02244750 + ldr r3, _02232D78 ; =0x000080F1 + ldr r1, [r5, #4] + add r0, r3, #7 + str r3, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r2, #0x15 + add r3, #0xc + bl MOD12_022447E8 + mov r1, #0xc5 + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02232D6C: .word 0x00010708 +_02232D70: .word 0x00010200 +_02232D74: .word 0x0001090A +_02232D78: .word 0x000080F1 + + thumb_func_start MOD12_02232D7C +MOD12_02232D7C: ; 0x02232D7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r2, #0 + add r6, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x1c + add r3, sp, #0x18 + bl MOD12_02232DE8 + ldr r0, [sp, #0x1c] + strh r0, [r4, #0x12] + ldr r0, [sp, #0x18] + strh r0, [r4, #0x10] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02232DA8 + add r0, r4, #0 + bl FUN_02019178 +_02232DA8: + add r0, r4, #0 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r2, [sp, #0x18] + ldr r0, [r0, #0x24] + lsl r2, r2, #0x18 + add r1, r4, #0 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x38] + add r1, r7, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + add r0, r4, #0 + add r2, r6, #0 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232DE8 +MOD12_02232DE8: ; 0x02232DE8 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r6, r2, #0 + add r0, r1, #0 + add r1, r4, #0 + mov r2, #0 + add r7, r3, #0 + bl FUN_02002E14 + add r4, r0, #0 + asr r1, r4, #2 + lsr r1, r1, #0x1d + add r1, r4, r1 + asr r5, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _02232E10 + add r5, r5, #1 +_02232E10: + str r4, [r6] + str r5, [r7] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02232E18 +MOD12_02232E18: ; 0x02232E18 + push {r4, r5, r6, lr} + mov r6, #0xc6 + lsl r6, r6, #2 + add r2, r6, #0 + add r5, r0, #0 + sub r2, #0x38 + ldrsb r2, [r5, r2] + ldr r1, _02232E7C ; =0x02245074 + mov r3, #0x30 + add r4, r2, #0 + mul r4, r3 + add r4, r1, r4 + ldr r2, [r4, #0x20] + cmp r2, #0 + bne _02232E3C + sub r3, #0x31 + add r0, r3, #0 + pop {r4, r5, r6, pc} +_02232E3C: + ldrb r1, [r5, r6] + cmp r1, #0 + bne _02232E76 + add r0, r6, #4 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _02232E54 + ldr r1, _02232E80 ; =0x021C48B8 + ldr r2, [r1, #0x48] + ldr r1, _02232E84 ; =0x00000CF3 + tst r1, r2 + beq _02232E70 +_02232E54: + cmp r0, #0 + bne _02232E5E + ldr r0, _02232E88 ; =0x000005DC + bl FUN_020054C8 +_02232E5E: + mov r1, #1 + mov r0, #0xc7 + strb r1, [r5, r6] + mov r2, #0 + lsl r0, r0, #2 + strb r2, [r5, r0] + ldr r2, [r4, #0x20] + add r0, r5, #0 + blx r2 +_02232E70: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02232E76: + mov r1, #0 + blx r2 + pop {r4, r5, r6, pc} + .align 2, 0 +_02232E7C: .word 0x02245074 +_02232E80: .word 0x021C48B8 +_02232E84: .word 0x00000CF3 +_02232E88: .word 0x000005DC + + thumb_func_start MOD12_02232E8C +MOD12_02232E8C: ; 0x02232E8C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r1, [sp, #8] + mov r1, #0x31 + add r5, r0, #0 + lsl r1, r1, #4 + add r0, r5, r1 + str r0, [sp, #0xc] + add r0, r1, #0 + sub r1, #0x30 + add r0, #8 + add r6, r5, r0 + ldrsb r1, [r5, r1] + mov r0, #0x30 + ldr r2, _02232FE4 ; =0x02245074 + mul r0, r1 + add r7, r2, r0 + mov r4, #0 + b _02232ED0 +_02232EB2: + ldr r0, [r5, #4] + ldr r1, _02232FE8 ; =0x00000123 + ldr r0, [r0] + mov r2, #0 + ldrb r1, [r0, r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + lsl r2, r4, #1 + add r1, sp, #0x10 + strh r0, [r1, r2] + add r4, r4, #1 +_02232ED0: + cmp r4, #4 + blt _02232EB2 + ldr r0, [sp, #8] + cmp r0, #1 + bne _02232F4E + ldr r0, [sp, #0xc] + mov r1, #0 + ldrsb r0, [r0, r1] + mov r4, #1 + strb r0, [r6, #2] + ldr r0, [sp, #0xc] + ldrsb r0, [r0, r4] + strb r0, [r6, #1] + ldrsb r0, [r6, r4] + lsl r3, r0, #1 + mov r0, #2 + ldrsb r2, [r6, r0] + ldr r0, _02232FEC ; =0x02244D58 + add r0, r0, r3 + ldrb r3, [r2, r0] + add r0, sp, #0x10 + lsl r2, r3, #1 + ldrh r0, [r0, r2] + cmp r0, #0 + bne _02232F1A + ldr r0, [sp, #0xc] + strb r1, [r0] + strb r1, [r0, #1] + strb r1, [r6, #2] + strb r1, [r6, #1] + ldrsb r0, [r6, r4] + lsl r2, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + ldr r0, _02232FEC ; =0x02244D58 + add r0, r0, r2 + ldrb r3, [r1, r0] +_02232F1A: + ldr r0, [r7, #0x14] + lsl r3, r3, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + mov r0, #0 + add sp, #0x1c + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_02232F4E: + ldr r0, _02232FEC ; =0x02244D58 + add r1, sp, #0x18 + mov r2, #4 + bl MI_CpuCopy8 + mov r1, #2 + add r0, r6, #0 + add r2, r1, #0 + add r3, sp, #0x18 + bl MOD12_0223318C + cmp r0, #0x20 + bhi _02232F7E + bhs _02232F8A + cmp r0, #2 + bhi _02232F78 + cmp r0, #1 + blo _02232FDC + beq _02232FC8 + cmp r0, #2 + b _02232FDC +_02232F78: + cmp r0, #0x10 + beq _02232F8A + b _02232FDC +_02232F7E: + cmp r0, #0x40 + bhi _02232F86 + beq _02232F8A + b _02232FDC +_02232F86: + cmp r0, #0x80 + bne _02232FDC +_02232F8A: + mov r0, #1 + ldrsb r0, [r6, r0] + ldr r2, _02232FEC ; =0x02244D58 + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r7, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r7, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + b _02232FDC +_02232FC8: + mov r0, #1 + ldrsb r0, [r6, r0] + ldr r2, _02232FEC ; =0x02244D58 + add sp, #0x1c + lsl r3, r0, #1 + mov r0, #2 + ldrsb r1, [r6, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r4, r5, r6, r7, pc} +_02232FDC: + mov r0, #0 + mvn r0, r0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02232FE4: .word 0x02245074 +_02232FE8: .word 0x00000123 +_02232FEC: .word 0x02244D58 + + thumb_func_start MOD12_02232FF0 +MOD12_02232FF0: ; 0x02232FF0 + push {r4, r5, r6, r7} + mov r2, #0x31 + lsl r2, r2, #4 + mov r4, #0 + add r2, r0, r2 + ldr r7, _02233028 ; =0x02244D58 + add r0, r4, #0 + b _0223301E +_02233000: + lsl r5, r4, #1 + add r3, r0, #0 + add r6, r7, r5 + b _02233018 +_02233008: + ldrb r5, [r3, r6] + cmp r1, r5 + bne _02233016 + strb r3, [r2] + strb r4, [r2, #1] + pop {r4, r5, r6, r7} + bx lr +_02233016: + add r3, r3, #1 +_02233018: + cmp r3, #2 + blt _02233008 + add r4, r4, #1 +_0223301E: + cmp r4, #2 + blt _02233000 + pop {r4, r5, r6, r7} + bx lr + nop +_02233028: .word 0x02244D58 + + thumb_func_start MOD12_0223302C +MOD12_0223302C: ; 0x0223302C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r7, #0x31 + lsl r7, r7, #4 + add r3, r7, #0 + add r5, r0, #0 + sub r3, #0x30 + add r0, r7, #0 + ldrsb r6, [r5, r3] + add r0, #8 + add r4, r5, r0 + mov r3, #0x30 + add r2, r1, #0 + ldr r0, _02233144 ; =0x02245074 + mul r3, r6 + add r1, r5, r7 + add r6, r0, r3 + cmp r2, #1 + bne _022330A0 + mov r0, #2 + ldrsb r2, [r1, r0] + strb r2, [r4, #2] + mov r2, #3 + ldrsb r1, [r1, r2] + strb r1, [r4, #1] + mov r1, #1 + ldrsb r2, [r4, r1] + ldrsb r3, [r4, r0] + lsl r1, r2, #1 + add r2, r2, r1 + ldr r1, _02233148 ; =0x02244D5C + add r0, r1, r2 + ldrb r1, [r3, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + add r0, r7, #4 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022330A0: + ldr r0, _02233148 ; =0x02244D5C + add r1, sp, #8 + mov r2, #6 + bl MI_CpuCopy8 + add r0, r4, #0 + mov r1, #3 + mov r2, #2 + add r3, sp, #8 + bl MOD12_0223318C + cmp r0, #0x20 + bhi _022330D2 + bhs _022330DE + cmp r0, #2 + bhi _022330CC + cmp r0, #1 + blo _0223313A + beq _0223311E + cmp r0, #2 + beq _02233134 + b _0223313A +_022330CC: + cmp r0, #0x10 + beq _022330DE + b _0223313A +_022330D2: + cmp r0, #0x40 + bhi _022330DA + beq _022330DE + b _0223313A +_022330DA: + cmp r0, #0x80 + bne _0223313A +_022330DE: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _02233148 ; =0x02244D5C + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r1, [r1, r0] + ldr r0, [r6, #0x14] + lsl r3, r1, #2 + add r0, r0, r3 + ldrb r0, [r0, #1] + sub r0, #8 + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r4, [r6, #0x14] + mov r0, #0xc5 + add r2, r4, r3 + ldrb r1, [r2, #2] + ldrb r2, [r2, #3] + ldrb r3, [r4, r3] + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, #8 + sub r2, #8 + add r3, #8 + bl MOD12_02244918 + b _0223313A +_0223311E: + mov r0, #1 + ldrsb r1, [r4, r0] + ldr r2, _02233148 ; =0x02244D5C + add sp, #0x10 + lsl r0, r1, #1 + add r3, r1, r0 + mov r0, #2 + ldrsb r1, [r4, r0] + add r0, r2, r3 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02233134: + add sp, #0x10 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_0223313A: + mov r0, #0 + mvn r0, r0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233144: .word 0x02245074 +_02233148: .word 0x02244D5C + + thumb_func_start MOD12_0223314C +MOD12_0223314C: ; 0x0223314C + push {r4, r5, r6, r7} + cmp r1, #3 + beq _02233184 + mov r2, #0x31 + lsl r2, r2, #4 + add r3, r0, r2 + mov r5, #0 + ldr r0, _02233188 ; =0x02244D5C + add r2, r5, #0 + b _02233180 +_02233160: + lsl r6, r5, #1 + add r6, r5, r6 + add r4, r2, #0 + add r7, r0, r6 + b _0223317A +_0223316A: + ldrb r6, [r4, r7] + cmp r1, r6 + bne _02233178 + strb r4, [r3, #2] + strb r5, [r3, #3] + pop {r4, r5, r6, r7} + bx lr +_02233178: + add r4, r4, #1 +_0223317A: + cmp r4, #3 + blt _0223316A + add r5, r5, #1 +_02233180: + cmp r5, #2 + blt _02233160 +_02233184: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02233188: .word 0x02244D5C + + thumb_func_start MOD12_0223318C +MOD12_0223318C: ; 0x0223318C + push {r3, r4, r5, r6, r7, lr} + mov r7, #2 + add r4, r1, #0 + ldrsb r1, [r0, r7] + mov r5, #1 + add r6, r2, #0 + str r1, [sp] + ldrsb r1, [r0, r5] + add r2, r3, #0 + mov r3, #0x40 + mov ip, r1 + ldr r1, _02233364 ; =0x021C48B8 + ldr r1, [r1, #0x48] + tst r3, r1 + beq _022331FA + mov r1, ip + sub r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, #0 + bge _022331BA + mov r1, #0 + strb r1, [r0, #1] +_022331BA: + cmp r2, #0 + beq _022331F6 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022331F6 + add r1, r0, #1 + mov r7, #0 + mov r6, #1 +_022331D6: + ldrsb r3, [r1, r7] + sub r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _022331E8 + mov r1, ip + strb r1, [r0, #1] + b _022331F6 +_022331E8: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _022331D6 +_022331F6: + mov r5, #0x40 + b _0223330E +_022331FA: + mov r3, #0x80 + tst r3, r1 + beq _02233250 + mov r1, ip + add r1, r1, #1 + strb r1, [r0, #1] + ldrsb r1, [r0, r5] + cmp r1, r6 + blt _02233210 + sub r1, r6, #1 + strb r1, [r0, #1] +_02233210: + cmp r2, #0 + beq _0223324C + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _0223324C + add r1, r0, #1 + mov r7, #1 +_0223322A: + mov r3, #0 + ldrsb r3, [r1, r3] + add r3, r3, #1 + strb r3, [r1] + ldrsb r3, [r0, r7] + cmp r3, r6 + blt _0223323E + mov r1, ip + strb r1, [r0, #1] + b _0223324C +_0223323E: + mov r5, #2 + ldrsb r5, [r0, r5] + mul r3, r4 + add r5, r2, r5 + ldrb r3, [r3, r5] + cmp r3, #0xff + beq _0223322A +_0223324C: + mov r5, #0x80 + b _0223330E +_02233250: + mov r3, #0x20 + tst r3, r1 + beq _022332A6 + ldr r1, [sp] + sub r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, #0 + bge _02233266 + mov r1, #0 + strb r1, [r0, #2] +_02233266: + cmp r2, #0 + beq _022332A2 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022332A2 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_02233282: + ldrsb r1, [r5, r7] + sub r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, #0 + bge _02233294 + ldr r1, [sp] + strb r1, [r0, #2] + b _022332A2 +_02233294: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _02233282 +_022332A2: + mov r5, #0x20 + b _0223330E +_022332A6: + mov r3, #0x10 + tst r3, r1 + beq _022332FC + ldr r1, [sp] + add r1, r1, #1 + strb r1, [r0, #2] + ldrsb r1, [r0, r7] + cmp r1, r4 + blt _022332BC + sub r1, r4, #1 + strb r1, [r0, #2] +_022332BC: + cmp r2, #0 + beq _022332F8 + mov r3, #1 + mov r1, #2 + ldrsb r3, [r0, r3] + ldrsb r1, [r0, r1] + mul r3, r4 + add r1, r1, r3 + ldrb r1, [r2, r1] + cmp r1, #0xff + bne _022332F8 + add r5, r0, #2 + mov r7, #0 + mov r6, #2 +_022332D8: + ldrsb r1, [r5, r7] + add r1, r1, #1 + strb r1, [r5] + ldrsb r3, [r0, r6] + cmp r3, r4 + blt _022332EA + ldr r1, [sp] + strb r1, [r0, #2] + b _022332F8 +_022332EA: + mov r1, #1 + ldrsb r1, [r0, r1] + add r3, r2, r3 + mul r1, r4 + ldrb r1, [r1, r3] + cmp r1, #0xff + beq _022332D8 +_022332F8: + mov r5, #0x10 + b _0223330E +_022332FC: + add r3, r1, #0 + tst r3, r5 + bne _0223330E + tst r1, r7 + beq _0223330A + add r5, r7, #0 + b _0223330E +_0223330A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223330E: + cmp r2, #0 + beq _02233338 + mov r1, ip + add r3, r4, #0 + mul r3, r1 + ldr r1, [sp] + add r1, r1, r3 + mov r3, #2 + ldrsb r6, [r0, r3] + mov r3, #1 + ldrsb r3, [r0, r3] + ldrb r1, [r2, r1] + mul r3, r4 + add r3, r6, r3 + ldrb r2, [r2, r3] + cmp r1, r2 + bne _02233338 + ldr r1, [sp] + strb r1, [r0, #2] + mov r1, ip + strb r1, [r0, #1] +_02233338: + mov r1, #2 + ldrsb r2, [r0, r1] + ldr r1, [sp] + cmp r2, r1 + bne _0223334C + mov r1, #1 + ldrsb r1, [r0, r1] + mov r0, ip + cmp r1, r0 + beq _02233354 +_0223334C: + ldr r0, _02233368 ; =0x000005DC + bl FUN_020054C8 + b _0223335E +_02233354: + mov r0, #0xf0 + tst r0, r5 + beq _0223335E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223335E: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233364: .word 0x021C48B8 +_02233368: .word 0x000005DC + + thumb_func_start MOD12_0223336C +MOD12_0223336C: ; 0x0223336C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + mov r2, #0xb7 + add r4, r1, #0 + str r0, [sp] + lsl r2, r2, #2 + ldr r0, [r4, #4] + ldr r2, [r4, r2] + mov r3, #6 + ldr r0, [r0, #0x24] + ldr r2, [r2, #0x14] + mov r1, #4 + lsl r3, r3, #0xc + bl FUN_02017E14 + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xb6 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022333A8 +MOD12_022333A8: ; 0x022333A8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x2e + lsl r0, r0, #4 + ldrsb r1, [r1, r0] + mov r0, #0x30 + mov r4, #0 + ldr r2, _022333F0 ; =0x02245074 + mul r0, r1 + ldr r6, _022333F4 ; =0x0000FFFF + add r5, r2, r0 + add r7, r4, #0 +_022333C0: + ldrh r0, [r5, #4] + cmp r0, r6 + bne _022333D4 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0 + bl FUN_0201797C + b _022333E0 +_022333D4: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_022333E0: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _022333C0 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022333F0: .word 0x02245074 +_022333F4: .word 0x0000FFFF + + thumb_func_start MOD12_022333F8 +MOD12_022333F8: ; 0x022333F8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _02233440 ; =0x000080FB + mov r3, #0x2a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233444 ; =0x000080F6 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2b + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233444 ; =0x000080F6 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2c + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233440: .word 0x000080FB +_02233444: .word 0x000080F6 + + thumb_func_start MOD12_02233448 +MOD12_02233448: ; 0x02233448 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldr r2, _02233474 ; =0x02245168 + bl FUN_0200C154 + mov r1, #0x58 + mul r1, r5 + add r1, #0x28 + lsl r1, r1, #0x10 + mov r3, #0x11 + add r4, r0, #0 + asr r1, r1, #0x10 + mov r2, #0x60 + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02233474: .word 0x02245168 + + thumb_func_start MOD12_02233478 +MOD12_02233478: ; 0x02233478 + push {r4, lr} + ldr r1, _02233494 ; =0x000080FB + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233498 ; =0x000080F6 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233498 ; =0x000080F6 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233494: .word 0x000080FB +_02233498: .word 0x000080F6 + + thumb_func_start MOD12_0223349C +MOD12_0223349C: ; 0x0223349C + ldr r3, _022334A0 ; =0x0200C3DD + bx r3 + .align 2, 0 +_022334A0: .word 0x0200C3DD + + thumb_func_start MOD12_022334A4 +MOD12_022334A4: ; 0x022334A4 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _022334EC ; =0x000080FA + mov r3, #0x2d + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022334F0 ; =0x000080F5 + mov r2, #0x2e + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r2, #0 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022334F0 ; =0x000080F5 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x2f + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022334EC: .word 0x000080FA +_022334F0: .word 0x000080F5 + + thumb_func_start MOD12_022334F4 +MOD12_022334F4: ; 0x022334F4 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, [sp, #0x10] + add r6, r3, #0 + cmp r2, #0 + blt _02233508 + ldr r2, _0223352C ; =0x02245134 + bl FUN_0200C154 + b _0223350E +_02233508: + ldr r2, _02233530 ; =0x0224519C + bl FUN_0200C154 +_0223350E: + add r4, r0, #0 + lsl r1, r5, #0x10 + lsl r2, r6, #0x10 + mov r3, #0x11 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x10 + bl FUN_0200C750 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223352C: .word 0x02245134 +_02233530: .word 0x0224519C + + thumb_func_start MOD12_02233534 +MOD12_02233534: ; 0x02233534 + ldr r3, _02233538 ; =0x0200C3DD + bx r3 + .align 2, 0 +_02233538: .word 0x0200C3DD + + thumb_func_start MOD12_0223353C +MOD12_0223353C: ; 0x0223353C + push {r4, lr} + ldr r1, _02233558 ; =0x000080FA + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223355C ; =0x000080F5 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223355C ; =0x000080F5 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233558: .word 0x000080FA +_0223355C: .word 0x000080F5 + + thumb_func_start MOD12_02233560 +MOD12_02233560: ; 0x02233560 + ldr r0, _02233568 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_02233568: .word 0x04000050 + + thumb_func_start MOD12_0223356C +MOD12_0223356C: ; 0x0223356C + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0, #0x30] + add r5, r1, #0 + mov r1, #2 + add r4, r2, #0 + bl FUN_0201886C + mov r1, #0xc0 + mul r1, r5 + lsl r1, r1, #1 + mov r2, #0 + ldr r6, _022335AC ; =0x00000FFF + add r0, r0, r1 + add r3, r2, #0 + lsl r4, r4, #0xc +_0223358A: + lsl r5, r3, #1 + mov r1, #0 + add r5, r0, r5 +_02233590: + ldrh r7, [r5] + add r1, r1, #1 + and r7, r6 + orr r7, r4 + strh r7, [r5] + add r5, r5, #2 + cmp r1, #0xa + blt _02233590 + add r2, r2, #1 + add r3, #0x20 + cmp r2, #6 + blt _0223358A + pop {r3, r4, r5, r6, r7, pc} + nop +_022335AC: .word 0x00000FFF + + thumb_func_start MOD12_022335B0 +MOD12_022335B0: ; 0x022335B0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r4, #0 + ldr r6, _022335DC ; =0x022451D0 + ldr r7, _022335E0 ; =0x00000231 + b _022335CC +_022335BC: + add r2, r5, r4 + ldrb r2, [r2, r7] + add r0, r5, #0 + add r1, r4, #0 + ldrb r2, [r6, r2] + bl MOD12_0223356C + add r4, r4, #1 +_022335CC: + cmp r4, #4 + blt _022335BC + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_0201AC68 + pop {r3, r4, r5, r6, r7, pc} + nop +_022335DC: .word 0x022451D0 +_022335E0: .word 0x00000231 + + thumb_func_start MOD12_022335E4 +MOD12_022335E4: ; 0x022335E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [r5, #0x5c] + ldr r2, _02233614 ; =0x00009CA4 + str r0, [r4] + ldr r0, _02233618 ; =MOD12_02233648 + add r1, r4, #0 + strb r6, [r4, #0xa] + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_02233614: .word 0x00009CA4 +_02233618: .word MOD12_02233648 + + thumb_func_start MOD12_0223361C +MOD12_0223361C: ; 0x0223361C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223362A + bl ErrorHandling +_0223362A: + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD12_02233638 +MOD12_02233638: ; 0x02233638 + mov r1, #1 + strb r1, [r0, #0xb] + mov r1, #0xa + lsl r1, r1, #8 + strh r1, [r0, #8] + bx lr + + thumb_func_start MOD12_02233644 +MOD12_02233644: ; 0x02233644 + ldrb r0, [r0, #0xb] + bx lr + + thumb_func_start MOD12_02233648 +MOD12_02233648: ; 0x02233648 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223369E + mov r0, #8 + ldrsh r0, [r4, r0] + ldr r2, _022336A4 ; =0x022451D0 + mov r1, #0 + asr r0, r0, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, _022336A8 ; =0x00007FFF + str r0, [sp, #4] + ldrb r3, [r4, #0xa] + ldr r0, [r4] + ldrb r2, [r2, r3] + mov r3, #4 + lsl r2, r2, #4 + add r2, r2, #1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_020039E8 + mov r1, #8 + ldrsh r2, [r4, r1] + cmp r2, #0 + bne _0223368C + mov r0, #0 + add sp, #8 + strb r0, [r4, #0xb] + pop {r4, pc} +_0223368C: + mov r0, #0xa + lsl r0, r0, #6 + sub r0, r2, r0 + strh r0, [r4, #8] + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _0223369E + mov r0, #0 + strh r0, [r4, #8] +_0223369E: + add sp, #8 + pop {r4, pc} + nop +_022336A4: .word 0x022451D0 +_022336A8: .word 0x00007FFF + + thumb_func_start MOD12_022336AC +MOD12_022336AC: ; 0x022336AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r0, [sp, #0x18] + add r0, #8 + str r0, [sp, #0x18] + add r6, r1, #0 + lsl r0, r6, #2 + ldr r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r1, r0] + bl FUN_02007534 + lsl r0, r6, #4 + add r0, r5, r0 + ldr r0, [r0, #0x58] + cmp r0, #0 + bne _022336D4 + bl ErrorHandling +_022336D4: + add r2, r5, #0 + add r2, #0x58 + lsl r1, r6, #4 + add r0, r2, r1 + str r0, [sp, #0x14] + ldr r0, [r2, r1] + mov r2, #0x32 + mov r1, #0 + lsl r2, r2, #6 + bl MI_CpuFill8 + ldr r1, [sp, #0x14] + lsl r0, r6, #5 + str r1, [sp] + mov r1, #0x15 + str r1, [sp, #4] + mov r1, #0xd8 + sub r1, r1, r0 + str r1, [sp, #8] + mov r1, #0x70 + sub r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, _02233754 ; =0xFFFFFE00 + add r7, r5, #0 + str r0, [sp, #0x10] + ldr r2, [r5] + lsl r4, r6, #2 + ldr r0, [r5, #4] + ldr r2, [r2, r4] + add r7, #8 + add r1, r6, #0 + mov r3, #0 + bl FUN_02082E64 + str r0, [r7, r4] + ldr r0, [r7, r4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r7, r4] + mov r1, #0x25 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0, r4] + mov r2, #0 + bl FUN_020671BC + bl MOD08_0222A6C8 + cmp r0, #1 + bne _02233750 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + mov r2, #1 + ldr r0, [r1, r0] + mov r1, #0x23 + bl FUN_02007558 +_02233750: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233754: .word 0xFFFFFE00 + + thumb_func_start MOD12_02233758 +MOD12_02233758: ; 0x02233758 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0x14] + ldr r7, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x1c] + add r6, r0, #0 + add r0, r7, #0 + str r0, [sp, #0x18] + add r0, #0x58 + ldr r4, [sp, #0x1c] + str r0, [sp, #0x18] + add r5, r7, #0 +_02233772: + ldr r0, [r7, #0x58] + cmp r0, #0 + beq _0223377C + bl ErrorHandling +_0223377C: + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r7, #0x58] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + str r0, [sp] + mov r0, #0x15 + str r0, [sp, #4] + mov r0, #0xd8 + sub r0, r0, r6 + str r0, [sp, #8] + mov r0, #0x70 + sub r0, r0, r6 + str r0, [sp, #0xc] + ldr r0, _02233844 ; =0xFFFFFE00 + ldr r1, [sp, #0x1c] + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r2, [r2] + ldr r0, [r0, #4] + ldr r2, [r2, r4] + mov r3, #0 + bl FUN_02082E64 + str r0, [r5, #8] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5, #8] + mov r1, #0x25 + mov r2, #1 + bl FUN_02007558 + ldr r0, [sp, #0x14] + mov r1, #5 + ldr r0, [r0] + mov r2, #0 + ldr r0, [r0, r4] + bl FUN_020671BC + bl MOD08_0222A6C8 + cmp r0, #1 + bne _022337E6 + ldr r0, [r5, #8] + mov r1, #0x23 + mov r2, #1 + bl FUN_02007558 +_022337E6: + ldr r0, [sp, #0x18] + add r7, #0x10 + add r0, #0x10 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + add r6, #0x20 + add r0, r0, #1 + add r4, r4, #4 + add r5, r5, #4 + str r0, [sp, #0x1c] + cmp r0, #4 + blt _02233772 + ldr r0, [sp, #0x14] + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _0223380C + bl ErrorHandling +_0223380C: + mov r1, #0x32 + mov r0, #0x15 + lsl r1, r1, #6 + bl FUN_02016998 + ldr r1, [sp, #0x14] + mov r2, #0x32 + add r1, #0x98 + str r0, [r1] + ldr r0, [sp, #0x14] + lsl r2, r2, #6 + ldr r1, [r0, #0x60] + add r0, #0xa0 + str r1, [r0] + ldr r0, [sp, #0x14] + ldr r1, [r0, #0x5c] + add r0, #0x9c + str r1, [r0] + ldr r1, [sp, #0x14] + mov r0, #0 + add r1, #0x98 + str r1, [sp, #0x14] + ldr r1, [r1] + bl MIi_CpuClear32 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233844: .word 0xFFFFFE00 + + thumb_func_start MOD12_02233848 +MOD12_02233848: ; 0x02233848 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + str r0, [sp] + add r4, r0, #0 + add r5, r0, #0 + add r7, r6, #0 +_02233854: + ldr r0, [r4, #8] + bl FUN_02007534 + ldr r0, [r5, #0x58] + bl FUN_02016A18 + str r7, [r5, #0x58] + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #4 + blt _02233854 + ldr r0, [sp] + add r0, #0x98 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [sp] + mov r1, #0 + add r0, #0x98 + str r0, [sp] + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02233884 +MOD12_02233884: ; 0x02233884 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + ldr r4, [sp, #0x70] + str r0, [sp, #0x18] + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #0 + beq _0223389A + cmp r4, #1 + beq _022338A8 + b _022338B6 +_0223389A: + mov r0, #0x20 + str r0, [sp, #0x20] + mov r0, #0x1e + mov r3, #0x1f + mov r6, #1 + str r0, [sp, #0x1c] + b _022338C2 +_022338A8: + mov r0, #0x26 + str r0, [sp, #0x20] + mov r0, #0x24 + mov r3, #0x25 + mov r6, #3 + str r0, [sp, #0x1c] + b _022338C2 +_022338B6: + mov r0, #0x23 + str r0, [sp, #0x20] + mov r0, #0x21 + mov r3, #0x22 + mov r6, #2 + str r0, [sp, #0x1c] +_022338C2: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223396C ; =0x000080E9 + add r1, r7, #0 + add r0, r4, r0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + bl FUN_0200C00C + mov r0, #0x2e + str r0, [sp] + str r6, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02233970 ; =0x000080EA + mov r1, #2 + add r0, r4, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r2, r5, #0 + add r3, r7, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + ldr r0, _0223396C ; =0x000080E9 + ldr r3, [sp, #0x20] + add r0, r4, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x2e + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223396C ; =0x000080E9 + ldr r3, [sp, #0x1c] + add r0, r4, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x2e + bl FUN_0200C13C + ldr r6, _02233974 ; =0x022453D8 + add r3, sp, #0x24 + mov r2, #6 +_0223392C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223392C + ldr r0, [r6] + add r2, sp, #0x24 + str r0, [r3] + ldr r0, _0223396C ; =0x000080E9 + add r1, r4, r0 + add r0, r0, #1 + add r0, r4, r0 + str r0, [sp, #0x3c] + str r1, [sp, #0x38] + str r1, [sp, #0x40] + str r1, [sp, #0x44] + lsl r1, r4, #5 + add r1, #0x60 + add r0, sp, #0x24 + strh r1, [r0] + mov r1, #0x28 + strh r1, [r0, #2] + add r0, r5, #0 + add r1, r7, #0 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223396C: .word 0x000080E9 +_02233970: .word 0x000080EA +_02233974: .word 0x022453D8 + + thumb_func_start MOD12_02233978 +MOD12_02233978: ; 0x02233978 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + bl FUN_0200C3DC + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C358 + ldr r1, _022339B4 ; =0x000080EA + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C368 + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C378 + ldr r1, _022339B0 ; =0x000080E9 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + nop +_022339B0: .word 0x000080E9 +_022339B4: .word 0x000080EA + + thumb_func_start MOD12_022339B8 +MOD12_022339B8: ; 0x022339B8 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233A04 ; =0x000080EC + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0x27 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233A04 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x28 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233A04 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x29 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233A04: .word 0x000080EC + + thumb_func_start MOD12_02233A08 +MOD12_02233A08: ; 0x02233A08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + ldr r4, _02233A5C ; =0x0224520C + add r6, r2, #0 + add r3, r0, #0 + add r7, r1, #0 + ldmia r4!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r4] + ldr r5, _02233A60 ; =0x0224533C + str r0, [r2] + add r4, sp, #0xc + mov r2, #6 +_02233A24: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _02233A24 + ldr r0, [r5] + lsl r1, r6, #5 + str r0, [r4] + add r1, #0x60 + add r0, sp, #0 + strh r1, [r0, #0xc] + mov r1, #0x20 + strh r1, [r0, #0xe] + lsl r1, r6, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + add r1, r7, #0 + str r0, [sp, #0x18] + add r0, r3, #0 + add r2, sp, #0xc + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + add r0, r4, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02233A5C: .word 0x0224520C +_02233A60: .word 0x0224533C + + thumb_func_start MOD12_02233A64 +MOD12_02233A64: ; 0x02233A64 + ldr r3, _02233A68 ; =0x0200C3DD + bx r3 + .align 2, 0 +_02233A68: .word 0x0200C3DD + + thumb_func_start MOD12_02233A6C +MOD12_02233A6C: ; 0x02233A6C + push {r4, lr} + ldr r1, _02233A88 ; =0x000080EC + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233A88 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233A88 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233A88: .word 0x000080EC + + thumb_func_start MOD12_02233A8C +MOD12_02233A8C: ; 0x02233A8C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x1c] + bl MOD12_022339B8 + mov r4, #0 + add r5, r7, #0 + add r6, #0xd0 +_02233AA2: + ldr r0, [r7, #0x18] + ldr r1, [r7, #0x1c] + add r2, r4, #0 + bl MOD12_02233A08 + add r1, r5, #0 + add r1, #0xb4 + str r0, [r1] + str r4, [sp] + ldr r0, [r7, #0x50] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x1c] + add r3, r6, #0 + bl MOD12_02233884 + add r1, r5, #0 + add r1, #0xa8 + add r4, r4, #1 + str r0, [r1] + add r5, r5, #4 + add r6, #8 + cmp r4, #3 + blt _02233AA2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02233AD4 +MOD12_02233AD4: ; 0x02233AD4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02233ADC: + add r1, r5, #0 + add r1, #0xa8 + ldr r0, [r6, #0x1c] + ldr r1, [r1] + add r2, r4, #0 + bl MOD12_02233978 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl MOD12_02233A64 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _02233ADC + ldr r0, [r6, #0x1c] + bl MOD12_02233A6C + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02233B04 +MOD12_02233B04: ; 0x02233B04 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233B50 ; =0x000080F5 + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x2e + mov r3, #0xe + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233B54 ; =0x000080F3 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xd + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233B54 ; =0x000080F3 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xc + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233B50: .word 0x000080F5 +_02233B54: .word 0x000080F3 + + thumb_func_start MOD12_02233B58 +MOD12_02233B58: ; 0x02233B58 + push {r4, lr} + ldr r1, _02233B74 ; =0x000080F5 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02233B78 ; =0x000080F3 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02233B78 ; =0x000080F3 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02233B74: .word 0x000080F5 +_02233B78: .word 0x000080F3 + + thumb_func_start MOD12_02233B7C +MOD12_02233B7C: ; 0x02233B7C + push {r4, r5, lr} + sub sp, #0x34 + ldr r4, _02233BB8 ; =0x022452D4 + add r5, r0, #0 + add r3, sp, #0 + mov r2, #6 +_02233B88: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02233B88 + ldr r0, [r4] + add r2, sp, #0 + str r0, [r3] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + bl FUN_0200C154 + add r4, r0, #0 + mov r1, #0 + bl FUN_0200C644 + ldr r0, [r4] + bl FUN_0200C59C + mov r0, #0x5f + lsl r0, r0, #2 + str r4, [r5, r0] + add sp, #0x34 + pop {r4, r5, pc} + nop +_02233BB8: .word 0x022452D4 + + thumb_func_start MOD12_02233BBC +MOD12_02233BBC: ; 0x02233BBC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02233BCE + bl ErrorHandling +_02233BCE: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C3DC + mov r0, #0x5f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02233BE4 +MOD12_02233BE4: ; 0x02233BE4 + push {r4, r5, r6, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r6, r1, #0 + add r5, r2, #0 + cmp r0, #0 + bne _02233BFA + bl ErrorHandling +_02233BFA: + ldr r1, _02233C60 ; =0x02245200 + lsl r2, r6, #2 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r3, _02233C64 ; =0x02245202 + ldrsh r1, [r1, r2] + ldrsh r2, [r3, r2] + ldr r0, [r4, r0] + bl FUN_0200C714 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + bl FUN_0200C5C0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C644 + cmp r5, #3 + bhi _02233C5C + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233C36: ; jump table + .short _02233C3E - _02233C36 - 2 ; case 0 + .short _02233C46 - _02233C36 - 2 ; case 1 + .short _02233C4E - _02233C36 - 2 ; case 2 + .short _02233C56 - _02233C36 - 2 ; case 3 +_02233C3E: + ldr r0, _02233C68 ; =0x000006E1 + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C46: + ldr r0, _02233C6C ; =0x000006DF + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C4E: + ldr r0, _02233C70 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_02233C56: + ldr r0, _02233C70 ; =0x000005DD + bl FUN_020054C8 +_02233C5C: + pop {r4, r5, r6, pc} + nop +_02233C60: .word 0x02245200 +_02233C64: .word 0x02245202 +_02233C68: .word 0x000006E1 +_02233C6C: .word 0x000006DF +_02233C70: .word 0x000005DD + + thumb_func_start MOD12_02233C74 +MOD12_02233C74: ; 0x02233C74 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02233C86 + bl ErrorHandling +_02233C86: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200C644 + pop {r4, pc} + + thumb_func_start MOD12_02233C94 +MOD12_02233C94: ; 0x02233C94 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + mov r0, #0x15 + mov r1, #0x28 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r7] + str r7, [r4, #4] + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [sp] + str r5, [r4] + strb r0, [r4, #8] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0xb4 + ldr r0, [r0] + add r1, #0xc + add r2, #0xe + bl FUN_0200C7A0 + cmp r6, #6 + bhi _02233CEE + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02233CE0: ; jump table + .short _02233CEE - _02233CE0 - 2 ; case 0 + .short _02233D04 - _02233CE0 - 2 ; case 1 + .short _02233D10 - _02233CE0 - 2 ; case 2 + .short _02233D20 - _02233CE0 - 2 ; case 3 + .short _02233D30 - _02233CE0 - 2 ; case 4 + .short _02233D40 - _02233CE0 - 2 ; case 5 + .short _02233D50 - _02233CE0 - 2 ; case 6 +_02233CEE: + mov r0, #1 + strb r0, [r4, #0x18] + ldr r0, _02233D64 ; =0xFFFFFE00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + strh r0, [r4, #0x26] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D04: + ldr r0, _02233D70 ; =MOD12_02233D84 + ldr r2, _02233D68 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D10: + ldr r0, _02233D74 ; =0xFFFFFD00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D20: + ldr r0, _02233D78 ; =0xFFFFFC00 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D30: + ldr r0, _02233D7C ; =0xFFFFFB80 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D40: + ldr r0, _02233D80 ; =0xFFFFFD80 + ldr r2, _02233D68 ; =0x00009C40 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02233D50: + mov r0, #0xff + mvn r0, r0 + strh r0, [r4, #0x24] + ldr r0, _02233D6C ; =MOD12_02233E48 + ldr r2, _02233D68 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02233D64: .word 0xFFFFFE00 +_02233D68: .word 0x00009C40 +_02233D6C: .word MOD12_02233E48 +_02233D70: .word MOD12_02233D84 +_02233D74: .word 0xFFFFFD00 +_02233D78: .word 0xFFFFFC00 +_02233D7C: .word 0xFFFFFB80 +_02233D80: .word 0xFFFFFD80 + + thumb_func_start MOD12_02233D84 +MOD12_02233D84: ; 0x02233D84 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _02233D9A + cmp r0, #1 + beq _02233DB0 + cmp r0, #2 + beq _02233DF0 + b _02233E0A +_02233D9A: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x14] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233DB0: + ldrb r0, [r2, #0x18] + mov r1, #1 + tst r0, r1 + beq _02233DC4 + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r3, r0, #8 + lsl r0, r1, #9 + add r0, r3, r0 + b _02233DCE +_02233DC4: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r3, r0, #8 + lsl r0, r1, #9 + sub r0, r3, r0 +_02233DCE: + str r0, [r2, #0x10] + ldrb r0, [r2, #0x18] + add r0, r0, #1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0x18] + cmp r0, #4 + bls _02233E1E + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] + b _02233E1E +_02233DF0: + mov r0, #9 + ldrsb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, #9] + ldrsb r0, [r2, r0] + cmp r0, #0xf + ble _02233E1E + mov r0, #0 + strb r0, [r2, #9] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] + b _02233E1E +_02233E0A: + ldr r0, [r2, #4] + mov r1, #1 + strb r1, [r0] + add r0, r2, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} +_02233E1E: + ldrb r0, [r2, #8] + ldr r1, [r2] + ldr r3, [r2, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + ldr r3, [r2, #0x14] + add r0, #0xb4 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} + + thumb_func_start MOD12_02233E48 +MOD12_02233E48: ; 0x02233E48 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _02233E5A + cmp r0, #1 + beq _02233E70 + b _02233ED8 +_02233E5A: + mov r0, #0xc + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x10] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r2, #0x14] + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233E70: + mov r0, #0x24 + ldrsh r1, [r2, r0] + ldr r3, [r2, #0x14] + add r1, r3, r1 + str r1, [r2, #0x14] + ldrsh r0, [r2, r0] + add r0, #0x80 + strh r0, [r2, #0x24] + mov r0, #0xe + ldrsh r0, [r2, r0] + lsl r1, r0, #8 + ldr r0, [r2, #0x14] + cmp r0, r1 + blt _02233EAE + str r1, [r2, #0x14] + ldrb r0, [r2, #0x18] + cmp r0, #0 + beq _02233EA8 + mov r0, #0x26 + ldrsh r0, [r2, r0] + strh r0, [r2, #0x24] + ldrb r0, [r2, #0x18] + sub r0, r0, #1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + sub r0, r0, #1 + strb r0, [r2, #0xa] + b _02233EAE +_02233EA8: + ldrb r0, [r2, #0xa] + add r0, r0, #1 + strb r0, [r2, #0xa] +_02233EAE: + ldrb r0, [r2, #8] + ldr r1, [r2] + ldr r3, [r2, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + ldr r3, [r2, #0x14] + add r0, #0xb4 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r4, pc} +_02233ED8: + ldr r0, [r2, #4] + mov r1, #1 + strb r1, [r0] + add r0, r2, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD12_02233EEC +MOD12_02233EEC: ; 0x02233EEC + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r0, #0xc0 + ldr r0, [r0] + add r4, r1, #0 + cmp r0, #0 + beq _02233F00 + bl ErrorHandling +_02233F00: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x14 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x13 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233F70 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r3, #0x12 + bl FUN_0200C13C + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + ldr r2, _02233F74 ; =0x02245370 + bl FUN_0200C154 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_0200C59C + lsl r1, r4, #5 + add r5, #0xc0 + add r1, #0x60 + lsl r1, r1, #0x10 + ldr r0, [r5] + asr r1, r1, #0x10 + mov r2, #0x38 + bl FUN_0200C714 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02233F70: .word 0x000080ED +_02233F74: .word 0x02245370 + + thumb_func_start MOD12_02233F78 +MOD12_02233F78: ; 0x02233F78 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C358 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C378 + ldr r0, [r4, #0x1c] + ldr r1, _02233FA8 ; =0x000080ED + bl FUN_0200C388 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl FUN_0200C3DC + mov r0, #0 + add r4, #0xc0 + str r0, [r4] + pop {r4, pc} + nop +_02233FA8: .word 0x000080ED + + thumb_func_start MOD12_02233FAC +MOD12_02233FAC: ; 0x02233FAC + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _02233FF4 ; =0x000080EE + mov r3, #0x11 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02233FF4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x10 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02233FF4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0xf + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_02233FF4: .word 0x000080EE + + thumb_func_start MOD12_02233FF8 +MOD12_02233FF8: ; 0x02233FF8 + push {r4, lr} + ldr r1, _02234014 ; =0x000080EE + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02234014 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02234014 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02234014: .word 0x000080EE + + thumb_func_start MOD12_02234018 +MOD12_02234018: ; 0x02234018 + push {r4, r5, r6, lr} + mov r2, #0x18 + mov r4, #0 + mul r2, r1 + add r5, r0, r2 + add r6, r4, #0 +_02234024: + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _02234038 + bl FUN_0200C3DC + add r0, r5, #0 + add r0, #0xc4 + str r6, [r0] +_02234038: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _02234024 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02234044 +MOD12_02234044: ; 0x02234044 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0223404A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02234018 + add r4, r4, #1 + cmp r4, #4 + blt _0223404A + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223405C +MOD12_0223405C: ; 0x0223405C + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _02234084 ; =0x022453A4 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_02234084: .word 0x022453A4 + + thumb_func_start MOD12_02234088 +MOD12_02234088: ; 0x02234088 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + add r7, r1, #0 + add r0, r3, #0 + mov r1, #0xa + str r2, [sp, #4] + bl _s32_div_f + str r0, [sp, #8] + cmp r0, #0x18 + ble _022340A4 + mov r0, #0x18 + str r0, [sp, #8] +_022340A4: + mov r0, #0x18 + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp] + ldr r4, [sp, #8] + mov r6, #0 + add r5, r0, r1 + b _022340CE +_022340B4: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _022340CC + bl FUN_0200C3DC + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xc4 + str r6, [r0] +_022340CC: + add r4, r4, #1 +_022340CE: + cmp r4, #6 + blt _022340B4 + ldr r0, [sp, #8] + add r1, r7, #0 + sub r4, r0, #1 + mov r0, #0x18 + mul r1, r0 + ldr r0, [sp] + add r7, r0, r1 + ldr r0, [sp, #4] + ldr r1, _02234190 ; =0x02245228 + lsl r0, r0, #2 + str r0, [sp, #0xc] + add r0, r1, r0 + str r0, [sp, #0x10] + b _02234170 +_022340EE: + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + add r5, r1, #0 + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + str r0, [sp, #0x14] + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + bne _0223414C + ldr r3, _02234190 ; =0x02245228 + ldr r2, [sp, #0xc] + ldr r0, [sp] + ldrsh r3, [r3, r2] + lsl r2, r5, #3 + ldr r1, [sp] + add r2, r3, r2 + ldr r6, [sp, #0x10] + mov r3, #2 + ldrsh r3, [r6, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_0223405C + lsl r2, r5, #2 + add r1, r7, r2 + add r1, #0xc4 + str r0, [r1] + add r0, r7, r2 + add r0, #0xc4 + ldr r0, [r0] + ldr r1, [sp, #0x14] + bl FUN_0200C5C0 + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD12_0223419C + b _0223416E +_0223414C: + bl FUN_0200C5CC + ldr r1, [sp, #0x14] + cmp r0, r1 + bhs _0223416E + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200C5C0 + lsl r0, r5, #2 + add r0, r7, r0 + add r0, #0xc4 + ldr r0, [r0] + bl MOD12_0223419C +_0223416E: + sub r4, r4, #1 +_02234170: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bgt _022340EE + ldr r0, _02234194 ; =0x000006E1 + bl FUN_020054C8 + ldr r2, [sp, #8] + ldr r0, _02234194 ; =0x000006E1 + sub r2, r2, #1 + ldr r1, _02234198 ; =0x0000FFFF + lsl r2, r2, #6 + bl FUN_02004D34 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234190: .word 0x02245228 +_02234194: .word 0x000006E1 +_02234198: .word 0x0000FFFF + + thumb_func_start MOD12_0223419C +MOD12_0223419C: ; 0x0223419C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x15 + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + add r0, r5, #0 + mov r1, #0 + str r5, [r4] + bl FUN_0200C644 + ldr r0, _022341C8 ; =MOD12_022341D0 + ldr r2, _022341CC ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_022341C8: .word MOD12_022341D0 +_022341CC: .word 0x00009C40 + + thumb_func_start MOD12_022341D0 +MOD12_022341D0: ; 0x022341D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _022341E6 + cmp r0, #1 + beq _02234202 + cmp r0, #2 + beq _0223423C + b _0223428A +_022341E6: + ldr r0, [r4] + mov r1, #2 + bl FUN_0200C840 + ldr r0, _022342A0 ; =0x3DCCCCCD + mov r1, #1 + str r0, [r4, #4] + str r0, [r4, #8] + ldr r0, [r4] + bl FUN_0200C644 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02234202: + ldr r0, [r4, #4] + ldr r1, _022342A4 ; =0x3E99999A + bl _fadd + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _022342A4 ; =0x3E99999A + bl _fadd + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C8BC + mov r1, #0xff + ldr r0, [r4, #4] + lsl r1, r1, #0x16 + bl _fgeq + blo _0223429E + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223423C: + ldr r0, [r4, #4] + ldr r1, _022342A4 ; =0x3E99999A + bl _fsub + str r0, [r4, #4] + ldr r0, [r4, #8] + ldr r1, _022342A4 ; =0x3E99999A + bl _fsub + str r0, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C8BC + mov r1, #0xfe + ldr r0, [r4, #4] + lsl r1, r1, #0x16 + bl _fleq + bhi _0223429E + mov r1, #0xfe + lsl r1, r1, #0x16 + ldr r0, [r4] + add r2, r1, #0 + bl FUN_0200C884 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C898 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223428A: + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C840 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223429E: + pop {r3, r4, r5, pc} + .align 2, 0 +_022342A0: .word 0x3DCCCCCD +_022342A4: .word 0x3E99999A + + thumb_func_start MOD12_022342A8 +MOD12_022342A8: ; 0x022342A8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223432C ; =0x000080F0 + mov r3, #0x1a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223432C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x19 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223432C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x18 + bl FUN_0200C13C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02234330 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x1b + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223432C: .word 0x000080F0 +_02234330: .word 0x000080EF + + thumb_func_start MOD12_02234334 +MOD12_02234334: ; 0x02234334 + push {r4, lr} + ldr r1, _02234368 ; =0x000080F0 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _02234368 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _02234368 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C388 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223436C ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_02234368: .word 0x000080F0 +_0223436C: .word 0x000080EF + + thumb_func_start MOD12_02234370 +MOD12_02234370: ; 0x02234370 + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x14 + mov r4, #0 + mul r2, r1 + mov r7, #0x49 + add r5, r0, r2 + add r6, r4, #0 + lsl r7, r7, #2 +_02234380: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02234390 + bl FUN_0200C3DC + mov r0, #0x49 + lsl r0, r0, #2 + str r6, [r5, r0] +_02234390: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02234380 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223439C +MOD12_0223439C: ; 0x0223439C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_022343A2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02234370 + add r4, r4, #1 + cmp r4, #3 + blt _022343A2 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022343B4 +MOD12_022343B4: ; 0x022343B4 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _022343DC ; =0x02245308 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_022343DC: .word 0x02245308 + + thumb_func_start MOD12_022343E0 +MOD12_022343E0: ; 0x022343E0 + push {r4, r5, r6, lr} + add r5, r2, #0 + ldr r2, _02234408 ; =0x02245238 + add r4, r3, #0 + bl FUN_0200C154 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0200C59C + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_02234408: .word 0x02245238 + + thumb_func_start MOD12_0223440C +MOD12_0223440C: ; 0x0223440C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + cmp r0, #5 + bls _0223441E + b _022345AC +_0223441E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223442A: ; jump table + .short _02234436 - _0223442A - 2 ; case 0 + .short _0223447C - _0223442A - 2 ; case 1 + .short _022344BC - _0223442A - 2 ; case 2 + .short _022344EC - _0223442A - 2 ; case 3 + .short _0223452A - _0223442A - 2 ; case 4 + .short _0223457C - _0223442A - 2 ; case 5 +_02234436: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C840 + mov r0, #2 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x20] + mov r0, #0x12 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x10] + sub r0, r1, r0 + mov r1, #0xa + bl _s32_div_f + strh r0, [r4, #0x28] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + mov r1, #0xa + bl _s32_div_f + strh r0, [r4, #0x2a] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] +_0223447C: + mov r1, #0x28 + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x10] + add r0, r2, r0 + str r0, [r4, #0x10] + mov r0, #0x2a + ldrsh r0, [r4, r0] + ldr r2, [r4, #0x14] + add r0, r2, r0 + str r0, [r4, #0x14] + ldrsh r2, [r4, r1] + cmp r2, #0 + ble _0223449E + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bge _022344AC +_0223449E: + cmp r2, #0 + bge _022344AA + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + ble _022344AC +_022344AA: + b _022345D0 +_022344AC: + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022344BC: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #3 + bls _022345D0 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022344EC: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x20] + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + ldr r0, [r4, #0x10] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + strh r0, [r4, #0x28] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + strh r0, [r4, #0x2a] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] +_0223452A: + mov r1, #0x28 + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x10] + add r0, r2, r0 + str r0, [r4, #0x10] + mov r0, #0x2a + ldrsh r0, [r4, r0] + ldr r2, [r4, #0x14] + add r0, r2, r0 + str r0, [r4, #0x14] + ldrsh r2, [r4, r1] + cmp r2, #0 + ble _0223454C + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bge _02234558 +_0223454C: + cmp r2, #0 + bge _022345D0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + bgt _022345D0 +_02234558: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_0223457C: + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2f + ldrb r0, [r0] + cmp r0, #2 + bls _022345D0 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x2e + strb r1, [r0] + b _022345D0 +_022345AC: + ldr r0, [r4, #4] + bl FUN_0200C3DC + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_0200C644 + mov r0, #0x6e + lsl r0, r0, #4 + bl FUN_020054C8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_022345D0: + mov r1, #2 + ldr r0, [r4, #4] + lsl r1, r1, #0xc + bl FUN_0200C8BC + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022345FC +MOD12_022345FC: ; 0x022345FC + push {r4, r5, r6, lr} + mov r2, #0x14 + mul r2, r1 + mov r6, #0x49 + mov r4, #0 + add r5, r0, r2 + lsl r6, r6, #2 +_0223460A: + ldr r0, [r5, r6] + cmp r0, #0 + beq _0223461C + bl FUN_0200C658 + cmp r0, #0 + bne _0223461C + mov r0, #0 + pop {r4, r5, r6, pc} +_0223461C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _0223460A + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02234628 +MOD12_02234628: ; 0x02234628 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r2, #0 + str r0, [sp, #0x1c] + str r1, [sp] + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + str r0, [sp, #4] + cmp r0, #5 + ble _02234644 + bl ErrorHandling +_02234644: + ldr r0, [sp] + mov r1, #0x14 + lsl r7, r0, #2 + ldr r0, _02234770 ; =0x022451F4 + mov r5, #0 + add r0, r0, r7 + str r0, [sp, #0xc] + ldr r0, [sp] + mul r1, r0 + ldr r0, [sp, #0x1c] + add r0, r0, r1 + str r0, [sp, #8] + ldr r0, _02234774 ; =0x02245200 + add r0, r0, r7 + str r0, [sp, #0x10] + ldr r0, [sp] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + b _02234738 +_02234672: + ldr r0, [sp, #8] + lsl r2, r5, #2 + add r1, r0, r2 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + bne _02234736 + ldr r3, _02234770 ; =0x022451F4 + ldr r0, [sp, #0x1c] + ldrsh r3, [r3, r7] + add r2, r5, r2 + ldr r4, [sp, #0xc] + ldr r1, [sp, #0x1c] + add r2, r3, r2 + mov r3, #2 + ldrsh r3, [r4, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_022343B4 + ldr r1, [sp, #8] + lsl r2, r5, #2 + add r2, r1, r2 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r1, #0 + ldr r0, [r2, r0] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0x15 + mov r1, #0x34 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x34 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + lsl r1, r5, #2 + str r0, [r4] + ldr r0, [sp, #8] + ldr r2, _02234774 ; =0x02245200 + add r1, r0, r1 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r6, [sp, #0x10] + str r0, [r4, #8] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x1c] + mov r3, #2 + ldrsh r2, [r2, r7] + ldrsh r3, [r6, r3] + ldr r0, [r0, #0x18] + ldr r1, [r1, #0x1c] + bl MOD12_022343E0 + str r0, [r4, #4] + ldr r0, _02234774 ; =0x02245200 + ldr r1, [sp, #0x10] + ldrsh r0, [r0, r7] + ldr r2, _02234778 ; =0x00009C40 + lsl r0, r0, #8 + str r0, [r4, #0x10] + mov r0, #2 + ldrsh r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, _02234770 ; =0x022451F4 + ldrsh r1, [r0, r7] + lsl r0, r5, #2 + add r0, r5, r0 + add r1, r1, r0 + add r0, r4, #0 + add r0, #0x2c + strb r1, [r0] + ldr r1, [sp, #0xc] + mov r0, #2 + ldrsh r1, [r1, r0] + add r0, r4, #0 + add r0, #0x2d + strb r1, [r0] + add r1, r4, #0 + ldr r0, [sp, #0x14] + add r1, #0x30 + strb r0, [r1] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x31 + strb r0, [r1] + ldr r0, _0223477C ; =MOD12_0223440C + add r1, r4, #0 + bl FUN_0200CA44 +_02234736: + add r5, r5, #1 +_02234738: + ldr r0, [sp, #4] + cmp r5, r0 + blt _02234672 + ldr r0, [sp] + mov r1, #0x14 + mul r1, r0 + ldr r0, [sp, #0x1c] + mov r7, #0x49 + lsl r7, r7, #2 + add r4, r0, r1 + add r6, r7, #0 + b _02234768 +_02234750: + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, r6] + cmp r0, #0 + beq _02234766 + bl FUN_0200C3DC + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #0 + str r0, [r1, r7] +_02234766: + add r5, r5, #1 +_02234768: + cmp r5, #5 + blt _02234750 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234770: .word 0x022451F4 +_02234774: .word 0x02245200 +_02234778: .word 0x00009C40 +_0223477C: .word MOD12_0223440C + + thumb_func_start MOD12_02234780 +MOD12_02234780: ; 0x02234780 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r0, [sp] + cmp r2, #1 + bne _02234790 + mov r6, #1 + b _02234792 +_02234790: + mov r6, #0 +_02234792: + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + str r0, [sp, #8] + str r0, [sp, #4] +_0223479C: + ldr r5, [sp] + mov r4, #0 +_022347A0: + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + beq _022347BC + add r1, r7, #0 + bl FUN_0200C90C + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_0200C644 +_022347BC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _022347A0 + mov r1, #0x5b + ldr r0, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #0 + beq _022347E4 + add r1, r7, #0 + bl FUN_0200C90C + mov r1, #0x5b + ldr r0, [sp, #8] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_0200C644 +_022347E4: + mov r1, #0x63 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r7, #0 + bl FUN_02011AF0 + mov r1, #0x77 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r7, #0 + bl FUN_02011AF0 + mov r1, #0x63 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_020119D0 + mov r1, #0x77 + ldr r0, [sp, #4] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + bl FUN_020119D0 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, #0x14 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0223479C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223483C +MOD12_0223483C: ; 0x0223483C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x15 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + str r5, [r4] + mov r2, #0xfa + strb r6, [r4, #0xd] + ldr r0, _02234870 ; =MOD12_02234874 + add r1, r4, #0 + lsl r2, r2, #2 + str r7, [r4, #4] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02234870: .word MOD12_02234874 + + thumb_func_start MOD12_02234874 +MOD12_02234874: ; 0x02234874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #3 + bls _02234882 + b _022349B8 +_02234882: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223488E: ; jump table + .short _02234896 - _0223488E - 2 ; case 0 + .short _022348F2 - _0223488E - 2 ; case 1 + .short _02234926 - _0223488E - 2 ; case 2 + .short _0223497A - _0223488E - 2 ; case 3 +_02234896: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _022348BE + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #8] + mov r1, #0 + strh r1, [r4, #0xa] + ldr r0, _022349D0 ; =0x04000050 + str r1, [sp] + mov r2, #0xe + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 + b _022348E0 +_022348BE: + mov r3, #0 + mov r0, #1 + strh r3, [r4, #8] + lsl r0, r0, #0xc + strh r0, [r4, #0xa] + mov r0, #0x10 + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r1, #4 + mov r2, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + bl MOD12_0222DF30 +_022348E0: + ldr r0, _022349D4 ; =MOD12_022349D8 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA98 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022348F2: + ldrb r1, [r4, #0xd] + cmp r1, #0 + bne _02234912 + mov r0, #8 + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _02234912 + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02234912: + cmp r1, #1 + bne _022349CE + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _022349CE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02234926: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _02234946 + mov r0, #1 + lsl r0, r0, #0xc + strh r0, [r4, #8] + mov r0, #0 + strh r0, [r4, #0xa] + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r1, #4 + mov r2, #0xe + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + b _02234968 +_02234946: + mov r1, #0 + mov r0, #1 + strh r1, [r4, #8] + lsl r0, r0, #0xc + strh r0, [r4, #0xa] + mov r0, #0x10 + str r0, [sp] + ldr r0, _022349D0 ; =0x04000050 + mov r2, #0xe + add r3, r1, #0 + bl G2x_SetBlendAlpha_ + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_02234780 +_02234968: + ldr r0, _022349D4 ; =MOD12_022349D8 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA98 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223497A: + ldrb r1, [r4, #0xd] + cmp r1, #0 + bne _0223499A + mov r0, #8 + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _0223499A + mov r1, #1 + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_0222DF30 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223499A: + cmp r1, #1 + bne _022349CE + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bne _022349CE + ldr r0, [r4] + mov r1, #0 + mov r2, #1 + bl MOD12_02234780 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022349B8: + bl MOD12_02233560 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022349CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022349D0: .word 0x04000050 +_022349D4: .word MOD12_022349D8 + + thumb_func_start MOD12_022349D8 +MOD12_022349D8: ; 0x022349D8 + push {r3, r4, r5, lr} + ldrb r3, [r1, #0xd] + mov r2, #0 + cmp r3, #0 + bne _02234A10 + mov r4, #8 + ldrsh r5, [r1, r4] + lsl r3, r4, #8 + sub r3, r5, r3 + strh r3, [r1, #8] + mov r3, #0xa + ldrsh r5, [r1, r3] + lsl r3, r4, #8 + add r3, r5, r3 + strh r3, [r1, #0xa] + ldrsh r3, [r1, r4] + cmp r3, #0 + bgt _02234A00 + strh r2, [r1, #8] + add r2, r2, #1 +_02234A00: + mov r3, #0xa + ldrsh r4, [r1, r3] + mov r3, #1 + lsl r3, r3, #0xc + cmp r4, r3 + blt _02234A3C + strh r3, [r1, #0xa] + b _02234A3C +_02234A10: + mov r4, #8 + ldrsh r5, [r1, r4] + lsl r3, r4, #8 + add r3, r5, r3 + strh r3, [r1, #8] + mov r3, #0xa + ldrsh r5, [r1, r3] + lsl r3, r4, #8 + sub r3, r5, r3 + strh r3, [r1, #0xa] + ldrsh r5, [r1, r4] + lsl r3, r4, #9 + cmp r5, r3 + blt _02234A30 + strh r3, [r1, #8] + add r2, r2, #1 +_02234A30: + mov r3, #0xa + ldrsh r3, [r1, r3] + cmp r3, #0 + bgt _02234A3C + mov r3, #0 + strh r3, [r1, #0xa] +_02234A3C: + mov r3, #8 + ldrsh r3, [r1, r3] + asr r4, r3, #8 + mov r3, #0xa + ldrsh r3, [r1, r3] + mov r1, #0xff + bic r3, r1 + orr r3, r4 + ldr r1, _02234A5C ; =0x04000052 + cmp r2, #0 + strh r3, [r1] + ble _02234A58 + bl FUN_0200CAB4 +_02234A58: + pop {r3, r4, r5, pc} + nop +_02234A5C: .word 0x04000052 + + thumb_func_start MOD12_02234A60 +MOD12_02234A60: ; 0x02234A60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + add r6, r3, #0 + cmp r7, #2 + blt _02234A78 + cmp r5, #0 + bne _02234A78 + bl ErrorHandling +_02234A78: + cmp r7, #0x1c + bls _02234A7E + b _02234EF2 +_02234A7E: + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02234A8A: ; jump table + .short _02234EF6 - _02234A8A - 2 ; case 0 + .short _02234AC4 - _02234A8A - 2 ; case 1 + .short _02234AE2 - _02234A8A - 2 ; case 2 + .short _02234AFC - _02234A8A - 2 ; case 3 + .short _02234B16 - _02234A8A - 2 ; case 4 + .short _02234B24 - _02234A8A - 2 ; case 5 + .short _02234B38 - _02234A8A - 2 ; case 6 + .short _02234B50 - _02234A8A - 2 ; case 7 + .short _02234B80 - _02234A8A - 2 ; case 8 + .short _02234BA4 - _02234A8A - 2 ; case 9 + .short _02234BD0 - _02234A8A - 2 ; case 10 + .short _02234BFE - _02234A8A - 2 ; case 11 + .short _02234C2E - _02234A8A - 2 ; case 12 + .short _02234C52 - _02234A8A - 2 ; case 13 + .short _02234C7E - _02234A8A - 2 ; case 14 + .short _02234CAE - _02234A8A - 2 ; case 15 + .short _02234CD2 - _02234A8A - 2 ; case 16 + .short _02234CF6 - _02234A8A - 2 ; case 17 + .short _02234D16 - _02234A8A - 2 ; case 18 + .short _02234D3A - _02234A8A - 2 ; case 19 + .short _02234D64 - _02234A8A - 2 ; case 20 + .short _02234D8E - _02234A8A - 2 ; case 21 + .short _02234DAC - _02234A8A - 2 ; case 22 + .short _02234DD6 - _02234A8A - 2 ; case 23 + .short _02234E04 - _02234A8A - 2 ; case 24 + .short _02234E32 - _02234A8A - 2 ; case 25 + .short _02234E54 - _02234A8A - 2 ; case 26 + .short _02234E7E - _02234A8A - 2 ; case 27 + .short _02234EB6 - _02234A8A - 2 ; case 28 +_02234AC4: + mov r0, #0xca + lsl r0, r0, #2 + ldrb r0, [r4, r0] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234AE2: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234AFC: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B16: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B24: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B38: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B50: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234B80: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BA4: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BD0: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #1 + bl FUN_0200B244 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234BFE: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C2E: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C52: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234C7E: + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CAE: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CD2: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234CF6: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D16: + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200AD5C + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D3A: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D64: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234D8E: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234DAC: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + bl FUN_0200AD38 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234DD6: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E04: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrb r0, [r5, #1] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E32: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #1 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E54: + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldrb r2, [r5, #4] + ldr r0, [r4, #0x54] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234E7E: + ldrb r0, [r5] + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_0200ACF8 + ldrb r2, [r5, #5] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #1 + bl FUN_0200B244 + ldrh r2, [r5, #2] + ldr r0, [r4, #0x54] + mov r1, #2 + bl FUN_0200AD5C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234EB6: + ldrb r2, [r6] + ldr r3, [r4, #0xc] + ldr r0, [r4, #0x54] + lsl r2, r2, #3 + add r2, r3, r2 + add r2, #0xd0 + ldrh r2, [r2] + mov r1, #0 + bl FUN_0200B244 + mov r5, #0 +_02234ECC: + add r0, r6, r5 + ldrb r0, [r0, #1] + cmp r0, #4 + beq _02234EF6 + ldr r1, [r4, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r4, #0x54] + add r1, r5, #1 + bl FUN_0200ACF8 + add r5, r5, #1 + cmp r5, #4 + blt _02234ECC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02234EF2: + bl ErrorHandling +_02234EF6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02234EFC +MOD12_02234EFC: ; 0x02234EFC + push {r4, lr} + add r4, r0, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + add r4, #0x34 + add r0, r4, #0 + bl FUN_020191D0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02234F14 +MOD12_02234F14: ; 0x02234F14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [sp, #0x30] + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp, #0xc] + cmp r0, #1 + bne _02234F2A + mov r4, #0 + b _02234F42 +_02234F2A: + ldr r1, [r5] + ldr r0, _02234FA8 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02234F40 + ldr r0, _02234FAC ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02234F42 +_02234F40: + mov r4, #1 +_02234F42: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r5, #0 + bl MOD12_02234A60 + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x58] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x8b + lsl r1, r1, #2 + strb r0, [r5, r1] + cmp r4, #0 + bne _02234F96 + mov r0, #0xff + strb r0, [r5, r1] + add r0, r5, #0 + add r0, #0x34 + bl FUN_020191D0 +_02234F96: + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02017B48 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02234FA8: .word 0x00000171 +_02234FAC: .word 0x00001988 + + thumb_func_start MOD12_02234FB0 +MOD12_02234FB0: ; 0x02234FB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r5, #0x2f + blo _02234FC4 + bl ErrorHandling +_02234FC4: + ldr r0, _02234FE4 ; =0x0224540F + lsl r3, r5, #2 + ldrb r0, [r0, r3] + str r4, [sp] + ldr r2, _02234FE8 ; =0x0224540C + str r6, [sp, #4] + str r0, [sp, #8] + ldr r4, _02234FEC ; =0x0224540E + ldrh r2, [r2, r3] + ldrb r3, [r4, r3] + ldr r1, [r7, #0x44] + add r0, r7, #0 + bl MOD12_02234F14 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02234FE4: .word 0x0224540F +_02234FE8: .word 0x0224540C +_02234FEC: .word 0x0224540E + + thumb_func_start MOD12_02234FF0 +MOD12_02234FF0: ; 0x02234FF0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + add r5, r3, #0 + add r0, r1, #0 + add r1, r2, #0 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_02083170 + ldr r0, [sp, #0x20] + str r5, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r4, #0x50] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + add r0, r4, #0 + bl MOD12_02234F14 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02235020 +MOD12_02235020: ; 0x02235020 + push {r3, lr} + mov r1, #0x8b + lsl r1, r1, #2 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _02235030 + mov r0, #0 + pop {r3, pc} +_02235030: + bl FUN_0201BD70 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02235038 +MOD12_02235038: ; 0x02235038 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0xc + mov r1, #0x15 + bl FUN_020219F4 + str r0, [sp, #0x30] + lsl r0, r4, #2 + ldr r1, [r5, #0xc] + str r0, [sp, #0x2c] + ldr r0, [r1, r0] + ldr r2, [sp, #0x30] + mov r1, #0x76 + bl FUN_020671BC + ldr r1, [r5] + ldr r0, _022350E8 ; =0x00000123 + ldrb r0, [r1, r0] + cmp r4, r0 + bne _02235068 + ldr r6, _022350EC ; =0x00010200 + b _0223506A +_02235068: + ldr r6, _022350F0 ; =0x00050600 +_0223506A: + mov r0, #0x14 + add r7, r4, #0 + mul r7, r0 + mov r0, #0x77 + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r7 + str r0, [sp] + ldr r0, [sp, #0x30] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r0, _022350F4 ; =0x000080ED + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + mov r0, #0xf + str r0, [sp, #0x28] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x60] + mov r0, #0x15 + bl MOD12_02231380 + mov r0, #0x63 + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r7 + str r0, [sp] + ldr r1, [r5] + ldr r0, [sp, #0x2c] + add r0, r1, r0 + add r0, #0xe8 + ldr r0, [r0] + mov r1, #0 + str r0, [sp, #4] + str r1, [sp, #8] + str r6, [sp, #0xc] + ldr r0, _022350F4 ; =0x000080ED + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + mov r0, #0xf + str r0, [sp, #0x28] + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x60] + mov r0, #0x15 + bl MOD12_02231380 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_022350E8: .word 0x00000123 +_022350EC: .word 0x00010200 +_022350F0: .word 0x00050600 +_022350F4: .word 0x000080ED + + thumb_func_start MOD12_022350F8 +MOD12_022350F8: ; 0x022350F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_022350FE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02235038 + add r4, r4, #1 + cmp r4, #4 + blt _022350FE + add r0, r5, #0 + bl MOD12_0223513C + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02235114 +MOD12_02235114: ; 0x02235114 + push {r4, r5, r6, lr} + mov r1, #0x77 + lsl r1, r1, #2 + add r4, r0, r1 + sub r1, #0x50 + mov r6, #0 + add r5, r0, r1 +_02235122: + add r0, r4, #0 + bl MOD12_0223147C + add r0, r5, #0 + bl MOD12_0223147C + add r6, r6, #1 + add r4, #0x14 + add r5, #0x14 + cmp r6, #4 + blt _02235122 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223513C +MOD12_0223513C: ; 0x0223513C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #0x77 + lsl r1, r1, #2 + str r0, [sp] + add r0, r0, r1 + str r0, [sp, #4] + ldr r0, [sp] + sub r1, #0x50 + add r0, r0, r1 + mov r4, #0 + mov r6, #0xc + mov r5, #0x1c + str r0, [sp, #8] +_02235158: + ldr r0, [sp] + add r2, r6, #0 + add r1, r0, r4 + ldr r0, _02235190 ; =0x00000231 + mov r3, #0 + ldrb r1, [r1, r0] + mov r0, #0x14 + add r7, r1, #0 + mul r7, r0 + ldr r0, [sp, #4] + mov r1, #1 + add r0, r0, r7 + bl MOD12_02231490 + ldr r0, [sp, #8] + mov r1, #1 + add r0, r0, r7 + add r2, r5, #0 + mov r3, #0 + bl MOD12_02231490 + add r4, r4, #1 + add r6, #0x30 + add r5, #0x30 + cmp r4, #4 + blt _02235158 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02235190: .word 0x00000231 + + thumb_func_start MOD12_02235194 +MOD12_02235194: ; 0x02235194 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _022351DC ; =0x000080F1 + mov r3, #0x17 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022351DC ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x16 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022351DC ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x15 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_022351DC: .word 0x000080F1 + + thumb_func_start MOD12_022351E0 +MOD12_022351E0: ; 0x022351E0 + push {r4, lr} + ldr r1, _022351FC ; =0x000080F1 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _022351FC ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _022351FC ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_022351FC: .word 0x000080F1 + + thumb_func_start MOD12_02235200 +MOD12_02235200: ; 0x02235200 + push {r3, r4, r5, r6, r7, lr} + add r3, r0, #0 + mov r0, #0x16 + add r6, r1, #0 + lsl r0, r0, #4 + lsl r5, r6, #2 + add r4, r3, r0 + ldr r0, [r4, r5] + add r7, r2, #0 + cmp r0, #0 + bne _02235222 + ldr r0, [r3, #0x18] + ldr r1, [r3, #0x1c] + ldr r2, _02235248 ; =0x0224526C + bl FUN_0200C154 + str r0, [r4, r5] +_02235222: + ldr r0, [r4, r5] + add r1, r7, #0 + bl FUN_0200C5C0 + mov r2, #0x30 + mul r2, r6 + add r2, #0x2a + lsl r2, r2, #0x10 + ldr r0, [r4, r5] + mov r1, #0x40 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, r5] + ldr r0, [r0] + bl FUN_0200C59C + pop {r3, r4, r5, r6, r7, pc} + nop +_02235248: .word 0x0224526C + + thumb_func_start MOD12_0223524C +MOD12_0223524C: ; 0x0223524C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x16 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #4 +_02235258: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02235268 + bl FUN_0200C3DC + mov r0, #0x16 + lsl r0, r0, #4 + str r6, [r5, r0] +_02235268: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02235258 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02235274 +MOD12_02235274: ; 0x02235274 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #6 + bl MI_CpuFill8 + lsl r0, r6, #1 + add r1, r5, r0 + ldr r0, _0223529C ; =0x00000236 + strb r6, [r4] + ldrh r1, [r1, r0] + add r0, #8 + strh r1, [r4, #2] + add r1, r5, r6 + ldrb r0, [r1, r0] + strb r0, [r4, #5] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223529C: .word 0x00000236 + + thumb_func_start MOD12_022352A0 +MOD12_022352A0: ; 0x022352A0 + strb r0, [r2] + cmp r1, #0 + bgt _022352AA + mov r0, #0x1f + bx lr +_022352AA: + cmp r1, #0x14 + bgt _022352B2 + mov r0, #0x20 + bx lr +_022352B2: + cmp r1, #0x32 + bgt _022352BA + mov r0, #0x21 + bx lr +_022352BA: + cmp r1, #0x5a + bgt _022352C2 + mov r0, #0x22 + bx lr +_022352C2: + mov r0, #0x23 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022352C8 +MOD12_022352C8: ; 0x022352C8 + push {r4, lr} + mov r1, #0x32 + bl _s32_div_f + cmp r0, #4 + blo _022352D6 + mov r0, #3 +_022352D6: + lsl r1, r0, #2 + ldr r0, _022352F0 ; =0x02245218 + ldr r4, [r0, r1] + cmp r4, #0 + bge _022352E4 + bl ErrorHandling +_022352E4: + cmp r4, #0x7f + ble _022352EC + bl ErrorHandling +_022352EC: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_022352F0: .word 0x02245218 + + thumb_func_start MOD12_022352F4 +MOD12_022352F4: ; 0x022352F4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + ldr r0, [sp, #0x1c] + mov r1, #0 + strb r1, [r0] + mov r0, #0x15 + mov r1, #0x14 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + str r5, [r4] + str r0, [r4, #0x10] + strb r7, [r4, #0xd] + ldr r0, [sp] + strb r6, [r4, #0xb] + str r0, [r4, #4] + ldr r0, [sp, #0x18] + ldr r2, _02235334 ; =0x00000BB8 + strb r0, [r4, #0xe] + ldr r0, _02235338 ; =MOD12_0223533C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235334: .word 0x00000BB8 +_02235338: .word MOD12_0223533C + + thumb_func_start MOD12_0223533C +MOD12_0223533C: ; 0x0223533C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02235354 + cmp r0, #1 + beq _02235376 + cmp r0, #2 + beq _022353A6 + b _0223541C +_02235354: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02235362 + sub r0, r0, #1 + add sp, #0x10 + strb r0, [r4, #0xd] + pop {r3, r4, r5, pc} +_02235362: + ldr r0, _02235468 ; =0x000006E5 + bl FUN_020054C8 + ldr r0, _02235468 ; =0x000006E5 + ldr r1, [r4, #4] + bl FUN_0200488C + ldrb r0, [r4, #8] + add r0, r0, #1 + strb r0, [r4, #8] +_02235376: + ldrb r0, [r4, #9] + cmp r0, #0 + bne _02235380 + mov r1, #0 + b _02235382 +_02235380: + mov r1, #2 +_02235382: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x15 + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x2d + ldr r2, [r2, #0x30] + mov r3, #3 + bl FUN_020068C8 + ldrb r0, [r4, #8] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_022353A6: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + cmp r0, #2 + bls _022353DE + mov r0, #0 + strb r0, [r4, #0xc] + ldrb r1, [r4, #9] + mov r0, #1 + eor r0, r1 + strb r0, [r4, #9] + ldrb r0, [r4, #8] + sub r0, r0, #1 + strb r0, [r4, #8] + ldrb r0, [r4, #9] + cmp r0, #0 + bne _022353DE + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + cmp r0, #2 + bls _022353DE + mov r0, #0xff + add sp, #0x10 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_022353DE: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235464 + ldrb r0, [r4, #0xb] + mov r1, #0x32 + lsl r0, r0, #4 + bl _s32_div_f + mov r1, #0xf + ldrsb r2, [r4, r1] + cmp r2, r0 + bge _02235464 + add r2, r2, #2 + strb r2, [r4, #0xf] + ldrsb r1, [r4, r1] + cmp r1, r0 + ble _02235402 + strb r0, [r4, #0xf] +_02235402: + ldrb r0, [r4, #0xf] + mov r1, #0 + mov r2, #1 + str r0, [sp] + ldr r0, _0223546C ; =0x0000237E + mov r3, #2 + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + bl FUN_020039E8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0223541C: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235452 + mov r0, #0xf + ldrsb r1, [r4, r0] + cmp r1, #0 + beq _02235452 + sub r1, r1, #2 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02235438 + mov r0, #0 + strb r0, [r4, #0xf] +_02235438: + ldrb r0, [r4, #0xf] + mov r1, #0 + mov r2, #1 + str r0, [sp] + ldr r0, _0223546C ; =0x0000237E + mov r3, #2 + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + bl FUN_020039E8 + add sp, #0x10 + pop {r3, r4, r5, pc} +_02235452: + ldr r0, [r4, #0x10] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02235464: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02235468: .word 0x000006E5 +_0223546C: .word 0x0000237E + + thumb_func_start MOD12_02235470 +MOD12_02235470: ; 0x02235470 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r3, #0 + ldr r3, [sp, #0x38] + add r6, sp, #0x1c + str r3, [sp, #0x38] + mov r3, #0 + str r3, [sp, #8] + strb r3, [r5] + mov r3, #0x30 + mul r3, r2 + ldr r2, [sp, #8] + str r3, [sp, #0x10] + add r3, #0x18 + str r2, [sp, #4] + str r2, [sp, #0xc] + mov r2, #0x18 + mul r2, r1 + add r7, r0, r2 + add r0, r3, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r3, [sp, #0x10] + str r0, [sp, #0x18] +_022354A0: + add r0, r7, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + bne _022354AC + b _0223560C +_022354AC: + ldrb r1, [r5] + cmp r1, #0 + bne _02235576 + add r1, sp, #0x20 + add r1, #2 + add r2, sp, #0x20 + bl FUN_0200C7A0 + mov r0, #4 + ldrsh r1, [r6, r0] + ldr r0, [sp, #0x10] + sub r1, r1, r0 + bpl _022354C8 + neg r1, r1 +_022354C8: + mov r0, #6 + ldrsh r0, [r6, r0] + sub r0, #0x28 + bpl _022354D2 + neg r0, r0 +_022354D2: + bl FUN_020799F4 + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #6 + ldrsh r0, [r6, r0] + sub r0, #0x28 + bl _fflt + str r0, [sp, #0x14] + mov r0, #4 + ldrsh r1, [r6, r0] + ldr r0, [sp, #0x10] + sub r0, r1, r0 + bl _fflt + add r4, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0 + bl _fgr + ldr r0, _02235620 ; =0x45800000 + bls _02235514 + ldr r1, [sp, #0x14] + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + str r0, [sp] + b _02235524 +_02235514: + ldr r1, [sp, #0x14] + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub + str r0, [sp] +_02235524: + add r0, r4, #0 + mov r1, #0 + bl _fgr + ldr r0, _02235620 ; =0x45800000 + bls _02235542 + add r1, r4, #0 + bl _fmul + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _02235550 +_02235542: + add r1, r4, #0 + bl _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_02235550: + bl _ffix + add r4, r0, #0 + ldr r0, [sp] + bl _ffix + add r1, r0, #0 + add r0, r4, #0 + bl FX_Atan2 + ldr r1, _02235624 ; =0x00008CA0 + mul r1, r0 + add r0, r1, #0 + ldr r1, _02235628 ; =0x0000FFFF + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] +_02235576: + mov r0, #0x15 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x38] + add r1, r4, #0 + str r0, [r4, #4] + add r0, r7, #0 + add r0, #0xd0 + ldr r0, [r0] + add r1, #0x21 + str r0, [r4, #8] + ldr r0, [sp, #8] + add r2, sp, #0x1c + str r0, [r4, #0x10] + ldr r0, [sp, #4] + strh r0, [r4, #0x1e] + mov r0, #2 + lsl r0, r0, #0xa + str r0, [r4, #0x14] + mov r0, #0x28 + strb r0, [r1] + add r1, r4, #0 + ldr r0, [sp, #0x18] + add r1, #0x22 + strb r0, [r1] + str r5, [r4, #0xc] + mov r0, #6 + ldrsh r1, [r6, r0] + add r0, r4, #0 + add r0, #0x23 + strb r1, [r0] + mov r0, #4 + ldrsh r1, [r6, r0] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r7, #0 + add r0, #0xd0 + add r1, sp, #0x1c + ldr r0, [r0] + add r1, #2 + bl FUN_0200C7A0 + mov r0, #6 + ldrsh r1, [r6, r0] + mov r0, #2 + ldrsh r0, [r6, r0] + sub r0, r1, r0 + bpl _022355E6 + neg r0, r0 +_022355E6: + ldrb r2, [r5] + lsl r0, r0, #8 + lsl r1, r2, #1 + add r1, r2, r1 + bl _s32_div_f + strh r0, [r4, #0x1c] + mov r0, #2 + ldrsh r0, [r6, r0] + ldr r2, _0223562C ; =0x00009C40 + add r1, r4, #0 + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldr r0, _02235630 ; =MOD12_02235634 + bl FUN_0200CA44 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_0223560C: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #6 + bge _0223561A + b _022354A0 +_0223561A: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02235620: .word 0x45800000 +_02235624: .word 0x00008CA0 +_02235628: .word 0x0000FFFF +_0223562C: .word 0x00009C40 +_02235630: .word MOD12_02235634 + + thumb_func_start MOD12_02235634 +MOD12_02235634: ; 0x02235634 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _0223564C + cmp r0, #1 + beq _02235696 + b _02235778 +_0223564C: + ldrh r0, [r5, #0x1c] + ldr r1, [r5, #0x18] + sub r1, r1, r0 + add r0, r5, #0 + str r1, [r5, #0x18] + add r0, #0x23 + ldrb r0, [r0] + lsl r0, r0, #8 + cmp r1, r0 + bgt _02235670 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] +_02235670: + add r1, sp, #0xc + ldr r0, [r5, #8] + add r1, #2 + add r2, sp, #0xc + bl FUN_0200C7A0 + ldr r0, [r5, #0x18] + add r3, sp, #0xc + asr r0, r0, #8 + strh r0, [r3, #2] + mov r1, #2 + mov r2, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r5, #8] + bl FUN_0200C714 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02235696: + ldrh r2, [r5, #0x1e] + ldr r1, [r5, #0x14] + add r0, r5, #0 + add r1, r2, r1 + strh r1, [r5, #0x1e] + ldrh r2, [r5, #0x1e] + ldr r1, _022357A4 ; =0x00008CA0 + add r0, #0x1e + cmp r2, r1 + blo _022356B0 + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_022356B0: + mov r0, #3 + ldr r1, [r5, #0x10] + lsl r0, r0, #8 + cmp r1, r0 + bls _022356BE + sub r0, r1, r0 + b _022356C0 +_022356BE: + mov r0, #0 +_022356C0: + str r0, [r5, #0x10] + mov r0, #2 + ldr r1, [r5, #0x10] + lsl r0, r0, #8 + cmp r1, r0 + bhi _022356DA + add r0, r5, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] +_022356DA: + ldr r0, [r5, #0x10] + mov r1, #0x64 + lsr r4, r0, #8 + ldrh r0, [r5, #0x1e] + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B954 + str r0, [sp] + lsl r6, r4, #0xc + ldrh r0, [r5, #0x1e] + mov r1, #0x64 + asr r7, r6, #0x1f + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + str r0, [sp, #4] + ldr r0, [sp] + add r2, r6, #0 + asr r1, r0, #0x1f + add r3, r7, #0 + bl _ll_mul + str r0, [sp, #8] + ldr r0, [sp, #4] + add r4, r1, #0 + asr r1, r0, #0x1f + add r2, r6, #0 + add r3, r7, #0 + bl _ll_mul + mov r3, #2 + add r2, r1, #0 + add r1, r5, #0 + add r7, r0, #0 + add r1, #0x21 + ldr r6, [sp, #8] + lsl r3, r3, #0xa + add r6, r6, r3 + ldr r3, _022357A8 ; =0x00000000 + ldrb r1, [r1] + adc r4, r3 + lsl r3, r4, #0x14 + lsr r4, r6, #0xc + orr r4, r3 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + asr r3, r3, #0xc + add r1, r1, r3 + mov r4, #2 + ldr r0, [r5, #8] + lsl r1, r1, #0x10 + add r5, #0x22 + lsl r4, r4, #0xa + asr r1, r1, #0x10 + ldrb r3, [r5] + add r5, r7, r4 + ldr r4, _022357A8 ; =0x00000000 + adc r2, r4 + lsl r2, r2, #0x14 + lsr r4, r5, #0xc + orr r4, r2 + asr r2, r4, #0xb + lsr r2, r2, #0x14 + add r2, r4, r2 + asr r2, r2, #0xc + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02235778: + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _022357AC ; =0x000005E1 + bl FUN_020054C8 + ldr r0, [r5, #4] + bl MOD12_02233638 + ldr r1, [r5, #0xc] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022357A4: .word 0x00008CA0 +_022357A8: .word 0x00000000 +_022357AC: .word 0x000005E1 + + thumb_func_start MOD12_022357B0 +MOD12_022357B0: ; 0x022357B0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0xc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xc + add r4, r0, #0 + bl MI_CpuFill8 + str r5, [r4] + ldr r0, _022357DC ; =MOD12_022357F8 + ldr r2, _022357E0 ; =0x00009C40 + add r1, r4, #0 + strb r6, [r4, #8] + bl FUN_0200CA44 + str r0, [r4, #4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_022357DC: .word MOD12_022357F8 +_022357E0: .word 0x00009C40 + + thumb_func_start MOD12_022357E4 +MOD12_022357E4: ; 0x022357E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_022357F8 +MOD12_022357F8: ; 0x022357F8 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x13 + add r6, r1, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_02235804: + ldrb r2, [r6, #8] + mov r1, #0x14 + ldr r0, [r6] + mul r1, r2 + add r0, r0, r1 + add r0, r5, r0 + ldr r0, [r0, r7] + cmp r0, #0 + beq _0223581A + bl FUN_0200C5A8 +_0223581A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02235804 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02235824 +MOD12_02235824: ; 0x02235824 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0x30 + mul r0, r2 + add r0, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x14 + add r2, r3, #0 + mul r2, r1 + ldr r1, [sp] + ldr r5, [sp, #0x20] + mov r7, #0 + strb r7, [r5] + add r6, r1, r2 + str r0, [sp, #4] +_02235846: + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02235890 + mov r0, #0x15 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223589C ; =0x00009C40 + str r0, [r4] + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r6, r0] + str r0, [r4, #4] + str r5, [r4, #8] + mov r0, #0x28 + strb r0, [r4, #0xf] + ldr r0, [sp, #4] + strb r0, [r4, #0x10] + ldrb r1, [r5] + mov r0, #0xc + mul r0, r1 + strh r0, [r4, #0x24] + ldr r0, _022358A0 ; =MOD12_022358A4 + add r1, r4, #0 + bl FUN_0200CA44 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_02235890: + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #5 + blt _02235846 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223589C: .word 0x00009C40 +_022358A0: .word MOD12_022358A4 + + thumb_func_start MOD12_022358A4 +MOD12_022358A4: ; 0x022358A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _022358BE + cmp r0, #1 + beq _022358FE + cmp r0, #2 + bne _022358BC + b _02235A26 +_022358BC: + b _02235A5E +_022358BE: + mov r0, #0x24 + ldrsh r0, [r5, r0] + cmp r0, #0 + ble _022358CE + sub r0, r0, #1 + add sp, #8 + strh r0, [r5, #0x24] + pop {r3, r4, r5, r6, r7, pc} +_022358CE: + add r1, sp, #4 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r2, sp, #4 + mov r1, #0 + ldrsh r0, [r2, r1] + add r0, r0, #6 + strh r0, [r2] + mov r0, #2 + ldrsh r0, [r2, r0] + lsl r0, r0, #8 + str r0, [r5, #0x1c] + ldrsh r0, [r2, r1] + lsl r0, r0, #8 + str r0, [r5, #0x20] + ldr r0, _02235A84 ; =0x000007F9 + bl FUN_020054C8 + ldrb r0, [r5, #0xe] + add r0, r0, #1 + strb r0, [r5, #0xe] +_022358FE: + ldrh r2, [r5, #0xc] + mov r1, #2 + lsl r1, r1, #0xa + add r1, r2, r1 + strh r1, [r5, #0xc] + ldrh r2, [r5, #0xc] + ldr r1, _02235A88 ; =0x00008CA0 + add r0, r5, #0 + add r0, #0xc + cmp r2, r1 + blo _0223591A + ldrh r2, [r0] + sub r1, r2, r1 + strh r1, [r0] +_0223591A: + ldrh r0, [r5, #0xc] + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + add r4, r0, #0 + ldrh r0, [r5, #0xc] + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B954 + add r6, r0, #0 + ldr r0, [r5, #0x20] + mov r2, #3 + add r0, #0x80 + str r0, [r5, #0x20] + asr r1, r4, #0x1f + add r0, r4, #0 + lsl r2, r2, #0xe + mov r3, #0 + bl _ll_mul + mov r2, #6 + str r0, [sp] + add r4, r1, #0 + asr r1, r6, #0x1f + add r0, r6, #0 + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r1, [r5, #0x1c] + mov r6, #2 + add r7, r0, #0 + ldr r3, [sp] + lsl r6, r6, #0xa + asr r1, r1, #8 + add r6, r3, r6 + ldr r3, _02235A8C ; =0x00000000 + ldr r0, [r5, #4] + adc r4, r3 + lsl r3, r4, #0x14 + lsr r4, r6, #0xc + orr r4, r3 + asr r3, r4, #0xb + lsr r3, r3, #0x14 + add r3, r4, r3 + asr r3, r3, #0xc + add r1, r1, r3 + ldr r3, [r5, #0x20] + mov r4, #2 + lsl r1, r1, #0x10 + ldr r6, _02235A8C ; =0x00000000 + lsl r4, r4, #0xa + asr r1, r1, #0x10 + asr r3, r3, #8 + add r4, r7, r4 + adc r2, r6 + lsl r6, r2, #0x14 + lsr r2, r4, #0xc + orr r2, r6 + asr r4, r2, #0xb + lsr r4, r4, #0x14 + add r4, r2, r4 + asr r2, r4, #0xc + add r2, r3, r2 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0x24 + ldrsh r1, [r5, r0] + add r1, r1, #1 + strh r1, [r5, #0x24] + ldrsh r0, [r5, r0] + cmp r0, #0x50 + ble _02235A80 + mov r0, #0 + strh r0, [r5, #0x24] + add r1, sp, #4 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #4 + bl FUN_0200C7A0 + add r2, sp, #4 + mov r0, #2 + ldrsh r0, [r2, r0] + lsl r1, r0, #8 + str r1, [r5, #0x1c] + mov r1, #0 + ldrsh r6, [r2, r1] + lsl r1, r6, #8 + str r1, [r5, #0x20] + ldrb r1, [r5, #0xf] + sub r0, r0, r1 + bpl _022359EC + neg r0, r0 +_022359EC: + ldrb r1, [r5, #0x10] + lsl r0, r0, #8 + sub r4, r6, r1 + bpl _022359F6 + neg r4, r4 +_022359F6: + mov r1, #3 + lsl r1, r1, #8 + str r1, [r5, #0x14] + bl _s32_div_f + add r1, r0, #0 + lsl r0, r4, #8 + bl _s32_div_f + str r0, [r5, #0x18] + ldrb r0, [r5, #0x10] + cmp r0, r6 + bge _02235A16 + ldr r0, [r5, #0x18] + neg r0, r0 + str r0, [r5, #0x18] +_02235A16: + ldr r0, _02235A90 ; =0x000006EA + bl FUN_020054C8 + ldrb r0, [r5, #0xe] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0xe] + pop {r3, r4, r5, r6, r7, pc} +_02235A26: + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x14] + sub r0, r1, r0 + str r0, [r5, #0x1c] + ldr r1, [r5, #0x20] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [r5, #0x20] + ldrb r0, [r5, #0xf] + lsl r1, r0, #8 + ldr r0, [r5, #0x1c] + cmp r0, r1 + bgt _02235A48 + str r1, [r5, #0x1c] + ldrb r0, [r5, #0xe] + add r0, r0, #1 + strb r0, [r5, #0xe] +_02235A48: + ldr r1, [r5, #0x1c] + ldr r2, [r5, #0x20] + lsl r1, r1, #8 + lsl r2, r2, #8 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02235A5E: + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _02235A94 ; =0x000005E1 + bl FUN_020054C8 + ldr r1, [r5, #8] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02235A80: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235A84: .word 0x000007F9 +_02235A88: .word 0x00008CA0 +_02235A8C: .word 0x00000000 +_02235A90: .word 0x000006EA +_02235A94: .word 0x000005E1 + + thumb_func_start MOD12_02235A98 +MOD12_02235A98: ; 0x02235A98 + push {r4} + sub sp, #0xc + ldr r3, _02235AC0 ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3, #0x14] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #0x16] + strh r4, [r2, #2] + ldrh r4, [r3, #0x18] + strh r4, [r2, #4] + ldrh r4, [r3, #0x1a] + ldrh r3, [r3, #0x1c] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235AC0: .word 0x022451D4 + + thumb_func_start MOD12_02235AC4 +MOD12_02235AC4: ; 0x02235AC4 + push {r4} + sub sp, #0xc + ldr r3, _02235AEC ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3, #0xa] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #0xc] + strh r4, [r2, #2] + ldrh r4, [r3, #0xe] + strh r4, [r2, #4] + ldrh r4, [r3, #0x10] + ldrh r3, [r3, #0x12] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235AEC: .word 0x022451D4 + + thumb_func_start MOD12_02235AF0 +MOD12_02235AF0: ; 0x02235AF0 + push {r4} + sub sp, #0xc + ldr r3, _02235B18 ; =0x022451D4 + add r2, sp, #0 + ldrh r4, [r3] + add r1, sp, #0 + lsl r0, r0, #1 + strh r4, [r2] + ldrh r4, [r3, #2] + strh r4, [r2, #2] + ldrh r4, [r3, #4] + strh r4, [r2, #4] + ldrh r4, [r3, #6] + ldrh r3, [r3, #8] + strh r4, [r2, #6] + strh r3, [r2, #8] + ldrh r0, [r1, r0] + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 +_02235B18: .word 0x022451D4 + + thumb_func_start MOD12_02235B1C +MOD12_02235B1C: ; 0x02235B1C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + strh r5, [r4, #4] + cmp r5, #0x8f + bgt _02235B52 + bge _02235B8A + cmp r5, #0x4c + bgt _02235B44 + bge _02235B8A + cmp r5, #0xd + beq _02235B8A + pop {r3, r4, r5, r6, r7, pc} +_02235B44: + cmp r5, #0x77 + bgt _02235B4C + beq _02235BC8 + pop {r3, r4, r5, r6, r7, pc} +_02235B4C: + cmp r5, #0x82 + beq _02235B8A + pop {r3, r4, r5, r6, r7, pc} +_02235B52: + ldr r1, _02235BE4 ; =0x0000010B + cmp r5, r1 + bgt _02235B72 + bge _02235BCE + cmp r5, #0xae + bgt _02235B62 + beq _02235B9C + pop {r3, r4, r5, r6, r7, pc} +_02235B62: + cmp r5, #0xda + bgt _02235BE2 + cmp r5, #0xd8 + blt _02235BE2 + beq _02235B90 + cmp r5, #0xda + beq _02235B96 + pop {r3, r4, r5, r6, r7, pc} +_02235B72: + add r0, r1, #0 + add r0, #0xd + cmp r5, r0 + bgt _02235B82 + add r1, #0xd + cmp r5, r1 + beq _02235BD4 + pop {r3, r4, r5, r6, r7, pc} +_02235B82: + add r1, #0xc8 + cmp r5, r1 + beq _02235BDA + pop {r3, r4, r5, r6, r7, pc} +_02235B8A: + mov r0, #1 + strb r0, [r4, #6] + pop {r3, r4, r5, r6, r7, pc} +_02235B90: + mov r0, #0xff + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02235B96: + mov r0, #0 + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} +_02235B9C: + lsl r5, r7, #2 + ldr r0, [r6, r5] + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [r6, r5] + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + cmp r7, #7 + beq _02235BBC + cmp r0, #7 + bne _02235BC2 +_02235BBC: + mov r0, #1 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BC2: + mov r0, #0 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BC8: + mov r0, #1 + strh r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_02235BCE: + mov r0, #0xa1 + strh r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_02235BD4: + mov r0, #1 + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_02235BDA: + mov r0, #1 + strb r0, [r4, #6] + ldr r0, _02235BE8 ; =0x200400C0 + str r0, [r4] +_02235BE2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02235BE4: .word 0x0000010B +_02235BE8: .word 0x200400C0 + + thumb_func_start MOD12_02235BEC +MOD12_02235BEC: ; 0x02235BEC + cmp r2, #0 + bne _02235BF4 + mov r0, #0 + bx lr +_02235BF4: + lsl r3, r1, #1 + add r3, r0, r3 + ldrh r3, [r3, #0x26] + cmp r2, r3 + bne _02235C12 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0xe0 + ldr r0, [r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r2, r0 + beq _02235C12 + mov r0, #0 + bx lr +_02235C12: + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02235C18 +MOD12_02235C18: ; 0x02235C18 + push {r3, r4} + add r1, r0, r1 + ldrb r4, [r1, #0xe] + mov r3, #0 + add r2, r3, #0 +_02235C22: + add r1, r0, r2 + ldrb r1, [r1, #0xe] + cmp r1, r4 + bne _02235C2C + add r3, r3, #1 +_02235C2C: + add r2, r2, #1 + cmp r2, #4 + blt _02235C22 + sub r0, r3, #1 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02235C38 +MOD12_02235C38: ; 0x02235C38 + ldr r1, _02235C40 ; =0x022454C8 + ldrb r0, [r1, r0] + bx lr + nop +_02235C40: .word 0x022454C8 + + thumb_func_start MOD12_02235C44 +MOD12_02235C44: ; 0x02235C44 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0xb + bl FUN_0206AB18 + lsl r1, r4, #2 + add r2, r4, r1 + ldr r1, _02235C5C ; =0x022454E4 + add r1, r1, r2 + ldrsb r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02235C5C: .word 0x022454E4 + + thumb_func_start MOD12_02235C60 +MOD12_02235C60: ; 0x02235C60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + mov lr, r0 + add r2, sp, #8 + add r1, sp, #4 + add r7, r3, #0 + add r0, sp, #0 + mov r6, #0x1a + b _02235C9A +_02235C74: + lsl r4, r3, #1 + mov r5, lr + add r5, r5, r4 + ldrsh r5, [r5, r6] + strb r3, [r1, r3] + strh r5, [r2, r4] + add r4, r7, #0 + b _02235C94 +_02235C84: + mov r5, lr + add r5, r5, r4 + ldrb r5, [r5, #1] + cmp r3, r5 + bne _02235C92 + strb r4, [r0, r3] + b _02235C98 +_02235C92: + add r4, r4, #1 +_02235C94: + cmp r4, #4 + blt _02235C84 +_02235C98: + add r3, r3, #1 +_02235C9A: + cmp r3, #4 + blt _02235C74 + mov r3, #0 + ldr r6, _02235D70 ; =0x022454D4 + add r1, sp, #8 + ldr r0, _02235D74 ; =0x022454CC + ldr r2, _02235D78 ; =0x022454DC + mov r7, #0x2c + b _02235CFC +_02235CAC: + add r5, r3, #0 + mul r5, r7 + mov r4, lr + add r4, r4, r5 + ldr r4, [r4, #0x58] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + cmp r5, #3 + bhi _02235CFA + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_02235CCA: ; jump table + .short _02235CFA - _02235CCA - 2 ; case 0 + .short _02235CD2 - _02235CCA - 2 ; case 1 + .short _02235CE0 - _02235CCA - 2 ; case 2 + .short _02235CEE - _02235CCA - 2 ; case 3 +_02235CD2: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r2, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] + b _02235CFA +_02235CE0: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r0, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] + b _02235CFA +_02235CEE: + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + lsl r4, r4, #1 + ldrsh r5, [r6, r4] + lsl r4, r3, #1 + strh r5, [r1, r4] +_02235CFA: + add r3, r3, #1 +_02235CFC: + cmp r3, #4 + blt _02235CAC + mov r3, #0 + b _02235D52 +_02235D04: + mov r4, #3 + add r2, sp, #8 + add r7, sp, #0 + b _02235D4C +_02235D0C: + sub r1, r4, #1 + lsl r0, r1, #1 + lsl r5, r4, #1 + ldrsh r0, [r2, r0] + ldrsh r5, [r2, r5] + cmp r0, r5 + bgt _02235D26 + cmp r0, r5 + bne _02235D4A + ldrb r1, [r7, r1] + ldrb r0, [r7, r4] + cmp r1, r0 + bhs _02235D4A +_02235D26: + sub r0, r4, #1 + lsl r1, r4, #1 + lsl r5, r0, #1 + mov ip, r5 + ldrsh r6, [r2, r1] + ldrsh r5, [r2, r5] + strh r5, [r2, r1] + mov r1, ip + strh r6, [r2, r1] + add r1, sp, #4 + ldrb r6, [r1, r4] + ldrb r5, [r1, r0] + strb r5, [r1, r4] + strb r6, [r1, r0] + ldrb r5, [r7, r4] + ldrb r1, [r7, r0] + strb r1, [r7, r4] + strb r5, [r7, r0] +_02235D4A: + sub r4, r4, #1 +_02235D4C: + cmp r4, r3 + bgt _02235D0C + add r3, r3, #1 +_02235D52: + cmp r3, #3 + blt _02235D04 + mov r3, #0 + add r2, sp, #4 + b _02235D66 +_02235D5C: + ldrb r1, [r2, r3] + mov r0, lr + add r0, r0, r3 + strb r1, [r0, #1] + add r3, r3, #1 +_02235D66: + cmp r3, #4 + blt _02235D5C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235D70: .word 0x022454D4 +_02235D74: .word 0x022454CC +_02235D78: .word 0x022454DC + + thumb_func_start MOD12_02235D7C +MOD12_02235D7C: ; 0x02235D7C + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02235DB4 ; =0x02245500 + add r3, sp, #0 + str r1, [sp] + mov r1, #0x16 + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02235DB8 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + mov r1, #0xc3 + lsl r1, r1, #4 + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + nop +_02235DB4: .word 0x02245500 +_02235DB8: .word 0x00000123 + + thumb_func_start MOD12_02235DBC +MOD12_02235DBC: ; 0x02235DBC + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235DD4 +MOD12_02235DD4: ; 0x02235DD4 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + + thumb_func_start MOD12_02235DE8 +MOD12_02235DE8: ; 0x02235DE8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02235DEC +MOD12_02235DEC: ; 0x02235DEC + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235E04 +MOD12_02235E04: ; 0x02235E04 + push {r3, lr} + ldr r0, _02235E20 ; =0x00001650 + mov r3, #1 + strb r3, [r1, r0] + mov r0, #0xc3 + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + nop +_02235E20: .word 0x00001650 + + thumb_func_start MOD12_02235E24 +MOD12_02235E24: ; 0x02235E24 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235E3C +MOD12_02235E3C: ; 0x02235E3C + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x10 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _02235E74 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02235E78 ; =MOD12_02235E7C + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02235E74: .word 0x00007530 +_02235E78: .word MOD12_02235E7C + + thumb_func_start MOD12_02235E7C +MOD12_02235E7C: ; 0x02235E7C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xf] + add r5, r0, #0 + cmp r1, #0 + beq _02235E94 + cmp r1, #1 + beq _02235EB2 + cmp r1, #2 + beq _02235ECC + b _02235EDA +_02235E94: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0xe + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + ldrb r0, [r4, #0xf] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235EB2: + ldrh r0, [r4, #0xc] + add r0, r0, #1 + strh r0, [r4, #0xc] + ldrh r0, [r4, #0xc] + cmp r0, #0x1e + bls _02235EF8 + mov r0, #0 + strh r0, [r4, #0xc] + ldrb r0, [r4, #0xf] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235ECC: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _02235EF8 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xf] + pop {r3, r4, r5, pc} +_02235EDA: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02235EF8: + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02235EFC +MOD12_02235EFC: ; 0x02235EFC + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02235F14 +MOD12_02235F14: ; 0x02235F14 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02235F6C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + add r0, r6, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x18] + add r0, r6, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x12] + add r0, r6, #0 + add r0, #0xda + ldrh r0, [r0] + add r6, #0xdc + strh r0, [r4, #0x14] + ldrh r0, [r6] + strh r0, [r4, #0x16] + ldr r0, _02235F70 ; =MOD12_02235F74 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02235F6C: .word 0x00007530 +_02235F70: .word MOD12_02235F74 + + thumb_func_start MOD12_02235F74 +MOD12_02235F74: ; 0x02235F74 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bhi _0223601A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02235F8E: ; jump table + .short _02235F98 - _02235F8E - 2 ; case 0 + .short _02235FBA - _02235F8E - 2 ; case 1 + .short _02235FD4 - _02235F8E - 2 ; case 2 + .short _02235FEE - _02235F8E - 2 ; case 3 + .short _0223600C - _02235F8E - 2 ; case 4 +_02235F98: + ldrb r1, [r4, #0x18] + cmp r1, #0 + beq _02235FAA + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x12 + mov r3, #0 + bl MOD12_02234FB0 +_02235FAA: + ldr r0, _0223603C ; =0x000006F9 + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FBA: + ldrb r0, [r4, #0x18] + cmp r0, #0 + beq _02235FCA + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236038 +_02235FCA: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FD4: + ldrh r0, [r4, #0xe] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0xe] + cmp r0, #0x1e + bls _02236038 + mov r0, #0 + strh r0, [r4, #0xe] + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02235FEE: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x10 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223600C: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _02236038 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223601A: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236038: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223603C: .word 0x000006F9 + + thumb_func_start MOD12_02236040 +MOD12_02236040: ; 0x02236040 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236058 +MOD12_02236058: ; 0x02236058 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + add r2, r4, #0 + mov r1, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + add r2, #0x16 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldrb r0, [r7] + strb r0, [r4, #0x15] + add r0, r6, #0 + bl MOD12_0223483C + ldr r0, _022360A8 ; =MOD12_022360B0 + ldr r2, _022360AC ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + add r0, r6, #0 + bl MOD12_02234EFC + pop {r3, r4, r5, r6, r7, pc} + nop +_022360A8: .word MOD12_022360B0 +_022360AC: .word 0x00007530 + + thumb_func_start MOD12_022360B0 +MOD12_022360B0: ; 0x022360B0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x15] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + add r5, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #3 + bls _022360D0 + b _022361DA +_022360D0: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022360DC: ; jump table + .short _022360E4 - _022360DC - 2 ; case 0 + .short _02236100 - _022360DC - 2 ; case 1 + .short _02236162 - _022360DC - 2 ; case 2 + .short _0223617C - _022360DC - 2 ; case 3 +_022360E4: + mov r0, #0x18 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x18] + ldrsh r0, [r4, r0] + cmp r0, #0xa + bgt _022360F4 + b _022361FE +_022360F4: + mov r0, #0 + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02236100: + ldrb r0, [r4, #0x15] + mov r1, #0 + lsl r5, r0, #2 + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, r5] + bl FUN_02068E14 + add r6, r0, #0 + ldr r0, [r4] + mov r1, #0x25 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #6 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r2, #1 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #0 + lsl r2, r2, #8 + bl FUN_02007558 + ldr r0, [r4] + add r6, #0xac + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + mov r0, #1 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x2b + lsl r0, r0, #0xa + str r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_02236162: + ldr r0, [r4] + ldrb r2, [r4, #0x15] + ldr r1, [r0] + ldr r0, _02236200 ; =0x00000123 + ldrb r0, [r1, r0] + cmp r2, r0 + bne _02236176 + ldr r0, _02236204 ; =0x000006F8 + bl FUN_020054C8 +_02236176: + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_0223617C: + ldr r1, [r4, #0xc] + ldr r0, _02236208 ; =0x000005B6 + sub r0, r1, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r0, _0223620C ; =0x00000892 + sub r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + asr r0, r0, #8 + cmp r0, #0xd8 + ble _0223619C + ldr r0, [r4, #0x10] + asr r0, r0, #8 + cmp r0, #0x70 + bgt _022361AE +_0223619C: + mov r0, #0x36 + lsl r0, r0, #0xa + str r0, [r4, #0xc] + mov r0, #7 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] +_022361AE: + ldrb r0, [r4, #0x15] + ldr r2, [r4, #0xc] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r4, #0x15] + ldr r2, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + asr r2, r2, #8 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r2, r5 + bl FUN_02007558 + pop {r4, r5, r6, pc} +_022361DA: + ldrb r0, [r4, #0x16] + cmp r0, #1 + bne _022361FE + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_022361FE: + pop {r4, r5, r6, pc} + .align 2, 0 +_02236200: .word 0x00000123 +_02236204: .word 0x000006F8 +_02236208: .word 0x000005B6 +_0223620C: .word 0x00000892 + + thumb_func_start MOD12_02236210 +MOD12_02236210: ; 0x02236210 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236228 +MOD12_02236228: ; 0x02236228 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldrb r0, [r7] + strb r0, [r4, #0x15] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + mov r0, #0x36 + lsl r0, r0, #0xa + str r0, [r4, #0xc] + mov r0, #7 + lsl r0, r0, #0xc + str r0, [r4, #0x10] + ldr r0, _0223627C ; =MOD12_02236284 + ldr r2, _02236280 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223627C: .word MOD12_02236284 +_02236280: .word 0x00007530 + + thumb_func_start MOD12_02236284 +MOD12_02236284: ; 0x02236284 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldrb r0, [r5, #0x15] + mov r1, #0 + lsl r4, r0, #2 + ldr r0, [r5] + ldr r0, [r0, #0xc] + ldr r0, [r0, r4] + bl FUN_02068E14 + add r6, r0, #0 + ldrb r0, [r5, #0x14] + cmp r0, #0 + beq _022362A8 + cmp r0, #1 + beq _0223631A + b _02236342 +_022362A8: + ldr r1, [r5, #0xc] + ldr r0, _02236364 ; =0x000005B6 + add r0, r1, r0 + str r0, [r5, #0xc] + ldr r1, [r5, #0x10] + ldr r0, _02236368 ; =0x00000892 + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r0, [r5, #0xc] + asr r1, r0, #8 + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bge _022362CC + ldr r0, [r5, #0x10] + asr r0, r0, #8 + cmp r0, #0xac + blt _022362EE +_022362CC: + ldr r0, [r5] + mov r1, #0x25 + add r0, r0, r4 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #6 + add r0, r0, r4 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldrb r0, [r5, #0x14] + add r0, r0, #1 + strb r0, [r5, #0x14] +_022362EE: + ldrb r0, [r5, #0x15] + ldr r2, [r5, #0xc] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r5, #0x15] + ldr r2, [r5, #0x10] + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + asr r2, r2, #8 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r2, r6 + bl FUN_02007558 + pop {r3, r4, r5, r6, r7, pc} +_0223631A: + ldrb r1, [r5, #0x15] + ldr r0, [r5] + ldr r2, _0223636C ; =0x00001652 + add r3, r0, r1 + ldrb r2, [r3, r2] + cmp r2, #1 + bne _0223633A + add r0, #0xc + bl MOD12_022336AC + ldrb r0, [r5, #0x15] + ldr r1, [r5] + mov r2, #0 + add r1, r1, r0 + ldr r0, _0223636C ; =0x00001652 + strb r2, [r1, r0] +_0223633A: + ldrb r0, [r5, #0x14] + add r0, r0, #1 + strb r0, [r5, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_02236342: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236364: .word 0x000005B6 +_02236368: .word 0x00000892 +_0223636C: .word 0x00001652 + + thumb_func_start MOD12_02236370 +MOD12_02236370: ; 0x02236370 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236388 +MOD12_02236388: ; 0x02236388 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x1c + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + ldr r2, _022363EC ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #2] + strb r0, [r4, #0xe] + add r0, r5, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x14] + add r0, r5, #0 + add r0, #0xda + ldrh r0, [r0] + strh r0, [r4, #0x16] + add r0, r5, #0 + add r0, #0xdc + ldrh r0, [r0] + strh r0, [r4, #0x18] + ldrb r0, [r5, #3] + strb r0, [r4, #0x10] + ldr r0, _022363F0 ; =MOD12_022363F4 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022363EC: .word 0x00007530 +_022363F0: .word MOD12_022363F4 + + thumb_func_start MOD12_022363F4 +MOD12_022363F4: ; 0x022363F4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _02236502 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223640E: ; jump table + .short _02236420 - _0223640E - 2 ; case 0 + .short _0223645C - _0223640E - 2 ; case 1 + .short _0223646A - _0223640E - 2 ; case 2 + .short _02236472 - _0223640E - 2 ; case 3 + .short _02236496 - _0223640E - 2 ; case 4 + .short _022364AA - _0223640E - 2 ; case 5 + .short _022364B2 - _0223640E - 2 ; case 6 + .short _022364D6 - _0223640E - 2 ; case 7 + .short _022364E4 - _0223640E - 2 ; case 8 +_02236420: + ldrb r0, [r4, #0xd] + ldr r1, [r4] + lsl r0, r0, #1 + add r1, r1, r0 + ldr r0, _02236524 ; =0x00000242 + ldrsh r0, [r1, r0] + bl MOD12_022352C8 + add r3, r0, #0 + cmp r3, #0 + ble _0223644A + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x12 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + bl MOD12_022352F4 + b _02236452 +_0223644A: + mov r0, #2 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236452: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223645C: + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _02236520 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223646A: + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236472: + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _0223648E + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223648E: + mov r0, #5 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236496: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236520 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364AA: + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364B2: + ldr r0, [r4] + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + add r0, #0xc + bl MOD12_02233BE4 + add r3, r4, #0 + ldrb r1, [r4, #0xe] + ldrb r2, [r4, #0x10] + ldr r0, [r4] + add r3, #0xf + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364D6: + ldrb r1, [r4, #0xf] + cmp r1, #1 + bne _02236520 + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022364E4: + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #5 + bls _02236520 + ldr r0, [r4] + add r0, #0xc + bl MOD12_02233C74 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236502: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236520: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02236524: .word 0x00000242 + + thumb_func_start MOD12_02236528 +MOD12_02236528: ; 0x02236528 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236540 +MOD12_02236540: ; 0x02236540 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0x49 + mov r0, #0x15 + lsl r1, r1, #2 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x49 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r1, [r5] + mov r0, #0x2c + add r2, r1, #0 + mul r2, r0 + add r1, r5, r2 + ldrh r1, [r1, #0x10] + strh r1, [r4, #0xe] + add r1, r5, #0 + add r1, #0xe4 + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xe2 + strb r2, [r4, r1] + add r1, r5, #0 + add r1, #0xd8 + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xdc + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xda + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xde + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xdc + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe0 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe5 + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xea + strb r2, [r4, r1] + add r1, r5, #0 + add r1, #0xde + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe4 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe0 + ldrh r2, [r1] + add r1, r0, #0 + add r1, #0xe6 + strh r2, [r4, r1] + add r1, r5, #0 + add r1, #0xe2 + ldrh r1, [r1] + add r0, #0xe8 + mov r2, #0x1e + strh r1, [r4, r0] +_022365E6: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022365E6 + ldr r0, [r5] + add r1, r4, #0 + str r0, [r3] + ldr r0, _02236600 ; =MOD12_02236604 + mov r2, #5 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236600: .word MOD12_02236604 + + thumb_func_start MOD12_02236604 +MOD12_02236604: ; 0x02236604 + push {r4, r5, r6, r7, lr} + sub sp, #0x114 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r6, r0, #0 + add r2, r4, #0 + mov r5, #0x2c + add r0, r1, #0 + add r2, #0x24 + mul r0, r5 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xe + bls _02236622 + b _02236A70 +_02236622: + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223662E: ; jump table + .short _0223664C - _0223662E - 2 ; case 0 + .short _02236674 - _0223662E - 2 ; case 1 + .short _02236688 - _0223662E - 2 ; case 2 + .short _02236690 - _0223662E - 2 ; case 3 + .short _022366B6 - _0223662E - 2 ; case 4 + .short _022366CA - _0223662E - 2 ; case 5 + .short _022366D2 - _0223662E - 2 ; case 6 + .short _022366FA - _0223662E - 2 ; case 7 + .short _02236710 - _0223662E - 2 ; case 8 + .short _02236718 - _0223662E - 2 ; case 9 + .short _0223672C - _0223662E - 2 ; case 10 + .short _022369D6 - _0223662E - 2 ; case 11 + .short _02236A2C - _0223662E - 2 ; case 12 + .short _02236A4C - _0223662E - 2 ; case 13 + .short _02236A62 - _0223662E - 2 ; case 14 +_0223664C: + add r0, r5, #0 + add r0, #0xe2 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223666C + add r5, #0xdc + ldr r0, [r4] + add r2, r4, r5 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_0223666C: + mov r0, #2 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236674: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236704 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236688: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236690: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _022366AE + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366AE: + mov r0, #5 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366B6: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236704 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366CA: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366D2: + add r0, r5, #0 + add r0, #0xea + ldrb r1, [r4, r0] + cmp r1, #0 + beq _022366F2 + add r5, #0xdc + ldr r0, [r4] + add r2, r4, r5 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366F2: + mov r0, #8 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022366FA: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _02236706 +_02236704: + b _02236A8E +_02236706: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236710: + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236718: + ldr r0, [r4] + ldrh r2, [r4, #0xe] + add r5, #0xec + ldr r0, [r0] + add r3, r4, r5 + bl MOD12_02235B1C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223672C: + ldrb r0, [r4, #0xd] + add r5, r0, #1 + cmp r5, #4 + blt _02236736 + mov r5, #0 +_02236736: + add r0, sp, #0xbc + mov r1, #0 + mov r2, #0x58 + bl MI_CpuFill8 + add r0, sp, #0x2c + mov r1, #0 + mov r2, #0x90 + bl MI_CpuFill8 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r6, r0, #0 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x6f + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02068A80 + str r0, [sp, #0x20] + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x70 + bl FUN_020671BC + str r0, [sp, #0x1c] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl FUN_020671BC + str r0, [sp, #8] + ldr r0, [r4] + lsl r5, r5, #2 + ldr r0, [r0, #0xc] + mov r1, #5 + ldr r0, [r0, r5] + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x18] + ldr r0, [r4] + mov r1, #0x6f + ldr r0, [r0, #0xc] + mov r2, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #0x14] + ldr r0, [r4] + ldr r0, [r0, #0xc] + ldr r0, [r0, r5] + bl FUN_02068A80 + str r0, [sp, #0x10] + ldr r0, [r4] + mov r1, #0x70 + ldr r0, [r0, #0xc] + mov r2, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0xc] + add r2, r1, #0 + ldr r0, [r0, r5] + bl FUN_020671BC + str r0, [sp, #4] + mov r2, #0x47 + mov r0, #0 + add r1, sp, #0xbc + strb r0, [r1] + strb r0, [r1, #1] + lsl r2, r2, #2 + ldrh r3, [r4, r2] + mov r5, #1 + strh r3, [r1, #2] + str r5, [sp, #0xc0] + mov r3, #0xa + strh r3, [r1, #8] + add r3, r2, #3 + ldrb r3, [r4, r3] + add r2, r2, #4 + strh r3, [r1, #0xa] + ldrb r2, [r4, r2] + strh r2, [r1, #0xc] + str r0, [sp, #0xcc] + strh r0, [r1, #0x14] + strh r5, [r1, #0x16] + mov r2, #9 + str r2, [sp, #0x110] + lsl r2, r6, #0x10 + lsr r2, r2, #0x10 +_0223682A: + add r0, r0, #1 + strh r2, [r1, #0x18] + add r1, r1, #2 + cmp r0, #4 + blt _0223682A + ldr r0, [sp, #0x18] + add r1, sp, #0xbc + strh r0, [r1, #0x1a] + ldr r0, [r4] + mov r5, #0 + ldr r0, [r0, #0x30] + str r0, [sp, #0x30] + ldr r0, [r4] + ldr r0, [r0, #0x5c] + str r0, [sp, #0x34] + ldrb r0, [r4, #0xd] + ldr r1, [r4] + add r1, #0x64 + lsl r0, r0, #4 + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4] + add r1, sp, #0x2c + add r0, #0xa4 + str r0, [sp, #0x3c] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x28] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r2, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov ip, r0 + ldr r0, [sp, #0x1c] + add r3, r1, #0 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_0223687A: + mov r0, #0xff + strb r0, [r1, #0x1c] + ldr r0, [sp, #0x28] + add r6, r1, #0 + strh r0, [r2, #0x34] + ldr r0, [sp, #0x24] + add r6, #0x3c + strb r0, [r6] + add r6, r1, #0 + add r6, #0x40 + mov r0, ip + strb r0, [r6] + add r0, r1, #0 + add r0, #0x44 + strb r7, [r0] + ldr r0, [sp, #8] + add r5, r5, #1 + str r0, [r3, #0x48] + mov r0, #0 + str r0, [r3, #0x58] + add r1, r1, #1 + add r2, r2, #2 + add r3, r3, #4 + cmp r5, #4 + blt _0223687A + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, sp, #0x2c + str r0, [sp, #0x84] + mov r0, #0 + strb r0, [r2, #0x1c] + mov r0, #1 + ldr r1, [sp, #0x18] + strb r0, [r2, #0x1d] + strh r1, [r2, #0x36] + ldr r1, [sp, #0x14] + add r2, sp, #0x4c + strb r1, [r2, #0x1d] + ldr r1, [sp, #0x10] + add r2, sp, #0x6c + strb r1, [r2, #1] + ldr r1, [sp, #0xc] + strb r1, [r2, #5] + ldr r1, [sp, #4] + str r1, [sp, #0x78] + ldrb r1, [r4, #0xd] + ldr r2, [r4] + lsl r1, r1, #2 + add r1, r2, r1 + ldr r1, [r1, #0x14] + str r1, [sp, #0x4c] + ldrb r1, [r4, #0xd] + cmp r1, #0 + beq _022368EA + mov r0, #0 +_022368EA: + lsl r5, r0, #2 + ldr r0, [r4] + mov r2, #0x57 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r1, #8 + str r1, [sp, #0x94] + mov r1, #0x2d + str r1, [sp, #0x98] + mov r1, #1 + str r1, [sp, #0x9c] + mov r1, #0x1d + str r0, [sp, #0x50] + mov r0, #0 + str r1, [sp, #0xa0] + mov r1, #2 + str r0, [sp, #0x5c] + str r0, [sp, #0xa8] + mov r0, #3 + str r1, [sp, #0xa4] + str r0, [sp, #0xac] + ldr r0, [r4] + lsl r2, r2, #2 + ldr r0, [r0, #0x24] + add r3, sp, #0x2c + str r0, [sp, #0x2c] + ldr r0, [r4] + ldr r1, [r0] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, r2] + sub r2, #0x40 + str r0, [sp, #0xb0] + ldr r0, [r4] + ldrh r2, [r4, r2] + ldr r0, [r0, #0x2c] + add r1, sp, #0xbc + bl FUN_02212048 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02068E14 + add r6, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + ldr r0, _02236A94 ; =0xDFFBFF3F + cmp r1, r0 + beq _0223696A + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #6 + bl FUN_02007558 +_0223696A: + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0x25 + bl FUN_02007558 + ldrb r0, [r4, #0xd] + ldr r1, [r4] + mov r2, #0xd8 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_02007558 + ldrb r0, [r4, #0xd] + add r6, #0x70 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #0x25 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #0 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0x50 + bl FUN_02007558 + ldr r0, [r4] + mov r1, #1 + add r0, r0, r5 + ldr r0, [r0, #0x14] + mov r2, #0x2a + bl FUN_02007558 + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_022369D6: + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_02212384 + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_022123A0 + cmp r0, #0 + bne _02236A8E + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl FUN_022123B0 + add r1, r5, #0 + add r1, #0xf2 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _02236A22 + sub r0, r0, #1 + strb r0, [r4, r1] + add r0, r1, #1 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #1 + strb r2, [r4, r0] + sub r0, r1, #6 + ldr r2, [r4, r0] + ldr r0, _02236A98 ; =0x200400C0 + cmp r2, r0 + bne _02236A1A + ldr r2, _02236A94 ; =0xDFFBFF3F + sub r0, r1, #6 + str r2, [r4, r0] +_02236A1A: + mov r0, #0xa + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A22: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A2C: + add r5, #0xf0 + ldrh r0, [r4, r5] + cmp r0, #0x90 + beq _02236A38 + cmp r0, #0xa4 + bne _02236A42 +_02236A38: + ldr r0, [r4] + mov r2, #1 + add r1, r0, r1 + ldr r0, _02236A9C ; =0x00001652 + strb r2, [r1, r0] +_02236A42: + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A4C: + add r2, r4, #0 + ldr r0, [r4] + mov r1, #1 + add r2, #0x10 + bl MOD12_0223483C + ldrb r0, [r4, #0xc] + add sp, #0x114 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A62: + ldrb r1, [r4, #0x10] + cmp r1, #1 + bne _02236A8E + add r0, r0, #1 + add sp, #0x114 + strb r0, [r4, #0xc] + pop {r4, r5, r6, r7, pc} +_02236A70: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02236A8E: + add sp, #0x114 + pop {r4, r5, r6, r7, pc} + nop +_02236A94: .word 0xDFFBFF3F +_02236A98: .word 0x200400C0 +_02236A9C: .word 0x00001652 + + thumb_func_start MOD12_02236AA0 +MOD12_02236AA0: ; 0x02236AA0 + push {r3, lr} + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + mov r3, #0 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236AB8 +MOD12_02236AB8: ; 0x02236AB8 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x15 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + mov r2, #0x64 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r1, [r6, #0xc] + ldr r0, _02236AF8 ; =0x00000123 + ldrb r0, [r1, r0] + add r1, r4, #0 + strb r0, [r4, #0xd] + ldr r0, _02236AFC ; =MOD12_02236B00 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02236AF8: .word 0x00000123 +_02236AFC: .word MOD12_02236B00 + + thumb_func_start MOD12_02236B00 +MOD12_02236B00: ; 0x02236B00 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0xa + bls _02236B10 + b _02236C9E +_02236B10: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02236B1C: ; jump table + .short _02236B32 - _02236B1C - 2 ; case 0 + .short _02236B4C - _02236B1C - 2 ; case 1 + .short _02236BAA - _02236B1C - 2 ; case 2 + .short _02236BBA - _02236B1C - 2 ; case 3 + .short _02236BF4 - _02236B1C - 2 ; case 4 + .short _02236C08 - _02236B1C - 2 ; case 5 + .short _02236C0E - _02236B1C - 2 ; case 6 + .short _02236C42 - _02236B1C - 2 ; case 7 + .short _02236C52 - _02236B1C - 2 ; case 8 + .short _02236C76 - _02236B1C - 2 ; case 9 + .short _02236C98 - _02236B1C - 2 ; case 10 +_02236B32: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #1 + add r3, r2, #0 + bl MOD12_02231B4C + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236B4C: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #2 + add r3, r2, #0 + bl MOD12_02231B4C + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r2, r0, #1 + cmp r2, #4 + bne _02236B6E + mov r1, #3 + b _02236B70 +_02236B6E: + mov r1, #2 +_02236B70: + add r0, sp, #0 + strb r2, [r0, #0xa] + add r2, sp, #4 + ldr r0, [r4] + add r2, #2 + mov r3, #0 + bl MOD12_02234FB0 + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r0, r0, #1 + cmp r0, #4 + bne _02236BA0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _02236BA0 + ldr r0, _02236CEC ; =0x000006F6 + bl FUN_020054C8 + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] +_02236BA0: + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236BAA: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236BCE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236BBA: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231C80 + add r1, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02236BD0 +_02236BCE: + b _02236CE4 +_02236BD0: + ldr r0, [r4] + add r1, #0x36 + ldr r2, [r0, #0xc] + ldrb r0, [r4, #0xd] + lsl r0, r0, #2 + ldr r0, [r2, r0] + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + ldr r0, _02236CF0 ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236BF4: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231D48 + cmp r0, #0 + beq _02236CE4 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C08: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C0E: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + mov r2, #0 + ldr r0, [r1, r0] + mov r1, #3 + add r3, r2, #0 + bl MOD12_02231B4C + mov r0, #0x23 + ldr r1, [r4] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r2, sp, #0 + mov r3, #0 + add r1, r0, #1 + add r0, sp, #0 + strb r1, [r0, #4] + ldr r0, [r4] + mov r1, #1 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C42: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236CE4 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C52: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231C80 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02236CE4 + strh r0, [r4, #0x12] + ldr r0, _02236CF0 ; =0x000005DD + bl FUN_020054C8 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C76: + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + bl MOD12_02231D48 + cmp r0, #0 + beq _02236CE4 + ldrh r0, [r4, #0x12] + cmp r0, #3 + bne _02236C92 + mov r0, #1 + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4, r5, pc} +_02236C92: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C98: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236C9E: + ldr r0, [r4] + ldr r1, _02236CF4 ; =0x00000171 + ldr r2, [r0] + ldrb r1, [r2, r1] + cmp r1, #1 + bne _02236CB4 + mov r2, #0 + mov r1, #0x2e + add r3, r2, #0 + bl MOD12_02234FB0 +_02236CB4: + mov r0, #0xc3 + add r2, r4, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r2, #0x10 + mov r3, #4 + bl MOD12_02240FB0 + ldr r1, [r4] + ldr r0, _02236CE8 ; =0x0000081C + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD12_02231B4C + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236CE4: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02236CE8: .word 0x0000081C +_02236CEC: .word 0x000006F6 +_02236CF0: .word 0x000005DD +_02236CF4: .word 0x00000171 + + thumb_func_start MOD12_02236CF8 +MOD12_02236CF8: ; 0x02236CF8 + push {r4, r5} + ldr r0, [sp, #8] + lsl r2, r0, #2 + ldr r5, [r3, r2] + lsl r2, r0, #1 + ldrh r4, [r5] + add r3, r1, r2 + ldr r2, _02236D18 ; =0x00000236 + add r0, r1, r0 + strh r4, [r3, r2] + ldrh r3, [r5, #2] + add r2, #8 + strb r3, [r0, r2] + pop {r4, r5} + bx lr + nop +_02236D18: .word 0x00000236 + + thumb_func_start MOD12_02236D1C +MOD12_02236D1C: ; 0x02236D1C + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236D34 +MOD12_02236D34: ; 0x02236D34 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02236D38 +MOD12_02236D38: ; 0x02236D38 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236D50 +MOD12_02236D50: ; 0x02236D50 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02236D8E: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02236D8E + ldr r0, [r5] + ldr r2, _02236DA8 ; =0x00007530 + str r0, [r3] + ldr r0, _02236DAC ; =MOD12_02236DB0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236DA8: .word 0x00007530 +_02236DAC: .word MOD12_02236DB0 + + thumb_func_start MOD12_02236DB0 +MOD12_02236DB0: ; 0x02236DB0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r3, r4, #0 + add r2, r1, #0 + mov r0, #0x2c + ldrb r1, [r4, #0xc] + add r3, #0x24 + mul r2, r0 + add r2, r3, r2 + cmp r1, #4 + bhi _02236E48 + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02236DD6: ; jump table + .short _02236DE0 - _02236DD6 - 2 ; case 0 + .short _02236DF0 - _02236DD6 - 2 ; case 1 + .short _02236DF6 - _02236DD6 - 2 ; case 2 + .short _02236E2E - _02236DD6 - 2 ; case 3 + .short _02236E48 - _02236DD6 - 2 ; case 4 +_02236DE0: + mov r0, #0x1a + ldrsh r1, [r2, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236DF0: + add r0, r1, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236DF6: + add r0, #0xdc + mov r3, #0x18 + ldrsh r1, [r4, r0] + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _02236E28 + add r0, r3, #0 + add r0, #0xf0 + ldrsh r1, [r4, r0] + add r0, r3, #0 + add r0, #0xf0 + add r1, #0xa + strh r1, [r4, r0] + add r3, #0xf0 + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r3] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E28: + mov r0, #4 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E2E: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02236E66 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02236E48: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02236E66: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02236E68 +MOD12_02236E68: ; 0x02236E68 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02236E80 +MOD12_02236E80: ; 0x02236E80 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02236EBE: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02236EBE + ldr r0, [r5] + ldr r2, _02236ED8 ; =0x00007530 + str r0, [r3] + ldr r0, _02236EDC ; =MOD12_02236EE0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02236ED8: .word 0x00007530 +_02236EDC: .word MOD12_02236EE0 + + thumb_func_start MOD12_02236EE0 +MOD12_02236EE0: ; 0x02236EE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + str r0, [sp, #4] + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0x10 + bls _02236EFC + b _022370D4 +_02236EFC: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02236F08: ; jump table + .short _02236F2A - _02236F08 - 2 ; case 0 + .short _02236F3C - _02236F08 - 2 ; case 1 + .short _02236F62 - _02236F08 - 2 ; case 2 + .short _02236F76 - _02236F08 - 2 ; case 3 + .short _02236F7A - _02236F08 - 2 ; case 4 + .short _02236F80 - _02236F08 - 2 ; case 5 + .short _02236FB2 - _02236F08 - 2 ; case 6 + .short _02236FD0 - _02236F08 - 2 ; case 7 + .short _02236FD4 - _02236F08 - 2 ; case 8 + .short _02237000 - _02236F08 - 2 ; case 9 + .short _02237052 - _02236F08 - 2 ; case 10 + .short _0223706E - _02236F08 - 2 ; case 11 + .short _02237072 - _02236F08 - 2 ; case 12 + .short _02237078 - _02236F08 - 2 ; case 13 + .short _022370C8 - _02236F08 - 2 ; case 14 + .short _022370CE - _02236F08 - 2 ; case 15 + .short _022370D4 - _02236F08 - 2 ; case 16 +_02236F2A: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F3C: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02236F5A + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F5A: + mov r0, #3 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F62: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02236FC0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236F76: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236F7A: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236F80: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02236FAA + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FAA: + mov r0, #7 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FB2: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + bgt _02236FC2 +_02236FC0: + b _022370F2 +_02236FC2: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FD0: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02236FD4: + ldr r0, [r3, #0x28] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02236FF8 + ldrb r0, [r3, #3] + add sp, #8 + add r1, r4, r0 + mov r0, #0xe4 + ldrsb r1, [r1, r0] + add r0, #0x26 + strh r1, [r4, r0] + mov r0, #0 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02236FF8: + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237000: + mov r0, #0x10 + ldrsb r0, [r4, r0] + mov r6, #0 + add r5, r6, #0 + add r0, r0, #1 + strb r0, [r4, #0x10] + mov r7, #0xe7 +_0223700E: + mov r2, #0x10 + ldrsb r3, [r4, r2] + add r1, r4, r5 + mov r0, #0xe4 + mov r2, #0xa + ldrsb r0, [r1, r0] + mul r2, r3 + sub r2, r0, r2 + ldrsb r0, [r1, r7] + cmp r0, r2 + bgt _02237036 + ldr r0, [r4] + add r1, r5, #0 + add r0, #0xc + add r6, r6, #1 + bl MOD12_02234628 + ldr r0, _022370F8 ; =0x000006DF + bl FUN_020054C8 +_02237036: + add r5, r5, #1 + cmp r5, #3 + blt _0223700E + cmp r6, #0 + ble _0223704A + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223704A: + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237052: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _022370F2 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223706E: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237072: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237078: + add r6, r4, #0 + mov r5, #0 + add r6, #0x4c +_0223707E: + ldr r2, [r4] + ldr r0, _022370FC ; =0x00000231 + add r1, r2, r5 + ldrb r1, [r1, r0] + mov r0, #0x2c + add r7, r1, #0 + mul r7, r0 + ldr r0, [r6, r7] + lsl r1, r0, #0x1a + lsl r3, r0, #0x16 + lsr r1, r1, #0x1e + lsr r3, r3, #0x1e + cmp r1, r3 + bne _022370A6 + lsl r1, r0, #0x18 + lsl r0, r0, #0x14 + lsr r1, r1, #0x1e + lsr r0, r0, #0x1e + cmp r1, r0 + beq _022370BC +_022370A6: + add r2, #0xc + add r0, r2, #0 + ldr r2, [r6, r7] + add r1, r5, #0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + bl MOD12_02235200 + ldr r0, _02237100 ; =0x000006E2 + bl FUN_020054C8 +_022370BC: + add r5, r5, #1 + cmp r5, #4 + blt _0223707E + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370C8: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370CE: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022370D4: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_0200CAB4 +_022370F2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022370F8: .word 0x000006DF +_022370FC: .word 0x00000231 +_02237100: .word 0x000006E2 + + thumb_func_start MOD12_02237104 +MOD12_02237104: ; 0x02237104 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_0223711C +MOD12_0223711C: ; 0x0223711C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_0223715A: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223715A + ldr r0, [r5] + ldr r2, _02237174 ; =0x00007530 + str r0, [r3] + ldr r0, _02237178 ; =MOD12_0223717C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237174: .word 0x00007530 +_02237178: .word MOD12_0223717C + + thumb_func_start MOD12_0223717C +MOD12_0223717C: ; 0x0223717C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _0223724C + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022371A0: ; jump table + .short _022371B2 - _022371A0 - 2 ; case 0 + .short _022371C2 - _022371A0 - 2 ; case 1 + .short _022371E4 - _022371A0 - 2 ; case 2 + .short _022371F6 - _022371A0 - 2 ; case 3 + .short _022371FA - _022371A0 - 2 ; case 4 + .short _02237200 - _022371A0 - 2 ; case 5 + .short _0223722E - _022371A0 - 2 ; case 6 + .short _02237248 - _022371A0 - 2 ; case 7 + .short _0223724C - _022371A0 - 2 ; case 8 +_022371B2: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371C2: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _022371DE + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371DE: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371E4: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _0223726A + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_022371F6: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022371FA: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237200: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237228 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237228: + mov r0, #7 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223722E: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0223726A + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237248: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223724C: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223726A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223726C +MOD12_0223726C: ; 0x0223726C + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237284 +MOD12_02237284: ; 0x02237284 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_022372C2: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022372C2 + ldr r0, [r5] + ldr r2, _022372DC ; =0x00007530 + str r0, [r3] + ldr r0, _022372E0 ; =MOD12_022372E4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_022372DC: .word 0x00007530 +_022372E0: .word MOD12_022372E4 + + thumb_func_start MOD12_022372E4 +MOD12_022372E4: ; 0x022372E4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r6, r0, #0 + add r3, r4, #0 + add r2, r1, #0 + mov r0, #0x2c + ldrb r1, [r4, #0xc] + add r3, #0x24 + mul r2, r0 + add r5, r3, r2 + cmp r1, #0x19 + bls _02237302 + b _02237624 +_02237302: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223730E: ; jump table + .short _02237342 - _0223730E - 2 ; case 0 + .short _02237358 - _0223730E - 2 ; case 1 + .short _0223739C - _0223730E - 2 ; case 2 + .short _022373AC - _0223730E - 2 ; case 3 + .short _022373B0 - _0223730E - 2 ; case 4 + .short _022373D8 - _0223730E - 2 ; case 5 + .short _022373EC - _0223730E - 2 ; case 6 + .short _022373F0 - _0223730E - 2 ; case 7 + .short _02237424 - _0223730E - 2 ; case 8 + .short _02237442 - _0223730E - 2 ; case 9 + .short _02237446 - _0223730E - 2 ; case 10 + .short _0223744C - _0223730E - 2 ; case 11 + .short _022374B8 - _0223730E - 2 ; case 12 + .short _022374D0 - _0223730E - 2 ; case 13 + .short _022374EA - _0223730E - 2 ; case 14 + .short _0223750A - _0223730E - 2 ; case 15 + .short _02237532 - _0223730E - 2 ; case 16 + .short _02237548 - _0223730E - 2 ; case 17 + .short _0223754C - _0223730E - 2 ; case 18 + .short _02237578 - _0223730E - 2 ; case 19 + .short _02237586 - _0223730E - 2 ; case 20 + .short _0223758A - _0223730E - 2 ; case 21 + .short _0223759C - _0223730E - 2 ; case 22 + .short _022375E0 - _0223730E - 2 ; case 23 + .short _022375FC - _0223730E - 2 ; case 24 + .short _02237624 - _0223730E - 2 ; case 25 +_02237342: + ldrb r0, [r5, #3] + add sp, #8 + add r1, r4, r0 + mov r0, #0xe4 + ldrsb r1, [r1, r0] + add r0, #0x26 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237358: + ldrb r1, [r5, #3] + mov r0, #0xe7 + add r3, r4, r1 + ldrsb r2, [r3, r0] + mov r0, #0xe4 + ldrsb r0, [r3, r0] + cmp r2, r0 + ble _02237394 + cmp r2, #0x32 + blt _02237370 + mov r6, #3 + b _02237372 +_02237370: + mov r6, #2 +_02237372: + ldr r0, [r4] + add r2, r6, #0 + add r0, #0xc + bl MOD12_02233BE4 + ldr r3, _0223764C ; =0x0000010E + ldrb r1, [r5, #3] + ldr r0, [r4] + add r2, r6, #0 + add r3, r4, r3 + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237394: + mov r0, #3 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223739C: + add r0, #0xe2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _02237432 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373AC: + add r0, r1, #1 + strb r0, [r4, #0xc] +_022373B0: + add r0, r4, #0 + add r0, #0xf8 + ldrb r1, [r0] + cmp r1, #0 + beq _022373D0 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xec + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373D0: + mov r0, #6 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373D8: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237432 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022373EC: + add r0, r1, #1 + strb r0, [r4, #0xc] +_022373F0: + ldrb r0, [r5, #3] + add r2, r4, r0 + mov r0, #0xe7 + ldrsb r1, [r2, r0] + mov r0, #0xe4 + ldrsb r0, [r2, r0] + cmp r1, r0 + ble _02237416 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r0, #0x11 + str r0, [sp, #4] + ldr r0, [r4] + mov r2, #0 + mov r3, #0x46 + bl MOD12_022352F4 + b _0223741A +_02237416: + mov r0, #1 + strb r0, [r4, #0x11] +_0223741A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237424: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #8 + bgt _02237434 +_02237432: + b _02237648 +_02237434: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237442: + add r0, r1, #1 + strb r0, [r4, #0xc] +_02237446: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223744C: + ldrb r0, [r5, #3] + add r3, r4, r0 + mov r0, #0xe7 + ldrsb r1, [r3, r0] + add r0, #0x23 + ldrsh r0, [r4, r0] + cmp r0, r1 + beq _022374B0 + mov r2, #0xe4 + ldrsb r0, [r3, r2] + sub r0, r1, r0 + cmp r0, #0 + ble _02237484 + add r0, r2, #0 + add r0, #0x26 + ldrsh r1, [r4, r0] + add r0, r2, #0 + add r0, #0x26 + add r1, #0xa + strh r1, [r4, r0] + add r2, #0x26 + ldr r0, [r4] + ldrb r1, [r5, #3] + ldrsh r2, [r4, r2] + add r0, #0xc + bl MOD12_02234628 + b _022374A6 +_02237484: + add r0, r2, #0 + add r0, #0x26 + ldrsh r1, [r4, r0] + add r0, r2, #0 + add r0, #0x26 + sub r1, #0xa + strh r1, [r4, r0] + add r2, #0x26 + ldr r0, [r4] + ldrb r1, [r5, #3] + ldrsh r2, [r4, r2] + add r0, #0xc + bl MOD12_02234628 + ldr r0, _02237650 ; =0x000006DF + bl FUN_020054C8 +_022374A6: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374B0: + mov r0, #0xe + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374B8: + ldr r0, [r4] + ldrb r1, [r5, #3] + add r0, #0xc + bl MOD12_022345FC + cmp r0, #1 + bne _0223753C + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374D0: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _0223753C + mov r0, #0 + strb r0, [r4, #0xf] + mov r0, #0xb + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022374EA: + add r0, #0xde + ldrsh r0, [r4, r0] + cmp r0, #0x32 + blt _02237500 + ldrb r1, [r5, #3] + ldr r0, [r4] + bl MOD12_022357B0 + mov r1, #0x11 + lsl r1, r1, #4 + str r0, [r4, r1] +_02237500: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223750A: + add r0, r4, #0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #0 + beq _0223752A + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xf2 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223752A: + mov r0, #0x11 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237532: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _0223753E +_0223753C: + b _02237648 +_0223753E: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237548: + add r0, r1, #1 + strb r0, [r4, #0xc] +_0223754C: + ldr r0, _02237654 ; =0x0000010A + ldrsh r0, [r4, r0] + cmp r0, #0x32 + blt _02237570 + add r0, r4, #0 + add r0, #0x12 + str r0, [sp] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrb r3, [r5, #3] + ldr r0, [r4] + bl MOD12_02235824 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237570: + mov r0, #0x14 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237578: + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _02237648 + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237586: + add r0, r1, #1 + strb r0, [r4, #0xc] +_0223758A: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xee + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_0223759C: + add r0, #0xdc + mov r3, #0x18 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r3] + cmp r1, r0 + bge _022375D0 + add r0, r3, #0 + add r0, #0xf0 + ldrsh r1, [r4, r0] + add r0, r3, #0 + add r0, #0xf0 + add r1, #0xa + strh r1, [r4, r0] + add r3, #0xf0 + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r3] + add r0, #0xc + bl MOD12_02234088 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375D0: + ldr r0, [r4] + add r0, #0xc + bl MOD12_02233C74 + mov r0, #0x18 + add sp, #8 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375E0: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237648 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_022375FC: + add r1, r0, #0 + add r1, #0xde + ldrsh r1, [r4, r1] + cmp r1, #0x32 + blt _0223761A + add r0, #0xe4 + ldr r0, [r4, r0] + bl MOD12_022357E4 + ldr r0, [r4] + ldrb r1, [r5, #3] + add r0, #0xc + mov r2, #0 + bl MOD12_02234628 +_0223761A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r4, r5, r6, pc} +_02237624: + ldrb r0, [r4, #0x11] + cmp r0, #1 + bne _02237648 + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_02237648: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223764C: .word 0x0000010E +_02237650: .word 0x000006DF +_02237654: .word 0x0000010A + + thumb_func_start MOD12_02237658 +MOD12_02237658: ; 0x02237658 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237670 +MOD12_02237670: ; 0x02237670 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_022376AE: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022376AE + ldr r0, [r5] + ldr r2, _022376C8 ; =0x00007530 + str r0, [r3] + ldr r0, _022376CC ; =MOD12_022376D0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_022376C8: .word 0x00007530 +_022376CC: .word MOD12_022376D0 + + thumb_func_start MOD12_022376D0 +MOD12_022376D0: ; 0x022376D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #8 + bhi _022377A0 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022376F4: ; jump table + .short _02237706 - _022376F4 - 2 ; case 0 + .short _02237716 - _022376F4 - 2 ; case 1 + .short _02237738 - _022376F4 - 2 ; case 2 + .short _0223774A - _022376F4 - 2 ; case 3 + .short _0223774E - _022376F4 - 2 ; case 4 + .short _02237754 - _022376F4 - 2 ; case 5 + .short _02237782 - _022376F4 - 2 ; case 6 + .short _0223779C - _022376F4 - 2 ; case 7 + .short _022377A0 - _022376F4 - 2 ; case 8 +_02237706: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237716: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02237732 + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237732: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237738: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _022377BE + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223774A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223774E: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237754: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237776 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + b _0223777A +_02237776: + mov r0, #7 + strb r0, [r4, #0xc] +_0223777A: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237782: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _022377BE + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223779C: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022377A0: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022377BE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022377C0 +MOD12_022377C0: ; 0x022377C0 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_022377D8 +MOD12_022377D8: ; 0x022377D8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xf7 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x43 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x10 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] +_0223780E: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223780E + ldr r0, [r6] + ldr r2, _02237828 ; =0x00007530 + str r0, [r3] + ldr r0, _0223782C ; =MOD12_02237830 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237828: .word 0x00007530 +_0223782C: .word MOD12_02237830 + + thumb_func_start MOD12_02237830 +MOD12_02237830: ; 0x02237830 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + ldr r0, _02237A8C ; =0x00000106 + add r4, r1, #0 + ldrb r0, [r4, r0] + mov r7, #0 + add r0, r4, r0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #4 + beq _0223786C + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x20 + mul r0, r1 + add r5, r2, r0 + ldr r3, [r4] + ldr r6, _02237A90 ; =0x00000231 + add r2, r7, #0 +_02237858: + ldrb r0, [r3, r6] + cmp r1, r0 + bne _02237862 + add r7, r2, #0 + b _0223786E +_02237862: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #4 + blt _02237858 + b _0223786E +_0223786C: + add r5, r7, #0 +_0223786E: + ldrb r0, [r4, #0xc] + cmp r0, #0x11 + bls _02237876 + b _02237A6A +_02237876: + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02237882: ; jump table + .short _022378A6 - _02237882 - 2 ; case 0 + .short _022378B4 - _02237882 - 2 ; case 1 + .short _02237908 - _02237882 - 2 ; case 2 + .short _02237918 - _02237882 - 2 ; case 3 + .short _0223791C - _02237882 - 2 ; case 4 + .short _02237944 - _02237882 - 2 ; case 5 + .short _0223795A - _02237882 - 2 ; case 6 + .short _0223795E - _02237882 - 2 ; case 7 + .short _02237988 - _02237882 - 2 ; case 8 + .short _0223799C - _02237882 - 2 ; case 9 + .short _022379A0 - _02237882 - 2 ; case 10 + .short _022379C8 - _02237882 - 2 ; case 11 + .short _022379DC - _02237882 - 2 ; case 12 + .short _022379E0 - _02237882 - 2 ; case 13 + .short _022379F2 - _02237882 - 2 ; case 14 + .short _02237A24 - _02237882 - 2 ; case 15 + .short _02237A40 - _02237882 - 2 ; case 16 + .short _02237A6A - _02237882 - 2 ; case 17 +_022378A6: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xea + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_022378B4: + ldrb r0, [r5, #9] + cmp r0, #0 + bne _022378C6 + mov r0, #0x6f + lsl r0, r0, #4 + mov r6, #4 + bl FUN_020054C8 + b _022378F0 +_022378C6: + cmp r0, #1 + bne _022378D4 + ldr r0, _02237A94 ; =0x000006EF + mov r6, #5 + bl FUN_020054C8 + b _022378F0 +_022378D4: + cmp r0, #2 + bne _022378E2 + ldr r0, _02237A98 ; =0x000006EE + mov r6, #6 + bl FUN_020054C8 + b _022378F0 +_022378E2: + mov r0, #3 + strb r0, [r4, #0xc] + ldr r0, _02237A9C ; =0x000006DF + bl FUN_020054C8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022378F0: + ldr r3, _02237AA0 ; =0x00000107 + ldrb r1, [r5, #3] + ldr r0, [r4] + add r2, r6, #0 + add r3, r4, r3 + bl MOD12_02233C94 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237908: + ldr r1, _02237AA0 ; =0x00000107 + ldrb r1, [r4, r1] + cmp r1, #1 + bne _0223794E + add r0, r0, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237918: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223791C: + ldrb r1, [r5, #0x12] + cmp r1, #0 + beq _0223793C + mov r0, #0 + str r0, [sp] + ldrb r2, [r5, #0x13] + add r5, #0xc + ldr r0, [r4] + add r3, r5, #0 + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223793C: + mov r0, #6 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237944: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + beq _02237950 +_0223794E: + b _02237A88 +_02237950: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223795A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223795E: + add r0, r4, #0 + add r0, #0xf4 + ldrb r1, [r0] + cmp r1, #0 + beq _02237980 + add r2, r4, #0 + add r3, r4, #0 + ldr r0, [r4] + add r2, #0xe8 + add r3, #0xf8 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237980: + mov r0, #9 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237988: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237A88 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_0223799C: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022379A0: + add r0, r4, #0 + add r0, #0xf5 + ldrb r1, [r0] + cmp r1, #0 + beq _022379C0 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xee + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379C0: + mov r0, #0xc + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379C8: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237A88 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379DC: + add r0, r0, #1 + strb r0, [r4, #0xc] +_022379E0: + mov r0, #0x1a + ldrsh r1, [r5, r0] + add r0, #0xea + add sp, #8 + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022379F2: + mov r3, #0x41 + lsl r3, r3, #2 + mov r2, #0x18 + ldrsh r0, [r4, r3] + ldrsh r2, [r5, r2] + cmp r0, r2 + bge _02237A12 + add r0, #0xa + strh r0, [r4, r3] + ldr r0, [r4] + ldrsh r3, [r4, r3] + add r0, #0xc + add r2, r7, #0 + bl MOD12_02234088 + b _02237A1A +_02237A12: + mov r0, #0x10 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A1A: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A24: + mov r0, #0xd + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xd] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237A88 + mov r0, #0 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xc] + add sp, #8 + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A40: + ldr r0, _02237A8C ; =0x00000106 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #4 + bhs _02237A60 + add r0, r4, r0 + add r0, #0xf9 + ldrb r0, [r0] + cmp r0, #4 + beq _02237A60 + mov r0, #0xd + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A60: + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02237A6A: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_0200CAB4 +_02237A88: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237A8C: .word 0x00000106 +_02237A90: .word 0x00000231 +_02237A94: .word 0x000006EF +_02237A98: .word 0x000006EE +_02237A9C: .word 0x000006DF +_02237AA0: .word 0x00000107 + + thumb_func_start MOD12_02237AA4 +MOD12_02237AA4: ; 0x02237AA4 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237ABC +MOD12_02237ABC: ; 0x02237ABC + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r6] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldrb r0, [r5] + strb r0, [r4, #0xd] + ldrb r0, [r5, #1] + strb r0, [r4, #0xe] +_02237AFA: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02237AFA + ldr r0, [r5] + ldr r2, _02237B14 ; =0x00007530 + str r0, [r3] + ldr r0, _02237B18 ; =MOD12_02237B1C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237B14: .word 0x00007530 +_02237B18: .word MOD12_02237B1C + + thumb_func_start MOD12_02237B1C +MOD12_02237B1C: ; 0x02237B1C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4, #0xd] + add r5, r0, #0 + add r2, r4, #0 + mov r0, #0x2c + add r2, #0x24 + mul r0, r1 + add r3, r2, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xe + bls _02237B36 + b _02237C6E +_02237B36: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02237B42: ; jump table + .short _02237B60 - _02237B42 - 2 ; case 0 + .short _02237B70 - _02237B42 - 2 ; case 1 + .short _02237B92 - _02237B42 - 2 ; case 2 + .short _02237BA4 - _02237B42 - 2 ; case 3 + .short _02237BA8 - _02237B42 - 2 ; case 4 + .short _02237BCC - _02237B42 - 2 ; case 5 + .short _02237BDE - _02237B42 - 2 ; case 6 + .short _02237BE2 - _02237B42 - 2 ; case 7 + .short _02237C06 - _02237B42 - 2 ; case 8 + .short _02237C18 - _02237B42 - 2 ; case 9 + .short _02237C1C - _02237B42 - 2 ; case 10 + .short _02237C22 - _02237B42 - 2 ; case 11 + .short _02237C50 - _02237B42 - 2 ; case 12 + .short _02237C6A - _02237B42 - 2 ; case 13 + .short _02237C6E - _02237B42 - 2 ; case 14 +_02237B60: + mov r0, #0x1a + ldrsh r1, [r3, r0] + add r0, #0xee + strh r1, [r4, r0] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B70: + ldrb r1, [r3, #0x12] + cmp r1, #0 + beq _02237B8C + mov r0, #0 + str r0, [sp] + ldrb r2, [r3, #0x13] + ldr r0, [r4] + add r3, #0xc + bl MOD12_02234FF0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B8C: + mov r0, #3 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237B92: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BA4: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237BA8: + add r0, r4, #0 + add r0, #0xf8 + ldrb r1, [r0] + cmp r1, #0 + beq _02237BC6 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xec + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BC6: + mov r0, #6 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BCC: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237BDE: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237BE2: + add r0, r4, #0 + add r0, #0xf9 + ldrb r1, [r0] + cmp r1, #0 + beq _02237C00 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0xf2 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C00: + mov r0, #9 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C06: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237C8C + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C18: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C1C: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C22: + mov r5, #0x42 + lsl r5, r5, #2 + mov r0, #0x18 + ldrsh r1, [r4, r5] + ldrsh r0, [r3, r0] + cmp r1, r0 + bge _02237C44 + add r1, #0xa + strh r1, [r4, r5] + ldr r0, [r4] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrsh r3, [r4, r5] + add r0, #0xc + bl MOD12_02234088 + b _02237C48 +_02237C44: + mov r0, #0xd + strb r0, [r4, #0xc] +_02237C48: + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C50: + mov r0, #0xf + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #0xf] + ldrsb r0, [r4, r0] + cmp r0, #2 + ble _02237C8C + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237C6A: + add r0, r0, #1 + strb r0, [r4, #0xc] +_02237C6E: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237C8C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02237C90 +MOD12_02237C90: ; 0x02237C90 + push {r3, lr} + mov r0, #0xf4 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237CA8 +MOD12_02237CA8: ; 0x02237CA8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x15 + add r7, r1, #0 + add r1, r0, #0 + add r1, #0xff + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x45 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x14 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #0x1e + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r1, [r7, #0xc] + ldr r0, _02237D04 ; =0x00000123 + ldrb r0, [r1, r0] + strb r0, [r4, #0xd] + ldrb r0, [r6, #1] + strb r0, [r4, #0xe] +_02237CEA: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02237CEA + ldr r0, [r6] + ldr r2, _02237D08 ; =0x00007530 + str r0, [r3] + ldr r0, _02237D0C ; =MOD12_02237D10 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237D04: .word 0x00000123 +_02237D08: .word 0x00007530 +_02237D0C: .word MOD12_02237D10 + + thumb_func_start MOD12_02237D10 +MOD12_02237D10: ; 0x02237D10 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xd] + add r2, r4, #0 + mov r1, #0x2c + add r2, #0x24 + mul r1, r0 + add r2, r2, r1 + ldrb r1, [r4, #0xc] + cmp r1, #0 + beq _02237D34 + cmp r1, #1 + beq _02237D54 + cmp r1, #2 + beq _02237D68 + b _02237D70 +_02237D34: + mov r1, #0x18 + ldrsh r1, [r2, r1] + add r2, sp, #0 + bl MOD12_022352A0 + add r1, r0, #0 + ldr r0, [r4] + add r2, sp, #0 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D54: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02237D8E + ldrb r0, [r4, #0xc] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D68: + add r0, r1, #1 + add sp, #8 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_02237D70: + mov r0, #0xc3 + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237D8E: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02237D94 +MOD12_02237D94: ; 0x02237D94 + push {r3, lr} + mov r1, #0xf4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02237DA8 +MOD12_02237DA8: ; 0x02237DA8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x15 + mov r1, #0x28 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x28 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02237DE4 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02237DE8 ; =MOD12_02237DEC + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02237DE4: .word 0x00007530 +_02237DE8: .word MOD12_02237DEC + + thumb_func_start MOD12_02237DEC +MOD12_02237DEC: ; 0x02237DEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #3 + bhi _02237EC2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02237E0A: ; jump table + .short _02237E12 - _02237E0A - 2 ; case 0 + .short _02237E36 - _02237E0A - 2 ; case 1 + .short _02237E78 - _02237E0A - 2 ; case 2 + .short _02237EC2 - _02237E0A - 2 ; case 3 +_02237E12: + mov r1, #0 + add r0, r4, #0 + str r1, [sp] + add r0, #0x27 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #0x46 + bl MOD12_022352F4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237E36: + add r7, r4, #0 + mov r5, #0 + add r6, r4, #0 + add r7, #0x23 +_02237E3E: + ldr r0, [r4] + ldr r1, _02237EE8 ; =0x00000231 + add r2, r0, r5 + ldrb r1, [r2, r1] + bl MOD12_022335E4 + str r0, [r6, #0x10] + ldr r1, [r4] + add r3, r7, r5 + str r0, [sp] + add r0, r1, #0 + add r2, r1, r5 + ldr r1, _02237EE8 ; =0x00000231 + ldrb r1, [r2, r1] + add r2, r5, #0 + bl MOD12_02235470 + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #4 + blt _02237E3E + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237E78: + mov r7, #0 + add r6, r7, #0 + add r5, r4, #0 +_02237E7E: + add r0, r4, r6 + add r0, #0x23 + ldrb r0, [r0] + cmp r0, #0 + bne _02237E94 + ldr r0, [r5, #0x10] + bl MOD12_02233644 + cmp r0, #0 + bne _02237E94 + add r7, r7, #1 +_02237E94: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02237E7E + cmp r7, #4 + bne _02237EE4 + mov r6, #0 + add r5, r4, #0 +_02237EA4: + ldr r0, [r5, #0x10] + bl MOD12_0223361C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02237EA4 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r4, #0x20 + add sp, #8 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02237EC2: + add r0, r4, #0 + add r0, #0x27 + ldrb r0, [r0] + cmp r0, #1 + bne _02237EE4 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02237EE4: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237EE8: .word 0x00000231 + + thumb_func_start MOD12_02237EEC +MOD12_02237EEC: ; 0x02237EEC + push {r3, lr} + mov r0, #0xf8 + str r0, [sp] + mov r0, #0xc3 + lsl r0, r0, #4 + lsl r2, r2, #0x10 + add r0, r1, r0 + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + + thumb_func_start MOD12_02237F04 +MOD12_02237F04: ; 0x02237F04 + push {r4, r5, r6, lr} + mov r0, #0x23 + add r5, r1, #0 + lsl r0, r0, #4 + add r4, r2, #0 + add r6, r5, r0 + mov r2, #0x1f +_02237F12: + ldmia r3!, {r0, r1} + stmia r6!, {r0, r1} + sub r2, r2, #1 + bne _02237F12 + add r0, r5, #0 + add r0, #0xc + bl MOD12_02234044 + add r0, r5, #0 + add r0, #0xc + bl MOD12_0223524C + add r0, r5, #0 + bl MOD12_0223513C + add r0, r5, #0 + bl MOD12_022335B0 + mov r0, #0xc3 + lsl r0, r0, #4 + mov r2, #0 + add r0, r5, r0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02237F48 +MOD12_02237F48: ; 0x02237F48 + push {r3, lr} + mov r1, #0xf4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02237F5C +MOD12_02237F5C: ; 0x02237F5C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x15 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02237FCC ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + add r0, r5, #0 + add r0, #0xd8 + ldrh r0, [r0] + strh r0, [r4, #0x14] + add r0, r5, #0 + add r0, #0xda + ldrh r0, [r0] + strh r0, [r4, #0x16] + add r0, r5, #0 + add r0, #0xdc + ldrh r0, [r0] + strh r0, [r4, #0x18] + add r0, r5, #0 + add r0, #0xe4 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0xe7 + ldrb r0, [r0] + add r5, #0xe6 + strb r0, [r4, #0x1c] + ldrb r0, [r5] + strb r0, [r4, #0x1b] + ldr r0, _02237FD0 ; =MOD12_02237FD4 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02237FCC: .word 0x00007530 +_02237FD0: .word MOD12_02237FD4 + + thumb_func_start MOD12_02237FD4 +MOD12_02237FD4: ; 0x02237FD4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02237FEA + cmp r0, #1 + beq _0223800A + cmp r0, #2 + beq _0223801C + b _02238040 +_02237FEA: + ldrb r1, [r4, #0x1a] + cmp r1, #0 + beq _02238004 + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + mov r3, #0 + bl MOD12_02234FB0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238004: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223800A: + ldr r0, [r4] + bl MOD12_02235020 + cmp r0, #0 + bne _02238058 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223801C: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02238030 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238030: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _02238058 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02238040: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02238058: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223805C +MOD12_0223805C: ; 0x0223805C + strb r1, [r0, #0x12] + ldr r1, _02238088 ; =0x00007530 + strb r2, [r0, #0x13] + cmp r3, r1 + beq _02238068 + strb r3, [r0, #0xc] +_02238068: + ldr r2, [sp] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _02238072 + strb r2, [r0, #0xd] +_02238072: + ldr r2, [sp, #4] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _0223807C + strh r2, [r0, #0xe] +_0223807C: + ldr r2, [sp, #8] + ldr r1, _02238088 ; =0x00007530 + cmp r2, r1 + beq _02238086 + strb r2, [r0, #0x10] +_02238086: + bx lr + .align 2, 0 +_02238088: .word 0x00007530 + + thumb_func_start MOD12_0223808C +MOD12_0223808C: ; 0x0223808C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x26 + add r5, r1, #0 + lsl r0, r0, #4 + add r4, r6, r0 + add r3, r5, #0 + mov r2, #0x19 +_0223809C: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223809C + add r0, r5, #0 + bl MOD12_02238688 + add r0, r5, #0 + mov r1, #0 + mov r2, #0xb0 + bl MI_CpuFill8 + mov r4, #0 + add r7, r6, #0 +_022380B8: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0xc + add r2, r4, #0 + bl MOD12_02235274 + ldr r0, _022380F4 ; =0x0000023E + add r1, r6, r4 + ldrb r0, [r1, r0] + mov r1, #0xa + strb r0, [r5, #3] + ldr r0, _022380F8 ; =0x00000236 + ldrh r0, [r7, r0] + strh r0, [r5] + bl FUN_0206AB18 + strb r0, [r5, #2] + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r6, r0 + add r1, r4, #0 + bl MOD12_02235C18 + strb r0, [r5, #9] + add r4, r4, #1 + add r5, #0x2c + add r7, r7, #2 + cmp r4, #4 + blt _022380B8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022380F4: .word 0x0000023E +_022380F8: .word 0x00000236 + + thumb_func_start MOD12_022380FC +MOD12_022380FC: ; 0x022380FC + push {r4, r5, r6, r7} + add r3, r1, #0 + ldr r5, _02238154 ; =0xFFFFFCFF + ldr r6, _02238158 ; =0xFFFFF3FF + add r4, r0, #0 + mov r1, #0 + add r2, r3, #0 +_0223810A: + ldr r7, [r2, #0x28] + add r1, r1, #1 + add r0, r7, #0 + lsl r7, r7, #0x1a + lsr r7, r7, #0x1e + lsl r7, r7, #0x1e + and r0, r5 + lsr r7, r7, #0x16 + orr r7, r0 + add r0, r7, #0 + lsl r7, r7, #0x18 + lsr r7, r7, #0x1e + lsl r7, r7, #0x1e + and r0, r6 + lsr r7, r7, #0x14 + orr r0, r7 + str r0, [r2, #0x28] + add r2, #0x2c + cmp r1, #4 + blt _0223810A + ldr r1, _0223815C ; =0x00000252 + mov r0, #0 + add r5, r1, #0 +_02238138: + add r7, r4, r0 + ldrsb r6, [r7, r1] + add r2, r3, r0 + add r2, #0xc0 + strb r6, [r2] + add r2, r3, r0 + ldrsb r6, [r7, r5] + add r2, #0xc3 + add r0, r0, #1 + strb r6, [r2] + cmp r0, #3 + blt _02238138 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02238154: .word 0xFFFFFCFF +_02238158: .word 0xFFFFF3FF +_0223815C: .word 0x00000252 + + thumb_func_start MOD12_02238160 +MOD12_02238160: ; 0x02238160 + push {r4, r5, r6, r7} + mov r5, #0 + ldr r2, _02238188 ; =0x00000252 + add r3, r5, #0 +_02238168: + add r7, r1, r5 + mov r6, #0xc3 + ldrsb r7, [r7, r6] + ldr r6, _02238188 ; =0x00000252 + add r4, r0, r5 + strb r7, [r4, r6] + ldrsb r6, [r4, r2] + cmp r6, #0x32 + blt _0223817E + ldr r6, _02238188 ; =0x00000252 + strb r3, [r4, r6] +_0223817E: + add r5, r5, #1 + cmp r5, #3 + blt _02238168 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02238188: .word 0x00000252 + + thumb_func_start MOD12_0223818C +MOD12_0223818C: ; 0x0223818C + push {r3, r4, r5, r6, r7, lr} + ldr r7, _022381D4 ; =0x00000242 + mov ip, r1 + add r5, r7, #0 + mov lr, r0 + mov r1, #0 + mov r2, ip + add r3, r0, #0 + mov r6, #0x18 + add r5, #8 +_022381A0: + ldr r0, _022381D4 ; =0x00000242 + mov r4, #0x18 + ldrsh r0, [r3, r0] + ldrsh r4, [r2, r4] + add r1, r1, #1 + add r0, r0, r4 + strh r0, [r3, r7] + ldrsh r0, [r2, r6] + add r2, #0x2c + strh r0, [r3, r5] + add r3, r3, #2 + cmp r1, #4 + blt _022381A0 + mov r1, #0x26 + lsl r1, r1, #4 + mov r0, lr + add r4, r0, r1 + mov r3, #0x19 +_022381C4: + mov r2, ip + ldmia r2!, {r0, r1} + mov ip, r2 + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _022381C4 + pop {r3, r4, r5, r6, r7, pc} + nop +_022381D4: .word 0x00000242 + + thumb_func_start MOD12_022381D8 +MOD12_022381D8: ; 0x022381D8 + push {r3, r4} + mov r2, #0x2c + mul r2, r1 + add r2, r0, r2 + mov r1, #0x18 + ldrsh r1, [r2, r1] + mov r4, #0 + strh r1, [r2, #0x1a] + strh r4, [r2, #0x1e] + strh r4, [r2, #0x20] + mov r1, #0xc3 +_022381EE: + add r3, r0, r4 + ldrsb r2, [r3, r1] + add r3, #0xc0 + add r4, r4, #1 + strb r2, [r3] + cmp r4, #3 + blt _022381EE + mov r2, #0 + add r1, r2, #0 +_02238200: + strb r1, [r0, #0x14] + strb r1, [r0, #0x12] + add r2, r2, #1 + add r0, #0x2c + cmp r2, #4 + blt _02238200 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02238210 +MOD12_02238210: ; 0x02238210 + mov r3, #0 + mov r1, #0x18 +_02238214: + ldrsh r2, [r0, r1] + add r3, r3, #1 + strh r2, [r0, #0x1c] + add r0, #0x2c + cmp r3, #4 + blt _02238214 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02238224 +MOD12_02238224: ; 0x02238224 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r2, #0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r7, #0 + mul r4, r0 + add r6, r5, #2 + ldrb r0, [r6, r4] + ldr r1, _02238274 ; =0x02245619 + lsl r2, r0, #3 + ldrb r1, [r1, r2] + cmp r1, #0 + bne _0223826E + mov r1, #4 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_02083170 + ldr r1, [sp, #0x10] + ldr r0, _02238278 ; =0x0000FFFF + cmp r1, r0 + beq _0223826E + ldr r0, _0223827C ; =0x00007530 + mov r2, #4 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r1, [r6, r4] + add r0, r5, r4 + add r3, r7, #0 + bl MOD12_0223805C +_0223826E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02238274: .word 0x02245619 +_02238278: .word 0x0000FFFF +_0223827C: .word 0x00007530 + + thumb_func_start MOD12_02238280 +MOD12_02238280: ; 0x02238280 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + add r4, r6, #0 + mov r0, #0x2c + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + add r6, r5, #4 + bl FUN_02083114 + strb r0, [r6, r4] + ldrb r1, [r6, r4] + add r0, r5, r4 + strh r1, [r0, #0x18] + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022382A8 +MOD12_022382A8: ; 0x022382A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r7, #0 + add r1, r2, #0 + str r3, [sp, #0xc] + bl MOD12_022381D8 + ldr r0, [sp, #8] + mov r1, #0x2c + add r4, r0, #0 + mul r4, r1 + add r0, r7, r4 + ldrb r0, [r0, #2] + lsl r6, r0, #3 + ldr r0, _02238364 ; =0x02245618 + ldrb r0, [r0, r6] + cmp r0, #3 + bne _022382FE + ldr r0, [sp, #0xc] + ldr r5, _02238368 ; =0x02245614 + str r0, [sp] + ldr r2, [sp, #8] + ldr r0, [sp, #4] + ldr r5, [r5, r6] + add r1, r7, #0 + add r3, r2, #0 + blx r5 + add r2, r7, #0 + mov r0, #1 + add r3, r7, r4 + strb r0, [r3, #0x14] + mov r0, #0x1e + add r2, #0x18 + mov r5, #0x20 + ldrsh r0, [r3, r0] + ldrsh r3, [r3, r5] + ldrsh r1, [r2, r4] + add r0, r0, r3 + add r0, r1, r0 + strh r0, [r2, r4] +_022382FE: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + cmp r0, #0 + blt _02238360 +_02238308: + ldr r1, [sp, #4] + ldr r0, [sp, #0x10] + add r1, r1, r0 + ldr r0, _0223836C ; =0x00000231 + ldrb r5, [r1, r0] + mov r0, #0x2c + mul r0, r5 + add r4, r7, r0 + ldrb r0, [r4, #2] + lsl r1, r0, #3 + ldr r0, _02238368 ; =0x02245614 + add r0, r0, r1 + ldrb r0, [r0, #4] + cmp r0, #2 + bne _02238354 + add r0, r7, #0 + add r1, r5, #0 + bl MOD12_022381D8 + ldr r0, [sp, #0xc] + add r3, r5, #0 + str r0, [sp] + ldrb r5, [r4, #2] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + lsl r6, r5, #3 + ldr r5, _02238368 ; =0x02245614 + add r1, r7, #0 + ldr r5, [r5, r6] + blx r5 + mov r0, #1 + strb r0, [r4, #0x14] + mov r0, #0x18 + ldrsh r1, [r4, r0] + mov r0, #0x1e + ldrsh r0, [r4, r0] + add r0, r1, r0 + strh r0, [r4, #0x18] +_02238354: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, r1 + ble _02238308 +_02238360: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238364: .word 0x02245618 +_02238368: .word 0x02245614 +_0223836C: .word 0x00000231 + + thumb_func_start MOD12_02238370 +MOD12_02238370: ; 0x02238370 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + add r7, r5, #0 + lsl r0, r6, #2 + add r7, #0xb0 + str r0, [sp, #0xc] + ldr r0, [r7, r0] + lsl r0, r0, #8 + lsr r0, r0, #0x18 + beq _022383C6 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r1, r5, r4 + mov r0, #0x18 + ldrsh r0, [r1, r0] + add r1, r5, #0 + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, r2, r0 + strh r2, [r1, r4] + mov r1, #0xa + bl _s32_div_f + ldr r1, _022383E8 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r1, [sp, #0xc] + add r0, r5, r4 + ldr r1, [r7, r1] + add r3, r6, #0 + lsl r1, r1, #8 + lsr r1, r1, #0x18 + bl MOD12_0223805C +_022383C6: + mov r0, #0x2c + add r2, r6, #0 + add r1, r5, #0 + mul r2, r0 + add r1, #0x18 + add r5, r5, r2 + mov r3, #0x1e + ldrsh r4, [r5, r3] + mov r3, #0x20 + ldrsh r3, [r5, r3] + ldrsh r0, [r1, r2] + add r3, r4, r3 + add r0, r0, r3 + strh r0, [r1, r2] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022383E8: .word 0x00007530 + + thumb_func_start MOD12_022383EC +MOD12_022383EC: ; 0x022383EC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _02238444 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #4 + bne _0223843C + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _02238448 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_0223843C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238444: .word 0x02245618 +_02238448: .word 0x02245614 + + thumb_func_start MOD12_0223844C +MOD12_0223844C: ; 0x0223844C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _022384A4 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #5 + bne _0223849C + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _022384A8 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_0223849C: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022384A4: .word 0x02245618 +_022384A8: .word 0x02245614 + + thumb_func_start MOD12_022384AC +MOD12_022384AC: ; 0x022384AC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #2] + lsl r7, r0, #3 + ldr r0, _02238504 ; =0x02245618 + ldrb r0, [r0, r7] + cmp r0, #6 + bne _022384FC + ldr r0, [sp, #8] + add r2, r6, #0 + add r3, r6, #0 + ldr r6, _02238508 ; =0x02245614 + str r0, [sp] + ldr r0, [sp, #4] + ldr r6, [r6, r7] + add r1, r5, #0 + blx r6 + add r3, r5, r4 + mov r0, #1 + strb r0, [r3, #0x14] + add r5, #0x18 + mov r1, #0x1e + ldrsh r2, [r5, r4] + ldrsh r1, [r3, r1] + add sp, #0xc + add r1, r2, r1 + strh r1, [r5, r4] + pop {r4, r5, r6, r7, pc} +_022384FC: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238504: .word 0x02245618 +_02238508: .word 0x02245614 + + thumb_func_start MOD12_0223850C +MOD12_0223850C: ; 0x0223850C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp] + add r0, r4, #0 + add r1, r2, #0 + str r2, [sp, #4] + add r7, r3, #0 + bl MOD12_022381D8 + mov r0, #0 + strb r0, [r7, #0xc] + strb r0, [r7, #0xd] + ldr r1, [sp] + ldr r0, [sp, #4] + mov r6, #0x2c + add r1, r1, r0 + ldr r0, _02238658 ; =0x0000023E + ldrb r5, [r1, r0] + ldr r0, [sp] + ldr r3, [r0] + ldr r0, [sp, #4] + add r2, r5, #0 + add r1, r0, #0 + mul r1, r6 + add r0, r4, r1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xf3 + str r1, [sp, #0x10] + add r6, #0xf2 + ldrb r0, [r3, r0] + ldrh r1, [r4, r1] + ldrb r3, [r3, r6] + bl MOD12_02235C44 + add r6, r0, #0 + cmp r6, #0 + ble _0223857A + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0223857A + add r0, r4, #0 + add r0, #0xc3 + ldrsb r1, [r0, r5] + add r1, r1, r6 + strb r1, [r0, r5] + ldrsb r1, [r0, r5] + cmp r1, #0x32 + blt _022385A6 + mov r1, #0x32 + strb r1, [r0, r5] + b _022385A6 +_0223857A: + cmp r6, #0 + bge _022385A4 + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _022385A4 + add r0, r4, #0 + add r0, #0xc3 + add r1, r0, r5 + ldrsb r0, [r0, r5] + cmp r0, #0 + ble _022385A4 + add r0, r0, r6 + mov r2, #0 + strb r0, [r1] + ldrsb r0, [r1, r2] + cmp r0, #0 + bgt _022385A6 + strb r2, [r1] + b _022385A6 +_022385A4: + mov r6, #0 +_022385A6: + add r1, r4, #0 + add r1, #0xc3 + add r0, r1, r5 + str r0, [sp, #8] + ldrsb r0, [r1, r5] + cmp r0, #0x32 + blt _022385D2 + ldr r0, [sp] + ldr r1, [r0] + ldr r0, _0223865C ; =0x0000011E + ldrb r0, [r1, r0] + cmp r5, r0 + bne _022385CA + ldr r0, [sp, #0x10] + mov r1, #0x50 + add r0, r4, r0 + strb r1, [r0, #8] + b _022385D2 +_022385CA: + ldr r0, [sp, #0x10] + mov r1, #0x32 + add r0, r4, r0 + strb r1, [r0, #8] +_022385D2: + add r0, r4, #0 + ldr r1, [sp, #0x10] + add r0, #8 + add r5, r0, r1 + ldrsb r0, [r0, r1] + mov r1, #0xa + bl _s32_div_f + strb r0, [r7, #0xa] + cmp r6, #0 + ble _0223862C + ldr r0, [sp, #0xc] + mov r1, #0xb + ldrh r0, [r0] + bl FUN_0206AB18 + bl MOD12_02235AC4 + strb r0, [r7, #0xc] + ldr r0, [sp, #8] + mov r1, #0 + ldrsb r0, [r0, r1] + mov r1, #0xa + bl _s32_div_f + cmp r0, #5 + bhi _0223863E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02238614: ; jump table + .short _0223863E - _02238614 - 2 ; case 0 + .short _0223863E - _02238614 - 2 ; case 1 + .short _0223863E - _02238614 - 2 ; case 2 + .short _0223863E - _02238614 - 2 ; case 3 + .short _02238620 - _02238614 - 2 ; case 4 + .short _02238626 - _02238614 - 2 ; case 5 +_02238620: + mov r0, #0x19 + strb r0, [r7, #0xd] + b _0223863E +_02238626: + mov r0, #0x1a + strb r0, [r7, #0xd] + b _0223863E +_0223862C: + bge _0223863E + ldr r0, [sp, #0xc] + mov r1, #0xb + ldrh r0, [r0] + bl FUN_0206AB18 + bl MOD12_02235AF0 + strb r0, [r7, #0xc] +_0223863E: + ldr r0, [sp, #4] + mov r1, #0x2c + add r2, r0, #0 + mov r0, #0 + add r4, #0x18 + mul r2, r1 + ldrsh r1, [r4, r2] + ldrsb r0, [r5, r0] + add r0, r1, r0 + strh r0, [r4, r2] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02238658: .word 0x0000023E +_0223865C: .word 0x0000011E + + thumb_func_start MOD12_02238660 +MOD12_02238660: ; 0x02238660 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD12_022381D8 + mov r0, #0x2c + add r4, r6, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #9] + bl MOD12_02235C38 + add r5, #0x18 + ldrsh r1, [r5, r4] + add r0, r1, r0 + strh r0, [r5, r4] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02238688 +MOD12_02238688: ; 0x02238688 + push {r3, r4, r5, r6} + add r3, r0, #0 + ldr r4, _022386B8 ; =0xFFFF0000 + ldr r5, _022386BC ; =0xFF00FFFF + mov r2, #0 + add r3, #0xb0 +_02238694: + ldr r1, [r3] + add r2, r2, #1 + and r1, r4 + str r1, [r3] + ldr r6, [r0, #0x28] + and r1, r5 + lsl r6, r6, #0xc + lsr r6, r6, #0x18 + lsl r6, r6, #0x18 + lsr r6, r6, #8 + orr r1, r6 + add r0, #0x2c + stmia r3!, {r1} + cmp r2, #4 + blt _02238694 + pop {r3, r4, r5, r6} + bx lr + nop +_022386B8: .word 0xFFFF0000 +_022386BC: .word 0xFF00FFFF + + thumb_func_start MOD12_022386C0 +MOD12_022386C0: ; 0x022386C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r0, #4 + str r3, [sp, #0xc] + mov ip, r0 + add r7, r1, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r3, #0xff +_022386D2: + ldr r4, [r1, #0x28] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + bne _022386DE + strb r3, [r2] + b _022386F2 +_022386DE: + cmp r5, #1 + bne _022386EA + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + bne _022386EA + mov ip, r0 +_022386EA: + ldr r4, [r1, #0x28] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + strb r4, [r2] +_022386F2: + add r0, r0, #1 + add r1, #0x2c + add r2, r2, #1 + cmp r0, #4 + blt _022386D2 + ldr r0, [sp, #0xc] + mov r1, #0xff + add r6, sp, #0x10 + strb r1, [r6, r0] + mov r4, #0 +_02238706: + mov r1, #0 + add r2, r6, #0 + add r3, r7, #0 +_0223870C: + ldrb r0, [r2] + cmp r0, #0xff + beq _02238728 + cmp r4, r0 + bne _02238728 + ldr r5, [r3, #0x28] + lsl r5, r5, #0x18 + lsr r5, r5, #0x1e + cmp r0, r5 + bne _02238728 + ldrb r0, [r6, r1] + add r0, r0, #1 + strb r0, [r6, r1] + b _02238732 +_02238728: + add r1, r1, #1 + add r2, r2, #1 + add r3, #0x2c + cmp r1, #4 + blt _0223870C +_02238732: + cmp r1, #4 + beq _0223873C + add r4, r4, #1 + cmp r4, #4 + blt _02238706 +_0223873C: + mov r3, #0 + add r1, sp, #0x10 + add r2, r7, #0 + mov r4, #0xc0 +_02238744: + ldrb r5, [r1] + cmp r5, #0xff + beq _02238756 + ldr r0, [r2, #0x28] + lsl r5, r5, #0x1e + bic r0, r4 + lsr r5, r5, #0x18 + orr r0, r5 + str r0, [r2, #0x28] +_02238756: + add r3, r3, #1 + add r1, r1, #1 + add r2, #0x2c + cmp r3, #4 + blt _02238744 + ldr r0, [sp, #0xc] + mov r1, #0x2c + mul r1, r0 + add r0, r7, r1 + ldr r2, [r0, #0x28] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x10 + orr r2, r1 + mov r1, #0xc0 + bic r2, r1 + mov r1, ip + str r2, [r0, #0x28] + cmp r1, #4 + beq _02238794 + mov r1, ip + str r1, [sp] + ldr r1, _022387AC ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #1 + bl MOD12_0223805C + b _022387A6 +_02238794: + ldr r1, _022387AC ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C +_022387A6: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022387AC: .word 0x00007530 + + thumb_func_start MOD12_022387B0 +MOD12_022387B0: ; 0x022387B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r0, #4 + str r3, [sp, #0xc] + mov ip, r0 + add r7, r1, #0 + mov r0, #0 + add r2, sp, #0x10 + mov r3, #0xff +_022387C2: + ldr r4, [r1, #0x28] + lsl r5, r4, #0x1a + lsr r5, r5, #0x1e + bne _022387CE + strb r3, [r2] + b _022387E4 +_022387CE: + cmp r5, #2 + bne _022387DC + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + cmp r4, #3 + bne _022387DC + mov ip, r0 +_022387DC: + ldr r4, [r1, #0x28] + lsl r4, r4, #0x18 + lsr r4, r4, #0x1e + strb r4, [r2] +_022387E4: + add r0, r0, #1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + add r1, #0x2c + add r2, r2, #1 + cmp r0, #4 + blt _022387C2 + ldr r0, [sp, #0xc] + mov r1, #0xff + add r6, sp, #0x10 + strb r1, [r6, r0] + mov r4, #3 +_022387FC: + mov r1, #0 + add r2, r6, #0 + add r3, r7, #0 +_02238802: + ldrb r0, [r2] + cmp r0, #0xff + beq _0223881E + cmp r4, r0 + bne _0223881E + ldr r5, [r3, #0x28] + lsl r5, r5, #0x18 + lsr r5, r5, #0x1e + cmp r0, r5 + bne _0223881E + ldrb r0, [r6, r1] + sub r0, r0, #1 + strb r0, [r6, r1] + b _0223882C +_0223881E: + add r0, r1, #1 + lsl r0, r0, #0x18 + asr r1, r0, #0x18 + add r2, r2, #1 + add r3, #0x2c + cmp r1, #4 + blt _02238802 +_0223882C: + cmp r1, #4 + beq _0223883E + sub r0, r4, #1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bgt _022387FC +_0223883E: + mov r3, #0 + add r1, sp, #0x10 + add r2, r7, #0 + mov r4, #0xc0 +_02238846: + ldrb r5, [r1] + cmp r5, #0xff + beq _02238858 + ldr r0, [r2, #0x28] + lsl r5, r5, #0x1e + bic r0, r4 + lsr r5, r5, #0x18 + orr r0, r5 + str r0, [r2, #0x28] +_02238858: + add r0, r3, #1 + lsl r0, r0, #0x18 + asr r3, r0, #0x18 + add r1, r1, #1 + add r2, #0x2c + cmp r3, #4 + blt _02238846 + ldr r0, [sp, #0xc] + mov r1, #0x2c + mul r1, r0 + add r0, r7, r1 + ldr r2, [r0, #0x28] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x20 + orr r2, r1 + mov r1, #0xc0 + bic r2, r1 + mov r1, #0xc0 + orr r1, r2 + str r1, [r0, #0x28] + mov r1, ip + cmp r1, #4 + bne _0223889C + ldr r1, _022388B8 ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + b _022388B0 +_0223889C: + mov r1, ip + str r1, [sp] + ldr r1, _022388B8 ; =0x00007530 + ldr r3, [sp, #0xc] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #1 + bl MOD12_0223805C +_022388B0: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022388B8: .word 0x00007530 + + thumb_func_start MOD12_022388BC +MOD12_022388BC: ; 0x022388BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, r4, #0 + mov r0, #0x2c + add r7, r3, #0 + mul r3, r0 + add r2, #9 + add r1, #0x1e + ldrb r6, [r2, r3] + mov r5, #0x14 + ldrsh r0, [r1, r3] + mul r5, r6 + add r0, r0, r5 + strh r0, [r1, r3] + ldrb r0, [r2, r3] + cmp r0, #0 + beq _022388EA + cmp r0, #1 + beq _022388EE + cmp r0, #2 + beq _022388F2 + b _022388F6 +_022388EA: + mov r2, #0 + b _022388F8 +_022388EE: + mov r2, #1 + b _022388F8 +_022388F2: + mov r2, #2 + b _022388F8 +_022388F6: + mov r2, #3 +_022388F8: + ldr r0, _02238910 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r4, r3 + ldrb r1, [r0, #2] + add r3, r7, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238910: .word 0x00007530 + + thumb_func_start MOD12_02238914 +MOD12_02238914: ; 0x02238914 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r3, [sp, #0xc] + ldr r3, [r0] + ldr r0, [sp, #0xc] + mov r6, #0x2c + add r4, r0, #0 + add r0, r6, #0 + mul r4, r6 + add r5, r1, #0 + add r7, r5, r4 + add r0, #0xf3 + add r6, #0xf2 + ldrb r0, [r3, r0] + ldrh r1, [r5, r4] + ldrb r2, [r7, #3] + ldrb r3, [r3, r6] + bl MOD12_02235C44 + cmp r0, #0 + ble _0223896C + ldr r0, [r7, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0223896C + add r1, r5, #0 + add r1, #0x1e + ldrsh r0, [r1, r4] + ldr r2, _02238974 ; =0x00007530 + ldr r3, [sp, #0xc] + add r0, #0x14 + strh r0, [r1, r4] + str r2, [sp] + ldrh r1, [r5, r4] + add r0, r7, #0 + str r1, [sp, #4] + str r2, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223896C: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02238974: .word 0x00007530 + + thumb_func_start MOD12_02238978 +MOD12_02238978: ; 0x02238978 + mov r0, #1 + bx lr + + thumb_func_start MOD12_0223897C +MOD12_0223897C: ; 0x0223897C + push {r3, r4, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r0, r1, r4 + ldrb r2, [r0, #9] + cmp r2, #0 + bne _022389A8 + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, #0x1e + strh r2, [r1, r4] + ldr r1, _022389C0 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C + b _022389B8 +_022389A8: + ldr r1, _022389C0 ; =0x00007530 + mov r2, #1 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C +_022389B8: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_022389C0: .word 0x00007530 + + thumb_func_start MOD12_022389C4 +MOD12_022389C4: ; 0x022389C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + lsl r4, r3, #1 + add r2, r1, #0 + add r4, r0, r4 + ldr r0, _02238A10 ; =0x00000256 + mov r1, #0x2c + add r7, r3, #0 + mul r7, r1 + ldrh r1, [r2, r7] + ldrh r0, [r4, r0] + cmp r1, r0 + beq _02238A0A + add r6, r2, #0 + add r6, #0xb0 + lsl r5, r3, #2 + lsl r1, r1, #0x10 + ldr r4, [r6, r5] + ldr r0, _02238A14 ; =0xFFFF0000 + lsr r1, r1, #0x10 + and r0, r4 + orr r0, r1 + str r0, [r6, r5] + ldr r0, _02238A18 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r2, r7 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02238A0A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238A10: .word 0x00000256 +_02238A14: .word 0xFFFF0000 +_02238A18: .word 0x00007530 + + thumb_func_start MOD12_02238A1C +MOD12_02238A1C: ; 0x02238A1C + push {r4, r5, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #3] + add r2, r5, #0 + add r2, #0x1e + add r1, r5, r0 + mov r0, #0xc0 + ldrsb r0, [r1, r0] + ldrsh r1, [r2, r4] + add r1, r1, r0 + strh r1, [r2, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238A5C ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_02238A5C: .word 0x00007530 + + thumb_func_start MOD12_02238A60 +MOD12_02238A60: ; 0x02238A60 + push {r3, r4, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r0, r1, r4 + ldrb r2, [r0, #9] + cmp r2, #3 + bne _02238A8C + add r1, #0x1e + ldrsh r2, [r1, r4] + add r2, #0x96 + strh r2, [r1, r4] + ldr r1, _02238AA4 ; =0x00007530 + mov r2, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C + b _02238A9C +_02238A8C: + ldr r1, _02238AA4 ; =0x00007530 + mov r2, #1 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldrb r1, [r0, #2] + bl MOD12_0223805C +_02238A9C: + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + nop +_02238AA4: .word 0x00007530 + + thumb_func_start MOD12_02238AA8 +MOD12_02238AA8: ; 0x02238AA8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r0, #0x2c + add r7, r3, #0 + add r4, r1, #0 + mul r7, r0 + add r1, r4, r7 + ldr r0, [r1, #0x28] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02238AC6 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238AC6: + mov r3, #0 + mov r0, #0xc3 +_02238ACA: + add r2, r4, r3 + ldrsb r2, [r2, r0] + cmp r2, #0 + bne _02238AD8 + add r3, r3, #1 + cmp r3, #3 + blt _02238ACA +_02238AD8: + cmp r3, #3 + bne _02238AE2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238AE2: + ldr r2, [r1, #0x28] + mov r0, #8 + orr r0, r2 + mov r3, #0xc3 + str r0, [r1, #0x28] + mov r2, #0 + add r5, r3, #0 +_02238AF0: + add r0, r4, r2 + ldrsb r6, [r0, r5] + cmp r6, #0 + ble _02238B00 + ldrsb r6, [r0, r3] + add r0, #0xc3 + sub r6, #0xa + strb r6, [r0] +_02238B00: + add r2, r2, #1 + cmp r2, #3 + blt _02238AF0 + ldr r3, _02238B20 ; =0x00007530 + add r0, r1, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r1, r4, r7 + ldrb r1, [r1, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238B20: .word 0x00007530 + + thumb_func_start MOD12_02238B24 +MOD12_02238B24: ; 0x02238B24 + mov r0, #0x2c + mul r0, r3 + add r2, r1, r0 + ldr r1, [r2, #0x28] + ldr r0, _02238B40 ; =0xFFF00FFF + and r1, r0 + ldrb r0, [r2, #2] + lsl r0, r0, #0x18 + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r2, #0x28] + mov r0, #1 + bx lr + nop +_02238B40: .word 0xFFF00FFF + + thumb_func_start MOD12_02238B44 +MOD12_02238B44: ; 0x02238B44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r1, [sp, #0x20] + add r4, r0, #0 + mov ip, r3 + cmp r1, #4 + bge _02238B70 + ldr r7, _02238B90 ; =0x00000231 + mov r6, #0x2c + mov r3, #2 +_02238B5A: + add r0, r4, r1 + ldrb r0, [r0, r7] + add r1, r1, #1 + add r5, r0, #0 + mul r5, r6 + add r0, r2, r5 + ldr r5, [r0, #0x28] + orr r5, r3 + str r5, [r0, #0x28] + cmp r1, #4 + blt _02238B5A +_02238B70: + ldr r3, _02238B94 ; =0x00007530 + mov r1, #0x2c + mov r0, ip + str r3, [sp] + mul r1, r0 + str r3, [sp, #4] + add r0, r2, r1 + str r3, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238B90: .word 0x00000231 +_02238B94: .word 0x00007530 + + thumb_func_start MOD12_02238B98 +MOD12_02238B98: ; 0x02238B98 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [sp, #0x20] + cmp r1, #0 + bne _02238BAA + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02238BAA: + sub r1, r1, #1 + add r1, r0, r1 + ldr r0, _02238BF0 ; =0x00000231 + ldrb r4, [r1, r0] + mov r0, #0x2c + add r1, r4, #0 + mul r1, r0 + add r2, r5, r1 + mov r1, #8 + ldrsb r2, [r2, r1] + cmp r2, #0 + bne _02238BC8 + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02238BC8: + add r1, r3, #0 + mul r1, r0 + add r0, r5, #0 + add r0, #0x1e + ldrsh r6, [r0, r1] + add r2, r6, r2 + strh r2, [r0, r1] + ldr r0, _02238BF4 ; =0x00007530 + str r4, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, r1 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02238BF0: .word 0x00000231 +_02238BF4: .word 0x00007530 + + thumb_func_start MOD12_02238BF8 +MOD12_02238BF8: ; 0x02238BF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0xc] + str r3, [sp, #0x10] + mov r3, #0 + add r0, sp, #0x18 + add r1, sp, #0x14 +_02238C08: + lsl r2, r3, #0x18 + lsr r2, r2, #0x18 + strb r2, [r0] + strb r2, [r1] + add r2, r3, #1 + lsl r2, r2, #0x18 + asr r3, r2, #0x18 + add r0, r0, #1 + add r1, r1, #1 + cmp r3, #4 + blt _02238C08 + mov r4, #0 + add r7, sp, #0x18 + add r6, sp, #0x14 +_02238C24: + ldr r0, [r5] + bl FUN_02082878 + mov r1, #4 + sub r1, r1, r4 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r2, r0, #0x18 + mov r1, #0 + add r3, r6, #0 +_02238C3A: + ldrb r0, [r3] + cmp r0, #0xff + beq _02238C52 + cmp r2, #0 + bne _02238C4C + mov r0, #0xff + strb r4, [r7, r1] + strb r0, [r6, r1] + b _02238C5E +_02238C4C: + sub r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 +_02238C52: + add r0, r1, #1 + lsl r0, r0, #0x18 + asr r1, r0, #0x18 + add r3, r3, #1 + cmp r1, #4 + blt _02238C3A +_02238C5E: + add r0, r4, #1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + cmp r4, #4 + blt _02238C24 + ldr r1, [sp, #0xc] + mov r3, #0 + add r2, sp, #0x18 + mov r4, #0x30 + mov r7, #0x30 + mov r5, #0xc0 +_02238C74: + ldr r0, [r1, #0x28] + bic r0, r4 + orr r0, r7 + str r0, [r1, #0x28] + ldrb r6, [r2] + bic r0, r5 + add r2, r2, #1 + lsl r6, r6, #0x1e + lsr r6, r6, #0x18 + orr r0, r6 + str r0, [r1, #0x28] + add r0, r3, #1 + lsl r0, r0, #0x18 + asr r3, r0, #0x18 + add r1, #0x2c + cmp r3, #4 + blt _02238C74 + ldr r3, _02238CB8 ; =0x00007530 + ldr r0, [sp, #0x10] + mov r1, #0x2c + mul r1, r0 + str r3, [sp] + ldr r0, [sp, #0xc] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r0, r1 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02238CB8: .word 0x00007530 + + thumb_func_start MOD12_02238CBC +MOD12_02238CBC: ; 0x02238CBC + push {r4, r5, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + add r5, r1, #0 + cmp r0, #3 + bne _02238CFE + add r4, r3, #0 + mov r0, #0x2c + add r3, r5, #0 + add r2, r5, #0 + mul r4, r0 + add r3, #0x18 + add r2, #0x1e + ldrsh r1, [r2, r4] + ldrsh r0, [r3, r4] + add r0, r1, r0 + strh r0, [r2, r4] + ldrsh r0, [r3, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238D04 ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_02238CFE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02238D04: .word 0x00007530 + + thumb_func_start MOD12_02238D08 +MOD12_02238D08: ; 0x02238D08 + push {r4, r5, lr} + sub sp, #0xc + mov r0, #0x2c + add r4, r3, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldrb r0, [r0, #3] + add r1, r5, r0 + mov r0, #0xc0 + ldrsb r0, [r1, r0] + mov r1, #0xa + bl _s32_div_f + ldr r1, _02238D50 ; =0x0224560C + add r2, r5, #0 + add r2, #0x1e + ldrb r0, [r1, r0] + ldrsh r1, [r2, r4] + add r1, r1, r0 + strh r1, [r2, r4] + mov r1, #0xa + bl _s32_div_f + ldr r3, _02238D54 ; =0x00007530 + mov r2, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02238D50: .word 0x0224560C +_02238D54: .word 0x00007530 + + thumb_func_start MOD12_02238D58 +MOD12_02238D58: ; 0x02238D58 + push {r3, r4, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _02238D8A + add r4, r3, #0 + mov r0, #0x2c + add r2, r1, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + ldr r3, _02238D90 ; =0x00007530 + add r0, #0x14 + strh r0, [r2, r4] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238D8A: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238D90: .word 0x00007530 + + thumb_func_start MOD12_02238D94 +MOD12_02238D94: ; 0x02238D94 + push {r3, r4, lr} + sub sp, #0xc + ldr r0, [sp, #0x18] + cmp r0, #3 + bne _02238DC6 + add r4, r3, #0 + mov r0, #0x2c + add r2, r1, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + ldr r3, _02238DCC ; =0x00007530 + add r0, #0x14 + strh r0, [r2, r4] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238DC6: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238DCC: .word 0x00007530 + + thumb_func_start MOD12_02238DD0 +MOD12_02238DD0: ; 0x02238DD0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r1, [sp, #0x20] + add r4, r0, #0 + mov ip, r3 + cmp r1, #4 + bge _02238DFC + ldr r7, _02238E1C ; =0x00000231 + mov r6, #0x2c + mov r3, #4 +_02238DE6: + add r0, r4, r1 + ldrb r0, [r0, r7] + add r1, r1, #1 + add r5, r0, #0 + mul r5, r6 + add r0, r2, r5 + ldr r5, [r0, #0x28] + orr r5, r3 + str r5, [r0, #0x28] + cmp r1, #4 + blt _02238DE6 +_02238DFC: + ldr r3, _02238E20 ; =0x00007530 + mov r1, #0x2c + mov r0, ip + str r3, [sp] + mul r1, r0 + str r3, [sp, #4] + add r0, r2, r1 + str r3, [sp, #8] + ldrb r1, [r0, #2] + mov r2, #0 + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02238E1C: .word 0x00000231 +_02238E20: .word 0x00007530 + + thumb_func_start MOD12_02238E24 +MOD12_02238E24: ; 0x02238E24 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + ldr r0, [sp, #0x38] + add r5, r1, #0 + str r3, [sp, #0xc] + cmp r0, #0 + bne _02238E3A + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238E3A: + sub r0, r0, #1 + add r1, r6, r0 + ldr r0, _02238EDC ; =0x00000231 + mov r3, #0x2c + ldrb r0, [r1, r0] + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + str r0, [sp, #0x18] + ldr r0, [r0, #0x28] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _02238E6C + ldr r0, [sp, #0x1c] + add r1, r0, #0 + mul r1, r3 + add r0, r5, r1 + str r0, [sp, #0x14] + ldr r0, [r0, #0x28] + str r1, [sp, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _02238E72 +_02238E6C: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238E72: + add r0, r3, #0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x18] + ldr r7, [r6] + add r0, #0xf3 + add r3, #0xf2 + ldrb r0, [r7, r0] + ldrh r1, [r1] + ldrb r2, [r2, #3] + ldrb r3, [r7, r3] + bl MOD12_02235C44 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r5, r2 + ldr r6, [r6] + ldr r3, _02238EE0 ; =0x0000011F + str r0, [sp, #0x20] + ldrb r0, [r6, r3] + sub r3, r3, #1 + ldrh r1, [r1] + ldrb r2, [r2, #3] + ldrb r3, [r6, r3] + bl MOD12_02235C44 + cmp r0, #0 + ble _02238ED6 + ldr r0, [sp, #0x20] + cmp r0, #0 + ble _02238ED6 + add r1, r5, #0 + add r1, #0x1e + ldrsh r0, [r1, r4] + ldr r3, [sp, #0xc] + mov r2, #0 + add r0, #0x1e + strh r0, [r1, r4] + ldr r0, [sp, #0x1c] + add r1, r5, r4 + str r0, [sp] + ldr r0, _02238EE4 ; =0x00007530 + str r0, [sp, #4] + str r0, [sp, #8] + ldrb r1, [r1, #2] + ldr r0, [sp, #0x18] + bl MOD12_0223805C + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02238ED6: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02238EDC: .word 0x00000231 +_02238EE0: .word 0x0000011F +_02238EE4: .word 0x00007530 + + thumb_func_start MOD12_02238EE8 +MOD12_02238EE8: ; 0x02238EE8 + push {r4, r5, lr} + sub sp, #0xc + add r0, r1, #0 + mov r1, #0x2c + mul r1, r3 + add r4, r0, r1 + mov r1, #0x1e + ldrsh r2, [r4, r1] + ldr r1, [sp, #0x18] + ldr r5, _02238F44 ; =0x02245608 + ldrb r5, [r5, r1] + add r2, r2, r5 + strh r2, [r4, #0x1e] + cmp r1, #3 + bhi _02238F26 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02238F12: ; jump table + .short _02238F1A - _02238F12 - 2 ; case 0 + .short _02238F1E - _02238F12 - 2 ; case 1 + .short _02238F22 - _02238F12 - 2 ; case 2 + .short _02238F26 - _02238F12 - 2 ; case 3 +_02238F1A: + mov r2, #0 + b _02238F28 +_02238F1E: + mov r2, #1 + b _02238F28 +_02238F22: + mov r2, #2 + b _02238F28 +_02238F26: + mov r2, #3 +_02238F28: + ldr r1, _02238F48 ; =0x00007530 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #0x2c + mul r1, r3 + add r0, r0, r1 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_02238F44: .word 0x02245608 +_02238F48: .word 0x00007530 + + thumb_func_start MOD12_02238F4C +MOD12_02238F4C: ; 0x02238F4C + push {r3, r4, lr} + sub sp, #0xc + ldr r2, [sp, #0x18] + cmp r2, #0 + bne _02238F5C + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_02238F5C: + sub r2, r2, #1 + add r2, r0, r2 + ldr r0, _02238FA4 ; =0x00000231 + ldrb r2, [r2, r0] + mov r0, #0x2c + mul r0, r2 + add r2, r1, r0 + mov r0, #8 + ldrsb r0, [r2, r0] + cmp r0, #0x32 + bge _02238F76 + cmp r0, #0x50 + blt _02238F9E +_02238F76: + add r2, r1, #0 + mov r0, #0x2c + add r4, r3, #0 + mul r4, r0 + add r2, #0x1e + ldrsh r0, [r2, r4] + add r0, #0x1e + strh r0, [r2, r4] + ldr r0, _02238FA8 ; =0x00007530 + mov r2, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r1, r4 + ldrb r1, [r0, #2] + bl MOD12_0223805C + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_02238F9E: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02238FA4: .word 0x00000231 +_02238FA8: .word 0x00007530 + + thumb_func_start MOD12_02238FAC +MOD12_02238FAC: ; 0x02238FAC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov ip, r1 + mov r0, #0x2c + add r6, r3, #0 + mul r6, r0 + mov r0, ip + mov r2, #0 + add r4, r1, #0 + add r5, r0, r6 + mov r7, #0x1c +_02238FC2: + cmp r2, r3 + beq _02238FD0 + mov r0, #0x1a + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r7] + cmp r1, r0 + blt _02238FD8 +_02238FD0: + add r2, r2, #1 + add r4, #0x2c + cmp r2, #4 + blt _02238FC2 +_02238FD8: + cmp r2, #4 + beq _02238FE2 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02238FE2: + mov r1, ip + add r1, #0x1e + ldrsh r0, [r1, r6] + mov r2, #0 + add r0, #0x1e + strh r0, [r1, r6] + ldr r0, _02239008 ; =0x00007530 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, ip + add r0, r0, r6 + ldrb r1, [r0, #2] + bl MOD12_0223805C + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02239008: .word 0x00007530 + + thumb_func_start MOD12_0223900C +MOD12_0223900C: ; 0x0223900C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + str r1, [sp, #4] + mov r0, #0x15 + mov r1, #0x32 + bl FUN_02016998 + add r7, r0, #0 + ldr r1, [r6] + ldr r0, _02239060 ; =0x00000127 + ldrb r4, [r1, r0] + cmp r4, #4 + bge _02239056 + ldr r0, [sp, #4] + lsl r1, r4, #1 + add r5, r0, r1 + add r0, #8 + str r0, [sp, #4] +_02239032: + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD12_02239064 + ldr r0, [sp, #4] + add r1, r7, #0 + add r0, r0, r4 + str r0, [sp] + add r0, r6, #0 + add r2, r4, #0 + add r3, r5, #0 + bl MOD12_022390DC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _02239032 +_02239056: + add r0, r7, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239060: .word 0x00000127 + + thumb_func_start MOD12_02239064 +MOD12_02239064: ; 0x02239064 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r7, r2, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #0 + mov r2, #0x32 + bl MI_CpuFill8 + lsl r0, r7, #2 + ldr r5, [sp] + mov r4, #0 + str r0, [sp, #4] +_02239080: + ldr r1, [r6] + ldr r0, [sp, #4] + mov r2, #0 + ldr r0, [r0, r1] + add r1, r4, #0 + add r1, #0x36 + bl FUN_020671BC + strh r0, [r5] + mov r0, #0x23 + lsl r0, r0, #4 + ldrh r2, [r5] + add r0, r6, r0 + add r1, r7, #0 + bl MOD12_02235BEC + cmp r0, #1 + bne _022390BA + ldrh r0, [r5] + mov r1, #0xa + bl FUN_0206AB18 + strb r0, [r5, #0xa] + ldrh r0, [r5] + mov r1, #0xb + bl FUN_0206AB18 + strb r0, [r5, #0xb] + b _022390BE +_022390BA: + mov r0, #0 + strh r0, [r5] +_022390BE: + add r4, r4, #1 + add r5, #0xc + cmp r4, #4 + blt _02239080 + ldr r0, [r6] + add r1, r0, r7 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + ldr r0, [sp] + add r0, #0x30 + str r0, [sp] + strb r1, [r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_022390DC +MOD12_022390DC: ; 0x022390DC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #4] + ldr r0, [sp, #0x58] + str r1, [sp, #8] + str r0, [sp, #0x58] + mov r1, #0x23 + ldr r0, [sp, #4] + lsl r1, r1, #4 + add r0, r0, r1 + str r0, [sp, #0x1c] + mov r0, #0 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + str r0, [sp, #0x20] +_022390FA: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + add r0, r1, r0 + ldrb r1, [r0, #1] + ldr r0, [sp, #0xc] + cmp r0, r1 + beq _02239112 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _022390FA +_02239112: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _022393A4 ; =0x0224574C + str r0, [sp, #0x18] +_0223911A: + ldr r0, [sp, #0x20] + add r1, r0, #1 + ldr r0, [sp, #0x18] + ldrb r0, [r0] + cmp r1, r0 + bne _0223920C + mov r1, #0 + add r2, sp, #0x3c + add r2, #2 + add r0, r1, #0 +_0223912E: + add r1, r1, #1 + strb r0, [r2] + add r2, r2, #1 + cmp r1, #3 + blt _0223912E + ldr r0, [sp, #4] + add r3, sp, #0x3c + ldr r1, [r0] + ldr r0, _022393A8 ; =0x0000011F + ldr r4, [sp, #0x18] + ldrb r0, [r1, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + str r0, [sp] + ldrb r4, [r4, #1] + ldr r0, [sp, #0x1c] + add r3, #2 + lsl r5, r4, #2 + ldr r4, _022393AC ; =0x022456D8 + ldr r4, [r4, r5] + blx r4 + cmp r0, #1 + bne _0223920C + ldr r0, [sp, #0x18] + mov r1, #3 + ldrsb r0, [r0, r1] + cmp r0, #0 + beq _02239170 + cmp r0, #2 + beq _02239184 + cmp r0, #3 + beq _02239184 + b _0223919A +_02239170: + mov r2, #0 + add r1, sp, #0x3c + add r1, #2 + add r0, r2, #0 +_02239178: + add r2, r2, #1 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _02239178 + b _0223919A +_02239184: + add r2, sp, #0x3c + mov r3, #0 + add r2, #2 + mov r0, #1 +_0223918C: + ldrb r1, [r2] + add r3, r3, #1 + eor r1, r0 + strb r1, [r2] + add r2, r2, #1 + cmp r3, #3 + blt _0223918C +_0223919A: + ldr r0, [sp, #4] + ldr r1, [r0] + ldr r0, [sp, #0xc] + add r1, r0, r1 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + ldr r0, [sp, #0x18] + lsl r1, r2, #1 + add r0, r0, r1 + mov r1, #4 + ldrsh r4, [r0, r1] + cmp r2, #0 + beq _022391BC + ldr r0, [sp, #0x18] + ldrsh r0, [r0, r1] + add r4, r4, r0 +_022391BC: + ldr r0, [sp, #0x18] + ldrb r0, [r0, #2] + cmp r0, #0xf0 + beq _022391CA + cmp r0, #0xf1 + beq _0223920E + b _0223924E +_022391CA: + ldr r0, [sp, #8] + mov r7, #0 + mov r5, #4 +_022391D0: + ldr r1, [sp, #4] + ldr r2, [r1] + ldr r1, _022393A8 ; =0x0000011F + ldrb r2, [r2, r1] + ldrb r1, [r0, #0xb] + cmp r2, r1 + bne _02239204 + mov r1, #2 + ldrsh r1, [r0, r1] + mov r3, #0 + add r2, r0, #0 + add r1, r1, r4 + strh r1, [r0, #2] + add r1, sp, #0x3c + add r1, #2 +_022391EE: + ldrb r6, [r1] + cmp r6, #1 + bne _022391FA + ldrsh r6, [r2, r5] + add r6, r6, r4 + strh r6, [r2, #4] +_022391FA: + add r3, r3, #1 + add r1, r1, #1 + add r2, r2, #2 + cmp r3, #3 + blt _022391EE +_02239204: + add r7, r7, #1 + add r0, #0xc + cmp r7, #4 + blt _022391D0 +_0223920C: + b _0223928C +_0223920E: + ldr r5, [sp, #8] + mov r7, #0 + mov r6, #4 +_02239214: + ldrb r0, [r5, #0xa] + bl FUN_02083114 + cmp r0, #0x14 + blt _02239244 + mov r0, #2 + ldrsh r0, [r5, r0] + mov r2, #0 + add r1, r5, #0 + add r0, r0, r4 + strh r0, [r5, #2] + add r0, sp, #0x3c + add r0, #2 +_0223922E: + ldrb r3, [r0] + cmp r3, #1 + bne _0223923A + ldrsh r3, [r1, r6] + add r3, r3, r4 + strh r3, [r1, #4] +_0223923A: + add r2, r2, #1 + add r0, r0, #1 + add r1, r1, #2 + cmp r2, #3 + blt _0223922E +_02239244: + add r7, r7, #1 + add r5, #0xc + cmp r7, #4 + blt _02239214 + b _0223928C +_0223924E: + ldr r0, [sp, #8] + mov r7, #0 + mov r5, #4 +_02239254: + ldr r1, [sp, #0x18] + ldrb r2, [r1, #2] + ldrb r1, [r0, #0xa] + cmp r2, r1 + bne _02239284 + mov r1, #2 + ldrsh r1, [r0, r1] + mov r3, #0 + add r2, r0, #0 + add r1, r1, r4 + strh r1, [r0, #2] + add r1, sp, #0x3c + add r1, #2 +_0223926E: + ldrb r6, [r1] + cmp r6, #1 + bne _0223927A + ldrsh r6, [r2, r5] + add r6, r6, r4 + strh r6, [r2, #4] +_0223927A: + add r3, r3, #1 + add r1, r1, #1 + add r2, r2, #2 + cmp r3, #3 + blt _0223926E +_02239284: + add r7, r7, #1 + add r0, #0xc + cmp r7, #4 + blt _02239254 +_0223928C: + ldr r0, [sp, #0x18] + add r0, #0xc + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #0xa5 + bge _0223929E + b _0223911A +_0223929E: + add r4, sp, #0x34 + mov r5, #0 + add r4, #2 +_022392A4: + ldr r0, [sp, #4] + ldr r0, [r0] + bl FUN_02082878 + strh r0, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022392A4 + mov r5, #0 + add r4, sp, #0x30 +_022392BA: + ldr r0, [sp, #4] + ldr r0, [r0] + bl FUN_02082878 + strh r0, [r4] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #3 + blt _022392BA + ldr r0, [sp, #8] + mov r7, #0 + ldrh r0, [r0] + cmp r0, #0 + bne _022392E2 + ldr r1, [sp, #8] +_022392D8: + add r1, #0xc + ldrh r0, [r1] + add r7, r7, #1 + cmp r0, #0 + beq _022392D8 +_022392E2: + mov r2, #0xc + add r1, r7, #0 + ldr r0, [sp, #8] + mul r1, r2 + add r1, r0, r1 + mov r0, #2 + add r4, r7, #1 + ldrsh r1, [r1, r0] + cmp r4, #4 + bge _02239336 + ldr r0, [sp, #8] + mul r2, r4 + add r2, r0, r2 + add r0, sp, #0x34 + lsl r3, r4, #1 + add r0, #2 + add r3, r0, r3 +_02239304: + ldrh r0, [r2] + cmp r0, #0 + beq _0223932C + mov r0, #2 + ldrsh r0, [r2, r0] + cmp r0, r1 + bgt _02239328 + cmp r0, r1 + bne _0223932C + ldrh r5, [r3] + lsl r6, r7, #1 + str r5, [sp, #0x28] + add r5, sp, #0x34 + add r5, #2 + ldrh r6, [r5, r6] + ldr r5, [sp, #0x28] + cmp r5, r6 + bls _0223932C +_02239328: + add r7, r4, #0 + add r1, r0, #0 +_0223932C: + add r4, r4, #1 + add r2, #0xc + add r3, r3, #2 + cmp r4, #4 + blt _02239304 +_02239336: + ldr r0, [sp, #4] + ldr r5, [r0] + ldr r0, _022393B0 ; =0x00000171 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _022393CA + mov r0, #0xc + add r6, r7, #0 + mul r6, r0 + ldr r0, [sp, #8] + mov r2, #0 + add r4, r0, r6 + add r3, r2, #0 + mov r0, #4 +_02239352: + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _0223935A + add r2, r2, #1 +_0223935A: + add r3, r3, #1 + add r4, r4, #2 + cmp r3, #3 + blt _02239352 + cmp r2, #3 + bne _022393CA + ldr r1, _022393B4 ; =0x022456D4 + add r0, sp, #0x2c + ldrb r2, [r1] + strb r2, [r0] + ldrb r2, [r1, #1] + strb r2, [r0, #1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #3] + strb r2, [r0, #2] + strb r1, [r0, #3] + add r0, r5, #0 + bl FUN_02082878 + ldr r1, [sp, #4] + mov r2, #0x12 + lsl r0, r0, #0x18 + ldr r1, [r1] + lsl r2, r2, #4 + ldrb r4, [r1, r2] + add r3, sp, #0x2c + lsr r0, r0, #0x18 + ldrb r3, [r3, r4] + cmp r0, r3 + bge _022393CA + add r2, r2, #3 + ldrb r2, [r1, r2] + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add r2, r1, r2 + ldr r1, _022393B8 ; =0x0000023E + b _022393BC + .align 2, 0 +_022393A4: .word 0x0224574C +_022393A8: .word 0x0000011F +_022393AC: .word 0x022456D8 +_022393B0: .word 0x00000171 +_022393B4: .word 0x022456D4 +_022393B8: .word 0x0000023E +_022393BC: + add r0, r0, #4 + ldrb r1, [r2, r1] + add r0, r0, r6 + lsl r2, r1, #1 + ldrsh r1, [r0, r2] + sub r1, #0x64 + strh r1, [r0, r2] +_022393CA: + mov r0, #0 + str r0, [sp, #0x24] + mov r0, #0xc + add r1, r7, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0x30 + add r0, r0, r1 + mov r1, #4 + ldrsh r5, [r0, r1] + mov ip, r0 + mov r4, #1 + add r2, r0, #2 + add r3, #2 +_022393E6: + mov r0, #4 + ldrsh r6, [r2, r0] + cmp r6, r5 + bgt _02239400 + cmp r6, r5 + bne _02239404 + ldr r0, [sp, #0x24] + ldrh r7, [r3] + lsl r1, r0, #1 + add r0, sp, #0x30 + ldrh r0, [r0, r1] + cmp r7, r0 + bls _02239404 +_02239400: + str r4, [sp, #0x24] + add r5, r6, #0 +_02239404: + add r4, r4, #1 + add r2, r2, #2 + add r3, r3, #2 + cmp r4, #3 + blt _022393E6 + mov r0, ip + ldrh r1, [r0] + ldr r0, [sp, #0x10] + strh r1, [r0] + ldr r1, [sp, #0x58] + ldr r0, [sp, #0x24] + strb r0, [r1] + ldr r0, [sp, #0x10] + ldrh r0, [r0] + cmp r0, #0 + bne _02239428 + bl ErrorHandling +_02239428: + ldr r0, [sp, #0x58] + ldrb r0, [r0] + cmp r0, #3 + blo _02239434 + bl ErrorHandling +_02239434: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02239438 +MOD12_02239438: ; 0x02239438 + ldrb r0, [r0] + cmp r0, #4 + bne _02239442 + mov r0, #1 + bx lr +_02239442: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239448 +MOD12_02239448: ; 0x02239448 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0xe0 + ldr r0, [r0] + lsl r0, r0, #8 + lsr r0, r0, #0x18 + beq _0223945A + mov r0, #1 + bx lr +_0223945A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239460 +MOD12_02239460: ; 0x02239460 + mov r1, #0 +_02239462: + ldrb r0, [r2, #0xa] + cmp r0, #5 + bne _0223946C + mov r0, #1 + bx lr +_0223946C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239462 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239478 +MOD12_02239478: ; 0x02239478 + mov r1, #0 +_0223947A: + ldrb r0, [r2, #0xa] + cmp r0, #9 + bne _02239484 + mov r0, #1 + bx lr +_02239484: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223947A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239490 +MOD12_02239490: ; 0x02239490 + mov r1, #0 +_02239492: + ldrb r0, [r2, #0xa] + cmp r0, #0xc + bne _0223949C + mov r0, #1 + bx lr +_0223949C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239492 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394A8 +MOD12_022394A8: ; 0x022394A8 + mov r1, #0 +_022394AA: + ldrb r0, [r2, #0xa] + cmp r0, #0xf + bne _022394B4 + mov r0, #1 + bx lr +_022394B4: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394AA + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394C0 +MOD12_022394C0: ; 0x022394C0 + mov r1, #0 +_022394C2: + ldrb r0, [r2, #0xa] + cmp r0, #0x11 + bne _022394CC + mov r0, #1 + bx lr +_022394CC: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394C2 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394D8 +MOD12_022394D8: ; 0x022394D8 + mov r1, #0 +_022394DA: + ldrb r0, [r2, #0xa] + cmp r0, #0x12 + bne _022394E4 + mov r0, #1 + bx lr +_022394E4: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394DA + mov r0, #0 + bx lr + + thumb_func_start MOD12_022394F0 +MOD12_022394F0: ; 0x022394F0 + mov r1, #0 +_022394F2: + ldrb r0, [r2, #0xa] + cmp r0, #0x13 + bne _022394FC + mov r0, #1 + bx lr +_022394FC: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022394F2 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239508 +MOD12_02239508: ; 0x02239508 + mov r1, #0 +_0223950A: + ldrb r0, [r2, #0xa] + cmp r0, #0x14 + bne _02239514 + mov r0, #1 + bx lr +_02239514: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223950A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239520 +MOD12_02239520: ; 0x02239520 + mov r1, #0 +_02239522: + ldrb r0, [r2, #0xa] + cmp r0, #0x15 + bne _0223952C + mov r0, #1 + bx lr +_0223952C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239522 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239538 +MOD12_02239538: ; 0x02239538 + push {r3, r4} + lsl r1, r1, #1 + add r2, r0, r1 + mov r1, #0x12 + ldrsh r3, [r2, r1] + mov r4, #0 +_02239544: + ldrsh r2, [r0, r1] + cmp r3, r2 + bgt _02239552 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #4 + blt _02239544 +_02239552: + cmp r4, #4 + bne _0223955C + mov r0, #1 + pop {r3, r4} + bx lr +_0223955C: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239564 +MOD12_02239564: ; 0x02239564 + push {r3, r4} + ldrb r2, [r0] + cmp r2, #4 + bne _0223958E + lsl r1, r1, #1 + add r2, r0, r1 + mov r1, #0x12 + ldrsh r3, [r2, r1] + mov r4, #0 +_02239576: + ldrsh r2, [r0, r1] + cmp r3, r2 + bgt _02239584 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #4 + blt _02239576 +_02239584: + cmp r4, #4 + bne _0223958E + mov r0, #1 + pop {r3, r4} + bx lr +_0223958E: + mov r0, #0 + pop {r3, r4} + bx lr + + thumb_func_start MOD12_02239594 +MOD12_02239594: ; 0x02239594 + ldr r3, [sp] + mov r1, #0 +_02239598: + ldrb r0, [r2, #0xa] + cmp r0, #4 + bne _022395A8 + ldrb r0, [r2, #0xb] + cmp r3, r0 + bne _022395A8 + mov r0, #1 + bx lr +_022395A8: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239598 + mov r0, #0 + bx lr + + thumb_func_start MOD12_022395B4 +MOD12_022395B4: ; 0x022395B4 + ldr r3, [sp] + mov r1, #0 +_022395B8: + ldrb r0, [r2, #0xb] + cmp r3, r0 + bne _022395C2 + mov r0, #1 + bx lr +_022395C2: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _022395B8 + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_022395D0 +MOD12_022395D0: ; 0x022395D0 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_022395D6: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _022395E4 + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _022395D6 +_022395E4: + cmp r4, #4 + bne _022395EE + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_022395EE: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_022395F6: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _02239602 + strb r2, [r3, r6] + add r5, r5, #1 +_02239602: + add r6, r6, #1 + cmp r6, #3 + blt _022395F6 + cmp r5, #0 + ble _02239612 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239612: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239618 +MOD12_02239618: ; 0x02239618 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_0223961E: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _0223962C + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _0223961E +_0223962C: + cmp r4, #4 + bne _02239636 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_02239636: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_0223963E: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x1e + bne _0223964A + add r5, r5, #1 + strb r2, [r3, r6] +_0223964A: + add r6, r6, #1 + cmp r6, #3 + blt _0223963E + cmp r5, #0 + ble _0223965A + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223965A: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239660 +MOD12_02239660: ; 0x02239660 + mov r1, #0 +_02239662: + ldrb r0, [r2, #0xa] + cmp r0, #8 + bne _0223966C + mov r0, #1 + bx lr +_0223966C: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _02239662 + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239678 +MOD12_02239678: ; 0x02239678 + mov r1, #0 +_0223967A: + ldrb r0, [r2, #0xa] + cmp r0, #0xd + bne _02239684 + mov r0, #1 + bx lr +_02239684: + add r1, r1, #1 + add r2, #0xc + cmp r1, #4 + blt _0223967A + mov r0, #0 + bx lr + + thumb_func_start MOD12_02239690 +MOD12_02239690: ; 0x02239690 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_0223969A: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _022396A6 + add r6, r6, #1 + strb r2, [r3, r5] +_022396A6: + add r5, r5, #1 + cmp r5, #3 + blt _0223969A + cmp r6, #0 + ble _022396B6 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022396B6: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022396BC +MOD12_022396BC: ; 0x022396BC + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022396C6: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x1e + bne _022396D2 + add r6, r6, #1 + strb r2, [r3, r5] +_022396D2: + add r5, r5, #1 + cmp r5, #3 + blt _022396C6 + cmp r6, #0 + ble _022396E2 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022396E2: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022396E8 +MOD12_022396E8: ; 0x022396E8 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022396F2: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0xa + bgt _022396FE + add r6, r6, #1 + strb r2, [r3, r5] +_022396FE: + add r5, r5, #1 + cmp r5, #3 + blt _022396F2 + cmp r6, #0 + ble _0223970E + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223970E: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239714 +MOD12_02239714: ; 0x02239714 + push {r3, r4} + mov r4, #0 + mov r1, #0x22 +_0223971A: + add r2, r0, r4 + ldrsb r2, [r2, r1] + cmp r2, #0x14 + bge _02239728 + mov r0, #0 + pop {r3, r4} + bx lr +_02239728: + add r4, r4, #1 + cmp r4, #3 + blt _0223971A + mov r1, #0 + mov r0, #1 +_02239732: + strb r0, [r3, r1] + add r1, r1, #1 + cmp r1, #3 + blt _02239732 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239740 +MOD12_02239740: ; 0x02239740 + push {r3, r4} + mov r4, #0 + mov r1, #0x22 +_02239746: + add r2, r0, r4 + ldrsb r2, [r2, r1] + cmp r2, #0x14 + ble _02239754 + mov r0, #0 + pop {r3, r4} + bx lr +_02239754: + add r4, r4, #1 + cmp r4, #3 + blt _02239746 + mov r1, #0 + mov r0, #1 +_0223975E: + strb r0, [r3, r1] + add r1, r1, #1 + cmp r1, #3 + blt _0223975E + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223976C +MOD12_0223976C: ; 0x0223976C + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_02239776: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x14 + bgt _02239782 + strb r2, [r3, r5] + add r6, r6, #1 +_02239782: + add r5, r5, #1 + cmp r5, #3 + blt _02239776 + cmp r6, #1 + bne _02239792 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239792: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239798 +MOD12_02239798: ; 0x02239798 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022397A2: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _022397AE + strb r2, [r3, r5] + add r6, r6, #1 +_022397AE: + add r5, r5, #1 + cmp r5, #3 + blt _022397A2 + cmp r6, #2 + bne _022397BE + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022397BE: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022397C4 +MOD12_022397C4: ; 0x022397C4 + push {r3, r4, r5, r6} + mov r6, #0 + add r5, r6, #0 + mov r2, #1 + mov r1, #0x22 +_022397CE: + add r4, r0, r5 + ldrsb r4, [r4, r1] + cmp r4, #0 + bne _022397DA + strb r2, [r3, r5] + add r6, r6, #1 +_022397DA: + add r5, r5, #1 + cmp r5, #3 + blt _022397CE + cmp r6, #1 + bne _022397EA + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_022397EA: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_022397F0 +MOD12_022397F0: ; 0x022397F0 + push {r3, r4, r5, r6} + ldr r5, [sp, #0x10] + mov r4, #0 +_022397F6: + ldrb r1, [r2, #0xb] + cmp r5, r1 + beq _02239804 + add r4, r4, #1 + add r2, #0xc + cmp r4, #4 + blt _022397F6 +_02239804: + cmp r4, #4 + bne _0223980E + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_0223980E: + mov r5, #0 + add r6, r5, #0 + mov r2, #1 + mov r1, #0x22 +_02239816: + add r4, r0, r6 + ldrsb r4, [r4, r1] + cmp r4, #0x28 + bne _02239822 + strb r2, [r3, r6] + add r5, r5, #1 +_02239822: + add r6, r6, #1 + cmp r6, #3 + blt _02239816 + cmp r5, #0 + ble _02239832 + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_02239832: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + + thumb_func_start MOD12_02239838 +MOD12_02239838: ; 0x02239838 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #8] + cmp r0, #0 + bne _02239858 + lsl r0, r4, #4 + add r0, r5, r0 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _02239872 + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_02239858: + bl FUN_02007534 + add r6, r5, #0 + add r6, #0x48 + lsl r7, r4, #4 + ldr r0, [r6, r7] + bl FUN_02016A18 + lsl r0, r4, #2 + mov r1, #0 + add r0, r5, r0 + str r1, [r0, #8] + str r1, [r6, r7] +_02239872: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02239874 +MOD12_02239874: ; 0x02239874 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_0223987A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_02239838 + add r4, r4, #1 + cmp r4, #4 + blt _0223987A + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223988C +MOD12_0223988C: ; 0x0223988C + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r2, _022398D4 ; =0x000080EA + mov r3, #0x43 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _022398D4 ; =0x000080EA + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x44 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _022398D4 ; =0x000080EA + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x45 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022398D4: .word 0x000080EA + + thumb_func_start MOD12_022398D8 +MOD12_022398D8: ; 0x022398D8 + push {r4, lr} + ldr r1, _022398F4 ; =0x000080EA + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _022398F4 ; =0x000080EA + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _022398F4 ; =0x000080EA + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_022398F4: .word 0x000080EA + + thumb_func_start MOD12_022398F8 +MOD12_022398F8: ; 0x022398F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _0223996C ; =0x02245F14 + bl FUN_0200C154 + lsl r1, r6, #0x10 + lsl r2, r7, #0x10 + mov r3, #1 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + str r0, [r4, #4] + bl FUN_0200C750 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _0223993C + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C5C0 +_0223993C: + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_0200C59C + lsl r0, r6, #8 + str r0, [r4, #8] + lsl r0, r7, #8 + str r0, [r4, #0xc] + ldr r0, _02239970 ; =0x000004F9 + ldr r2, _02239974 ; =0x0000C350 + add r1, r5, r0 + str r1, [r4] + ldrb r0, [r1] + add r0, r0, #1 + strb r0, [r1] + ldr r0, _02239978 ; =MOD12_02239980 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _0223997C ; =0x000006E1 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223996C: .word 0x02245F14 +_02239970: .word 0x000004F9 +_02239974: .word 0x0000C350 +_02239978: .word MOD12_02239980 +_0223997C: .word 0x000006E1 + + thumb_func_start MOD12_02239980 +MOD12_02239980: ; 0x02239980 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _022399EE + ldr r0, [r4, #0x10] + bl FUN_0201B9B8 + lsl r1, r0, #3 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r5, r0, #0xc + mov r0, #6 + mov r3, #1 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + lsl r3, r3, #8 + sub r2, r0, r3 + str r2, [r4, #0xc] + ldr r1, [r4, #8] + ldr r0, [r4, #4] + asr r6, r1, #7 + lsr r6, r6, #0x18 + add r6, r1, r6 + asr r1, r6, #8 + add r1, r1, r5 + asr r5, r2, #7 + lsr r5, r5, #0x18 + add r5, r2, r5 + lsl r1, r1, #0x10 + lsl r2, r5, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0xc + bl FUN_0200C750 + ldrh r0, [r4, #0x16] + add r0, r0, #1 + strh r0, [r4, #0x16] + ldrh r0, [r4, #0x16] + cmp r0, #0x3c + bhs _022399E6 + ldr r1, [r4, #0xc] + ldr r0, _02239A0C ; =0xFFFFE000 + cmp r1, r0 + bgt _02239A08 +_022399E6: + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_022399EE: + ldr r0, [r4, #4] + bl FUN_0200C3DC + ldr r1, [r4] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02239A08: + pop {r4, r5, r6, pc} + nop +_02239A0C: .word 0xFFFFE000 + + thumb_func_start MOD12_02239A10 +MOD12_02239A10: ; 0x02239A10 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r1, #0 + cmp r0, #0 + beq _02239A22 + bl ErrorHandling +_02239A22: + mov r1, #0x30 + ldr r2, [r5] + mul r1, r4 + add r1, r2, r1 + ldrh r1, [r1, #0x1a] + add r0, sp, #0x10 + bl FUN_020690AC + ldr r0, _02239A54 ; =0xFFFFFDC0 + mov r2, #5 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + add r1, sp, #0x10 + lsl r2, r2, #6 + mov r3, #0x20 + bl FUN_020073A0 + str r0, [r5, #0x24] + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_02239A54: .word 0xFFFFFDC0 + + thumb_func_start MOD12_02239A58 +MOD12_02239A58: ; 0x02239A58 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _02239A6A + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_02239A6A: + pop {r4, pc} + + thumb_func_start MOD12_02239A6C +MOD12_02239A6C: ; 0x02239A6C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #0 + beq _02239A82 + cmp r6, #0 + bne _02239A82 + bl ErrorHandling +_02239A82: + cmp r4, #0 + beq _02239ACC + cmp r4, #1 + bne _02239AC8 + ldrb r4, [r6] + ldr r3, [r5] + mov r0, #1 + lsl r2, r4, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r4, r3, r4 + mov r3, #0x42 + str r0, [sp, #4] + lsl r3, r3, #2 + add r2, #0xe8 + ldrb r3, [r4, r3] + ldr r0, [r5, #0x48] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r6] + ldr r1, [r5, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_02239AC8: + bl ErrorHandling +_02239ACC: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02239AD0 +MOD12_02239AD0: ; 0x02239AD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _02239B40 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02239AF2 + ldr r0, _02239B44 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02239AF4 +_02239AF2: + mov r4, #1 +_02239AF4: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_02239A6C + ldr r0, [r5, #0x48] + ldr r1, [r5, #0x4c] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x4c] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + add r5, #0xd0 + strb r0, [r5] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239B40: .word 0x00000171 +_02239B44: .word 0x00001988 + + thumb_func_start MOD12_02239B48 +MOD12_02239B48: ; 0x02239B48 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0xf + blo _02239B5A + bl ErrorHandling +_02239B5A: + str r4, [sp] + ldr r2, _02239B74 ; =0x02245F48 + lsl r3, r5, #2 + ldr r4, _02239B78 ; =0x02245F4A + ldrh r2, [r2, r3] + ldrb r3, [r4, r3] + ldr r1, [r6, #0x44] + add r0, r6, #0 + bl MOD12_02239AD0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02239B74: .word 0x02245F48 +_02239B78: .word 0x02245F4A + + thumb_func_start MOD12_02239B7C +MOD12_02239B7C: ; 0x02239B7C + ldr r3, _02239B84 ; =0x0201BD71 + add r0, #0xd0 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_02239B84: .word 0x0201BD71 + + thumb_func_start MOD12_02239B88 +MOD12_02239B88: ; 0x02239B88 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02239BBC ; =0x02245FA4 + add r3, sp, #0 + str r1, [sp] + mov r1, #0x11 + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02239BC0 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _02239BC4 ; =0x000004FC + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02239BBC: .word 0x02245FA4 +_02239BC0: .word 0x00000123 +_02239BC4: .word 0x000004FC + + thumb_func_start MOD12_02239BC8 +MOD12_02239BC8: ; 0x02239BC8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239BDC +MOD12_02239BDC: ; 0x02239BDC + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239BEC +MOD12_02239BEC: ; 0x02239BEC + bx lr + .align 2, 0 + + thumb_func_start MOD12_02239BF0 +MOD12_02239BF0: ; 0x02239BF0 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239C04 +MOD12_02239C04: ; 0x02239C04 + push {r4, lr} + ldr r3, _02239C18 ; =0x00000F1C + mov r4, #1 + strb r4, [r1, r3] + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, pc} + .align 2, 0 +_02239C18: .word 0x00000F1C + + thumb_func_start MOD12_02239C1C +MOD12_02239C1C: ; 0x02239C1C + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239C30 +MOD12_02239C30: ; 0x02239C30 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + mov r5, #0 + strh r0, [r4, #0xa] + ldr r0, [sp, #0x10] + str r0, [r4, #0xc] + ldrb r0, [r7] + strb r0, [r4, #0x11] + b _02239C90 +_02239C6C: + ldr r1, [r4] + lsl r0, r5, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239C8E + bl FUN_021DD540 + ldr r1, [r4] + lsl r0, r5, #4 + add r2, r1, r0 + mov r0, #0xf2 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r2, r0] +_02239C8E: + add r5, r5, #1 +_02239C90: + cmp r5, #4 + blt _02239C6C + ldrb r0, [r7] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r0, sp, #0x14 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x16 + str r0, [sp, #0x20] + mov r1, #0x80 + mov r0, #0x68 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldrb r2, [r7] + lsl r2, r2, #4 + add r3, r6, r2 + ldr r2, _02239D74 ; =0x00000F24 + str r1, [r3, r2] + ldrb r1, [r7] + lsl r1, r1, #4 + add r3, r6, r1 + add r1, r2, #4 + str r0, [r3, r1] + ldrb r1, [r7] + ldr r2, [r6] + add r0, sp, #0x14 + lsl r1, r1, #2 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + ldrb r1, [r7] + lsl r1, r1, #4 + add r2, r6, r1 + mov r1, #0xf2 + lsl r1, r1, #4 + str r0, [r2, r1] + ldrb r0, [r7] + lsl r0, r0, #4 + add r0, r6, r0 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_021DD594 + ldr r0, _02239D78 ; =0x04000048 + mov r2, #0x3f + ldrh r1, [r0] + mov r3, #0x1f + bic r1, r2 + add r5, r1, #0 + orr r5, r3 + mov r1, #0x20 + orr r1, r5 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r2 + orr r1, r3 + strh r1, [r0, #2] + mov r1, #1 + add r2, r1, #0 + add r0, #8 + sub r2, #0x11 + bl G2x_SetBlendBrightness_ + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02239D7C ; =0xFFFF1FFF + mov r3, #0xff + and r1, r0 + lsr r0, r2, #0xd + orr r0, r1 + mov r1, #0xf6 + str r0, [r2] + lsl r1, r1, #4 + mov r0, #0 + strb r0, [r6, r1] + add r2, r1, #1 + strb r0, [r6, r2] + add r2, r1, #2 + strb r3, [r6, r2] + ldr r2, _02239D80 ; =0x02245F84 + add r1, r1, #3 + ldrsb r2, [r2, r0] + mov r3, #2 + add r2, r2, #4 + lsl r2, r2, #3 + strb r2, [r6, r1] + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x14 + bl FUN_020068C8 + ldr r0, _02239D84 ; =MOD12_02239D8C + ldr r2, _02239D88 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02239D74: .word 0x00000F24 +_02239D78: .word 0x04000048 +_02239D7C: .word 0xFFFF1FFF +_02239D80: .word 0x02245F84 +_02239D84: .word MOD12_02239D8C +_02239D88: .word 0x00007530 + + thumb_func_start MOD12_02239D8C +MOD12_02239D8C: ; 0x02239D8C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #4 + bhi _02239E6E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02239DA4: ; jump table + .short _02239DAE - _02239DA4 - 2 ; case 0 + .short _02239DB4 - _02239DA4 - 2 ; case 1 + .short _02239E0E - _02239DA4 - 2 ; case 2 + .short _02239E14 - _02239DA4 - 2 ; case 3 + .short _02239E54 - _02239DA4 - 2 ; case 4 +_02239DAE: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239DB4: + ldr r1, _02239E88 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x1e + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r3, r0, #0 + ldrb r0, [r4, #0x11] + mov r2, #0xf2 + lsl r2, r2, #4 + lsl r1, r0, #4 + ldr r0, [r4] + add r5, r0, r1 + add r1, r2, #4 + ldr r0, [r5, r2] + add r2, #8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_021DD678 + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_021DD594 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E0E: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E14: + ldr r1, _02239E88 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x1f + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _02239E8C ; =0x00001FFF + ldr r0, [r0, #0x50] + add r3, r1, #0 + bl FUN_02003A64 + mov r3, #0 + str r3, [sp] + ldr r0, [r4] + ldr r2, _02239E90 ; =0x00003FFF + ldr r0, [r0, #0x50] + mov r1, #2 + bl FUN_02003A64 + ldr r0, _02239E94 ; =0x000006EC + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E54: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0xa + ble _02239E86 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239E6E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02239E86: + pop {r3, r4, r5, pc} + .align 2, 0 +_02239E88: .word 0x04000048 +_02239E8C: .word 0x00001FFF +_02239E90: .word 0x00003FFF +_02239E94: .word 0x000006EC + + thumb_func_start MOD12_02239E98 +MOD12_02239E98: ; 0x02239E98 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239EAC +MOD12_02239EAC: ; 0x02239EAC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02239EF0 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _02239EF4 ; =MOD12_02239EF8 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239EF0: .word 0x00007530 +_02239EF4: .word MOD12_02239EF8 + + thumb_func_start MOD12_02239EF8 +MOD12_02239EF8: ; 0x02239EF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02239F0A + cmp r0, #1 + beq _02239F3A + b _02239F8E +_02239F0A: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02239F3A: + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + mov r0, #1 + ldr r1, [r4, #0x18] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #6 + str r2, [r4, #0x18] + cmp r2, r1 + blt _02239F64 + lsl r0, r0, #6 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02239F64: + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x14] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x18] + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x14] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_02239F8E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02239FA8 +MOD12_02239FA8: ; 0x02239FA8 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02239FBC +MOD12_02239FBC: ; 0x02239FBC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A004 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #1] + strb r0, [r4, #0x12] + mov r0, #0 + strb r0, [r4, #0x1a] + ldr r0, _0223A008 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A004: .word 0x00007530 +_0223A008: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A00C +MOD12_0223A00C: ; 0x0223A00C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A054 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #2] + strb r0, [r4, #0x12] + mov r0, #1 + strb r0, [r4, #0x1a] + ldr r0, _0223A058 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A054: .word 0x00007530 +_0223A058: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A05C +MOD12_0223A05C: ; 0x0223A05C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223A0B4 ; =0x00007530 + str r0, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r1, [r6, #1] + ldrb r0, [r6, #2] + add r0, r1, r0 + strb r0, [r4, #0x12] + ldrb r0, [r6, #1] + add r1, r4, #0 + strb r0, [r4, #0x14] + ldrb r0, [r6, #2] + strb r0, [r4, #0x15] + mov r0, #0 + strb r0, [r4, #0x1a] + mov r0, #1 + strb r0, [r4, #0x1b] + ldr r0, _0223A0B8 ; =MOD12_0223A0BC + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A0B4: .word 0x00007530 +_0223A0B8: .word MOD12_0223A0BC + + thumb_func_start MOD12_0223A0BC +MOD12_0223A0BC: ; 0x0223A0BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0x10] + cmp r0, #0 + beq _0223A0D6 + cmp r0, #1 + beq _0223A0E6 + cmp r0, #2 + bne _0223A0D4 + b _0223A22E +_0223A0D4: + b _0223A248 +_0223A0D6: + ldr r0, _0223A264 ; =0x000006E5 + bl FUN_020054C8 + mov r0, #0xf + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223A0E6: + ldrb r1, [r5, #0x13] + ldrb r0, [r5, #0x12] + cmp r1, r0 + blo _0223A102 + mov r0, #0 + strb r0, [r5, #0x11] + ldr r0, _0223A264 ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r5, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223A102: + ldrb r0, [r5, #0x1b] + cmp r0, #1 + bne _0223A112 + ldrb r0, [r5, #0x14] + cmp r1, r0 + blo _0223A112 + mov r0, #1 + strb r0, [r5, #0x1a] +_0223A112: + ldrb r0, [r5, #0x11] + cmp r0, #0 + beq _0223A120 + sub r0, r0, #1 + add sp, #8 + strb r0, [r5, #0x11] + pop {r3, r4, r5, r6, r7, pc} +_0223A120: + mov r0, #3 + strb r0, [r5, #0x11] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #0x60 + bl _s32_div_f + lsl r0, r1, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x10 + asr r7, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A164 + ldr r0, [sp, #4] + add r0, #0x80 + b _0223A16A +_0223A164: + ldr r0, [sp, #4] + mov r1, #0x80 + sub r0, r1, r0 +_0223A16A: + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A182 + add r0, r7, #0 + add r0, #0x60 + b _0223A186 +_0223A182: + mov r0, #0x60 + sub r0, r0, r7 +_0223A186: + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _0223A1F6 + mov r0, #0x16 + ldrsh r0, [r5, r0] + cmp r0, #0x80 + bge _0223A19C + cmp r6, #0x80 + blt _0223A1A4 +_0223A19C: + cmp r0, #0x80 + ble _0223A1F6 + cmp r6, #0x80 + ble _0223A1F6 +_0223A1A4: + mov r0, #0x18 + ldrsh r0, [r5, r0] + cmp r0, #0x60 + bge _0223A1B0 + cmp r4, #0x60 + blt _0223A1B8 +_0223A1B0: + cmp r0, #0x60 + ble _0223A1F6 + cmp r4, #0x60 + ble _0223A1F6 +_0223A1B8: + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02082878 + mov r1, #1 + tst r0, r1 + beq _0223A1E2 + cmp r6, #0x80 + bge _0223A1D6 + ldr r0, [sp, #4] + add r0, #0x80 + str r0, [sp, #4] + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + b _0223A1F6 +_0223A1D6: + ldr r0, [sp, #4] + mov r1, #0x80 + sub r0, r1, r0 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + b _0223A1F6 +_0223A1E2: + cmp r4, #0x60 + bge _0223A1EE + add r7, #0x60 + lsl r0, r7, #0x10 + asr r4, r0, #0x10 + b _0223A1F6 +_0223A1EE: + mov r0, #0x60 + sub r0, r0, r7 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 +_0223A1F6: + ldrb r1, [r5, #0x13] + mov r0, #1 + tst r0, r1 + ldrb r0, [r5, #0x1a] + beq _0223A212 + str r0, [sp] + mov r3, #0x2d + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + lsl r3, r3, #0xe + bl MOD12_022398F8 + b _0223A220 +_0223A212: + str r0, [sp] + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD12_022398F8 +_0223A220: + strh r6, [r5, #0x16] + strh r4, [r5, #0x18] + ldrb r0, [r5, #0x13] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x13] + pop {r3, r4, r5, r6, r7, pc} +_0223A22E: + ldrb r0, [r5, #0x11] + add r0, r0, #1 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x11] + cmp r0, #0x1e + bls _0223A260 + mov r0, #0 + strb r0, [r5, #0x11] + ldrb r0, [r5, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223A248: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A260: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A264: .word 0x000006E5 + + thumb_func_start MOD12_0223A268 +MOD12_0223A268: ; 0x0223A268 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A27C +MOD12_0223A27C: ; 0x0223A27C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A2C0 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A2C4 ; =MOD12_0223A2C8 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A2C0: .word 0x00007530 +_0223A2C4: .word MOD12_0223A2C8 + + thumb_func_start MOD12_0223A2C8 +MOD12_0223A2C8: ; 0x0223A2C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r3, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A2EC + cmp r0, #1 + beq _0223A314 + b _0223A348 +_0223A2EC: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, _0223A384 ; =0x00000F24 + ldr r1, [r1, r0] + add r0, r0, #4 + lsl r1, r1, #8 + str r1, [r4, #0x14] + ldrb r1, [r4, #0x11] + ldr r2, [r4] + lsl r1, r1, #4 + add r1, r2, r1 + ldr r0, [r1, r0] + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223A314: + mov r0, #3 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + add r1, r1, r0 + mov r0, #0x4b + lsl r0, r0, #0xa + str r1, [r4, #0x14] + cmp r1, r0 + blt _0223A32C + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A32C: + ldrb r0, [r4, #0x11] + ldr r2, [r4, #0x18] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [r4, #0x14] + asr r2, r2, #8 + asr r1, r1, #8 + bl FUN_021DD678 + pop {r3, r4, r5, pc} +_0223A348: + ldrb r0, [r4, #0x11] + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_021DD540 + ldrb r0, [r4, #0x11] + mov r2, #0 + ldr r1, [r4] + lsl r0, r0, #4 + add r1, r1, r0 + mov r0, #0xf2 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0223A384: .word 0x00000F24 + + thumb_func_start MOD12_0223A388 +MOD12_0223A388: ; 0x0223A388 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A39C +MOD12_0223A39C: ; 0x0223A39C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A3D8 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223A3DC ; =MOD12_0223A3E0 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A3D8: .word 0x00007530 +_0223A3DC: .word MOD12_0223A3E0 + + thumb_func_start MOD12_0223A3E0 +MOD12_0223A3E0: ; 0x0223A3E0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223A3F0 + b _0223A516 +_0223A3F0: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A404 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223A404: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A418 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223A418: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223A490 +_0223A430: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223A534 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223A48A + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223A538 ; =0x02245F8C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223A484 +_0223A460: + mov r4, #0 + b _0223A478 +_0223A464: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223A478: + cmp r4, #8 + blt _0223A464 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223A484: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223A460 +_0223A48A: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223A490: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223A430 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223A4D2 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223A4D2 + ldr r0, _0223A534 ; =0x02245F84 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223A4CC +_0223A4BC: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223A4CC: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223A4BC +_0223A4D2: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223A530 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223A530 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223A516: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A530: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223A534: .word 0x02245F84 +_0223A538: .word 0x02245F8C + + thumb_func_start MOD12_0223A53C +MOD12_0223A53C: ; 0x0223A53C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A550 +MOD12_0223A550: ; 0x0223A550 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A58C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223A590 ; =MOD12_0223A594 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A58C: .word 0x00007530 +_0223A590: .word MOD12_0223A594 + + thumb_func_start MOD12_0223A594 +MOD12_0223A594: ; 0x0223A594 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223A5A4 + b _0223A6F2 +_0223A5A4: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A5B8 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223A5B8: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223A5CC + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223A5CC: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223A64C +_0223A5E4: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _0223A710 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223A646 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _0223A714 ; =0x02245F8C + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _0223A640 +_0223A61C: + mov r4, #0 + b _0223A634 +_0223A620: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223A634: + cmp r4, #8 + blt _0223A620 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223A640: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223A61C +_0223A646: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223A64C: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223A5E4 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223A6AE + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223A6AE + mov r0, #5 + sub r1, r0, r1 + ldr r0, _0223A710 ; =0x02245F84 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _0223A6A8 +_0223A682: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223A6A8: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223A682 +_0223A6AE: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223A70C + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223A70C + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223A6F2: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223A70C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223A710: .word 0x02245F84 +_0223A714: .word 0x02245F8C + + thumb_func_start MOD12_0223A718 +MOD12_0223A718: ; 0x0223A718 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A72C +MOD12_0223A72C: ; 0x0223A72C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A770 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A774 ; =MOD12_0223A778 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A770: .word 0x00007530 +_0223A774: .word MOD12_0223A778 + + thumb_func_start MOD12_0223A778 +MOD12_0223A778: ; 0x0223A778 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A78A + cmp r0, #1 + beq _0223A7B4 + b _0223A7F8 +_0223A78A: + ldrb r1, [r4, #0x11] + ldr r0, [r4] + bl MOD12_02239A10 + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A7B4: + mov r0, #1 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + sub r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #8 + str r1, [r4, #0x14] + cmp r1, r0 + bgt _0223A7CE + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A7CE: + ldr r3, [r4, #0x14] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #0x18] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223A7F8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A814 +MOD12_0223A814: ; 0x0223A814 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A828 +MOD12_0223A828: ; 0x0223A828 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223A86C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0] + strb r0, [r4, #0x11] + ldr r0, _0223A870 ; =MOD12_0223A874 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A86C: .word 0x00007530 +_0223A870: .word MOD12_0223A874 + + thumb_func_start MOD12_0223A874 +MOD12_0223A874: ; 0x0223A874 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223A886 + cmp r0, #1 + beq _0223A8B4 + b _0223A8F8 +_0223A886: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0223A892 + bl ErrorHandling +_0223A892: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A8B4: + mov r0, #1 + ldr r1, [r4, #0x14] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #5 + lsl r0, r0, #0xe + str r1, [r4, #0x14] + cmp r1, r0 + blt _0223A8CE + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223A8CE: + ldr r3, [r4, #0x14] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #0x18] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223A8F8: + ldr r0, [r4] + bl MOD12_02239A58 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223A918 +MOD12_0223A918: ; 0x0223A918 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223A92C +MOD12_0223A92C: ; 0x0223A92C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r6, r1, #0 + mov r0, #0x16 + mov r1, #0x58 + add r5, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x58 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _0223A988 ; =0x00007530 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r0, [r4, #0xc] + ldrb r0, [r7] + strb r0, [r4, #0x11] + str r6, [r4, #0x2c] + str r6, [r4, #0x38] + add r0, r4, #0 + ldrb r1, [r7] + add r0, #0x46 + strb r1, [r0] + str r6, [r4, #0x48] + ldrb r0, [r7] + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r4, #0 + str r0, [r4, #0x24] + ldr r0, _0223A98C ; =MOD12_0223A990 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A988: .word 0x00007530 +_0223A98C: .word MOD12_0223A990 + + thumb_func_start MOD12_0223A990 +MOD12_0223A990: ; 0x0223A990 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r0, #0 + ldrb r0, [r5, #0x10] + cmp r0, #0 + beq _0223A9A8 + cmp r0, #1 + beq _0223AA32 + cmp r0, #2 + beq _0223AA5C + b _0223AA8A +_0223A9A8: + ldr r0, _0223AAA8 ; =MOD12_0223AB54 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x2c + bl FUN_0200CA44 + add r1, r5, #0 + ldr r0, _0223AAB0 ; =MOD12_0223ACFC + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x48 + bl FUN_0200CA44 + ldr r0, [r5, #0x38] + ldr r1, [r0, #0xc] + add r0, r5, #0 + add r0, #0x46 + ldrb r0, [r0] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x16 + str r0, [sp, #0xc] + mov r0, #0x80 + add r4, #0x40 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r1, [r5, #0x38] + add r0, sp, #0 + ldr r2, [r1] + add r1, r5, #0 + add r1, #0x46 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + add r1, r5, #0 + add r1, #0x46 + ldrb r1, [r1] + ldr r2, [r5, #0x38] + lsl r1, r1, #4 + add r2, r2, r1 + mov r1, #0xf2 + lsl r1, r1, #4 + str r0, [r2, r1] + add r0, r5, #0 + add r0, #0x46 + ldrb r0, [r0] + ldr r2, [r5, #0x38] + lsl r0, r0, #4 + add r0, r2, r0 + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_021DD594 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA32: + add r0, r5, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + ldr r0, _0223AAB4 ; =MOD12_0223AAF8 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x14 + bl FUN_0200CA44 + add r1, r5, #0 + ldr r0, _0223AAB8 ; =MOD12_0223ABD4 + ldr r2, _0223AAAC ; =0x0000753A + add r1, #0x38 + bl FUN_0200CA44 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA5C: + add r0, r5, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + add r0, r5, #0 + add r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + add r0, r5, #0 + add r0, #0x55 + ldrb r0, [r0] + cmp r0, #1 + bne _0223AAA2 + ldr r0, _0223AABC ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r5, #0x10] + add sp, #0x10 + add r0, r0, #1 + strb r0, [r5, #0x10] + pop {r3, r4, r5, pc} +_0223AA8A: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223AAA2: + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223AAA8: .word MOD12_0223AB54 +_0223AAAC: .word 0x0000753A +_0223AAB0: .word MOD12_0223ACFC +_0223AAB4: .word MOD12_0223AAF8 +_0223AAB8: .word MOD12_0223ABD4 +_0223AABC: .word 0x000006E5 + + thumb_func_start MOD12_0223AAC0 +MOD12_0223AAC0: ; 0x0223AAC0 + push {r3} + sub sp, #0xc + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + str r1, [r2, #8] + ldr r1, [r0, #0x20] + ldr r2, [sp] + ldr r1, [r1] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x20] + ldr r2, [sp, #4] + ldr r1, [r1] + ldr r1, [r1, #8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r1, [r0, #0x20] + ldr r2, [sp, #8] + ldr r1, [r1] + ldr r1, [r1, #0xc] + add r1, r2, r1 + str r1, [r0, #0x30] + add sp, #0xc + pop {r3} + bx lr + + thumb_func_start MOD12_0223AAF8 +MOD12_0223AAF8: ; 0x0223AAF8 + push {r4, lr} + add r4, r1, #0 + ldrb r2, [r4, #0x14] + cmp r2, #0 + beq _0223AB08 + cmp r2, #1 + beq _0223AB2C + b _0223AB44 +_0223AB08: + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #0x10] + str r0, [r4, #8] + mov r0, #0x16 + bl MOD08_02228218 + str r0, [r4, #0xc] + bl MOD08_02228524 + ldr r0, [r4, #0xc] + ldr r1, _0223AB50 ; =MOD12_0223AAC0 + bl MOD08_02228574 + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0223AB2C: + ldr r0, [r4, #0xc] + bl MOD08_022285B4 + cmp r0, #0 + bne _0223AB4C + ldr r0, [r4, #0xc] + bl MOD08_02228618 + ldrb r0, [r4, #0x14] + add r0, r0, #1 + strb r0, [r4, #0x14] + pop {r4, pc} +_0223AB44: + mov r1, #1 + strb r1, [r4, #0x15] + bl FUN_0200CAB4 +_0223AB4C: + pop {r4, pc} + nop +_0223AB50: .word MOD12_0223AAC0 + + thumb_func_start MOD12_0223AB54 +MOD12_0223AB54: ; 0x0223AB54 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _0223AB6C + cmp r0, #1 + beq _0223AB86 + cmp r0, #2 + beq _0223ABB6 + b _0223ABC0 +_0223AB6C: + ldrb r0, [r4, #0xa] + add r0, r0, #1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xa] + cmp r0, #1 + blo _0223ABD0 + mov r0, #0 + strb r0, [r4, #0xa] + ldrb r0, [r4, #8] + add sp, #0x28 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223AB86: + mov r0, #0xe + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4] + ldr r0, [r0, #0x28] + str r0, [sp, #0x1c] + ldr r0, [r4] + ldr r0, [r0, #0x50] + str r0, [sp, #0x20] + mov r0, #1 + str r0, [sp, #0x14] + add r0, sp, #0 + bl MOD08_02229918 + str r0, [r4, #4] + ldrb r0, [r4, #8] + add sp, #0x28 + add r0, r0, #1 + strb r0, [r4, #8] + pop {r3, r4, r5, pc} +_0223ABB6: + ldr r0, [r4, #4] + bl MOD08_022299E8 + cmp r0, #1 + beq _0223ABD0 +_0223ABC0: + ldr r0, [r4, #4] + bl MOD08_02229A2C + mov r0, #1 + strb r0, [r4, #9] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223ABD0: + add sp, #0x28 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223ABD4 +MOD12_0223ABD4: ; 0x0223ABD4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xe] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r6, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0223ABFA + cmp r0, #1 + beq _0223AC4A + b _0223ACE8 +_0223ABFA: + mov r1, #0 + str r1, [r4, #4] + str r1, [r4, #8] + ldrb r0, [r4, #0xe] + mov r3, #0xf2 + ldr r2, [r4] + lsl r0, r0, #4 + add r0, r2, r0 + lsl r3, r3, #4 + ldr r0, [r0, r3] + add r2, r1, #0 + add r3, #0xe0 + bl FUN_021DD60C + ldrb r1, [r4, #0xe] + ldr r2, [r4] + mov r0, #0x80 + lsl r1, r1, #4 + add r2, r2, r1 + ldr r1, _0223ACF8 ; =0x00000F24 + str r0, [r2, r1] + ldrb r2, [r4, #0xe] + ldr r3, [r4] + mov r0, #0x68 + lsl r2, r2, #4 + add r3, r3, r2 + add r2, r1, #4 + str r0, [r3, r2] + ldrb r0, [r4, #0xe] + ldr r2, [r4] + lsl r0, r0, #4 + add r2, r2, r0 + sub r0, r1, #4 + ldr r0, [r2, r0] + mov r1, #1 + bl FUN_021DD594 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AC4A: + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #8 + add r1, r1, r0 + str r1, [r4, #4] + ldr r1, [r4, #8] + add r1, r1, r0 + str r1, [r4, #8] + ldr r2, [r4, #4] + lsl r1, r0, #3 + cmp r2, r1 + blt _0223AC68 + lsl r0, r0, #3 + str r0, [r4, #4] + str r0, [r4, #8] +_0223AC68: + ldrb r0, [r4, #0xe] + mov r3, #0xf2 + ldr r1, [r4] + lsl r0, r0, #4 + add r0, r1, r0 + lsl r3, r3, #4 + ldr r0, [r0, r3] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + add r3, #0xe0 + bl FUN_021DD60C + ldrb r0, [r4, #0xe] + mov r2, #0xf2 + lsl r2, r2, #4 + lsl r1, r0, #4 + ldr r0, [r4] + add r3, r0, r1 + add r1, r2, #4 + ldr r0, [r3, r2] + add r2, #8 + ldr r1, [r3, r1] + ldr r2, [r3, r2] + add r3, r6, #0 + bl FUN_021DD678 + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + cmp r1, r0 + blt _0223ACF2 + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0xc] + ldrb r0, [r4, #0xe] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0x7f + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #0x16 + str r3, [sp, #8] + ldr r3, [r4] + lsl r2, r2, #0x10 + ldr r5, [r3] + ldrb r3, [r4, #0xe] + add r0, #0xdd + lsr r2, r2, #0x10 + lsl r3, r3, #2 + add r3, r5, r3 + ldr r0, [r3, r0] + add r3, r1, #0 + bl FUN_02069FB0 + ldrb r0, [r4, #0xc] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_0223ACE8: + mov r0, #1 + strb r0, [r4, #0xd] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223ACF2: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0223ACF8: .word 0x00000F24 + + thumb_func_start MOD12_0223ACFC +MOD12_0223ACFC: ; 0x0223ACFC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bls _0223AD0A + b _0223AE32 +_0223AD0A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AD16: ; jump table + .short _0223AD20 - _0223AD16 - 2 ; case 0 + .short _0223AD46 - _0223AD16 - 2 ; case 1 + .short _0223AD68 - _0223AD16 - 2 ; case 2 + .short _0223ADD6 - _0223AD16 - 2 ; case 3 + .short _0223ADEE - _0223AD16 - 2 ; case 4 +_0223AD20: + ldr r0, [r4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0223AD2C + bl ErrorHandling +_0223AD2C: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + cmp r0, #1 + bhi _0223AD3A + b _0223AE42 +_0223AD3A: + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223AD46: + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #4] + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x24] + bl FUN_0200782C + lsl r0, r0, #8 + str r0, [r4, #8] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AD68: + ldrb r1, [r4, #0xe] + mov r0, #1 + tst r0, r1 + ldr r0, [r4] + beq _0223AD9A + ldr r3, [r4, #4] + ldr r0, [r0, #0x24] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + b _0223ADC2 +_0223AD9A: + ldr r3, [r4, #4] + ldr r0, [r0, #0x24] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + asr r2, r2, #8 + ldr r0, [r0, #0x24] + mov r1, #1 + sub r2, r2, #3 + bl FUN_02007558 +_0223ADC2: + ldrb r0, [r4, #0xe] + add r0, r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #3 + blo _0223AE42 + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223ADD6: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + cmp r0, #7 + blo _0223AE42 + mov r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_0223ADEE: + mov r0, #1 + ldr r1, [r4, #4] + lsl r0, r0, #0xa + add r1, r1, r0 + mov r0, #5 + lsl r0, r0, #0xe + str r1, [r4, #4] + cmp r1, r0 + blt _0223AE08 + str r0, [r4, #4] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] +_0223AE08: + ldr r3, [r4, #4] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + ldr r0, [r0, #0x24] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0223AE32: + ldr r0, [r4] + bl MOD12_02239A58 + mov r0, #1 + strb r0, [r4, #0xd] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223AE42: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223AE44 +MOD12_0223AE44: ; 0x0223AE44 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AE58 +MOD12_0223AE58: ; 0x0223AE58 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x1c + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223AEB8 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrb r0, [r5, #3] + strb r0, [r4, #0x13] + ldrb r0, [r5, #4] + strb r0, [r4, #0x14] + ldrb r0, [r5, #5] + strb r0, [r4, #0x15] + ldrb r0, [r5, #6] + strb r0, [r4, #0x16] + ldrb r0, [r5, #7] + strb r0, [r4, #0x17] + ldrb r0, [r5, #9] + strb r0, [r4, #0x19] + ldrb r0, [r5, #8] + strb r0, [r4, #0x18] + ldr r0, _0223AEBC ; =MOD12_0223AEC0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223AEB8: .word 0x00007530 +_0223AEBC: .word MOD12_0223AEC0 + + thumb_func_start MOD12_0223AEC0 +MOD12_0223AEC0: ; 0x0223AEC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223AED6 + cmp r0, #1 + beq _0223AF0E + cmp r0, #2 + beq _0223AF20 + b _0223AF58 +_0223AED6: + ldrb r0, [r4, #0x17] + cmp r0, #0 + beq _0223AF08 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + add r2, r4, #0 + ldrb r1, [r4, #0x17] + ldr r0, [r4] + add r2, #0x13 + bl MOD12_02239B48 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF08: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF0E: + ldr r0, [r4] + bl MOD12_02239B7C + cmp r0, #0 + bne _0223AF70 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF20: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x19] + cmp r0, #1 + bne _0223AF34 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF34: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x18] + cmp r1, r0 + blo _0223AF70 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223AF58: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223AF70: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AF74 +MOD12_0223AF74: ; 0x0223AF74 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223AF88 +MOD12_0223AF88: ; 0x0223AF88 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x16 + mov r1, #0x18 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _0223AFD8 ; =0x00007530 + str r0, [r4] + ldrh r0, [r5] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + mov r0, #0xa + ldrsb r0, [r6, r0] + strb r0, [r4, #0x11] + mov r0, #0xb + ldrsb r0, [r6, r0] + strb r0, [r4, #0x12] + mov r0, #0xc + ldrsb r0, [r6, r0] + strb r0, [r4, #0x13] + ldr r0, _0223AFDC ; =MOD12_0223AFE0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223AFD8: .word 0x00007530 +_0223AFDC: .word MOD12_0223AFE0 + + thumb_func_start MOD12_0223AFE0 +MOD12_0223AFE0: ; 0x0223AFE0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223AFF4 + cmp r0, #1 + beq _0223B06C + b _0223B0A8 +_0223AFF4: + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223B0C4 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223B04E + ldr r0, _0223B0C8 ; =0x04000048 + ldr r1, _0223B0CC ; =0xFFFFC0FF + ldrh r2, [r0] + and r2, r1 + mov r1, #0x1f + lsl r1, r1, #8 + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0, #2] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + mov r1, #0x20 + orr r2, r1 + strh r2, [r0, #2] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _0223B0D0 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #9 + orr r0, r2 + str r0, [r3] + ldr r1, [r4] + ldr r0, _0223B0D4 ; =0x00000F64 + mov r2, #0xf0 + strb r2, [r1, r0] + ldr r2, [r4] + mov r3, #0 + add r1, r0, #1 + strb r3, [r2, r1] + add r1, r0, #2 + ldr r2, [r4] + mov r3, #0xff + strb r3, [r2, r1] + ldr r1, [r4] + mov r2, #0x10 + add r0, r0, #3 + strb r2, [r1, r0] +_0223B04E: + mov r0, #1 + str r0, [sp] + mov r1, #0x12 + mov r2, #0x11 + ldrb r0, [r4, #0x13] + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + mov r3, #0x3d + bl FUN_0200A208 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223B06C: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _0223B0C0 + mov r1, #0 + str r1, [sp] + mov r0, #0xd0 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + ldr r0, [r0, #0x50] + add r3, r1, #0 + bl FUN_02003914 + mov r2, #0 + str r2, [sp] + mov r0, #0xe0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #2 + ldr r0, [r0, #0x50] + add r3, r2, #0 + bl FUN_02003914 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223B0A8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B0C0: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B0C4: .word 0x00000171 +_0223B0C8: .word 0x04000048 +_0223B0CC: .word 0xFFFFC0FF +_0223B0D0: .word 0xFFFF1FFF +_0223B0D4: .word 0x00000F64 + + thumb_func_start MOD12_0223B0D8 +MOD12_0223B0D8: ; 0x0223B0D8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B0EC +MOD12_0223B0EC: ; 0x0223B0EC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x1c + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x1c + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223B128 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223B12C ; =MOD12_0223B130 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B128: .word 0x00007530 +_0223B12C: .word MOD12_0223B130 + + thumb_func_start MOD12_0223B130 +MOD12_0223B130: ; 0x0223B130 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r1, #0x18] + str r1, [sp] + add r1, r0, #1 + ldr r0, [sp] + cmp r1, #0x1e + str r1, [r0, #0x18] + bne _0223B14C + mov r1, #0x1e + strb r1, [r0, #0x13] + mov r1, #1 + strb r1, [r0, #0x15] +_0223B14C: + ldr r0, [sp] + ldr r0, [r0] + ldr r1, [r0] + ldr r0, _0223B344 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B186 + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0x1e + bge _0223B186 + ldr r0, _0223B348 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0223B174 + ldr r0, _0223B34C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _0223B186 +_0223B174: + ldr r0, [sp] + mov r1, #0x1e + str r1, [r0, #0x18] + ldr r1, [sp] + mov r0, #0 + strb r0, [r1, #0x13] + mov r2, #1 + strb r2, [r1, #0x15] + b _0223B194 +_0223B186: + ldr r0, [sp] + ldr r0, [r0, #0x18] + cmp r0, #0x1e + ble _0223B192 + mov r0, #0 + b _0223B194 +_0223B192: + mov r0, #1 +_0223B194: + ldr r1, [sp] + ldrb r1, [r1, #0x10] + cmp r1, #0 + beq _0223B19E + b _0223B316 +_0223B19E: + ldr r1, [sp] + mov r2, #0x14 + ldrsb r1, [r1, r2] + cmp r1, #0 + ble _0223B1B2 + ldr r0, [sp] + sub r1, r1, #1 + strb r1, [r0, #0x14] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223B1B2: + ldr r1, [sp] + mov r2, #0x13 + ldrsb r1, [r1, r2] + cmp r1, #0 + ble _0223B1C6 + ldr r0, [sp] + sub r1, r1, #1 + strb r1, [r0, #0x13] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223B1C6: + ldr r1, [sp] + strb r0, [r1, #0x13] + add r0, r1, #0 + ldrb r0, [r0, #0x15] + cmp r0, #1 + bne _0223B1DE + ldr r0, _0223B350 ; =0x000006ED + bl FUN_020054C8 + ldr r0, [sp] + mov r1, #0 + strb r1, [r0, #0x15] +_0223B1DE: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223B252 +_0223B1F2: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223B354 ; =0x02245F84 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223B24C + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223B358 ; =0x02245F8C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223B246 +_0223B222: + mov r4, #0 + b _0223B23A +_0223B226: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223B23A: + cmp r4, #8 + blt _0223B226 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223B246: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223B222 +_0223B24C: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223B252: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223B1F2 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223B294 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223B294 + ldr r0, _0223B354 ; =0x02245F84 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223B28E +_0223B27E: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223B28E: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223B27E +_0223B294: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + mov r1, #0xc + ldrb r0, [r0, #0x12] + lsl r0, r0, #5 + bl _u32_div_f + ldr r1, [sp] + mov r2, #0x11 + ldrsb r2, [r1, r2] + ldr r1, _0223B354 ; =0x02245F84 + ldrsb r1, [r1, r2] + add r1, r1, #4 + lsl r1, r1, #3 + sub r2, r1, r0 + ldr r0, [sp] + ldr r1, _0223B35C ; =0x00000F63 + ldr r0, [r0] + strb r2, [r0, r1] + ldr r0, [sp] + ldr r0, [r0] + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B2DE + ldr r2, _0223B360 ; =0x04000050 + mov r0, #0 + strh r0, [r2] + sub r2, #0x50 + ldr r1, [r2] + ldr r0, _0223B364 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] +_0223B2DE: + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223B340 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223B340 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223B316: + ldr r3, _0223B360 ; =0x04000050 + mov r2, #0 + strh r2, [r3] + sub r3, #0x50 + ldr r1, [r3] + ldr r0, _0223B364 ; =0xFFFF1FFF + and r0, r1 + str r0, [r3] + ldr r0, [sp] + ldr r1, [sp] + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223B340: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B344: .word 0x00000171 +_0223B348: .word 0x021C48B8 +_0223B34C: .word 0x021C48F8 +_0223B350: .word 0x000006ED +_0223B354: .word 0x02245F84 +_0223B358: .word 0x02245F8C +_0223B35C: .word 0x00000F63 +_0223B360: .word 0x04000050 +_0223B364: .word 0xFFFF1FFF + + thumb_func_start MOD12_0223B368 +MOD12_0223B368: ; 0x0223B368 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B37C +MOD12_0223B37C: ; 0x0223B37C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x16 + mov r1, #0x14 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrh r0, [r0, #0x10] + bl FUN_020054C8 + ldr r0, _0223B3C0 ; =MOD12_0223B3C8 + ldr r2, _0223B3C4 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B3C0: .word MOD12_0223B3C8 +_0223B3C4: .word 0x00007530 + + thumb_func_start MOD12_0223B3C8 +MOD12_0223B3C8: ; 0x0223B3C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _0223B3F4 ; =0x000004F9 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B3F0 + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223B3F0: + pop {r3, r4, r5, pc} + nop +_0223B3F4: .word 0x000004F9 + + thumb_func_start MOD12_0223B3F8 +MOD12_0223B3F8: ; 0x0223B3F8 + push {r4, lr} + mov r0, #0x17 + mov r1, #0xf4 + bl FUN_02016998 + mov r1, #0 + mov r2, #0xf4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r1, #0 + add r0, r4, #0 + mvn r1, r1 + add r0, #0x96 + strb r1, [r0] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B41C +MOD12_0223B41C: ; 0x0223B41C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223B470 ; =0x022460DC + add r5, r0, #0 + add r7, r4, #0 +_0223B426: + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02016C18 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_02018768 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + add r6, #0x1c + cmp r4, #4 + blo _0223B426 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B470: .word 0x022460DC + + thumb_func_start MOD12_0223B474 +MOD12_0223B474: ; 0x0223B474 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223B47C: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0 + bl FUN_0201797C + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_020178A0 + add r4, r4, #1 + cmp r4, #4 + blo _0223B47C + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223B49C +MOD12_0223B49C: ; 0x0223B49C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD12_0223B3F8 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + mov r0, #6 + mov r1, #0x17 + bl FUN_02011744 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD12_0223B4F8 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223B4C0 +MOD12_0223B4C0: ; 0x0223B4C0 + push {r4, lr} + add r4, r0, #0 + bl MOD12_0223B710 + add r0, r4, #0 + mov r1, #1 + bl MOD12_0223BE50 + ldr r0, [r4, #0x18] + bl FUN_020117BC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B4E0 +MOD12_0223B4E0: ; 0x0223B4E0 + push {r4, lr} + add r4, r0, #0 + bl MOD12_0223B940 + add r0, r4, #0 + bl MOD12_0223BA0C + add r0, r4, #0 + mov r1, #0 + bl MOD12_0223BE10 + pop {r4, pc} + + thumb_func_start MOD12_0223B4F8 +MOD12_0223B4F8: ; 0x0223B4F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #6 + add r4, r0, #0 + mov r0, #0x17 + lsl r1, r1, #0xc + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + mov r1, #6 + mov r0, #0x17 + lsl r1, r1, #0xc + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd4 + str r0, [r1] + mov r1, #0x1b + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xd8 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe4 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #0xa + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xe8 + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xec + str r0, [r1] + mov r1, #2 + mov r0, #0x17 + lsl r1, r1, #8 + bl FUN_02016998 + add r1, r4, #0 + add r1, #0xf0 + str r0, [r1] + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #9 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd0 + mov r2, #6 + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #0xc + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x11 + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd4 + mov r2, #6 + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #0xc + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0xf + mov r2, #1 + add r3, sp, #0xc + bl FUN_02006BB0 + add r5, r0, #0 + ldr r0, [sp, #0xc] + add r1, r4, #0 + add r1, #0xd8 + mov r2, #0x1b + ldr r0, [r0, #0x14] + ldr r1, [r1] + lsl r2, r2, #8 + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #7 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xdc + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #8 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe0 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x10 + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe4 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x2d + mov r1, #0x1b + mov r2, #1 + add r3, sp, #8 + bl FUN_02006BDC + add r1, r4, #0 + add r5, r0, #0 + ldr r0, [sp, #8] + add r1, #0xe8 + mov r2, #2 + ldr r1, [r1] + add r0, #0xc + lsl r2, r2, #0xa + bl MIi_CpuCopy32 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + mov r3, #2 + str r0, [sp, #4] + mov r0, #0x2d + mov r1, #0x1e + mov r2, #0x17 + lsl r3, r3, #8 + bl FUN_0200317C + ldr r0, [r4, #4] + mov r2, #0x17 + ldr r1, [r0] + ldr r0, _0223B70C ; =0x0000011F + mov r3, #0x20 + ldrb r0, [r1, r0] + mov r1, #0x25 + lsl r0, r0, #0x14 + lsr r0, r0, #0x10 + str r0, [sp] + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r0, #0x40 + str r0, [sp, #4] + mov r0, #0x2d + bl FUN_0200317C + mov r0, #0 + mov r1, #0x20 + add r4, #0xf0 + str r0, [sp] + ldr r0, [r4] + mov r2, #0x17 + str r0, [sp, #4] + mov r0, #0x2d + lsl r3, r1, #4 + bl FUN_0200317C + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223B70C: .word 0x0000011F + + thumb_func_start MOD12_0223B710 +MOD12_0223B710: ; 0x0223B710 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_0223B718: + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02016A18 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #3 + blt _0223B718 + mov r6, #0 + add r4, r5, #0 +_0223B72E: + add r0, r4, #0 + add r0, #0xdc + ldr r0, [r0] + bl FUN_02016A18 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0223B72E + mov r4, #0 +_0223B742: + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0223B742 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223B758 +MOD12_0223B758: ; 0x0223B758 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + str r3, [r7, #8] + ldr r0, [r7, #4] + str r2, [sp, #8] + ldr r0, [r0, #0x60] + str r1, [sp, #4] + str r0, [sp, #0xc] + mov r0, #0x96 + ldrsb r2, [r7, r0] + sub r0, #0x97 + cmp r2, r0 + bne _0223B77C + mov r0, #1 + str r0, [sp, #8] + mov r6, #0 + b _0223B784 +_0223B77C: + mov r0, #0x24 + ldr r1, _0223B868 ; =0x02246094 + mul r0, r2 + add r6, r1, r0 +_0223B784: + ldr r0, [sp, #4] + mov r1, #0x24 + ldr r2, _0223B868 ; =0x02246094 + mul r1, r0 + add r0, r2, r1 + str r0, [sp, #0x10] + mov r4, #0 + add r5, r0, #0 +_0223B794: + ldrh r1, [r5, #0xc] + add r0, r4, #4 + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0223B794 + ldr r0, [sp, #0x10] + mov r2, #8 + ldrh r1, [r0] + add r0, r7, #0 + add r0, #0x94 + strh r1, [r0] + ldr r0, _0223B86C ; =MOD12_0223C19C + add r1, r7, #0 + bl FUN_0200CA98 + ldr r0, [sp, #0x10] + ldrh r1, [r0, #2] + ldr r0, _0223B870 ; =0x0000FFFF + cmp r1, r0 + beq _0223B7F2 + ldr r0, [sp, #8] + cmp r0, #1 + beq _0223B7D6 + ldrh r0, [r6, #2] + cmp r1, r0 + beq _0223B7F2 +_0223B7D6: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r7, #4] + lsl r1, r1, #2 + add r1, r7, r1 + add r0, #0x90 + add r1, #0xec + ldr r0, [r0] + ldr r1, [r1] + mov r2, #1 + mov r3, #0 + bl FUN_02003054 +_0223B7F2: + ldr r4, [sp, #0x10] + mov r5, #0 +_0223B7F6: + ldrh r2, [r4, #4] + ldr r0, _0223B870 ; =0x0000FFFF + cmp r2, r0 + beq _0223B82E + ldr r0, [sp, #8] + cmp r0, #1 + beq _0223B80A + ldrh r0, [r6, #4] + cmp r2, r0 + beq _0223B82E +_0223B80A: + lsl r2, r2, #2 + add r2, r7, r2 + add r1, r5, #4 + add r2, #0xdc + lsl r1, r1, #0x18 + mov r3, #2 + ldr r0, [sp, #0xc] + ldr r2, [r2] + lsr r1, r1, #0x18 + lsl r3, r3, #0xa + bl FUN_02017DFC + add r1, r5, #4 + lsl r1, r1, #0x18 + ldr r0, [sp, #0xc] + lsr r1, r1, #0x18 + bl FUN_0201AC68 +_0223B82E: + add r5, r5, #1 + add r4, r4, #2 + add r6, r6, #2 + cmp r5, #4 + blt _0223B7F6 + add r1, r7, #0 + ldr r0, [sp, #4] + add r1, #0x96 + strb r0, [r1] + add r0, r7, #0 + mov r1, #0 + bl MOD12_0223BE50 + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + cmp r3, #0 + beq _0223B858 + ldr r1, [sp, #4] + ldr r2, [sp, #8] + add r0, r7, #0 + blx r3 +_0223B858: + ldr r0, _0223B874 ; =MOD12_0223C14C + add r1, r7, #0 + mov r2, #0xa + bl FUN_0200CA98 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223B868: .word 0x02246094 +_0223B86C: .word MOD12_0223C19C +_0223B870: .word 0x0000FFFF +_0223B874: .word MOD12_0223C14C + + thumb_func_start MOD12_0223B878 +MOD12_0223B878: ; 0x0223B878 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x96 + ldrsb r1, [r5, r0] + sub r0, #0x97 + cmp r1, r0 + bne _0223B88A + bl ErrorHandling +_0223B88A: + mov r0, #0x96 + ldrsb r1, [r5, r0] + ldr r3, _0223B910 ; =0x02246094 + mov r0, #0x24 + add r2, r1, #0 + mul r2, r0 + add r4, r3, r2 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _0223B8A2 + sub r0, #0x25 + pop {r4, r5, r6, pc} +_0223B8A2: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _0223B8AC + bl ErrorHandling +_0223B8AC: + ldr r0, [r4, #0x14] + bl FUN_02020988 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223B8F0 + ldr r2, [r4, #0x18] + ldr r1, _0223B914 ; =0x02246070 + cmp r2, r1 + bne _0223B8F0 + ldr r1, _0223B918 ; =0x021C48B8 + mov r2, #0x11 + ldr r1, [r1, #0x48] + add r3, r1, #0 + tst r3, r2 + beq _0223B8D2 + mov r0, #3 + b _0223B8F0 +_0223B8D2: + mov r3, #0x82 + add r6, r1, #0 + tst r6, r3 + beq _0223B8DE + mov r0, #1 + b _0223B8F0 +_0223B8DE: + lsl r2, r2, #6 + tst r2, r1 + beq _0223B8E8 + mov r0, #0 + b _0223B8F0 +_0223B8E8: + lsl r2, r3, #4 + tst r1, r2 + beq _0223B8F0 + mov r0, #2 +_0223B8F0: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223B8FE + ldr r1, [r4, #0x18] + lsl r0, r0, #2 + ldr r1, [r1, r0] +_0223B8FE: + ldr r2, [r4, #0x20] + cmp r2, #0 + beq _0223B90A + add r0, r5, #0 + blx r2 + add r1, r0, #0 +_0223B90A: + add r0, r1, #0 + pop {r4, r5, r6, pc} + nop +_0223B910: .word 0x02246094 +_0223B914: .word 0x02246070 +_0223B918: .word 0x021C48B8 + + thumb_func_start MOD12_0223B91C +MOD12_0223B91C: ; 0x0223B91C + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _0223B926 + mov r0, #1 + bx lr +_0223B926: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223B92C +MOD12_0223B92C: ; 0x0223B92C + mov r1, #0x96 + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223B934 +MOD12_0223B934: ; 0x0223B934 + ldr r3, _0223B93C ; =MOD12_0223BE10 + mov r1, #1 + bx r3 + nop +_0223B93C: .word MOD12_0223BE10 + + thumb_func_start MOD12_0223B940 +MOD12_0223B940: ; 0x0223B940 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0xbf + mov r3, #0x17 + bl FUN_0200A86C + add r4, r0, #0 + ldr r0, [r5, #4] + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r0] + add r1, r2, #1 + ldrb r0, [r3, r2] + ldrb r1, [r3, r1] + ldr r3, [r5] + add r2, #0x51 + ldrb r2, [r3, r2] + bl FUN_02083228 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, _0223B9F4 ; =0x0000011F + ldr r2, [r0] + ldrb r0, [r2, r1] + add r1, r1, #2 + ldrb r1, [r2, r1] + bl FUN_020832A4 + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r7, r0, #0 + ldr r0, _0223B9F8 ; =0x00010200 + add r1, r5, #0 + str r0, [sp] + mov r3, #0 + ldr r0, _0223B9FC ; =0x000080EB + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x7f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r1, #0x1c + add r2, r6, #0 + bl MOD12_0223BCD8 + ldr r0, _0223B9F8 ; =0x00010200 + mov r3, #0 + str r0, [sp] + ldr r0, _0223B9FC ; =0x000080EB + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x9f + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r0, r5, #0 + add r5, #0x30 + add r1, r5, #0 + add r2, r7, #0 + bl MOD12_0223BCD8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B9F4: .word 0x0000011F +_0223B9F8: .word 0x00010200 +_0223B9FC: .word 0x000080EB + + thumb_func_start MOD12_0223BA00 +MOD12_0223BA00: ; 0x0223BA00 + ldr r3, _0223BA08 ; =MOD12_0223BE10 + mov r1, #1 + bx r3 + nop +_0223BA08: .word MOD12_0223BE10 + + thumb_func_start MOD12_0223BA0C +MOD12_0223BA0C: ; 0x0223BA0C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r2, [r0, #4] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #0x84 + ldr r5, [r0] + ldr r1, [r2] + ldr r0, _0223BB14 ; =0x00000123 + ldrb r0, [r1, r0] + add r1, r2, r0 + mov r0, #0xaa + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223BA36 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200A914 + b _0223BA3E +_0223BA36: + add r0, r5, #0 + mov r1, #1 + bl FUN_0200A914 +_0223BA3E: + add r4, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #3 + bl FUN_0200A914 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r4, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x18 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x44 + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r6, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x80 + str r0, [sp, #0xc] + mov r0, #0x78 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x58 + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r7, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0x30 + str r0, [sp, #0xc] + mov r0, #0x40 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x6c + bl MOD12_0223BCD8 + ldr r0, _0223BB18 ; =0x0001010B + add r2, r5, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0223BB1C ; =0x000080EB + mov r3, #2 + str r0, [sp, #8] + mov r0, #0xd0 + str r0, [sp, #0xc] + mov r0, #0x40 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r0, #0 + add r1, #0x80 + str r1, [sp, #0x18] + bl MOD12_0223BCD8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223BB14: .word 0x00000123 +_0223BB18: .word 0x0001010B +_0223BB1C: .word 0x000080EB + + thumb_func_start MOD12_0223BB20 +MOD12_0223BB20: ; 0x0223BB20 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r4, r0, #0 + add r0, r6, #1 + cmp r0, #4 + bhi _0223BB42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223BB38: ; jump table + .short _0223BB42 - _0223BB38 - 2 ; case 0 + .short _0223BB46 - _0223BB38 - 2 ; case 1 + .short _0223BB4A - _0223BB38 - 2 ; case 2 + .short _0223BB4E - _0223BB38 - 2 ; case 3 + .short _0223BB52 - _0223BB38 - 2 ; case 4 +_0223BB42: + add r0, r6, #0 + pop {r4, r5, r6, pc} +_0223BB46: + mov r5, #2 + b _0223BB54 +_0223BB4A: + mov r5, #3 + b _0223BB54 +_0223BB4E: + mov r5, #4 + b _0223BB54 +_0223BB52: + mov r5, #5 +_0223BB54: + ldr r0, _0223BBB0 ; =MOD12_0223BEB4 + add r1, r4, #0 + bl MOD12_0223BE64 + add r0, r4, #0 + mov r1, #2 + add r0, #0xb8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r4, #0 + mov r1, #0x12 + add r0, #0xca + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x2d + add r0, #0xc8 + strh r1, [r0] + mov r0, #0xc + ldr r1, _0223BBB4 ; =0x0224614C + mul r0, r6 + add r2, r1, r0 + add r1, r4, #0 + add r1, #0xa0 + str r2, [r1] + ldr r1, _0223BBB8 ; =0x0224617C + add r2, r1, r0 + add r1, r4, #0 + add r1, #0xa4 + str r2, [r1] + ldr r1, _0223BBBC ; =0x022461AC + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + str r6, [r0] + add r4, #0xcc + strb r5, [r4] + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BBB0: .word MOD12_0223BEB4 +_0223BBB4: .word 0x0224614C +_0223BBB8: .word 0x0224617C +_0223BBBC: .word 0x022461AC + + thumb_func_start MOD12_0223BBC0 +MOD12_0223BBC0: ; 0x0223BBC0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x20 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0223BBEC + lsl r0, r5, #2 + add r0, r6, r0 + add r0, #0xd0 + ldr r0, [r0] + str r0, [r4, #0xc] +_0223BBEC: + ldr r0, [sp, #0x1c] + lsl r0, r0, #5 + strh r0, [r4, #0x1c] + ldr r0, [sp, #0x18] + ldrh r1, [r0] + strh r1, [r4, #0x10] + ldrh r1, [r0, #2] + strh r1, [r4, #0x12] + ldrh r1, [r0, #4] + strh r1, [r4, #0x14] + ldrh r1, [r0, #6] + strh r1, [r4, #0x16] + ldrh r1, [r0, #8] + strh r1, [r4, #0x18] + ldrh r0, [r0, #0xa] + strh r0, [r4, #0x1a] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + bl FUN_020187B0 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BC1C +MOD12_0223BC1C: ; 0x0223BC1C + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl MOD12_0223BBC0 + add r4, r0, #0 + ldr r0, _0223BC40 ; =MOD12_0223C1DC + add r1, r4, #0 + mov r2, #0x14 + bl FUN_0200CA98 + str r0, [r4] + add r0, r4, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0223BC40: .word MOD12_0223C1DC + + thumb_func_start MOD12_0223BC44 +MOD12_0223BC44: ; 0x0223BC44 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0223BC62 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0223BC58 + bl FUN_02016A18 +_0223BC58: + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_0223BC62: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BC68 +MOD12_0223BC68: ; 0x0223BC68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrh r1, [r5, #0x16] + ldrh r0, [r5, #0x1c] + mov r6, #0 + mul r0, r1 + str r0, [sp] + ldrh r0, [r5, #0x12] + lsl r7, r0, #0xa + ldrh r0, [r5, #0x1a] + cmp r0, #0 + ble _0223BCD4 + add r4, r6, #0 +_0223BC82: + ldr r2, [r5, #0xc] + cmp r2, #0 + beq _0223BCB0 + ldrh r0, [r5, #0x14] + ldrh r3, [r5, #0x1c] + lsl r1, r0, #5 + add r0, r3, #0 + ldr r3, [sp] + mul r0, r6 + add r0, r3, r0 + add r0, r1, r0 + ldrh r1, [r5, #0x10] + add r0, r2, r0 + ldr r3, [r5, #4] + lsl r2, r1, #5 + add r1, r7, r4 + add r1, r2, r1 + ldrh r2, [r5, #0x18] + add r1, r3, r1 + lsl r2, r2, #5 + bl MIi_CpuCopy16 + b _0223BCC6 +_0223BCB0: + ldrh r1, [r5, #0x10] + ldr r3, [r5, #4] + mov r0, #0 + lsl r2, r1, #5 + add r1, r7, r4 + add r1, r2, r1 + ldrh r2, [r5, #0x18] + add r1, r3, r1 + lsl r2, r2, #5 + bl MIi_CpuClear16 +_0223BCC6: + mov r0, #1 + lsl r0, r0, #0xa + add r4, r4, r0 + ldrh r0, [r5, #0x1a] + add r6, r6, #1 + cmp r6, r0 + blt _0223BC82 +_0223BCD4: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BCD8 +MOD12_0223BCD8: ; 0x0223BCD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r5, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r5] + str r2, [sp, #0x1c] + str r3, [sp, #0x20] + ldr r4, [sp, #0x9c] + cmp r0, #0 + beq _0223BCF0 + bl ErrorHandling +_0223BCF0: + ldr r0, [sp, #0x18] + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, [r1, #0x60] + str r0, [sp, #0x28] + ldr r0, [r1, #0x5c] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + bl FUN_02002E14 + add r7, r0, #0 + asr r1, r7, #2 + lsr r1, r1, #0x1d + add r1, r7, r1 + asr r6, r1, #3 + mov r1, #8 + bl FX_ModS32 + cmp r0, #0 + beq _0223BD1C + add r6, r6, #1 +_0223BD1C: + add r0, sp, #0x38 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x28] + add r1, sp, #0x38 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x20] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r2, [sp, #0x1c] + add r0, sp, #0x38 + str r3, [sp, #0x14] + bl FUN_0201BE3C + add r0, sp, #0x38 + mov r1, #2 + mov r2, #0x17 + bl FUN_02011898 + mov r1, #1 + mov r2, #2 + add r3, sp, #0x2c + bl FUN_0201D568 + ldr r0, [sp, #0xa4] + cmp r0, #1 + bne _0223BD74 + lsr r0, r7, #0x1f + add r0, r7, r0 + asr r0, r0, #1 + sub r4, r4, r0 +_0223BD74: + ldr r0, [sp, #0x18] + ldr r0, [r0, #0x18] + str r0, [sp, #0x48] + add r0, sp, #0x38 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x24] + bl FUN_0200CA40 + str r0, [sp, #0x50] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x98] + bl FUN_0200C334 + mov r1, #0 + str r0, [sp, #0x54] + ldr r0, [sp, #0x30] + str r1, [sp, #0x58] + str r0, [sp, #0x5c] + ldr r0, [sp, #0xa0] + str r4, [sp, #0x60] + add r0, #0xf8 + str r0, [sp, #0x64] + mov r0, #0x64 + str r0, [sp, #0x6c] + mov r0, #2 + str r0, [sp, #0x70] + mov r0, #0x17 + str r0, [sp, #0x74] + add r0, sp, #0x48 + str r1, [sp, #0x68] + bl FUN_020117E8 + ldr r1, [sp, #0x94] + add r6, r0, #0 + bl FUN_02011AC0 + ldr r2, [sp, #0xa0] + add r0, r6, #0 + add r1, r4, #0 + add r2, #0xf8 + bl FUN_020118C4 + add r0, sp, #0x38 + bl FUN_02019178 + str r6, [r5] + add r3, sp, #0x2c + ldmia r3!, {r0, r1} + add r2, r5, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + strh r7, [r5, #0x10] + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BDE4 +MOD12_0223BDE4: ; 0x0223BDE4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r4, #0x20 + add r7, r6, #0 +_0223BDF0: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BE02 + bl FUN_02011870 + add r0, r4, #0 + bl FUN_0201D5E8 + str r7, [r5, #0x1c] +_0223BE02: + add r6, r6, #1 + add r5, #0x14 + add r4, #0x14 + cmp r6, #6 + blt _0223BDF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BE10 +MOD12_0223BE10: ; 0x0223BE10 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + cmp r7, #1 + bne _0223BE2C + mov r1, #0x96 + ldrsb r1, [r0, r1] + cmp r1, #0 + bne _0223BE26 + mov r4, #0 + mov r6, #1 + b _0223BE30 +_0223BE26: + mov r4, #2 + mov r6, #5 + b _0223BE30 +_0223BE2C: + mov r4, #0 + mov r6, #5 +_0223BE30: + cmp r4, r6 + bgt _0223BE4E + mov r1, #0x14 + mul r1, r4 + add r5, r0, r1 +_0223BE3A: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _0223BE46 + add r1, r7, #0 + bl FUN_020119D0 +_0223BE46: + add r4, r4, #1 + add r5, #0x14 + cmp r4, r6 + ble _0223BE3A +_0223BE4E: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223BE50 +MOD12_0223BE50: ; 0x0223BE50 + push {r3, lr} + cmp r1, #1 + bne _0223BE5C + bl MOD12_0223BDE4 + pop {r3, pc} +_0223BE5C: + mov r1, #0 + bl MOD12_0223BE10 + pop {r3, pc} + + thumb_func_start MOD12_0223BE64 +MOD12_0223BE64: ; 0x0223BE64 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BE74 + bl ErrorHandling +_0223BE74: + add r0, r4, #0 + add r0, #0x98 + mov r1, #0 + mov r2, #0x38 + bl MI_CpuFill8 + ldr r2, _0223BE90 ; =0x00000514 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0xc] + pop {r3, r4, r5, pc} + nop +_0223BE90: .word 0x00000514 + + thumb_func_start MOD12_0223BE94 +MOD12_0223BE94: ; 0x0223BE94 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0223BEB0 + bl FUN_0200CAB4 + mov r1, #0 + str r1, [r4, #0xc] + add r4, #0x98 + add r0, r4, #0 + mov r2, #0x38 + bl MI_CpuFill8 +_0223BEB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223BEB4 +MOD12_0223BEB4: ; 0x0223BEB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r0, #0x98 + ldrsh r0, [r4, r0] + cmp r0, #8 + bls _0223BEC4 + b _0223C140 +_0223BEC4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223BED0: ; jump table + .short _0223BEE2 - _0223BED0 - 2 ; case 0 + .short _0223BF6A - _0223BED0 - 2 ; case 1 + .short _0223BF84 - _0223BED0 - 2 ; case 2 + .short _0223BFAA - _0223BED0 - 2 ; case 3 + .short _0223C034 - _0223BED0 - 2 ; case 4 + .short _0223C050 - _0223BED0 - 2 ; case 5 + .short _0223C076 - _0223BED0 - 2 ; case 6 + .short _0223C100 - _0223BED0 - 2 ; case 7 + .short _0223C11A - _0223BED0 - 2 ; case 8 +_0223BEE2: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xb8 + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + add r2, #0x10 + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223BF40: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223BF54 + ldr r0, [r0] + add r1, r7, #0 + mov r2, #0x10 + bl FUN_0200C7FC +_0223BF54: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223BF40 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223BF6A: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + beq _0223C042 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223BF84: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C042 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223BFAA: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xbc + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + sub r2, r2, #4 + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223C008: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C01E + mov r2, #3 + ldr r0, [r0] + add r1, r7, #0 + mvn r2, r2 + bl FUN_0200C7FC +_0223C01E: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223C008 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223C034: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + bne _0223C044 +_0223C042: + b _0223C146 +_0223C044: + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C050: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C146 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C076: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + add r2, r4, #0 + str r0, [sp] + add r0, r4, #0 + add r0, #0xca + ldrh r0, [r0] + add r3, r4, #0 + add r2, #0xc8 + str r0, [sp, #4] + add r3, #0xc0 + ldrh r2, [r2] + ldr r3, [r3] + add r0, r4, #0 + mov r1, #4 + bl MOD12_0223BC1C + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + add r2, sp, #8 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + add r1, sp, #0xc + bl FUN_020119A4 + add r0, r4, #0 + add r0, #0xcc + ldrb r1, [r0] + mov r0, #0x14 + ldr r2, [sp, #8] + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + ldr r1, [sp, #0xc] + sub r2, #0xc + bl FUN_020118C4 + mov r6, #0 + add r5, r4, #0 + add r7, r6, #0 +_0223C0D4: + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C0EA + mov r2, #0xb + ldr r0, [r0] + add r1, r7, #0 + mvn r2, r2 + bl FUN_0200C7FC +_0223C0EA: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _0223C0D4 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r4, #0x98 + add sp, #0x10 + add r0, r0, #1 + strh r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0223C100: + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD12_0223BC44 + cmp r0, #0 + beq _0223C146 + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C11A: + mov r1, #0x9a + ldrsh r0, [r4, r1] + add r2, r0, #1 + add r0, r4, #0 + add r0, #0x9a + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #2 + ble _0223C146 + add r0, r4, #0 + mov r1, #0 + add r0, #0x9a + strh r1, [r0] + mov r0, #0x98 + ldrsh r0, [r4, r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x98 + strh r1, [r0] +_0223C140: + add r0, r4, #0 + bl MOD12_0223BE94 +_0223C146: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C14C +MOD12_0223C14C: ; 0x0223C14C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x96 + ldrsb r1, [r1, r0] + mov r0, #0x24 + mov r4, #0 + ldr r2, _0223C194 ; =0x02246094 + mul r0, r1 + ldr r6, _0223C198 ; =0x0000FFFF + add r5, r2, r0 + add r7, r4, #0 +_0223C162: + ldrh r0, [r5, #4] + cmp r0, r6 + bne _0223C176 + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0 + bl FUN_0201797C + b _0223C182 +_0223C176: + add r0, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C +_0223C182: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _0223C162 + ldr r0, [sp] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C194: .word 0x02246094 +_0223C198: .word 0x0000FFFF + + thumb_func_start MOD12_0223C19C +MOD12_0223C19C: ; 0x0223C19C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x94 + ldrh r2, [r0] + ldr r0, _0223C1D8 ; =0x0000FFFF + cmp r2, r0 + beq _0223C1CE + mov r0, #0 + lsl r2, r2, #2 + str r0, [sp] + ldr r0, [r4, #4] + add r2, r4, r2 + add r2, #0xd0 + mov r3, #6 + ldr r0, [r0, #0x60] + ldr r2, [r2] + mov r1, #4 + lsl r3, r3, #0xc + bl FUN_02017E14 + ldr r0, _0223C1D8 ; =0x0000FFFF + add r4, #0x94 + strh r0, [r4] +_0223C1CE: + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0223C1D8: .word 0x0000FFFF + + thumb_func_start MOD12_0223C1DC +MOD12_0223C1DC: ; 0x0223C1DC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD12_0223BC68 + mov r0, #0 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223C1F4 +MOD12_0223C1F4: ; 0x0223C1F4 + push {r3, lr} + sub sp, #8 + str r2, [sp] + str r1, [sp, #4] + ldr r0, [r0, #4] + mov r1, #1 + add r0, #0x90 + ldr r0, [r0] + mov r2, #0 + mov r3, #0x40 + bl FUN_020039E8 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD12_0223C210 +MOD12_0223C210: ; 0x0223C210 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C21C ; =0x022461F4 + ldrsh r0, [r0, r1] + bx lr + nop +_0223C21C: .word 0x022461F4 + + thumb_func_start MOD12_0223C220 +MOD12_0223C220: ; 0x0223C220 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C230 ; =0x022461F4 + add r1, r0, r1 + mov r0, #2 + ldrsh r0, [r1, r0] + bx lr + nop +_0223C230: .word 0x022461F4 + + thumb_func_start MOD12_0223C234 +MOD12_0223C234: ; 0x0223C234 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C244 ; =0x022461F4 + add r1, r0, r1 + mov r0, #4 + ldrsh r0, [r1, r0] + bx lr + nop +_0223C244: .word 0x022461F4 + + thumb_func_start MOD12_0223C248 +MOD12_0223C248: ; 0x0223C248 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r4, #0 + b _0223C264 +_0223C252: + lsl r0, r4, #4 + add r0, r5, r0 + add r0, #0xac + ldr r0, [r0] + cmp r0, #0 + beq _0223C262 + bl ErrorHandling +_0223C262: + add r4, r4, #1 +_0223C264: + cmp r4, #4 + blt _0223C252 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, #0x17 + str r0, [sp, #0xc] + mov r4, #0 + ldr r7, _0223C2F8 ; =0x022461F4 + b _0223C2F0 +_0223C27C: + ldr r0, _0223C2FC ; =0x00000AD5 + add r1, r5, r4 + ldrb r6, [r1, r0] + ldr r1, [r5] + lsl r0, r6, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02068E14 + add r2, r0, #0 + mov r0, #6 + mul r0, r4 + ldrsh r1, [r7, r0] + add r0, r7, r0 + mov r3, #2 + ldrsh r3, [r0, r3] + str r1, [sp, #4] + add r2, r2, r3 + str r2, [sp, #8] + lsl r2, r6, #4 + add r2, r5, r2 + str r1, [r2, #0x1c] + ldr r1, [sp, #8] + str r1, [r2, #0x20] + mov r1, #4 + ldrsh r0, [r0, r1] + lsl r1, r6, #2 + str r0, [r2, #0x24] + ldr r2, [r5] + add r0, sp, #0 + add r1, r2, r1 + add r1, #0xf8 + ldr r1, [r1] + bl FUN_021DD4F4 + lsl r1, r6, #4 + add r2, r5, r1 + str r0, [r2, #0x18] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x20] + bl FUN_021DD620 + cmp r4, #0 + ble _0223C2EE + lsl r0, r6, #4 + add r0, r5, r0 + ldr r0, [r0, #0x18] + mov r1, #0 + bl FUN_021DD59C + lsl r0, r6, #4 + add r0, r5, r0 + mov r1, #0x63 + ldr r0, [r0, #0x18] + mvn r1, r1 + bl FUN_021DD6CC +_0223C2EE: + add r4, r4, #1 +_0223C2F0: + cmp r4, #4 + blt _0223C27C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C2F8: .word 0x022461F4 +_0223C2FC: .word 0x00000AD5 + + thumb_func_start MOD12_0223C300 +MOD12_0223C300: ; 0x0223C300 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223C308: + ldr r0, [r5, #4] + bl FUN_021DD540 + add r0, r5, #0 + add r0, #0x98 + add r4, r4, #1 + add r5, #0x10 + str r6, [r0] + cmp r4, #4 + blt _0223C308 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C320 +MOD12_0223C320: ; 0x0223C320 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223C324 +MOD12_0223C324: ; 0x0223C324 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223C328 +MOD12_0223C328: ; 0x0223C328 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + ble _0223C338 + add r1, r0, #0 +_0223C338: + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + lsr r2, r1, #0x1f + lsl r1, r1, #0x1d + asr r4, r0, #3 + sub r1, r1, r2 + mov r0, #0x1d + ror r1, r0 + add r0, r2, r1 + str r0, [sp, #4] + ldr r0, [sp] + mov r1, #3 + ldr r0, [r0, #0x60] + bl FUN_0201886C + add r2, r0, #0 + mov r1, #0 + cmp r4, #0 + ble _0223C394 + ldr r0, _0223C420 ; =0x00002014 + add r3, r2, #0 + mov r7, #0x1d +_0223C366: + lsr r6, r1, #0x1f + lsl r5, r1, #0x1d + sub r5, r5, r6 + ror r5, r7 + add r5, r6, r5 + bne _0223C37A + mov r5, #0x13 + lsl r5, r5, #6 + strh r0, [r3, r5] + b _0223C38C +_0223C37A: + mov r5, #1 + tst r5, r1 + beq _0223C384 + ldr r6, _0223C424 ; =0x00002034 + b _0223C386 +_0223C384: + ldr r6, _0223C428 ; =0x00002054 +_0223C386: + mov r5, #0x13 + lsl r5, r5, #6 + strh r6, [r3, r5] +_0223C38C: + add r1, r1, #1 + add r3, r3, #2 + cmp r1, r4 + blt _0223C366 +_0223C394: + cmp r1, #0x20 + bge _0223C3D4 + lsr r4, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r4 + mov r0, #0x1d + ror r3, r0 + add r0, r4, r3 + bne _0223C3B8 + ldr r3, _0223C42C ; =0x0000200C + ldr r0, [sp, #4] + add r4, r0, r3 + lsl r0, r1, #1 + add r3, r2, r0 + mov r0, #0x13 + lsl r0, r0, #6 + strh r4, [r3, r0] + b _0223C3D2 +_0223C3B8: + mov r0, #1 + tst r0, r1 + beq _0223C3C2 + ldr r3, _0223C430 ; =0x0000202C + b _0223C3C4 +_0223C3C2: + ldr r3, _0223C434 ; =0x0000204C +_0223C3C4: + ldr r0, [sp, #4] + add r4, r0, r3 + lsl r0, r1, #1 + add r3, r2, r0 + mov r0, #0x13 + lsl r0, r0, #6 + strh r4, [r3, r0] +_0223C3D2: + add r1, r1, #1 +_0223C3D4: + cmp r1, #0x20 + bge _0223C410 + lsl r0, r1, #1 + add r2, r2, r0 + mov r4, #0x13 + ldr r0, _0223C42C ; =0x0000200C + mov r7, #1 + lsl r4, r4, #6 + mov r5, #0x1d +_0223C3E6: + lsr r6, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r6 + ror r3, r5 + add r3, r6, r3 + bne _0223C3F6 + strh r0, [r2, r4] + b _0223C408 +_0223C3F6: + add r3, r1, #0 + tst r3, r7 + beq _0223C400 + ldr r6, _0223C430 ; =0x0000202C + b _0223C402 +_0223C400: + ldr r6, _0223C434 ; =0x0000204C +_0223C402: + mov r3, #0x13 + lsl r3, r3, #6 + strh r6, [r2, r3] +_0223C408: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #0x20 + blt _0223C3E6 +_0223C410: + ldr r0, [sp] + mov r1, #3 + ldr r0, [r0, #0x60] + bl FUN_0201AC68 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C420: .word 0x00002014 +_0223C424: .word 0x00002034 +_0223C428: .word 0x00002054 +_0223C42C: .word 0x0000200C +_0223C430: .word 0x0000202C +_0223C434: .word 0x0000204C + + thumb_func_start MOD12_0223C438 +MOD12_0223C438: ; 0x0223C438 + push {r4, lr} + add r4, r0, #0 + lsl r0, r1, #8 + add r1, r2, #0 + bl _s32_div_f + add r1, r0, #0 + add r0, r4, #0 + bl MOD12_0223C328 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C450 +MOD12_0223C450: ; 0x0223C450 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223C4D8 ; =0x000080EB + mov r3, #0x3a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4DC ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3b + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4E0 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3c + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0223C4E4 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3d + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223C4D8 ; =0x000080EB + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3e + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223C4D8 ; =0x000080EB + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x3f + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0223C4D8: .word 0x000080EB +_0223C4DC: .word 0x000080EC +_0223C4E0: .word 0x000080ED +_0223C4E4: .word 0x000080EE + + thumb_func_start MOD12_0223C4E8 +MOD12_0223C4E8: ; 0x0223C4E8 + push {r4, lr} + ldr r1, _0223C51C ; =0x000080EB + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223C520 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C524 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C528 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C358 + ldr r1, _0223C51C ; =0x000080EB + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223C51C ; =0x000080EB + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223C51C: .word 0x000080EB +_0223C520: .word 0x000080EC +_0223C524: .word 0x000080ED +_0223C528: .word 0x000080EE + + thumb_func_start MOD12_0223C52C +MOD12_0223C52C: ; 0x0223C52C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r4, _0223C62C ; =0x022462E0 + add r7, r2, #0 + add r6, r3, #0 + add r5, r0, #0 + mov ip, r1 + add r3, sp, #0 + mov r2, #6 +_0223C53E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223C53E + ldr r0, [r4] + cmp r6, #2 + str r0, [r3] + bne _0223C556 + ldr r0, [sp, #8] + add r0, #0xa + str r0, [sp, #8] + b _0223C586 +_0223C556: + ldr r0, [sp, #0x54] + cmp r0, #3 + bhi _0223C586 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C568: ; jump table + .short _0223C586 - _0223C568 - 2 ; case 0 + .short _0223C570 - _0223C568 - 2 ; case 1 + .short _0223C578 - _0223C568 - 2 ; case 2 + .short _0223C580 - _0223C568 - 2 ; case 3 +_0223C570: + ldr r0, [sp, #8] + add r0, r0, #3 + str r0, [sp, #8] + b _0223C586 +_0223C578: + ldr r0, [sp, #8] + add r0, r0, #2 + str r0, [sp, #8] + b _0223C586 +_0223C580: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223C586: + ldr r0, [sp, #0x48] + cmp r0, #4 + bhi _0223C5C0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223C598: ; jump table + .short _0223C5C0 - _0223C598 - 2 ; case 0 + .short _0223C5B6 - _0223C598 - 2 ; case 1 + .short _0223C5C0 - _0223C598 - 2 ; case 2 + .short _0223C5A2 - _0223C598 - 2 ; case 3 + .short _0223C5AC - _0223C598 - 2 ; case 4 +_0223C5A2: + ldr r0, _0223C630 ; =0x000080EC + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5AC: + ldr r0, _0223C634 ; =0x000080EE + str r0, [sp, #0x14] + mov r0, #6 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5B6: + ldr r0, _0223C638 ; =0x000080ED + str r0, [sp, #0x14] + mov r0, #7 + str r0, [sp, #0xc] + b _0223C5C8 +_0223C5C0: + ldr r0, _0223C63C ; =0x000080EB + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0xc] +_0223C5C8: + mov r0, ip + add r1, r7, #0 + add r2, sp, #0 + bl FUN_0200C154 + add r4, r0, #0 + add r1, r6, #0 + bl FUN_0200C5C0 + ldr r0, [r4] + bl FUN_0200C59C + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x50] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + add r0, r4, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + add r0, r4, #0 + mov r1, #1 + bl FUN_0200C5E0 + mov r0, #0 + add r2, r5, #0 +_0223C602: + add r1, r2, #0 + add r1, #0xd8 + ldr r1, [r1] + cmp r1, #0 + bne _0223C618 + lsl r1, r0, #2 + add r1, r5, r1 + add r1, #0xd8 + add sp, #0x34 + str r4, [r1] + pop {r4, r5, r6, r7, pc} +_0223C618: + add r0, r0, #1 + add r2, r2, #4 + cmp r0, #0x44 + blt _0223C602 + bl ErrorHandling + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_0223C62C: .word 0x022462E0 +_0223C630: .word 0x000080EC +_0223C634: .word 0x000080EE +_0223C638: .word 0x000080ED +_0223C63C: .word 0x000080EB + + thumb_func_start MOD12_0223C640 +MOD12_0223C640: ; 0x0223C640 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_0223C648: + add r0, r5, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0223C65C + bl FUN_0200C3DC + add r0, r5, #0 + add r0, #0xd8 + str r6, [r0] +_0223C65C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x44 + blt _0223C648 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223C668 +MOD12_0223C668: ; 0x0223C668 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223C6B0 ; =0x000080EF + mov r3, #0x37 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223C6B4 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x38 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223C6B4 ; =0x000080EC + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x39 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223C6B0: .word 0x000080EF +_0223C6B4: .word 0x000080EC + + thumb_func_start MOD12_0223C6B8 +MOD12_0223C6B8: ; 0x0223C6B8 + push {r4, lr} + ldr r1, _0223C6D4 ; =0x000080EF + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223C6D8 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223C6D8 ; =0x000080EC + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223C6D4: .word 0x000080EF +_0223C6D8: .word 0x000080EC + + thumb_func_start MOD12_0223C6DC +MOD12_0223C6DC: ; 0x0223C6DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 +_0223C6E6: + ldr r2, _0223C708 ; =0x02246314 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200C154 + ldr r1, _0223C70C ; =0x000009DC + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0223C6E6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C708: .word 0x02246314 +_0223C70C: .word 0x000009DC + + thumb_func_start MOD12_0223C710 +MOD12_0223C710: ; 0x0223C710 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223C730 ; =0x000009DC + add r5, r0, #0 + add r6, r4, #0 +_0223C71A: + ldr r0, _0223C730 ; =0x000009DC + ldr r0, [r5, r0] + bl FUN_0200C3DC + str r6, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0223C71A + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C730: .word 0x000009DC + + thumb_func_start MOD12_0223C734 +MOD12_0223C734: ; 0x0223C734 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #5 + bl FUN_0200A914 + str r0, [sp, #0x38] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #6 + bl FUN_0200A914 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #7 + bl FUN_0200A914 + str r0, [sp, #0x30] + mov r0, #0 + ldr r1, _0223C868 ; =0x000009E8 + str r0, [sp, #0x3c] + add r0, r5, r1 + str r0, [sp, #0x2c] + add r0, r1, #0 + add r0, #0x3c + add r1, #0x78 + add r4, r5, #0 + add r7, r5, r0 + add r6, r5, r1 +_0223C778: + ldr r0, [sp, #0x2c] + add r3, r5, #0 + str r0, [sp] + ldr r0, [sp, #0x38] + add r3, #0x94 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + ldr r0, _0223C868 ; =0x000009E8 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + add r3, r5, #0 + ldr r0, [sp, #0x34] + str r7, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + add r3, #0x94 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + ldr r0, _0223C874 ; =0x00000A24 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_020119D0 + add r3, r5, #0 + ldr r0, [sp, #0x30] + str r6, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _0223C86C ; =0x000B0C00 + add r3, #0x94 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, _0223C870 ; =0x000080E9 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0xc + str r0, [sp, #0x28] + ldr r1, [r5, #0x60] + ldr r2, [r5, #0x5c] + ldr r3, [r3] + mov r0, #0x17 + bl MOD12_02231380 + mov r0, #0xa6 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, [sp, #0x2c] + add r4, #0x14 + add r0, #0x14 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x3c] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x3c] + cmp r0, #3 + blt _0223C778 + ldr r0, [sp, #0x38] + bl FUN_02021A20 + ldr r0, [sp, #0x34] + bl FUN_02021A20 + ldr r0, [sp, #0x30] + bl FUN_02021A20 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C868: .word 0x000009E8 +_0223C86C: .word 0x000B0C00 +_0223C870: .word 0x000080E9 +_0223C874: .word 0x00000A24 + + thumb_func_start MOD12_0223C878 +MOD12_0223C878: ; 0x0223C878 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0223C89C ; =0x000009E8 + mov r7, #0 + add r6, r0, r1 +_0223C880: + mov r4, #0 + add r5, r6, #0 +_0223C884: + add r0, r5, #0 + bl MOD12_0223147C + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223C884 + add r7, r7, #1 + add r6, #0x3c + cmp r7, #3 + blt _0223C880 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C89C: .word 0x000009E8 + + thumb_func_start MOD12_0223C8A0 +MOD12_0223C8A0: ; 0x0223C8A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + str r3, [sp] + cmp r4, #0 + bne _0223C8B2 + str r4, [sp, #4] + b _0223C8B6 +_0223C8B2: + sub r0, r4, #1 + str r0, [sp, #4] +_0223C8B6: + mov r0, #0x9a + lsl r0, r0, #4 + add r2, r5, r0 + ldr r0, [sp, #4] + mov r1, #0x14 + mul r1, r0 + add r6, r2, r1 + ldr r0, [r6, #8] + cmp r0, #0 + beq _0223C8CE + bl FUN_0200CAB4 +_0223C8CE: + add r0, r6, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + ldr r1, _0223C980 ; =0x022461E4 + lsl r2, r4, #2 + ldrsh r0, [r1, r2] + add r1, r1, r2 + str r0, [sp, #0xc] + mov r0, #2 + ldrsh r0, [r1, r0] + str r0, [sp, #8] + ldr r0, [sp, #4] + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, _0223C984 ; =0x000009DC + ldr r0, [r1, r0] + ldr r1, [sp] + str r0, [r6] + bl FUN_0200C5C0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + ldr r0, [r6] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r6] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r6] + mov r1, #1 + bl FUN_0200C644 + ldr r0, [sp, #4] + mov r1, #0x14 + add r7, r0, #0 + mov r4, #0 + mul r7, r1 + b _0223C940 +_0223C92C: + mov r0, #0x3c + mul r0, r4 + add r0, r5, r0 + add r1, r0, r7 + ldr r0, _0223C988 ; =0x000009E8 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020119D0 + add r4, r4, #1 +_0223C940: + cmp r4, #3 + blt _0223C92C + ldr r0, _0223C988 ; =0x000009E8 + mov r1, #0x3c + add r2, r5, r0 + ldr r0, [sp] + mov r3, #1 + mul r1, r0 + add r2, r2, r1 + ldr r0, [sp, #4] + mov r1, #0x14 + mul r1, r0 + add r0, r2, r1 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + str r0, [r6, #4] + bl MOD12_02231490 + ldr r0, [r6, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + ldr r0, _0223C98C ; =MOD12_0223C994 + ldr r2, _0223C990 ; =0x00009D08 + add r1, r6, #0 + bl FUN_0200CA44 + str r0, [r6, #8] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C980: .word 0x022461E4 +_0223C984: .word 0x000009DC +_0223C988: .word 0x000009E8 +_0223C98C: .word MOD12_0223C994 +_0223C990: .word 0x00009D08 + + thumb_func_start MOD12_0223C994 +MOD12_0223C994: ; 0x0223C994 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223C9A8 + cmp r0, #1 + beq _0223C9E6 + b _0223C9FA +_0223C9A8: + ldr r0, [r4, #4] + add r1, sp, #4 + ldr r0, [r0] + add r2, sp, #0 + bl FUN_020119A4 + ldr r0, [sp] + ldr r1, [sp, #4] + sub r2, r0, #4 + str r2, [sp] + ldr r0, [r4, #4] + ldr r0, [r0] + bl FUN_020118C4 + mov r1, #0 + ldr r0, [r4] + sub r2, r1, #4 + bl FUN_0200C82C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #4 + ble _0223CA16 + mov r0, #0 + str r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223C9E6: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xe + ble _0223CA16 + ldrb r0, [r4, #0x10] + add sp, #8 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223C9FA: + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200C644 + mov r0, #0 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 +_0223CA16: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223CA1C +MOD12_0223CA1C: ; 0x0223CA1C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223CA40 ; =0x000009A8 + add r5, r0, #0 + add r6, r4, #0 +_0223CA26: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223CA34 + bl FUN_0200CAB4 + ldr r0, _0223CA40 ; =0x000009A8 + str r6, [r5, r0] +_0223CA34: + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223CA26 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CA40: .word 0x000009A8 + + thumb_func_start MOD12_0223CA44 +MOD12_0223CA44: ; 0x0223CA44 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CA8C ; =0x000080F0 + mov r3, #0x40 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CA90 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x41 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CA90 ; =0x000080ED + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x42 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CA8C: .word 0x000080F0 +_0223CA90: .word 0x000080ED + + thumb_func_start MOD12_0223CA94 +MOD12_0223CA94: ; 0x0223CA94 + push {r4, lr} + ldr r1, _0223CAB0 ; =0x000080F0 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CAB4 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CAB4 ; =0x000080ED + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CAB0: .word 0x000080F0 +_0223CAB4: .word 0x000080ED + + thumb_func_start MOD12_0223CAB8 +MOD12_0223CAB8: ; 0x0223CAB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, _0223CAD8 ; =0x02246244 + bl FUN_0200C154 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200C59C + mov r0, #0x7a + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, pc} + nop +_0223CAD8: .word 0x02246244 + + thumb_func_start MOD12_0223CADC +MOD12_0223CADC: ; 0x0223CADC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223CAF6 + bl FUN_0200C3DC + mov r0, #0x7a + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0223CAF6: + pop {r4, pc} + + thumb_func_start MOD12_0223CAF8 +MOD12_0223CAF8: ; 0x0223CAF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223CB10 ; =MOD12_0223CB28 + ldr r2, _0223CB14 ; =0x00009CAE + add r1, r4, #0 + bl FUN_0200CA44 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + pop {r4, pc} + nop +_0223CB10: .word MOD12_0223CB28 +_0223CB14: .word 0x00009CAE + + thumb_func_start MOD12_0223CB18 +MOD12_0223CB18: ; 0x0223CB18 + mov r1, #2 + lsl r1, r1, #8 + ldr r3, _0223CB24 ; =0x0200CAB5 + ldr r0, [r0, r1] + bx r3 + nop +_0223CB24: .word 0x0200CAB5 + + thumb_func_start MOD12_0223CB28 +MOD12_0223CB28: ; 0x0223CB28 + push {r3, lr} + ldr r2, [r1] + ldr r0, _0223CB50 ; =0x00000123 + mov r3, #1 + ldrb r2, [r2, r0] + add r0, #0xd9 + ldr r0, [r1, r0] + lsl r2, r2, #4 + add r2, r1, r2 + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x20] + lsl r1, r1, #0x10 + sub r2, #0x28 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r3, pc} + .align 2, 0 +_0223CB50: .word 0x00000123 + + thumb_func_start MOD12_0223CB54 +MOD12_0223CB54: ; 0x0223CB54 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CB9C ; =0x000080F2 + mov r3, #0x5a + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CBA0 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x59 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CBA0 ; =0x000080EF + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x58 + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CB9C: .word 0x000080F2 +_0223CBA0: .word 0x000080EF + + thumb_func_start MOD12_0223CBA4 +MOD12_0223CBA4: ; 0x0223CBA4 + push {r4, lr} + ldr r1, _0223CBC0 ; =0x000080F2 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CBC4 ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CBC4 ; =0x000080EF + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CBC0: .word 0x000080F2 +_0223CBC4: .word 0x000080EF + + thumb_func_start MOD12_0223CBC8 +MOD12_0223CBC8: ; 0x0223CBC8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + mov r0, #0 + str r1, [sp, #4] + str r0, [sp, #0xc] + ldr r4, [sp] + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #8 + ldr r6, [sp, #0xc] + str r2, [sp, #8] + add r7, r0, #4 + add r5, r0, r1 +_0223CBE4: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, _0223CC60 ; =0x022462AC + bl FUN_0200C154 + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_0200C59C + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C840 + ldr r1, [sp, #0xc] + ldr r0, _0223CC64 ; =0x00000213 + strb r1, [r4, r0] + sub r0, r0, #7 + str r7, [r4, r0] + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, r6] + bl FUN_02068E14 + mov r1, #0x85 + lsl r1, r1, #2 + strb r0, [r4, r1] + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + bl MOD12_0223CD38 + ldr r0, _0223CC68 ; =MOD12_0223CCBC + ldr r2, _0223CC6C ; =0x0000A08C + add r1, r5, #0 + bl FUN_0200CA44 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + ldr r0, [sp, #0xc] + add r4, #0x18 + add r0, r0, #1 + add r7, #0x10 + add r6, r6, #4 + add r5, #0x18 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0223CBE4 + ldr r0, [sp] + mov r1, #0 + bl MOD12_0223CC9C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CC60: .word 0x022462AC +_0223CC64: .word 0x00000213 +_0223CC68: .word MOD12_0223CCBC +_0223CC6C: .word 0x0000A08C + + thumb_func_start MOD12_0223CC70 +MOD12_0223CC70: ; 0x0223CC70 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #0x81 + add r5, r0, #0 + add r6, r4, #0 + lsl r7, r7, #2 +_0223CC7C: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200C3DC + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r5, r0] + bl FUN_0200CAB4 + str r6, [r5, r7] + add r4, r4, #1 + add r5, #0x18 + cmp r4, #4 + blt _0223CC7C + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223CC9C +MOD12_0223CC9C: ; 0x0223CC9C + push {r3, r4, r5, r6, r7, lr} + mov r7, #0x81 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + lsl r7, r7, #2 +_0223CCA8: + ldr r0, [r5, r7] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, #0x18 + cmp r4, #4 + blt _0223CCA8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223CCBC +MOD12_0223CCBC: ; 0x0223CCBC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0xc] + ldr r6, [r0, #4] + ldr r4, [r0, #8] + ldr r0, [r0, #0xc] + bl MOD12_0223D06C + mov r1, #0x14 + ldrsb r2, [r5, r1] + mov r1, #0x28 + sub r2, r1, r2 + add r1, r2, #0 + mul r1, r0 + asr r2, r1, #7 + lsr r2, r2, #0x18 + add r2, r1, r2 + asr r1, r2, #8 + add r4, r4, r1 + mov r1, #0x64 + mul r1, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + bl _fflt + ldr r1, _0223CD34 ; =0x42C80000 + bl _fdiv + add r7, r0, #0 + ldrb r0, [r5, #0x12] + cmp r0, #0 + bne _0223CD16 + add r1, sp, #0 + mov r3, #1 + ldr r0, [r5, #4] + add r1, #2 + add r2, sp, #0 + lsl r3, r3, #0x14 + bl FUN_0200C7F0 + add r1, sp, #0 + mov r0, #0 + ldrsh r4, [r1, r0] +_0223CD16: + lsl r1, r6, #0x10 + lsl r2, r4, #0x10 + mov r3, #1 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r5, #4] + add r1, r7, #0 + add r2, r7, #0 + bl FUN_0200C884 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CD34: .word 0x42C80000 + + thumb_func_start MOD12_0223CD38 +MOD12_0223CD38: ; 0x0223CD38 + strb r1, [r0, #0x11] + strb r2, [r0, #0x12] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CD40 +MOD12_0223CD40: ; 0x0223CD40 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CD88 ; =0x000080F3 + mov r3, #0x5d + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CD8C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5c + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CD8C ; =0x000080F0 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5b + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CD88: .word 0x000080F3 +_0223CD8C: .word 0x000080F0 + + thumb_func_start MOD12_0223CD90 +MOD12_0223CD90: ; 0x0223CD90 + push {r4, lr} + ldr r1, _0223CDAC ; =0x000080F3 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CDB0 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CDB0 ; =0x000080F0 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CDAC: .word 0x000080F3 +_0223CDB0: .word 0x000080F0 + + thumb_func_start MOD12_0223CDB4 +MOD12_0223CDB4: ; 0x0223CDB4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CDB8 +MOD12_0223CDB8: ; 0x0223CDB8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223CDBC +MOD12_0223CDBC: ; 0x0223CDBC + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223CE04 ; =0x000080F4 + mov r3, #0x60 + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223CE08 ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5f + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223CE08 ; =0x000080F1 + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x5e + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223CE04: .word 0x000080F4 +_0223CE08: .word 0x000080F1 + + thumb_func_start MOD12_0223CE0C +MOD12_0223CE0C: ; 0x0223CE0C + push {r4, lr} + ldr r1, _0223CE28 ; =0x000080F4 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223CE2C ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223CE2C ; =0x000080F1 + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223CE28: .word 0x000080F4 +_0223CE2C: .word 0x000080F1 + + thumb_func_start MOD12_0223CE30 +MOD12_0223CE30: ; 0x0223CE30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0xad + lsl r0, r0, #2 + add r7, r1, #0 + add r1, r5, r0 + sub r0, #0xf4 + mul r0, r7 + add r4, r1, r0 + str r2, [sp] + mov r1, #0 +_0223CE48: + ldr r0, [r4] + cmp r0, #0 + beq _0223CE56 + add r1, r1, #1 + add r4, #0x1c + cmp r1, #0x10 + blt _0223CE48 +_0223CE56: + cmp r1, #0x10 + bne _0223CE60 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CE60: + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _0223CF2C ; =0x02246348 + bl FUN_0200C154 + add r6, r0, #0 + bne _0223CE74 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CE74: + lsl r1, r7, #4 + add r2, r5, r1 + ldr r1, [r2, #0x1c] + ldr r7, [r2, #0x20] + str r1, [sp, #4] + ldr r1, [sp] + bl FUN_0200C5C0 + ldr r1, [sp, #4] + lsl r2, r7, #0x10 + lsl r1, r1, #0x10 + mov r3, #1 + add r0, r6, #0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r6] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6] + bl FUN_0200C59C + ldr r0, [r5] + bl FUN_02082878 + ldr r2, _0223CF30 ; =0x04000280 + mov r1, #0 + strh r1, [r2] + str r0, [r2, #0x10] + mov r0, #5 + lsl r0, r0, #8 + add r2, #0x18 + str r0, [r2] + str r1, [r2, #4] + add r0, r4, #0 + mov r2, #0x1c + bl MI_CpuFill8 + ldr r0, [sp, #4] + str r6, [r4, #4] + lsl r0, r0, #8 + str r0, [r4, #8] + lsl r0, r7, #8 + ldr r2, _0223CF30 ; =0x04000280 + str r0, [r4, #0xc] + lsr r0, r2, #0xb +_0223CED6: + ldrh r1, [r2] + tst r1, r0 + bne _0223CED6 + ldr r0, _0223CF34 ; =0x040002A8 + ldr r1, [r0] + mov r0, #1 + str r1, [r4, #0x10] + tst r0, r1 + beq _0223CEEC + neg r0, r1 + str r0, [r4, #0x10] +_0223CEEC: + ldr r0, [r5] + bl FUN_02082878 + ldr r2, _0223CF38 ; =0x04000290 + mov r1, #0xf + str r0, [r2] + lsl r1, r1, #8 + add r2, #8 + mov r0, #0 + str r1, [r2] + str r0, [r2, #4] + ldr r2, _0223CF30 ; =0x04000280 + lsr r0, r2, #0xb +_0223CF06: + ldrh r1, [r2] + tst r1, r0 + bne _0223CF06 + ldr r0, _0223CF34 ; =0x040002A8 + ldr r2, _0223CF3C ; =0x00009C40 + ldr r1, [r0] + lsr r0, r0, #0x10 + add r0, r1, r0 + neg r0, r0 + str r0, [r4, #0x14] + ldr r0, _0223CF40 ; =MOD12_0223CF44 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CF2C: .word 0x02246348 +_0223CF30: .word 0x04000280 +_0223CF34: .word 0x040002A8 +_0223CF38: .word 0x04000290 +_0223CF3C: .word 0x00009C40 +_0223CF40: .word MOD12_0223CF44 + + thumb_func_start MOD12_0223CF44 +MOD12_0223CF44: ; 0x0223CF44 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #2 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [r4, #0x14] + ldrh r0, [r4, #0x18] + add r0, r0, #1 + strh r0, [r4, #0x18] + ldrh r0, [r4, #0x18] + cmp r0, #0xa + bhi _0223CF8A + mov r0, #0x11 + ldr r1, [r4, #8] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _0223CF8A + ldr r0, _0223CFF0 ; =0xFFFEF000 + cmp r1, r0 + blt _0223CF8A + mov r0, #0xd + ldr r2, [r4, #0xc] + lsl r0, r0, #0xc + cmp r2, r0 + ble _0223CF9E +_0223CF8A: + ldr r0, [r4, #4] + bl FUN_0200C3DC + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #4] + str r0, [r4] + pop {r3, r4, r5, pc} +_0223CF9E: + ldr r0, _0223CFF4 ; =0x04000280 + mov r3, #0 + strh r3, [r0] + str r1, [r0, #0x10] + add r1, r0, #0 + lsr r2, r0, #0x12 + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_0223CFB2: + ldrh r2, [r0] + tst r2, r1 + bne _0223CFB2 + ldr r3, _0223CFF8 ; =0x040002A0 + ldr r2, [r4, #0xc] + add r0, r3, #0 + ldr r1, [r3] + sub r0, #0x10 + str r2, [r0] + lsr r2, r3, #0x12 + sub r3, #8 + mov r0, #0 + str r2, [r3] + str r0, [r3, #4] + ldr r3, _0223CFF4 ; =0x04000280 + lsr r0, r3, #0xb +_0223CFD2: + ldrh r2, [r3] + tst r2, r0 + bne _0223CFD2 + ldr r2, _0223CFF8 ; =0x040002A0 + lsl r1, r1, #0x10 + ldr r2, [r2] + mov r3, #1 + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CFF0: .word 0xFFFEF000 +_0223CFF4: .word 0x04000280 +_0223CFF8: .word 0x040002A0 + + thumb_func_start MOD12_0223CFFC +MOD12_0223CFFC: ; 0x0223CFFC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + cmp r2, #2 + beq _0223D058 + add r0, r1, #0 + lsl r0, r0, #1 + add r1, r7, r0 + ldr r0, _0223D05C ; =0x00000ADA + ldrsh r0, [r1, r0] + cmp r0, #0 + beq _0223D058 + ldr r1, _0223D060 ; =0x04000280 + mov r6, #0 + strh r6, [r1] + str r0, [r1, #0x10] + mov r0, #2 + add r1, #0x18 + str r0, [r1] + str r6, [r1, #4] + cmp r3, #0 + beq _0223D02A + mov r6, #1 +_0223D02A: + ldr r2, _0223D060 ; =0x04000280 + lsr r0, r2, #0xb +_0223D02E: + ldrh r1, [r2] + tst r1, r0 + bne _0223D02E + ldr r0, _0223D064 ; =0x040002A0 + ldr r5, [r0] + cmp r5, #0x10 + ble _0223D03E + mov r5, #0x10 +_0223D03E: + mov r4, #0 + cmp r5, #0 + ble _0223D058 +_0223D044: + ldr r1, [sp] + add r0, r7, #0 + add r2, r6, #0 + bl MOD12_0223CE30 + cmp r0, #0 + beq _0223D058 + add r4, r4, #1 + cmp r4, r5 + blt _0223D044 +_0223D058: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D05C: .word 0x00000ADA +_0223D060: .word 0x04000280 +_0223D064: .word 0x040002A0 + + thumb_func_start MOD12_0223D068 +MOD12_0223D068: ; 0x0223D068 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223D06C +MOD12_0223D06C: ; 0x0223D06C + ldr r1, _0223D098 ; =0xFFFFFD80 + cmp r0, r1 + bne _0223D076 + mov r0, #0xc0 + bx lr +_0223D076: + add r1, #0x80 + cmp r0, r1 + bne _0223D082 + mov r0, #1 + lsl r0, r0, #8 + bx lr +_0223D082: + mov r1, #0xa + lsl r1, r1, #6 + add r0, r0, r1 + lsl r1, r0, #6 + asr r0, r1, #6 + lsr r0, r0, #0x19 + add r0, r1, r0 + asr r0, r0, #7 + add r0, #0xc0 + bx lr + nop +_0223D098: .word 0xFFFFFD80 + + thumb_func_start MOD12_0223D09C +MOD12_0223D09C: ; 0x0223D09C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0xc] + bl MOD12_0223D06C + mov r1, #1 + lsl r1, r1, #8 + cmp r0, r1 + bne _0223D0B2 + lsl r1, r1, #4 + b _0223D0BC +_0223D0B2: + lsl r1, r0, #0xc + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 +_0223D0BC: + mov r3, #1 + ldr r0, [r4] + add r2, r1, #0 + lsl r3, r3, #0xc + bl FUN_021DD60C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223D0CC +MOD12_0223D0CC: ; 0x0223D0CC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #4 +_0223D0D4: + ldr r0, [r5, #0x48] + add r1, r4, #0 + bl MOD12_0223D09C + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #4 + blt _0223D0D4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223D0E8 +MOD12_0223D0E8: ; 0x0223D0E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldrb r0, [r2, #2] + str r2, [sp, #0x10] + cmp r0, r1 + bne _0223D0FC + mov r0, #0 + str r0, [sp, #0x14] + b _0223D100 +_0223D0FC: + mov r0, #1 + str r0, [sp, #0x14] +_0223D100: + ldr r0, [sp, #0x10] + mov r4, #0 + ldrb r0, [r0, #6] + lsl r6, r0, #3 + ldr r0, [sp, #0x10] + ldrb r1, [r0, #7] + ldr r0, _0223D1C0 ; =0x022461DC + ldrb r7, [r0, r1] + b _0223D156 +_0223D112: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0223D154 + add r1, sp, #0x18 + mov r3, #1 + add r1, #2 + add r2, sp, #0x18 + lsl r3, r3, #0x14 + bl FUN_0200C7F0 + add r1, sp, #0x18 + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, r6 + bne _0223D154 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r0, r7 + bne _0223D154 + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0xec + ldr r0, [r0] + bl FUN_0200C5CC + cmp r0, #2 + beq _0223D154 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D154: + add r4, r4, #1 +_0223D156: + cmp r4, #0x44 + blt _0223D112 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x14] + ldrb r0, [r0, #3] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0x10] + str r7, [sp, #8] + ldrb r0, [r0, #7] + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C52C + ldr r0, [sp, #0x10] + ldrb r0, [r0, #7] + cmp r0, #0 + bne _0223D1BA + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _0223D1BA + ldr r0, [r5] + ldr r1, _0223D1C4 ; =0x00000123 + ldr r2, _0223D1C8 ; =0x00000AD5 + ldrb r0, [r0, r1] + add r6, #0x80 + add r0, r5, r0 + ldrb r3, [r0, r2] + ldr r0, _0223D1C0 ; =0x022461DC + ldrb r3, [r0, r3] + ldr r0, [sp, #0x10] + ldrb r0, [r0, #3] + str r0, [sp] + str r6, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5] + mov r3, #2 + ldrb r0, [r0, r1] + add r0, r5, r0 + ldrb r0, [r0, r2] + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C52C +_0223D1BA: + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D1C0: .word 0x022461DC +_0223D1C4: .word 0x00000123 +_0223D1C8: .word 0x00000AD5 + + thumb_func_start MOD12_0223D1CC +MOD12_0223D1CC: ; 0x0223D1CC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + ldrb r1, [r4, #5] + add r5, r0, #0 + ldrb r0, [r4, #2] + cmp r1, #3 + bhi _0223D200 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D1E8: ; jump table + .short _0223D1F0 - _0223D1E8 - 2 ; case 0 + .short _0223D1F4 - _0223D1E8 - 2 ; case 1 + .short _0223D1F8 - _0223D1E8 - 2 ; case 2 + .short _0223D1FC - _0223D1E8 - 2 ; case 3 +_0223D1F0: + mov r2, #2 + b _0223D202 +_0223D1F4: + mov r2, #2 + b _0223D202 +_0223D1F8: + mov r2, #1 + b _0223D202 +_0223D1FC: + mov r2, #1 + b _0223D202 +_0223D200: + mov r2, #0 +_0223D202: + ldr r1, _0223D498 ; =0x00000ADA + lsl r0, r0, #1 + add r1, r5, r1 + add r3, r1, r0 + str r3, [sp, #8] + ldrsh r3, [r1, r0] + add r2, r3, r2 + strh r2, [r1, r0] + ldrb r0, [r4, #7] + cmp r0, #0 + bne _0223D262 + ldr r0, _0223D49C ; =0x00001BA0 + mov r2, #0 + add r3, r5, r0 + add r6, r5, #0 + sub r7, r0, #2 +_0223D222: + ldrb r0, [r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0223D250 + mov r0, #0xa + mul r0, r2 + ldrh r1, [r4] + ldr r2, _0223D4A0 ; =0x00001B98 + add r0, r5, r0 + strh r1, [r0, r2] + ldrh r3, [r4, #2] + add r1, r2, #2 + strh r3, [r0, r1] + ldrh r3, [r4, #4] + add r1, r2, #4 + strh r3, [r0, r1] + add r1, r2, #6 + ldrh r3, [r4, #6] + add r2, #8 + strh r3, [r0, r1] + ldrh r1, [r4, #8] + strh r1, [r0, r2] + b _0223D262 +_0223D250: + ldrb r1, [r4, #6] + ldrb r0, [r6, r7] + cmp r1, r0 + beq _0223D262 + add r2, r2, #1 + add r3, #0xa + add r6, #0xa + cmp r2, #8 + blt _0223D222 +_0223D262: + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0223D280 + ldr r0, _0223D4A4 ; =0x00000AB9 + ldrb r2, [r4, #2] + add r3, r5, r0 + add r0, r0, #4 + ldrb r1, [r3, r2] + add r1, r1, #1 + strb r1, [r3, r2] + ldrb r1, [r4, #2] + add r2, r5, r0 + ldrb r0, [r2, r1] + add r0, r0, #1 + b _0223D290 +_0223D280: + ldrb r1, [r4, #2] + mov r0, #0 + add r2, r5, r1 + ldr r1, _0223D4A4 ; =0x00000AB9 + strb r0, [r2, r1] + ldrb r2, [r4, #2] + add r1, r1, #4 + add r2, r5, r2 +_0223D290: + strb r0, [r2, r1] + ldrb r0, [r4, #4] + cmp r0, #2 + beq _0223D2A6 + ldr r0, _0223D4A8 ; =0x00000AC8 + ldrb r1, [r4, #2] + add r2, r5, r0 + ldrb r0, [r2, r1] + add r0, r0, #1 + strb r0, [r2, r1] + b _0223D2BC +_0223D2A6: + ldr r0, _0223D4AC ; =0x00000AC1 + ldrb r2, [r4, #2] + add r3, r5, r0 + add r0, r0, #7 + ldrb r1, [r3, r2] + add r1, r1, #1 + strb r1, [r3, r2] + ldrb r1, [r4, #2] + mov r2, #0 + add r1, r5, r1 + strb r2, [r1, r0] +_0223D2BC: + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0223D2EE + ldrb r0, [r4, #4] + cmp r0, #0 + beq _0223D2D2 + cmp r0, #1 + beq _0223D2DC + cmp r0, #2 + beq _0223D2E6 + b _0223D2EE +_0223D2D2: + ldr r0, _0223D4B0 ; =0x00000AC5 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _0223D2EE +_0223D2DC: + ldr r0, _0223D4B4 ; =0x00000AC6 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _0223D2EE +_0223D2E6: + ldr r0, _0223D4B8 ; =0x00000AC7 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] +_0223D2EE: + ldrb r0, [r4, #2] + str r0, [sp] + ldrb r0, [r4, #7] + str r0, [sp, #4] + add r0, r5, #0 + ldrb r3, [r4, #4] + ldr r1, [r5, #0x6c] + ldr r2, [r5, #0x70] + add r0, #0x14 + bl MOD12_0223C8A0 + ldr r2, [r5] + ldr r1, _0223D4BC ; =0x00000123 + add r0, r5, #0 + ldrb r1, [r2, r1] + add r2, r4, #0 + bl MOD12_0223D0E8 + ldrb r0, [r4, #8] + mov r1, #0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + str r0, [sp] + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + str r0, [sp, #4] + ldrb r1, [r4, #2] + ldrb r2, [r4, #7] + ldrb r3, [r4, #3] + add r0, r5, #0 + bl MOD12_0223D4E8 + ldrb r1, [r4, #2] + ldrb r2, [r4, #4] + ldrb r3, [r4, #7] + add r0, r5, #0 + bl MOD12_0223CFFC + add r0, r5, #0 + add r1, r4, #0 + bl MOD12_0223E788 + ldr r1, [r5] + ldr r0, _0223D4BC ; =0x00000123 + ldrb r2, [r4, #2] + ldrb r0, [r1, r0] + cmp r2, r0 + bne _0223D36E + ldrb r0, [r4, #4] + cmp r0, #0 + bne _0223D360 + ldrb r1, [r4, #6] + add r0, r5, #0 + mov r2, #1 + bl MOD12_0223E9C4 + b _0223D36E +_0223D360: + cmp r0, #1 + bne _0223D36E + ldrb r1, [r4, #6] + add r0, r5, #0 + mov r2, #0 + bl MOD12_0223E9C4 +_0223D36E: + ldrb r1, [r4, #7] + cmp r1, #0 + bne _0223D3AC + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D3AC + ldrb r1, [r4, #2] + ldr r0, _0223D4C0 ; =0x00000AFE + add r2, r5, r1 + add r1, r0, #0 + sub r1, #0x41 + ldrb r3, [r5, r0] + ldrb r1, [r2, r1] + cmp r3, r1 + bne _0223D39A + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D39A: + sub r0, #0x3d + ldrb r0, [r2, r0] + cmp r0, #0 + bne _0223D3F2 + add r0, r5, #0 + mov r1, #0 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D3AC: + cmp r1, #0 + beq _0223D3F2 + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D3F2 + ldr r3, _0223D4B0 ; =0x00000AC5 + add r0, r3, #2 + ldrb r1, [r5, r0] + add r0, r3, #0 + ldrb r2, [r5, r3] + add r0, #0x39 + add r3, r3, #1 + ldrb r6, [r5, r0] + ldrb r3, [r5, r3] + lsl r0, r6, #1 + add r3, r2, r3 + add r0, r6, r0 + add r3, r1, r3 + cmp r0, r3 + bne _0223D3F2 + cmp r2, r0 + bne _0223D3E6 + add r0, r5, #0 + mov r1, #1 + bl MOD12_0223EA48 + b _0223D3F2 +_0223D3E6: + cmp r1, #0 + bne _0223D3F2 + add r0, r5, #0 + mov r1, #0 + bl MOD12_0223EA48 +_0223D3F2: + ldrb r0, [r4, #8] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D404 + ldr r0, _0223D4C4 ; =0x000006F5 + bl FUN_020054C8 + b _0223D40A +_0223D404: + ldr r0, _0223D4C8 ; =0x000006F4 + bl FUN_020054C8 +_0223D40A: + ldr r0, _0223D4CC ; =0x00000ACC + ldrb r0, [r5, r0] + cmp r0, #0 + beq _0223D426 + beq _0223D492 + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0223D426 + ldr r1, [r5] + ldr r0, _0223D4BC ; =0x00000123 + ldrb r2, [r4, #2] + ldrb r0, [r1, r0] + cmp r2, r0 + bne _0223D492 +_0223D426: + ldrb r0, [r4, #4] + cmp r0, #0 + beq _0223D438 + cmp r0, #1 + beq _0223D46E + cmp r0, #2 + beq _0223D478 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D438: + ldrb r0, [r4, #2] + add r1, r5, r0 + ldr r0, _0223D4D0 ; =0x00000ABD + ldrb r1, [r1, r0] + add r0, #0x41 + ldrb r0, [r5, r0] + cmp r0, r1 + bne _0223D454 + mov r0, #0x6f + lsl r0, r0, #4 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D454: + sub r0, r0, #1 + cmp r0, r1 + bne _0223D464 + ldr r0, _0223D4D4 ; =0x000006EF + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D464: + ldr r0, _0223D4D8 ; =0x000006EE + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D46E: + ldr r0, _0223D4DC ; =0x000006F1 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D478: + ldrb r0, [r4, #8] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223D48C + ldr r0, _0223D4E0 ; =0x000006F2 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223D48C: + ldr r0, _0223D4E4 ; =0x000005F6 + bl FUN_020054C8 +_0223D492: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223D498: .word 0x00000ADA +_0223D49C: .word 0x00001BA0 +_0223D4A0: .word 0x00001B98 +_0223D4A4: .word 0x00000AB9 +_0223D4A8: .word 0x00000AC8 +_0223D4AC: .word 0x00000AC1 +_0223D4B0: .word 0x00000AC5 +_0223D4B4: .word 0x00000AC6 +_0223D4B8: .word 0x00000AC7 +_0223D4BC: .word 0x00000123 +_0223D4C0: .word 0x00000AFE +_0223D4C4: .word 0x000006F5 +_0223D4C8: .word 0x000006F4 +_0223D4CC: .word 0x00000ACC +_0223D4D0: .word 0x00000ABD +_0223D4D4: .word 0x000006EF +_0223D4D8: .word 0x000006EE +_0223D4DC: .word 0x000006F1 +_0223D4E0: .word 0x000006F2 +_0223D4E4: .word 0x000005F6 + + thumb_func_start MOD12_0223D4E8 +MOD12_0223D4E8: ; 0x0223D4E8 + push {r4, r5, r6, lr} + ldr r4, _0223D558 ; =0x00000F3C + add r5, r0, r4 + mov r0, #0x4c + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + add r4, r1, #0 + add r4, #0x20 + ldrb r4, [r4] + sub r0, #0x4d + add r6, r4, #0 + cmp r4, #0x20 + bge _0223D514 +_0223D504: + ldrb r5, [r1, r6] + cmp r5, #0 + bne _0223D50E + add r0, r6, #0 + b _0223D514 +_0223D50E: + add r6, r6, #1 + cmp r6, #0x20 + blt _0223D504 +_0223D514: + mov r5, #0 + mvn r5, r5 + cmp r0, r5 + bne _0223D532 + mov r6, #0 + cmp r4, #0 + ble _0223D532 +_0223D522: + ldrb r5, [r1, r6] + cmp r5, #0 + bne _0223D52C + add r0, r6, #0 + b _0223D532 +_0223D52C: + add r6, r6, #1 + cmp r6, r4 + blt _0223D522 +_0223D532: + mov r4, #0 + mvn r4, r4 + cmp r0, r4 + bne _0223D540 + bl ErrorHandling + pop {r4, r5, r6, pc} +_0223D540: + strb r3, [r1, r0] + add r0, r1, #0 + add r0, #0x21 + strb r2, [r0] + add r0, r1, #0 + ldr r2, [sp, #0x10] + add r0, #0x22 + strb r2, [r0] + ldr r0, [sp, #0x14] + add r1, #0x23 + strb r0, [r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D558: .word 0x00000F3C + + thumb_func_start MOD12_0223D55C +MOD12_0223D55C: ; 0x0223D55C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223D570 ; =MOD12_0223D5B0 + ldr r2, _0223D574 ; =0x00009862 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #8] + pop {r4, pc} + nop +_0223D570: .word MOD12_0223D5B0 +_0223D574: .word 0x00009862 + + thumb_func_start MOD12_0223D578 +MOD12_0223D578: ; 0x0223D578 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + + thumb_func_start MOD12_0223D588 +MOD12_0223D588: ; 0x0223D588 + ldr r1, _0223D5AC ; =0x00000F3C + mov r2, #0 + add r1, r0, r1 +_0223D58E: + add r0, r1, #0 + add r0, #0x20 + ldrb r0, [r0] + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223D59E + mov r0, #0 + bx lr +_0223D59E: + add r2, r2, #1 + add r1, #0x4c + cmp r2, #4 + blt _0223D58E + mov r0, #1 + bx lr + nop +_0223D5AC: .word 0x00000F3C + + thumb_func_start MOD12_0223D5B0 +MOD12_0223D5B0: ; 0x0223D5B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r1, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x18] + ldr r1, _0223D76C ; =0x00000F3C + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x10] + add r4, r0, r1 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r5, [sp, #0x10] + str r0, [sp, #0x14] + add r6, #0x18 +_0223D5CE: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + mov r7, #0 + ldrb r0, [r4, r0] + str r0, [sp, #0x1c] + cmp r0, #0 + bne _0223D5E0 + b _0223D750 +_0223D5E0: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + mov r2, #4 + bl MOD12_0223DCE8 + ldr r1, [sp, #0x10] + ldr r0, _0223D770 ; =0x00000AE8 + ldr r0, [r1, r0] + ldr r1, _0223D774 ; =0x00002710 + bl _u32_div_f + ldr r1, [sp, #0x1c] + cmp r1, #4 + bls _0223D5FE + b _0223D708 +_0223D5FE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D60A: ; jump table + .short _0223D708 - _0223D60A - 2 ; case 0 + .short _0223D614 - _0223D60A - 2 ; case 1 + .short _0223D67E - _0223D60A - 2 ; case 2 + .short _0223D6AC - _0223D60A - 2 ; case 3 + .short _0223D6DA - _0223D60A - 2 ; case 4 +_0223D614: + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0223D778 ; =0x00000AB4 + ldrb r1, [r2, r1] + cmp r1, #1 + bne _0223D650 + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + ldr r1, [sp, #0x14] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D77C + add r7, r0, #0 + b _0223D70C +_0223D650: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + add r1, r7, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D890 + add r7, r0, #0 + b _0223D70C +_0223D67E: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223D890 + add r7, r0, #0 + b _0223D70C +_0223D6AC: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223DA10 + add r7, r0, #0 + b _0223D70C +_0223D6DA: + add r1, r4, #0 + add r1, #0x22 + ldrb r1, [r1] + add r3, r4, #0 + sub r0, r0, #1 + str r1, [sp] + add r1, r4, #0 + add r1, #0x23 + ldrb r1, [r1] + add r3, #0x21 + add r2, r6, #0 + str r1, [sp, #4] + add r1, r7, #0 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r4, #0 + ldrb r3, [r3] + ldr r1, [r5, #0x5c] + add r0, #0x24 + bl MOD12_0223DA10 + add r7, r0, #0 + b _0223D70C +_0223D708: + bl ErrorHandling +_0223D70C: + cmp r7, #1 + bne _0223D750 + add r0, r4, #0 + add r0, #0x20 + ldrb r1, [r0] + mov r0, #0 + strb r0, [r4, r1] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x20 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0x20 + blo _0223D73A + add r1, r4, #0 + add r1, #0x20 + mov r0, #0 + strb r0, [r1] +_0223D73A: + add r0, r4, #0 + add r0, #0x24 + mov r1, #0 + mov r2, #0x28 + bl MI_CpuFill8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + mov r2, #3 + bl MOD12_0223DCE8 +_0223D750: + ldr r0, [sp, #0x14] + add r4, #0x4c + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r6, #0x10 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0x18] + cmp r0, #4 + bge _0223D768 + b _0223D5CE +_0223D768: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D76C: .word 0x00000F3C +_0223D770: .word 0x00000AE8 +_0223D774: .word 0x00002710 +_0223D778: .word 0x00000AB4 + + thumb_func_start MOD12_0223D77C +MOD12_0223D77C: ; 0x0223D77C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + ldrb r0, [r5, #0x10] + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _0223D796 + cmp r0, #1 + beq _0223D7E4 + b _0223D818 +_0223D796: + ldr r0, [r4, #4] + ldr r1, [sp, #0x2c] + lsl r0, r0, #8 + str r0, [r5] + ldr r0, [r4, #8] + lsr r1, r1, #1 + lsl r0, r0, #8 + str r0, [r5, #4] + ldr r0, [r5] + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + mov r0, #5 + lsl r0, r0, #8 + bl _u32_div_f + ldr r1, [sp, #0x20] + cmp r1, #1 + bne _0223D7CE + ldr r1, _0223D888 ; =0xFFFFF600 + strh r1, [r5, #0x14] + mov r1, #0xc8 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl _s32_div_f + b _0223D7D2 +_0223D7CE: + ldr r1, _0223D88C ; =0xFFFFFB00 + strh r1, [r5, #0x14] +_0223D7D2: + strh r0, [r5, #0x16] + ldr r0, [sp, #0x28] + mov r1, #1 + mov r2, #0 + bl MOD12_0223CD38 + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223D7E4: + mov r0, #0x14 + ldrsh r1, [r5, r0] + ldr r2, [r5, #0xc] + add r1, r2, r1 + str r1, [r5, #0xc] + ldrsh r1, [r5, r0] + mov r0, #0x16 + ldrsh r0, [r5, r0] + add r0, r1, r0 + strh r0, [r5, #0x14] + ldr r1, [r5, #4] + ldr r0, [r5, #0xc] + cmp r0, r1 + blt _0223D81E + str r1, [r5, #0xc] + mov r1, #1 + ldr r0, [sp, #0x28] + add r2, r1, #0 + bl MOD12_0223CD38 + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + b _0223D81E +_0223D818: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223D81E: + cmp r6, #0 + bne _0223D826 + mov r6, #0x64 + b _0223D828 +_0223D826: + mov r6, #0x28 +_0223D828: + ldr r0, [sp, #0x24] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223D836 + add r1, r0, #0 +_0223D836: + asr r0, r1, #8 + add r6, r6, r0 + ldr r0, [r5] + ldr r1, [r5, #8] + str r0, [sp] + sub r1, r1, r0 + ldr r7, [r5, #4] + ldr r0, [r5, #0xc] + sub r5, r0, r7 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #8] + add r0, r5, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp] + ldr r1, [sp, #8] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r4, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + bl FUN_021DD620 + ldr r0, [sp, #4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D888: .word 0xFFFFF600 +_0223D88C: .word 0xFFFFFB00 + + thumb_func_start MOD12_0223D890 +MOD12_0223D890: ; 0x0223D890 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + ldrb r0, [r4, #0x10] + add r6, r2, #0 + str r3, [sp] + ldr r5, [sp, #0x30] + cmp r0, #0 + beq _0223D8B0 + cmp r0, #1 + beq _0223D908 + cmp r0, #2 + beq _0223D95A + b _0223D99E +_0223D8B0: + ldr r0, [r6, #4] + ldr r1, [sp, #0x34] + lsl r0, r0, #8 + str r0, [r4] + ldr r0, [r6, #8] + lsl r0, r0, #8 + str r0, [r4, #4] + ldr r0, [r4] + str r0, [r4, #8] + ldr r0, [r4, #4] + str r0, [r4, #0xc] + mov r0, #0x1e + mul r0, r1 + mov r1, #0x64 + bl _u32_div_f + add r7, r0, #0 + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl _s32_div_f + ldr r1, [sp, #0x34] + str r0, [r4, #0x14] + mov r0, #1 + lsl r0, r0, #0xc + sub r1, r1, r7 + bl _s32_div_f + str r0, [r4, #0x18] + cmp r5, #0 + bne _0223D902 + ldr r1, [r4, #0x14] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r4, #0x14] + ldr r1, [r4, #0x18] + mul r0, r1 + str r0, [r4, #0x18] +_0223D902: + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223D908: + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _0223D924 + ldr r1, [r4, #0x14] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #0x20 + b _0223D92E +_0223D924: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [r4, #0xc] + mov r0, #0x10 +_0223D92E: + lsl r0, r0, #8 + str r0, [sp, #8] + ldr r7, [r4, #4] + ldr r0, [r4, #0xc] + sub r0, r0, r7 + bl abs + ldr r1, [sp, #8] + cmp r0, r1 + blt _0223D9A4 + cmp r5, #1 + bne _0223D94C + add r0, r1, #0 + add r0, r7, r0 + b _0223D950 +_0223D94C: + add r0, r1, #0 + sub r0, r7, r0 +_0223D950: + str r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + b _0223D9A4 +_0223D95A: + ldr r0, [sp, #0x28] + cmp r0, #1 + bne _0223D970 + ldr r1, [r4, #0x18] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r4, #0xc] + b _0223D974 +_0223D970: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] +_0223D974: + sub r0, r1, r0 + str r0, [r4, #0xc] + cmp r5, #1 + bne _0223D984 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + cmp r0, r1 + ble _0223D990 +_0223D984: + cmp r5, #0 + bne _0223D9A4 + ldr r1, [r4, #4] + ldr r0, [r4, #0xc] + cmp r0, r1 + blt _0223D9A4 +_0223D990: + str r1, [r4, #0xc] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + mov r0, #1 + str r0, [sp, #0xc] + b _0223D9A4 +_0223D99E: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223D9A4: + ldr r0, [sp] + cmp r0, #0 + bne _0223D9AE + mov r5, #0x64 + b _0223D9B0 +_0223D9AE: + mov r5, #0x28 +_0223D9B0: + ldr r0, [sp, #0x2c] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223D9BE + add r1, r0, #0 +_0223D9BE: + asr r0, r1, #8 + add r5, r5, r0 + ldr r0, [r4] + ldr r1, [r4, #8] + str r0, [sp, #4] + sub r1, r1, r0 + ldr r7, [r4, #4] + ldr r0, [r4, #0xc] + sub r4, r0, r7 + add r0, r1, #0 + mul r0, r5 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #0x10] + add r0, r4, #0 + mul r0, r5 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + ldr r1, [sp, #0x10] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r6, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r6, #8] + ldr r0, [r6] + ldr r1, [r6, #4] + bl FUN_021DD620 + ldr r0, [sp, #0xc] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0223DA10 +MOD12_0223DA10: ; 0x0223DA10 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0x10] + ldrb r0, [r5, #0x10] + add r4, r2, #0 + str r3, [sp] + ldr r6, [sp, #0x38] + cmp r0, #0 + beq _0223DA30 + cmp r0, #1 + beq _0223DAB0 + cmp r0, #2 + beq _0223DB22 + b _0223DB84 +_0223DA30: + ldr r0, [r4, #4] + ldr r1, [sp, #0x3c] + lsl r0, r0, #8 + str r0, [r5] + ldr r0, [r4, #8] + lsl r0, r0, #8 + str r0, [r5, #4] + ldr r0, [r5] + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + mov r0, #0x1e + mul r0, r1 + mov r1, #0x64 + bl _u32_div_f + ldr r1, [sp, #0x3c] + str r0, [sp, #0x14] + sub r7, r1, r0 + ldr r0, _0223DC04 ; =0x00038E00 + ldr r1, [sp, #0x14] + bl _s32_div_f + str r0, [r5, #0x18] + ldr r0, _0223DC08 ; =0xFFFC7200 + add r1, r7, #0 + bl _s32_div_f + str r0, [r5, #0x1c] + mov r0, #1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [r5, #0x20] + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl _s32_div_f + neg r0, r0 + str r0, [r5, #0x24] + cmp r6, #1 + bne _0223DAAA + ldr r1, [r5, #0x18] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x18] + ldr r1, [r5, #0x1c] + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x1c] + ldr r1, [r5, #0x20] + add r2, r1, #0 + mul r2, r0 + str r2, [r5, #0x20] + ldr r1, [r5, #0x24] + mul r0, r1 + str r0, [r5, #0x24] +_0223DAAA: + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] +_0223DAB0: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0223DADC + ldr r1, [r5, #0x20] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #8] + add r0, r1, r0 + str r0, [r5, #8] + mov r0, #0x20 + str r0, [sp, #0xc] + ldr r1, [r5, #0x18] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #0x14] + b _0223DAEC +_0223DADC: + ldr r1, [r5, #8] + ldr r0, [r5, #0x20] + add r0, r1, r0 + str r0, [r5, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x18] +_0223DAEC: + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r0, [sp, #0xc] + ldr r7, [r5] + lsl r0, r0, #8 + str r0, [sp, #8] + ldr r0, [r5, #8] + sub r0, r0, r7 + bl abs + ldr r1, [sp, #8] + cmp r0, r1 + blt _0223DB8A + cmp r6, #1 + bne _0223DB10 + add r0, r1, #0 + sub r0, r7, r0 + b _0223DB14 +_0223DB10: + add r0, r1, #0 + add r0, r7, r0 +_0223DB14: + str r0, [r5, #8] + ldr r0, [r5, #4] + str r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + b _0223DB8A +_0223DB22: + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0223DB4A + ldr r1, [r5, #0x24] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #8] + add r0, r1, r0 + str r0, [r5, #8] + ldr r1, [r5, #0x1c] + mov r0, #0xc8 + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r1, [r5, #0x14] + b _0223DB56 +_0223DB4A: + ldr r1, [r5, #8] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [r5, #8] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x1c] +_0223DB56: + add r0, r1, r0 + str r0, [r5, #0x14] + cmp r6, #1 + bne _0223DB66 + ldr r1, [r5] + ldr r0, [r5, #8] + cmp r0, r1 + bge _0223DB72 +_0223DB66: + cmp r6, #0 + bne _0223DB8A + ldr r1, [r5] + ldr r0, [r5, #8] + cmp r0, r1 + bgt _0223DB8A +_0223DB72: + str r1, [r5, #8] + mov r0, #0 + str r0, [r5, #0x14] + ldrb r0, [r5, #0x10] + add r0, r0, #1 + strb r0, [r5, #0x10] + mov r0, #1 + str r0, [sp, #0x10] + b _0223DB8A +_0223DB84: + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223DB8A: + ldr r1, [r5, #0x14] + ldr r0, [r4] + lsl r1, r1, #8 + lsr r1, r1, #0x10 + bl FUN_021DD604 + ldr r0, [sp] + cmp r0, #0 + bne _0223DBA0 + mov r6, #0x64 + b _0223DBA2 +_0223DBA0: + mov r6, #0x28 +_0223DBA2: + ldr r0, [sp, #0x34] + lsl r1, r0, #9 + mov r0, #0x19 + lsl r0, r0, #0xa + cmp r1, r0 + ble _0223DBB0 + add r1, r0, #0 +_0223DBB0: + asr r0, r1, #8 + add r6, r6, r0 + ldr r0, [r5] + ldr r1, [r5, #8] + str r0, [sp, #4] + sub r1, r1, r0 + ldr r7, [r5, #4] + ldr r0, [r5, #0xc] + sub r5, r0, r7 + add r0, r1, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #0x18] + add r0, r5, #0 + mul r0, r6 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + ldr r1, [sp, #0x18] + add r2, r2, r1 + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + str r1, [r4, #4] + add r1, r7, r0 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r2, r0, #8 + str r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + bl FUN_021DD620 + ldr r0, [sp, #0x10] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0223DC04: .word 0x00038E00 +_0223DC08: .word 0xFFFC7200 + + thumb_func_start MOD12_0223DC0C +MOD12_0223DC0C: ; 0x0223DC0C + ldr r1, _0223DC24 ; =0x00001BA0 + mov r2, #0 + add r3, r0, r1 + mov r0, #4 +_0223DC14: + ldrb r1, [r3] + add r2, r2, #1 + bic r1, r0 + strb r1, [r3] + add r3, #0xa + cmp r2, #8 + blt _0223DC14 + bx lr + .align 2, 0 +_0223DC24: .word 0x00001BA0 + + thumb_func_start MOD12_0223DC28 +MOD12_0223DC28: ; 0x0223DC28 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _0223DCAC ; =0x00001070 + add r6, r1, #0 + add r7, r5, r0 + mov r0, #0x28 + mul r0, r6 + str r0, [sp, #4] + ldr r0, [r7, r0] + str r2, [sp] + cmp r0, #0 + beq _0223DC46 + bl ErrorHandling +_0223DC46: + ldr r0, _0223DCB0 ; =0x0000106C + mov r2, #0x28 + add r4, r6, #0 + add r0, r5, r0 + mul r4, r2 + str r0, [sp, #8] + add r0, r0, r4 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, [sp, #8] + ldr r2, _0223DCB4 ; =0x00001086 + str r5, [r0, r4] + add r3, r5, r4 + ldr r0, [sp] + strb r6, [r3, r2] + sub r1, r2, #1 + strb r0, [r3, r1] + lsl r0, r6, #2 + add r0, r5, r0 + add r1, r2, #0 + ldr r0, [r0, #0x5c] + sub r1, #0x12 + str r0, [r3, r1] + add r0, r5, #0 + add r0, #0x18 + lsl r1, r6, #4 + add r1, r0, r1 + add r0, r2, #0 + sub r0, #0xe + str r1, [r3, r0] + add r2, #0xa + add r0, r5, r2 + ldrb r2, [r0, r4] + mov r1, #4 + orr r1, r2 + strb r1, [r0, r4] + ldrb r2, [r0, r4] + mov r1, #8 + orr r1, r2 + strb r1, [r0, r4] + ldr r1, [sp, #8] + ldr r0, _0223DCB8 ; =MOD12_0223DE10 + ldr r2, _0223DCBC ; =0x00009858 + add r1, r1, r4 + bl FUN_0200CA44 + ldr r1, [sp, #4] + str r0, [r7, r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223DCAC: .word 0x00001070 +_0223DCB0: .word 0x0000106C +_0223DCB4: .word 0x00001086 +_0223DCB8: .word MOD12_0223DE10 +_0223DCBC: .word 0x00009858 + + thumb_func_start MOD12_0223DCC0 +MOD12_0223DCC0: ; 0x0223DCC0 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _0223DCE4 ; =0x00001070 + add r5, r0, #0 + add r6, r4, #0 +_0223DCCA: + ldr r0, [r5, r7] + cmp r0, #0 + beq _0223DCD8 + bl FUN_0200CAB4 + ldr r0, _0223DCE4 ; =0x00001070 + str r6, [r5, r0] +_0223DCD8: + add r4, r4, #1 + add r5, #0x28 + cmp r4, #4 + blt _0223DCCA + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DCE4: .word 0x00001070 + + thumb_func_start MOD12_0223DCE8 +MOD12_0223DCE8: ; 0x0223DCE8 + push {r3, r4, r5, lr} + mov r3, #0x28 + mul r3, r1 + ldr r1, _0223DDAC ; =0x00001070 + add r4, r0, r3 + ldr r5, [r4, r1] + cmp r5, #0 + beq _0223DDA8 + cmp r2, #5 + bhi _0223DDA4 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223DD08: ; jump table + .short _0223DD14 - _0223DD08 - 2 ; case 0 + .short _0223DD2A - _0223DD08 - 2 ; case 1 + .short _0223DD38 - _0223DD08 - 2 ; case 2 + .short _0223DD46 - _0223DD08 - 2 ; case 3 + .short _0223DD64 - _0223DD08 - 2 ; case 4 + .short _0223DD92 - _0223DD08 - 2 ; case 5 +_0223DD14: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x20 + bic r1, r0 + strb r1, [r2, r3] + ldrb r1, [r2, r3] + mov r0, #0x10 + bic r1, r0 + strb r1, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD2A: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x20 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD38: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #0x10 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DD46: + add r1, #0x20 + add r0, r0, r1 + ldrb r2, [r0, r3] + mov r1, #2 + bic r2, r1 + strb r2, [r0, r3] + ldrb r2, [r0, r3] + mov r1, #1 + bic r2, r1 + strb r2, [r0, r3] + ldrb r2, [r0, r3] + mov r1, #4 + orr r1, r2 + strb r1, [r0, r3] + pop {r3, r4, r5, pc} +_0223DD64: + add r2, r1, #0 + add r2, #0x20 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1f + bne _0223DDA8 + add r2, r1, #0 + add r2, #0x20 + add r5, r0, r2 + ldrb r2, [r5, r3] + mov r0, #2 + orr r0, r2 + strb r0, [r5, r3] + ldrb r0, [r5, r3] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0223DDA8 + add r0, r1, #0 + add r0, #0x10 + ldr r0, [r4, r0] + add r1, #0x1c + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_0223DD92: + add r1, #0x20 + add r2, r0, r1 + ldrb r1, [r2, r3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r2, r3] + pop {r3, r4, r5, pc} +_0223DDA4: + bl ErrorHandling +_0223DDA8: + pop {r3, r4, r5, pc} + nop +_0223DDAC: .word 0x00001070 + + thumb_func_start MOD12_0223DDB0 +MOD12_0223DDB0: ; 0x0223DDB0 + mov r2, #0x28 + mul r2, r1 + ldr r1, _0223DDE0 ; =0x00001070 + add r2, r0, r2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _0223DDC2 + mov r0, #1 + bx lr +_0223DDC2: + add r0, r1, #0 + add r0, #0x20 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + beq _0223DDD8 + add r1, #0x15 + ldrb r0, [r2, r1] + cmp r0, #0 + bne _0223DDDC +_0223DDD8: + mov r0, #1 + bx lr +_0223DDDC: + mov r0, #0 + bx lr + .align 2, 0 +_0223DDE0: .word 0x00001070 + + thumb_func_start MOD12_0223DDE4 +MOD12_0223DDE4: ; 0x0223DDE4 + mov r2, #0x28 + mul r2, r1 + add r2, r0, r2 + ldr r0, _0223DE0C ; =0x00001070 + ldr r1, [r2, r0] + cmp r1, #0 + bne _0223DDF6 + mov r0, #1 + bx lr +_0223DDF6: + add r0, #0x20 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223DE06 + mov r0, #1 + bx lr +_0223DE06: + mov r0, #0 + bx lr + nop +_0223DE0C: .word 0x00001070 + + thumb_func_start MOD12_0223DE10 +MOD12_0223DE10: ; 0x0223DE10 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD12_0223DE24 + add r0, r4, #0 + bl MOD12_0223DF18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223DE24 +MOD12_0223DE24: ; 0x0223DE24 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + cmp r0, #1 + beq _0223DF00 + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _0223DF00 + ldr r5, [r4] + ldr r1, _0223DF04 ; =0x00001138 + ldr r2, _0223DF08 ; =0x00002710 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r3, #0 + bl _ll_mul + ldr r2, _0223DF0C ; =0x00000AE8 + mov r3, #0 + ldr r7, [r5, r2] + add r2, r7, #0 + bl _ull_mod + add r5, r0, #0 + add r6, r1, #0 + lsr r7, r7, #1 + lsr r0, r5, #0x13 + lsl r1, r6, #0xd + orr r1, r0 + lsl r0, r5, #0xd + add r2, r7, #0 + mov r3, #0 + bl _ll_udiv + add r2, r1, #0 + mov r1, #1 + sub r3, r5, r7 + ldr r3, _0223DF10 ; =0x00000000 + sbc r6, r3 + blo _0223DE80 + lsl r3, r1, #0xe + mov r1, #0 + sub r0, r3, r0 +_0223DE80: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + ldr r3, _0223DF14 ; =0xFFFD8000 + mov r5, #0x40 + add r0, r0, r3 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r2, r2, #0x19 + lsr r2, r2, #0x1f + bic r0, r5 + lsl r5, r1, #0x18 + lsr r5, r5, #0x18 + lsl r5, r5, #0x1f + lsr r5, r5, #0x19 + orr r5, r0 + add r0, r4, #0 + add r0, #0x24 + strb r5, [r0] + add r0, r4, #0 + add r0, #0x24 + ldrb r0, [r0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223DEEA + ldr r0, [r4, #0x10] + cmp r0, r3 + beq _0223DEC6 + cmp r2, #0 + bne _0223DEEA + cmp r1, #1 + bne _0223DEEA +_0223DEC6: + ldr r0, _0223DF14 ; =0xFFFD8000 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x24 + ldrb r1, [r0] + mov r0, #0x10 + bic r1, r0 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x24 + ldrb r1, [r0] + mov r0, #0x20 + orr r1, r0 + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] +_0223DEEA: + ldr r1, [r4, #0x10] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r4, #0xc] + str r1, [r0, #0xc] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD12_0223D09C +_0223DF00: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DF04: .word 0x00001138 +_0223DF08: .word 0x00002710 +_0223DF0C: .word 0x00000AE8 +_0223DF10: .word 0x00000000 +_0223DF14: .word 0xFFFD8000 + + thumb_func_start MOD12_0223DF18 +MOD12_0223DF18: ; 0x0223DF18 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r2, [r4] + ldr r1, _0223E058 ; =0x00001138 + mov r3, #0 + ldr r0, [r2, r1] + add r1, r1, #4 + ldr r1, [r2, r1] + ldr r2, _0223E05C ; =0x00002710 + ldr r5, [r4, #0x14] + bl _ll_mul + ldr r3, [r4] + ldr r2, _0223E060 ; =0x00000AE8 + ldr r2, [r3, r2] + mov r3, #0 + lsl r2, r2, #1 + bl _ull_mod + mov r2, #0x5a + lsl r2, r2, #2 + mov r3, #0 + bl _ll_mul + ldr r3, [r4] + ldr r2, _0223E060 ; =0x00000AE8 + ldr r2, [r3, r2] + mov r3, #0 + lsl r2, r2, #1 + bl _ll_udiv + lsr r2, r0, #0x18 + lsl r1, r1, #8 + orr r1, r2 + lsl r0, r0, #8 + add r2, r4, #0 + str r0, [r4, #0x14] + add r2, #0x24 + ldrb r2, [r2] + lsl r3, r2, #0x1e + lsr r3, r3, #0x1f + bne _0223E054 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223DF86 + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + mov r3, #8 + add r5, r0, #0 + bic r2, r3 + add r3, r4, #0 + add r3, #0x24 + strb r2, [r3] +_0223DF86: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223DFCE + mov r2, #0 + sub r3, r0, r5 + mov ip, r1 + mov r3, ip + sbc r3, r2 + bhs _0223DFA4 + add r7, r5, r0 + b _0223DFA6 +_0223DFA4: + add r7, r0, #0 +_0223DFA6: + ldr r6, [r4, #0x20] + mov r2, #0 + add r3, r2, #0 + add r2, r6, #0 + eor r3, r1 + eor r2, r0 + orr r2, r3 + beq _0223DFBE + cmp r5, r6 + bhi _0223E054 + cmp r6, r7 + bhi _0223E054 +_0223DFBE: + add r2, r4, #0 + add r2, #0x24 + ldrb r3, [r2] + mov r2, #4 + bic r3, r2 + add r2, r4, #0 + add r2, #0x24 + strb r3, [r2] +_0223DFCE: + add r2, r4, #0 + add r2, #0x24 + ldrb r2, [r2] + lsl r2, r2, #0x1f + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223E014 + mov r3, #0 + mov r2, #0 + eor r3, r1 + eor r2, r0 + orr r2, r3 + beq _0223DFF0 + mov r2, #0 + sub r0, r0, r5 + sbc r1, r2 + bhs _0223E014 +_0223DFF0: + add r1, r4, #0 + add r1, #0x24 + ldrb r2, [r1] + mov r1, #1 + mov r0, #0 + bic r2, r1 + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x24 + ldrb r2, [r1] + mov r1, #2 + orr r2, r1 + add r1, r4, #0 + add r1, #0x24 + strb r2, [r1] + str r0, [r4, #0x20] +_0223E014: + ldrb r0, [r4, #0x19] + cmp r0, #0 + bne _0223E01C + b _0223E01C +_0223E01C: + ldr r0, [r4, #0x14] + mov r5, #3 + lsl r0, r0, #8 + lsr r0, r0, #0x10 + bl FUN_0201B954 + add r1, r5, #0 + mul r1, r0 + ldrb r2, [r4, #0x19] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + mov r1, #6 + add r3, r2, #0 + mul r3, r1 + ldr r1, _0223E064 ; =0x022461F4 + asr r0, r0, #0xc + ldrsh r1, [r1, r3] + add r0, r0, r1 + sub r1, r0, r5 + ldr r0, [r4, #0xc] + str r1, [r0, #4] + ldr r2, [r4, #0xc] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 +_0223E054: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E058: .word 0x00001138 +_0223E05C: .word 0x00002710 +_0223E060: .word 0x00000AE8 +_0223E064: .word 0x022461F4 + + thumb_func_start MOD12_0223E068 +MOD12_0223E068: ; 0x0223E068 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _0223E07E + cmp r5, #0 + bne _0223E07E + bl ErrorHandling +_0223E07E: + cmp r6, #6 + bls _0223E084 + b _0223E1E4 +_0223E084: + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223E090: ; jump table + .short _0223E1E8 - _0223E090 - 2 ; case 0 + .short _0223E09E - _0223E090 - 2 ; case 1 + .short _0223E0BA - _0223E090 - 2 ; case 2 + .short _0223E0DE - _0223E090 - 2 ; case 3 + .short _0223E0F4 - _0223E090 - 2 ; case 4 + .short _0223E138 - _0223E090 - 2 ; case 5 + .short _0223E16A - _0223E090 - 2 ; case 6 +_0223E09E: + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0BA: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200B278 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0DE: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + add r4, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r4] + bl FUN_0200AD38 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E0F4: + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0x9c + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E138: + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r0, #0 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + add r4, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r4] + add r3, r1, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E16A: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r2, r0, #0 + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B278 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r0, r4, #0 + add r0, #0x9c + ldrb r2, [r5, #4] + ldr r0, [r0] + add r3, r1, #0 + bl FUN_0200AD38 + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r1, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + add r0, r4, #0 + str r1, [sp, #4] + lsl r3, r3, #2 + add r0, #0x9c + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0x9c + add r2, r0, #0 + ldr r0, [r4] + mov r1, #3 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_0223E1E4: + bl ErrorHandling +_0223E1E8: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_0223E1EC +MOD12_0223E1EC: ; 0x0223E1EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _0223E268 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _0223E20E + ldr r0, _0223E26C ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _0223E210 +_0223E20E: + mov r4, #1 +_0223E210: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_0223E068 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x9c + add r1, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x78 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xa0 + ldr r2, [r2] + add r0, #0x78 + mov r1, #1 + bl FUN_0201BD84 + ldr r1, _0223E270 ; =0x00000AB8 + strb r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E268: .word 0x00000171 +_0223E26C: .word 0x00001988 +_0223E270: .word 0x00000AB8 + + thumb_func_start MOD12_0223E274 +MOD12_0223E274: ; 0x0223E274 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #8 + blo _0223E286 + bl ErrorHandling +_0223E286: + lsl r3, r4, #2 + ldr r2, _0223E2A0 ; =0x02246224 + add r0, r5, #0 + ldr r4, _0223E2A4 ; =0x02246226 + ldrh r2, [r2, r3] + str r6, [sp] + add r5, #0x98 + ldrb r3, [r4, r3] + ldr r1, [r5] + bl MOD12_0223E1EC + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223E2A0: .word 0x02246224 +_0223E2A4: .word 0x02246226 + + thumb_func_start MOD12_0223E2A8 +MOD12_0223E2A8: ; 0x0223E2A8 + ldr r1, _0223E2B0 ; =0x00000AB8 + ldr r3, _0223E2B4 ; =0x0201BD71 + ldrb r0, [r0, r1] + bx r3 + .align 2, 0 +_0223E2B0: .word 0x00000AB8 +_0223E2B4: .word 0x0201BD71 + + thumb_func_start MOD12_0223E2B8 +MOD12_0223E2B8: ; 0x0223E2B8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + ldr r2, _0223E300 ; =0x000080F1 + mov r3, #0x4c + str r2, [sp, #8] + mov r2, #0x2e + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _0223E304 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x4d + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _0223E304 ; =0x000080EE + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x2e + mov r3, #0x4e + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, pc} + nop +_0223E300: .word 0x000080F1 +_0223E304: .word 0x000080EE + + thumb_func_start MOD12_0223E308 +MOD12_0223E308: ; 0x0223E308 + push {r4, lr} + ldr r1, _0223E324 ; =0x000080F1 + add r4, r0, #0 + bl FUN_0200C358 + ldr r1, _0223E328 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C378 + ldr r1, _0223E328 ; =0x000080EE + add r0, r4, #0 + bl FUN_0200C388 + pop {r4, pc} + .align 2, 0 +_0223E324: .word 0x000080F1 +_0223E328: .word 0x000080EE + + thumb_func_start MOD12_0223E32C +MOD12_0223E32C: ; 0x0223E32C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0223E33E + bl ErrorHandling +_0223E33E: + mov r0, #0x17 + mov r1, #0x10 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x21 + lsl r0, r0, #4 + str r4, [r5, r0] + str r5, [r4, #8] + ldr r0, [r5, #0x6c] + ldr r1, [r5, #0x70] + ldr r2, _0223E380 ; =0x02246278 + bl FUN_0200C154 + str r0, [r4, #4] + ldr r0, [r0] + bl FUN_0200C59C + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_0200C644 + ldr r0, _0223E384 ; =MOD12_0223E3BC + ldr r2, _0223E388 ; =0x00009C4F + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E380: .word 0x02246278 +_0223E384: .word MOD12_0223E3BC +_0223E388: .word 0x00009C4F + + thumb_func_start MOD12_0223E38C +MOD12_0223E38C: ; 0x0223E38C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_0200CAB4 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r0, [r0, #4] + bl FUN_0200C3DC + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + pop {r4, pc} + + thumb_func_start MOD12_0223E3BC +MOD12_0223E3BC: ; 0x0223E3BC + ldrb r0, [r1, #0xc] + cmp r0, #0 + beq _0223E3CA + cmp r0, #1 + beq _0223E3CE + cmp r0, #2 + b _0223E3CE +_0223E3CA: + add r0, r0, #1 + strb r0, [r1, #0xc] +_0223E3CE: + ldr r0, [r1, #4] + ldr r3, _0223E3D8 ; =0x0200C59D + ldr r0, [r0] + bx r3 + nop +_0223E3D8: .word 0x0200C59D + + thumb_func_start MOD12_0223E3DC +MOD12_0223E3DC: ; 0x0223E3DC + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r0, r1, #8 + add r1, r2, #0 + bl _u32_div_f + ldr r1, _0223E434 ; =0x00002710 + add r4, r0, #0 + mul r0, r1 + lsl r1, r1, #4 + mov r6, #0x90 + bl _u32_div_f + mov r0, #0xb4 + mul r0, r1 + ldr r1, _0223E438 ; =0x00027100 + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B93C + mov r1, #0xa + mul r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + sub r2, r6, r0 + lsl r1, r4, #0x10 + lsl r2, r2, #0x10 + mov r3, #1 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + lsl r3, r3, #0x14 + bl FUN_0200C750 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C644 + pop {r4, r5, r6, pc} + nop +_0223E434: .word 0x00002710 +_0223E438: .word 0x00027100 + + thumb_func_start MOD12_0223E43C +MOD12_0223E43C: ; 0x0223E43C + ldr r3, _0223E444 ; =0x0200C645 + ldr r0, [r0, #4] + mov r1, #0 + bx r3 + .align 2, 0 +_0223E444: .word 0x0200C645 + + thumb_func_start MOD12_0223E448 +MOD12_0223E448: ; 0x0223E448 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0200C644 + mov r3, #1 + ldr r0, [r4, #4] + mov r1, #0 + mov r2, #0x90 + lsl r3, r3, #0x14 + bl FUN_0200C750 + pop {r4, pc} + + thumb_func_start MOD12_0223E464 +MOD12_0223E464: ; 0x0223E464 + push {r3, r4} + ldr r2, _0223E484 ; =0x022461E0 + add r1, sp, #0 + ldrb r3, [r2] + add r4, sp, #0 + strb r3, [r1] + ldrb r3, [r2, #1] + strb r3, [r1, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r3, [r1, #2] + strb r2, [r1, #3] + ldrb r0, [r4, r0] + pop {r3, r4} + bx lr + nop +_0223E484: .word 0x022461E0 + + thumb_func_start MOD12_0223E488 +MOD12_0223E488: ; 0x0223E488 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + cmp r4, #8 + blo _0223E49A + bl ErrorHandling +_0223E49A: + ldr r0, _0223E51C ; =0x00001BF1 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _0223E516 + add r0, r5, #0 + mov r1, #1 + add r0, #0x88 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r5, #0x74] + mov r1, #1 + bl FUN_0201AC68 + add r0, r5, #0 + add r0, #0x98 + ldr r1, _0223E520 ; =0x02246224 + lsl r4, r4, #2 + ldrh r1, [r1, r4] + ldr r0, [r0] + bl FUN_0200A914 + ldr r1, _0223E524 ; =0x02246226 + add r6, r0, #0 + ldrb r1, [r1, r4] + add r0, r5, #0 + add r2, r7, #0 + bl MOD12_0223E068 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x9c + add r1, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x88 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xa0 + ldr r2, [r2] + add r0, #0x88 + mov r1, #1 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, _0223E51C ; =0x00001BF1 + mov r1, #1 + strb r1, [r5, r0] +_0223E516: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223E51C: .word 0x00001BF1 +_0223E520: .word 0x02246224 +_0223E524: .word 0x02246226 + + thumb_func_start MOD12_0223E528 +MOD12_0223E528: ; 0x0223E528 + push {r4, lr} + add r4, r0, #0 + add r0, #0x88 + mov r1, #1 + bl FUN_0200D0E0 + ldr r0, [r4, #0x74] + mov r1, #1 + bl FUN_0201AC68 + ldr r0, _0223E544 ; =0x00001BF1 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_0223E544: .word 0x00001BF1 + + thumb_func_start MOD12_0223E548 +MOD12_0223E548: ; 0x0223E548 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223E584 ; =0x00000AEC + ldrb r1, [r1, #4] + ldr r3, [r5, r0] + add r6, r2, #0 + mul r1, r3 + mul r6, r1 + add r1, r0, #4 + add r0, #8 + ldr r1, [r5, r1] + ldr r0, [r5, r0] + mov r4, #0 + add r0, r1, r0 + mul r0, r2 + add r0, r1, r0 + ldr r1, _0223E588 ; =0x00002710 + bl _u32_div_f + add r1, r4, #0 + add r3, r6, r0 + ldr r0, _0223E58C ; =0x00001138 + adc r4, r1 + ldr r2, [r5, r0] + add r0, r0, #4 + ldr r1, [r5, r0] + sub r0, r3, r2 + sbc r4, r1 + add r1, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223E584: .word 0x00000AEC +_0223E588: .word 0x00002710 +_0223E58C: .word 0x00001138 + + thumb_func_start MOD12_0223E590 +MOD12_0223E590: ; 0x0223E590 + ldr r3, _0223E594 ; =MOD12_0223E548 + bx r3 + .align 2, 0 +_0223E594: .word MOD12_0223E548 + + thumb_func_start MOD12_0223E598 +MOD12_0223E598: ; 0x0223E598 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x17 + mov r1, #0x2c + bl FUN_02016998 + mov r1, #0 + mov r2, #0x2c + add r4, r0, #0 + bl MI_CpuFill8 + add r1, r6, #0 + add r1, #0x18 + lsl r0, r5, #4 + str r6, [r4] + add r0, r1, r0 + str r0, [r4, #4] + mov r0, #0x85 + lsl r0, r0, #2 + add r1, r6, r0 + mov r0, #0x18 + mul r0, r5 + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, _0223E5F4 ; =0x00000AB4 + str r7, [r4, #0xc] + add r1, r6, r5 + ldrb r0, [r1, r0] + ldr r2, _0223E5F8 ; =0x00009C40 + cmp r0, #1 + bne _0223E5E8 + ldr r0, _0223E5FC ; =MOD12_0223E604 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_0223E5E8: + ldr r0, _0223E600 ; =MOD12_0223E6A4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E5F4: .word 0x00000AB4 +_0223E5F8: .word 0x00009C40 +_0223E5FC: .word MOD12_0223E604 +_0223E600: .word MOD12_0223E6A4 + + thumb_func_start MOD12_0223E604 +MOD12_0223E604: ; 0x0223E604 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223E616 + cmp r0, #1 + beq _0223E636 + b _0223E686 +_0223E616: + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl MOD12_0223CD38 + ldr r0, [r4, #4] + ldr r0, [r0, #8] + lsl r0, r0, #8 + str r0, [r4, #0x1c] + str r0, [r4, #0x18] + mov r0, #5 + lsl r0, r0, #8 + str r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223E636: + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + str r0, [r4, #0x18] + mov r0, #2 + ldr r1, [r4, #0x14] + lsl r0, r0, #8 + sub r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x18] + cmp r0, r1 + blt _0223E66A + str r1, [r4, #0x18] + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #1 + bls _0223E666 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + b _0223E66A +_0223E666: + mov r0, #0 + strb r0, [r4, #0x10] +_0223E66A: + ldr r1, [r4, #0x18] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r4, #4] + str r1, [r0, #8] + ldr r2, [r4, #4] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + pop {r3, r4, r5, pc} +_0223E686: + ldr r0, [r4, #0xc] + mov r1, #1 + strb r1, [r0] + ldr r0, [r4, #8] + add r2, r1, #0 + bl MOD12_0223CD38 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_0223E6A4 +MOD12_0223E6A4: ; 0x0223E6A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0223E6B6 + cmp r0, #1 + beq _0223E6C6 + b _0223E720 +_0223E6B6: + ldr r0, [r4, #4] + ldr r0, [r0, #4] + lsl r0, r0, #8 + str r0, [r4, #0x28] + str r0, [r4, #0x24] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0223E6C6: + ldr r0, [r4, #0x20] + bl FUN_0201B9B8 + lsl r1, r0, #2 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + mov r1, #0x32 + ldr r2, [r4, #0x20] + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [r4, #0x20] + asr r2, r1, #0xc + mov r1, #0x5a + lsl r1, r1, #2 + asr r0, r0, #0xc + cmp r2, r1 + blt _0223E702 + ldrb r1, [r4, #0x11] + add r1, r1, #1 + strb r1, [r4, #0x11] + ldrb r1, [r4, #0x11] + cmp r1, #5 + bls _0223E702 + ldr r0, [r4, #0x28] + str r0, [r4, #0x24] + ldrb r1, [r4, #0x10] + mov r0, #0 + add r1, r1, #1 + strb r1, [r4, #0x10] +_0223E702: + ldr r2, [r4, #0x24] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + add r1, r1, r0 + ldr r0, [r4, #4] + str r1, [r0, #4] + ldr r2, [r4, #4] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + pop {r3, r4, r5, pc} +_0223E720: + ldr r0, [r4, #0xc] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_0223E734 +MOD12_0223E734: ; 0x0223E734 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223E738 +MOD12_0223E738: ; 0x0223E738 + push {r3, lr} + ldr r0, _0223E74C ; =0x04000050 + mov r3, #0 + mov r1, #1 + mov r2, #0x3e + str r3, [sp] + bl G2x_SetBlendAlpha_ + pop {r3, pc} + nop +_0223E74C: .word 0x04000050 + + thumb_func_start MOD12_0223E750 +MOD12_0223E750: ; 0x0223E750 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, #0xa4 + add r5, r1, #0 + ldr r0, [r0] + mov r1, #0 + bl FUN_020031FC + ldr r3, _0223E77C ; =0x0224620C + lsl r5, r5, #2 + ldrh r1, [r3, r5] + add r3, r3, r5 + ldr r2, _0223E780 ; =0x00001FE3 + str r1, [sp] + ldrh r3, [r3, #2] + ldr r1, _0223E784 ; =0x0000110C + lsl r3, r3, #0x18 + ldr r1, [r4, r1] + lsr r3, r3, #0x18 + bl FUN_02003A30 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E77C: .word 0x0224620C +_0223E780: .word 0x00001FE3 +_0223E784: .word 0x0000110C + + thumb_func_start MOD12_0223E788 +MOD12_0223E788: ; 0x0223E788 + push {r3, lr} + ldrb r2, [r1, #7] + cmp r2, #0 + bne _0223E7D0 + ldrb r2, [r1, #4] + cmp r2, #0 + beq _0223E79E + cmp r2, #1 + beq _0223E79E + cmp r2, #2 + b _0223E7CA +_0223E79E: + ldrb r2, [r1, #3] + cmp r2, #4 + bhi _0223E7CC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223E7B0: ; jump table + .short _0223E7CC - _0223E7B0 - 2 ; case 0 + .short _0223E7BA - _0223E7B0 - 2 ; case 1 + .short _0223E7BE - _0223E7B0 - 2 ; case 2 + .short _0223E7C2 - _0223E7B0 - 2 ; case 3 + .short _0223E7C6 - _0223E7B0 - 2 ; case 4 +_0223E7BA: + mov r1, #1 + b _0223E7CC +_0223E7BE: + mov r1, #2 + b _0223E7CC +_0223E7C2: + mov r1, #3 + b _0223E7CC +_0223E7C6: + mov r1, #4 + b _0223E7CC +_0223E7CA: + mov r1, #5 +_0223E7CC: + bl MOD12_0223E750 +_0223E7D0: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223E7D4 +MOD12_0223E7D4: ; 0x0223E7D4 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + ldr r1, _0223E844 ; =0x00000AE8 + mov ip, r0 + ldr r0, [r0, r1] + ldr r1, _0223E848 ; =0x00001BA0 + lsr r7, r0, #1 + mov r0, ip + add r3, r0, r1 + ldr r1, _0223E84C ; =0x04000280 + mov r6, #0 + mov r4, ip + lsr r0, r1, #0xb +_0223E7EE: + ldrb r2, [r3] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _0223E836 + ldr r2, _0223E850 ; =0x00001B9E + mov r5, #0 + ldrb r2, [r4, r2] + add r2, #0x10 + strh r5, [r1] + ldr r5, _0223E854 ; =0x04000290 + mul r2, r7 + str r2, [r5] + ldr r5, _0223E858 ; =0x00002710 + ldr r2, _0223E85C ; =0x04000298 + str r5, [r2] + mov r5, #0 + str r5, [r2, #4] +_0223E812: + ldrh r2, [r1] + tst r2, r0 + bne _0223E812 + ldr r2, _0223E860 ; =0x040002A0 + ldr r5, [r2] + ldr r2, [sp] + cmp r5, r2 + bne _0223E836 + ldr r2, _0223E864 ; =0x00001B98 + mov r1, ip + add r2, r1, r2 + mov r1, #0xa + mul r1, r6 + mov r0, ip + add r1, r2, r1 + bl MOD12_0223E788 + pop {r3, r4, r5, r6, r7, pc} +_0223E836: + add r6, r6, #1 + add r3, #0xa + add r4, #0xa + cmp r6, #8 + blt _0223E7EE + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E844: .word 0x00000AE8 +_0223E848: .word 0x00001BA0 +_0223E84C: .word 0x04000280 +_0223E850: .word 0x00001B9E +_0223E854: .word 0x04000290 +_0223E858: .word 0x00002710 +_0223E85C: .word 0x04000298 +_0223E860: .word 0x040002A0 +_0223E864: .word 0x00001B98 + + thumb_func_start MOD12_0223E868 +MOD12_0223E868: ; 0x0223E868 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223E87A + bl ErrorHandling +_0223E87A: + mov r0, #0x81 + lsl r0, r0, #2 + add r5, r4, r0 + ldr r0, _0223E890 ; =MOD12_0223E8EC + ldr r2, _0223E894 ; =0x00009C40 + add r1, r5, #0 + str r4, [r5] + bl FUN_0200CA44 + str r0, [r5, #4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E890: .word MOD12_0223E8EC +_0223E894: .word 0x00009C40 + + thumb_func_start MOD12_0223E898 +MOD12_0223E898: ; 0x0223E898 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223E8B2 + bl FUN_0200CAB4 + mov r0, #0x82 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_0223E8B2: + pop {r4, pc} + + thumb_func_start MOD12_0223E8B4 +MOD12_0223E8B4: ; 0x0223E8B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x81 + lsl r1, r1, #2 + add r4, r0, r1 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0223E8C8 + bl ErrorHandling +_0223E8C8: + cmp r5, #0 + bne _0223E8D0 + mov r0, #0x40 + b _0223E8D2 +_0223E8D0: + mov r0, #0x30 +_0223E8D2: + strb r0, [r4, #0xa] + mov r0, #1 + strb r0, [r4, #0xb] + mov r0, #0xa + lsl r0, r0, #8 + strh r0, [r4, #8] + ldr r0, _0223E8E8 ; =0x000006F8 + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_0223E8E8: .word 0x000006F8 + + thumb_func_start MOD12_0223E8EC +MOD12_0223E8EC: ; 0x0223E8EC + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0223E946 + ldr r0, [r4] + mov r1, #0 + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020031FC + ldrb r1, [r4, #0xa] + lsl r3, r1, #1 + ldr r1, _0223E94C ; =0x00007FFF + add r0, r0, r3 + str r1, [sp] + ldr r2, [r4] + ldr r1, _0223E950 ; =0x0000110C + ldr r1, [r2, r1] + mov r2, #0x10 + add r1, r1, r3 + ldrh r3, [r4, #8] + asr r3, r3, #8 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02003974 + ldrh r1, [r4, #8] + cmp r1, #0 + bne _0223E932 + mov r0, #0 + add sp, #4 + strb r0, [r4, #0xb] + pop {r3, r4, pc} +_0223E932: + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bls _0223E942 + sub r0, r1, r0 + add sp, #4 + strh r0, [r4, #8] + pop {r3, r4, pc} +_0223E942: + mov r0, #0 + strh r0, [r4, #8] +_0223E946: + add sp, #4 + pop {r3, r4, pc} + nop +_0223E94C: .word 0x00007FFF +_0223E950: .word 0x0000110C + + thumb_func_start MOD12_0223E954 +MOD12_0223E954: ; 0x0223E954 + push {r3, r4, r5, lr} + ldr r5, _0223E97C ; =0x00001120 + add r4, r0, #0 + str r2, [r4, r5] + add r0, r5, #4 + str r3, [r4, r0] + add r0, r5, #0 + ldr r2, [sp, #0x10] + add r0, #8 + str r2, [r4, r0] + ldr r0, [sp, #0x14] + add r5, #0xc + str r0, [r4, r5] + ldr r0, [r4, #0xc] + ldr r2, _0223E980 ; =MOD12_0223E984 + add r3, r4, #0 + bl FUN_020133AC + pop {r3, r4, r5, pc} + nop +_0223E97C: .word 0x00001120 +_0223E980: .word MOD12_0223E984 + + thumb_func_start MOD12_0223E984 +MOD12_0223E984: ; 0x0223E984 + push {r4, lr} + add r4, r0, #0 + bl FUN_0201341C + ldr r1, _0223E9C0 ; =0x00001120 + add r1, r0, r1 + ldr r0, [r4, #0x20] + ldr r2, [r1] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r2, r0 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r2, [r1, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r2, r0 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x20] + ldr r2, [r1, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r2, r0 + str r0, [r4, #0x30] + ldr r1, [r1, #0xc] + add r0, r4, #0 + bl FUN_02013450 + pop {r4, pc} + nop +_0223E9C0: .word 0x00001120 + + thumb_func_start MOD12_0223E9C4 +MOD12_0223E9C4: ; 0x0223E9C4 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r0, #0 + add r6, r2, #0 + cmp r5, #0x21 + blo _0223E9D6 + bl ErrorHandling +_0223E9D6: + ldr r0, _0223EA3C ; =0x0224637C + lsl r1, r5, #2 + ldr r5, [r0, r1] + cmp r6, #0 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + bne _0223EA10 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl MOD12_0223E954 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #1 + add r2, r5, #0 + bl MOD12_0223E954 + add sp, #8 + pop {r4, r5, r6, pc} +_0223EA10: + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #2 + add r2, r5, #0 + bl MOD12_0223E954 + ldr r0, _0223EA40 ; =0xFFFFEB80 + ldr r3, _0223EA44 ; =0xFFFFBADC + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #3 + add r2, r5, #0 + bl MOD12_0223E954 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223EA3C: .word 0x0224637C +_0223EA40: .word 0xFFFFEB80 +_0223EA44: .word 0xFFFFBADC + + thumb_func_start MOD12_0223EA48 +MOD12_0223EA48: ; 0x0223EA48 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + cmp r1, #0 + ldr r1, _0223EBFC ; =0xFFFFEB80 + ldr r3, _0223EC00 ; =0xFFFFE764 + bne _0223EAD6 + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + ldr r2, _0223EC04 ; =0xFFFFCD38 + mov r1, #5 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC04 ; =0xFFFFCD38 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #6 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC04 ; =0xFFFFCD38 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #7 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #5 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #6 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC08 ; =0x00005014 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #7 + bl MOD12_0223E954 + b _0223EBAC +_0223EAD6: + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + ldr r2, _0223EC0C ; =0xFFFFBD98 + mov r1, #8 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #9 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xa + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xb + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC0C ; =0xFFFFBD98 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xc + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #8 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #9 + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xa + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xb + bl MOD12_0223E954 + ldr r0, _0223EBFC ; =0xFFFFEB80 + ldr r2, _0223EC10 ; =0x00004074 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r3, _0223EC00 ; =0xFFFFE764 + add r0, r4, #0 + mov r1, #0xc + bl MOD12_0223E954 +_0223EBAC: + mov r0, #0 + str r0, [sp] + ldr r0, _0223EC14 ; =0x00007FFF + ldr r1, _0223EC18 ; =0x00001FE3 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #8 + mov r3, #0x10 + bl MOD12_0223EC4C + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r2, _0223EC14 ; =0x00007FFF + add r0, r4, #0 + str r2, [sp, #8] + add r0, #0xa4 + mov r1, #4 + ldr r0, [r0] + lsr r2, r2, #1 + sub r3, r1, #5 + bl FUN_02003210 + ldr r0, _0223EC1C ; =0x04000050 + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + mov r2, #0xfa + ldr r0, _0223EC20 ; =MOD12_0223EC28 + add r1, r4, #0 + lsl r2, r2, #2 + bl FUN_0200CA44 + ldr r0, _0223EC24 ; =0x000006E5 + bl FUN_020054C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223EBFC: .word 0xFFFFEB80 +_0223EC00: .word 0xFFFFE764 +_0223EC04: .word 0xFFFFCD38 +_0223EC08: .word 0x00005014 +_0223EC0C: .word 0xFFFFBD98 +_0223EC10: .word 0x00004074 +_0223EC14: .word 0x00007FFF +_0223EC18: .word 0x00001FE3 +_0223EC1C: .word 0x04000050 +_0223EC20: .word MOD12_0223EC28 +_0223EC24: .word 0x000006E5 + + thumb_func_start MOD12_0223EC28 +MOD12_0223EC28: ; 0x0223EC28 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r3, #0 + ldr r0, _0223EC48 ; =0x04000050 + mov r1, #1 + mov r2, #0x3e + str r3, [sp] + bl G2x_SetBlendAlpha_ + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, pc} + nop +_0223EC48: .word 0x04000050 + + thumb_func_start MOD12_0223EC4C +MOD12_0223EC4C: ; 0x0223EC4C + push {r3, r4, r5, lr} + ldr r4, _0223EC78 ; =0x0000110C + ldr r5, [sp, #0x10] + add r4, r0, r4 + lsl r0, r3, #8 + strh r0, [r4, #8] + lsl r0, r5, #8 + strh r0, [r4, #0xa] + add r0, sp, #0 + ldrh r0, [r0, #0x14] + strh r0, [r4, #0xe] + sub r0, r5, r3 + strh r1, [r4, #6] + lsl r0, r0, #8 + add r1, r2, #0 + bl _u32_div_f + strh r0, [r4, #0xc] + mov r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} + nop +_0223EC78: .word 0x0000110C + + thumb_func_start MOD12_0223EC7C +MOD12_0223EC7C: ; 0x0223EC7C + ldr r2, _0223EC84 ; =0x0000111D + strb r1, [r0, r2] + bx lr + nop +_0223EC84: .word 0x0000111D + + thumb_func_start MOD12_0223EC88 +MOD12_0223EC88: ; 0x0223EC88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + cmp r2, #0 + bne _0223EC98 + ldr r7, _0223ECC4 ; =0x00007FFF + ldr r6, _0223ECC8 ; =0x0000254A + b _0223EC9C +_0223EC98: + ldr r7, _0223ECC8 ; =0x0000254A + ldr r6, _0223ECC4 ; =0x00007FFF +_0223EC9C: + mov r4, #0 +_0223EC9E: + ldr r0, [sp] + cmp r4, r0 + ldr r0, [r5, #0x18] + bne _0223ECAE + add r1, r7, #0 + bl FUN_021DD6B8 + b _0223ECB4 +_0223ECAE: + add r1, r6, #0 + bl FUN_021DD6B8 +_0223ECB4: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223EC9E + ldr r0, _0223ECCC ; =0x000006EC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ECC4: .word 0x00007FFF +_0223ECC8: .word 0x0000254A +_0223ECCC: .word 0x000006EC + + thumb_func_start MOD12_0223ECD0 +MOD12_0223ECD0: ; 0x0223ECD0 + push {r4, r5, r6, lr} + ldr r6, _0223ECEC ; =0x00007FFF + add r5, r0, #0 + mov r4, #0 +_0223ECD8: + ldr r0, [r5, #0x18] + add r1, r6, #0 + bl FUN_021DD6B8 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _0223ECD8 + pop {r4, r5, r6, pc} + nop +_0223ECEC: .word 0x00007FFF + + thumb_func_start MOD12_0223ECF0 +MOD12_0223ECF0: ; 0x0223ECF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0xc] + mov r4, #0 + add r5, sp, #0x18 + add r3, sp, #0x14 + ldr r2, _0223ED9C ; =0x00000ADA + b _0223ED0E +_0223ED00: + ldr r1, [sp, #0xc] + lsl r0, r4, #1 + add r1, r1, r0 + ldrsh r1, [r1, r2] + strb r4, [r3, r4] + add r4, r4, #1 + strh r1, [r5, r0] +_0223ED0E: + cmp r4, #4 + blt _0223ED00 + mov r4, #0 + add r7, sp, #0x18 + b _0223ED42 +_0223ED18: + mov r6, #3 + b _0223ED3C +_0223ED1C: + sub r3, r6, #1 + lsl r5, r3, #1 + lsl r1, r6, #1 + ldrsh r2, [r7, r5] + ldrsh r0, [r7, r1] + cmp r2, r0 + bge _0223ED3A + strh r2, [r7, r1] + strh r0, [r7, r5] + add r0, sp, #0x14 + add r1, sp, #0x14 + ldrb r0, [r0, r6] + ldrb r2, [r1, r3] + strb r2, [r1, r6] + strb r0, [r1, r3] +_0223ED3A: + sub r6, r6, #1 +_0223ED3C: + cmp r6, r4 + bgt _0223ED1C + add r4, r4, #1 +_0223ED42: + cmp r4, #3 + blt _0223ED18 + ldr r3, _0223EDA0 ; =0x02246400 + add r0, sp, #0x10 + ldrb r1, [r3] + mov r4, #1 + add r2, sp, #0x10 + strb r1, [r0] + add r1, sp, #0x18 + b _0223ED6E +_0223ED56: + ldrb r0, [r3, r4] + sub r6, r4, #1 + lsl r5, r6, #1 + strb r0, [r2, r4] + lsl r0, r4, #1 + ldrsh r0, [r1, r0] + ldrsh r5, [r1, r5] + cmp r0, r5 + bne _0223ED6C + ldrb r0, [r2, r6] + strb r0, [r2, r4] +_0223ED6C: + add r4, r4, #1 +_0223ED6E: + cmp r4, #4 + blt _0223ED56 + mov r4, #0 + add r5, sp, #0x10 + mov r6, #0x1e + add r7, r4, #0 + b _0223ED94 +_0223ED7C: + ldrb r0, [r5, r4] + add r1, sp, #0x14 + ldrb r1, [r1, r4] + str r0, [sp] + str r6, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _0223EDA4 ; =0x00007FFF + ldr r3, _0223EDA8 ; =0x0000254A + str r7, [sp, #8] + bl MOD12_0223EDAC + add r4, r4, #1 +_0223ED94: + cmp r4, #4 + blt _0223ED7C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ED9C: .word 0x00000ADA +_0223EDA0: .word 0x02246400 +_0223EDA4: .word 0x00007FFF +_0223EDA8: .word 0x0000254A + + thumb_func_start MOD12_0223EDAC +MOD12_0223EDAC: ; 0x0223EDAC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x14 + add r6, r2, #0 + str r3, [sp, #4] + ldr r5, [sp, #0x28] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r1, [sp, #0x24] + lsl r0, r0, #4 + add r0, r7, r0 + ldr r0, [r0, #0x18] + str r0, [r4] + strh r6, [r4, #8] + ldr r0, [sp, #4] + strh r0, [r4, #0xa] + ldr r0, [sp, #0x20] + strb r0, [r4, #0x10] + lsl r0, r0, #8 + bl _s32_div_f + strh r0, [r4, #0xc] + str r5, [r4, #4] + cmp r5, #0 + beq _0223EDF4 + mov r0, #0 + strb r0, [r5] +_0223EDF4: + ldr r0, [r4] + add r1, r6, #0 + bl FUN_021DD6B8 + ldr r0, _0223EE0C ; =MOD12_0223EE14 + ldr r2, _0223EE10 ; =0x00009C40 + add r1, r4, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EE0C: .word MOD12_0223EE14 +_0223EE10: .word 0x00009C40 + + thumb_func_start MOD12_0223EE14 +MOD12_0223EE14: ; 0x0223EE14 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldrh r1, [r5, #0xe] + ldrh r0, [r5, #0xc] + add r0, r1, r0 + strh r0, [r5, #0xe] + ldrh r0, [r5, #0xe] + asr r4, r0, #8 + ldrb r0, [r5, #0x10] + cmp r4, r0 + ble _0223EE30 + add r4, r0, #0 +_0223EE30: + ldrh r0, [r5, #0xa] + lsl r3, r4, #0x18 + add r1, sp, #4 + str r0, [sp] + add r0, r5, #0 + add r0, #8 + mov r2, #1 + lsr r3, r3, #0x18 + bl FUN_02003974 + add r1, sp, #4 + ldrh r1, [r1] + ldr r0, [r5] + bl FUN_021DD6B8 + ldrb r0, [r5, #0x10] + cmp r4, r0 + blt _0223EE6A + ldr r1, [r5, #4] + cmp r1, #0 + beq _0223EE5E + mov r0, #1 + strb r0, [r1] +_0223EE5E: + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_0223EE6A: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EE70 +MOD12_0223EE70: ; 0x0223EE70 + cmp r0, #0x32 + beq _0223EE78 + cmp r0, #0x33 + bne _0223EE7C +_0223EE78: + mov r0, #0 + bx lr +_0223EE7C: + mov r0, #1 + bx lr + + thumb_func_start MOD12_0223EE80 +MOD12_0223EE80: ; 0x0223EE80 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _0223EEB4 ; =0x02246424 + add r3, sp, #0 + str r1, [sp] + mov r1, #0xd + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _0223EEB8 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _0223EEBC ; =0x00001158 + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223EEB4: .word 0x02246424 +_0223EEB8: .word 0x00000123 +_0223EEBC: .word 0x00001158 + + thumb_func_start MOD12_0223EEC0 +MOD12_0223EEC0: ; 0x0223EEC0 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EED4 +MOD12_0223EED4: ; 0x0223EED4 + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EEE4 +MOD12_0223EEE4: ; 0x0223EEE4 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223EEE8 +MOD12_0223EEE8: ; 0x0223EEE8 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223EEFC +MOD12_0223EEFC: ; 0x0223EEFC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223EF38 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223EF3C ; =MOD12_0223EF40 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EF38: .word 0x00007530 +_0223EF3C: .word MOD12_0223EF40 + + thumb_func_start MOD12_0223EF40 +MOD12_0223EF40: ; 0x0223EF40 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223EF50 + b _0223F076 +_0223EF50: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223EF64 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223EF64: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223EF78 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223EF78: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x74] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223EFF0 +_0223EF90: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _0223F094 ; =0x02246404 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223EFEA + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _0223F098 ; =0x0224640C + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _0223EFE4 +_0223EFC0: + mov r4, #0 + b _0223EFD8 +_0223EFC4: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223EFD8: + cmp r4, #8 + blt _0223EFC4 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223EFE4: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223EFC0 +_0223EFEA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223EFF0: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223EF90 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223F032 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223F032 + ldr r0, _0223F094 ; =0x02246404 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _0223F02C +_0223F01C: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223F02C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223F01C +_0223F032: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223F090 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223F090 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F076: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223F090: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F094: .word 0x02246404 +_0223F098: .word 0x0224640C + + thumb_func_start MOD12_0223F09C +MOD12_0223F09C: ; 0x0223F09C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F0B0 +MOD12_0223F0B0: ; 0x0223F0B0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + mov r0, #0x17 + mov r1, #0x18 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + ldr r2, _0223F0F8 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223F0FC ; =MOD12_0223F108 + str r7, [r4, #0xc] + bl FUN_0200CA44 + ldr r0, _0223F100 ; =0x00001134 + mov r1, #0 + strb r1, [r6, r0] + ldr r0, _0223F104 ; =0x0000046F + bl FUN_0200521C + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F0F8: .word 0x00007530 +_0223F0FC: .word MOD12_0223F108 +_0223F100: .word 0x00001134 +_0223F104: .word 0x0000046F + + thumb_func_start MOD12_0223F108 +MOD12_0223F108: ; 0x0223F108 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _0223F118 + b _0223F266 +_0223F118: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223F12C + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_0223F12C: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _0223F140 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_0223F140: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x74] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _0223F1C0 +_0223F158: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _0223F284 ; =0x02246404 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _0223F1BA + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _0223F288 ; =0x0224640C + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _0223F1B4 +_0223F190: + mov r4, #0 + b _0223F1A8 +_0223F194: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_0223F1A8: + cmp r4, #8 + blt _0223F194 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_0223F1B4: + ldr r0, [sp, #4] + cmp r0, #4 + blt _0223F190 +_0223F1BA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_0223F1C0: + ldr r0, [sp, #8] + cmp r0, #4 + blt _0223F158 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _0223F222 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _0223F222 + mov r0, #5 + sub r1, r0, r1 + ldr r0, _0223F284 ; =0x02246404 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _0223F21C +_0223F1F6: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0223F21C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _0223F1F6 +_0223F222: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _0223F280 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _0223F280 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F266: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_0223F280: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F284: .word 0x02246404 +_0223F288: .word 0x0224640C + + thumb_func_start MOD12_0223F28C +MOD12_0223F28C: ; 0x0223F28C + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F2A0 +MOD12_0223F2A0: ; 0x0223F2A0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x17 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _0223F2DC ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0223F2E0 ; =MOD12_0223F2E4 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F2DC: .word 0x00007530 +_0223F2E0: .word MOD12_0223F2E4 + + thumb_func_start MOD12_0223F2E4 +MOD12_0223F2E4: ; 0x0223F2E4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bhi _0223F388 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223F2FC: ; jump table + .short _0223F308 - _0223F2FC - 2 ; case 0 + .short _0223F318 - _0223F2FC - 2 ; case 1 + .short _0223F328 - _0223F2FC - 2 ; case 2 + .short _0223F34A - _0223F2FC - 2 ; case 3 + .short _0223F364 - _0223F2FC - 2 ; case 4 + .short _0223F37C - _0223F2FC - 2 ; case 5 +_0223F308: + ldr r0, _0223F3A4 ; =0x0000046F + mov r1, #0x1e + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F318: + bl FUN_02005404 + cmp r0, #0 + bne _0223F3A0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F328: + ldr r0, _0223F3A8 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bl MOD12_0223E738 + ldr r0, [r4] + mov r1, #1 + add r0, #0x14 + bl MOD12_0223CC9C + ldr r0, _0223F3AC ; =0x000006EC + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F34A: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x1e + ble _0223F3A0 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F364: + ldr r0, [r4] + ldr r1, _0223F3B0 ; =0x00000123 + ldr r2, [r0] + ldrb r1, [r2, r1] + add r2, r4, #0 + add r2, #0x11 + bl MOD12_0223E598 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F37C: + ldrb r1, [r4, #0x11] + cmp r1, #1 + bne _0223F3A0 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0223F388: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0223F3A0: + pop {r3, r4, r5, pc} + nop +_0223F3A4: .word 0x0000046F +_0223F3A8: .word 0x04000050 +_0223F3AC: .word 0x000006EC +_0223F3B0: .word 0x00000123 + + thumb_func_start MOD12_0223F3B4 +MOD12_0223F3B4: ; 0x0223F3B4 + push {r3, lr} + mov r1, #4 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F3C8 +MOD12_0223F3C8: ; 0x0223F3C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r2, r3, #0 + ldr r0, _0223F3F8 ; =0x00001BF0 + mov r1, #1 + strb r1, [r5, r0] + ldr r3, _0223F3FC ; =0x00000172 + mov r1, #0 +_0223F3DC: + ldr r6, [r5] + ldrb r0, [r2, r1] + add r6, r6, r1 + add r1, r1, #1 + strb r0, [r6, r3] + cmp r1, #4 + blt _0223F3DC + mov r2, #0 + add r0, r7, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F3F8: .word 0x00001BF0 +_0223F3FC: .word 0x00000172 + + thumb_func_start MOD12_0223F400 +MOD12_0223F400: ; 0x0223F400 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F414 +MOD12_0223F414: ; 0x0223F414 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r1, #0x57 + add r7, r0, #0 + mov r0, #0x17 + lsl r1, r1, #2 + add r5, r2, #0 + str r3, [sp, #4] + bl FUN_02016998 + mov r2, #0x57 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + add r3, r4, #0 + add r3, #0x18 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + mov r2, #7 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + ldr r5, [sp, #4] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0223F452: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F452 + ldr r0, [r5] + ldr r2, _0223F510 ; =0x00007530 + str r0, [r3] + ldr r0, _0223F514 ; =MOD12_0223F5CC + add r1, r4, #0 + str r6, [r4, #0x54] + bl FUN_0200CA44 + mov r7, #0 + add r5, r4, #0 +_0223F46E: + ldr r1, [r6] + ldr r0, _0223F518 ; =0x00000127 + ldrb r0, [r1, r0] + cmp r7, r0 + bge _0223F482 + add r0, r6, #0 + mov r1, #0 + bl MOD12_0223F524 + b _0223F48A +_0223F482: + add r0, r6, #0 + mov r1, #1 + bl MOD12_0223F524 +_0223F48A: + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _0223F46E + ldr r1, [r4] + ldr r2, _0223F51C ; =0x00000123 + ldr r3, [r1] + mov r0, #0 + ldrb r3, [r3, r2] +_0223F4A2: + add r2, r4, r0 + ldrb r2, [r2, #0x1a] + cmp r3, r2 + bne _0223F4B0 + ldr r2, _0223F520 ; =0x00000ACC + strb r0, [r1, r2] + b _0223F4B6 +_0223F4B0: + add r0, r0, #1 + cmp r0, #4 + blt _0223F4A2 +_0223F4B6: + add r0, r6, #0 + bl MOD12_0223FDA0 + ldr r1, [r6] + ldr r0, _0223F518 ; =0x00000127 + ldrb r5, [r1, r0] + cmp r5, #4 + bge _0223F50C + ldr r0, [sp, #4] + lsl r1, r5, #2 + add r7, r0, r1 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r5 + add r0, r1, r0 + str r0, [sp, #8] +_0223F4D8: + mov r2, #0 +_0223F4DA: + add r0, r4, r2 + ldrb r0, [r0, #0x1a] + cmp r5, r0 + beq _0223F4E8 + add r2, r2, #1 + cmp r2, #4 + blt _0223F4DA +_0223F4E8: + ldr r0, [r6] + add r1, r0, r5 + mov r0, #0x43 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + add r1, r5, #0 + str r0, [sp] + ldr r0, [sp, #8] + ldr r3, [r7, #0x14] + bl MOD12_02240774 + ldr r0, [sp, #8] + add r5, r5, #1 + add r0, #0x3c + add r7, r7, #4 + str r0, [sp, #8] + cmp r5, #4 + blt _0223F4D8 +_0223F50C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F510: .word 0x00007530 +_0223F514: .word MOD12_0223F5CC +_0223F518: .word 0x00000127 +_0223F51C: .word 0x00000123 +_0223F520: .word 0x00000ACC + + thumb_func_start MOD12_0223F524 +MOD12_0223F524: ; 0x0223F524 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x17 + mov r1, #0x14 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + str r5, [r4, #4] + ldr r0, _0223F550 ; =MOD12_0223F588 + ldr r2, _0223F554 ; =0x00007594 + add r1, r4, #0 + strb r6, [r4, #0x12] + bl FUN_0200CA44 + str r0, [r4] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223F550: .word MOD12_0223F588 +_0223F554: .word 0x00007594 + + thumb_func_start MOD12_0223F558 +MOD12_0223F558: ; 0x0223F558 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0223F56C +MOD12_0223F56C: ; 0x0223F56C + ldrh r2, [r1] + strh r2, [r0, #8] + ldrh r2, [r1, #2] + strh r2, [r0, #0xa] + ldrh r2, [r1, #4] + strh r2, [r0, #0xc] + ldrh r2, [r1, #6] + strh r2, [r0, #0xe] + ldrh r1, [r1, #8] + strh r1, [r0, #0x10] + mov r1, #1 + strb r1, [r0, #0x13] + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223F588 +MOD12_0223F588: ; 0x0223F588 + push {r4, lr} + add r4, r1, #0 + ldrb r0, [r4, #0x13] + cmp r0, #0 + beq _0223F5C4 + ldr r0, [r4, #4] + ldr r1, _0223F5C8 ; =0x00000171 + ldr r2, [r0] + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223F5A4 + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _0223F5B2 +_0223F5A4: + add r1, r4, #0 + add r1, #8 + bl MOD12_0223D1CC + mov r0, #0 + strb r0, [r4, #0x13] + pop {r4, pc} +_0223F5B2: + add r1, r4, #0 + mov r0, #0x19 + add r1, #8 + bl FUN_020311D0 + cmp r0, #1 + bne _0223F5C4 + mov r0, #0 + strb r0, [r4, #0x13] +_0223F5C4: + pop {r4, pc} + nop +_0223F5C8: .word 0x00000171 + + thumb_func_start MOD12_0223F5CC +MOD12_0223F5CC: ; 0x0223F5CC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r4, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r4] + ldr r1, _0223F920 ; =0x00000123 + ldr r2, [r0] + ldrb r2, [r2, r1] + ldrb r1, [r4, #0x18] + cmp r2, r1 + beq _0223F5E6 + mov r7, #1 + b _0223F5E8 +_0223F5E6: + mov r7, #0 +_0223F5E8: + ldr r1, _0223F924 ; =0x00001138 + ldr r2, [r0, r1] + add r1, #8 + ldr r1, [r0, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x24] + str r1, [sp, #0x20] + lsr r3, r2, #1 + cmp r1, r3 + blo _0223F602 + mov r1, #1 + str r1, [sp, #0x1c] + b _0223F606 +_0223F602: + mov r1, #0 + str r1, [sp, #0x1c] +_0223F606: + ldrb r1, [r4, #0x10] + cmp r1, #3 + bls _0223F60E + b _0223FA38 +_0223F60E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223F61A: ; jump table + .short _0223F622 - _0223F61A - 2 ; case 0 + .short _0223F68A - _0223F61A - 2 ; case 1 + .short _0223F6F4 - _0223F61A - 2 ; case 2 + .short _0223F9C8 - _0223F61A - 2 ; case 3 +_0223F622: + add r0, #0x14 + mov r1, #0 + bl MOD12_0223D068 + ldr r0, [r4] + bl MOD12_0223DC0C + add r3, r4, #0 + ldrb r2, [r4, #0x18] + mov r1, #0x3c + add r3, #0x5c + mul r1, r2 + add r1, r3, r1 + ldr r0, [r4] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x20] + bl MOD12_022407D4 + mov r0, #0x21 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD12_0223E448 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + ldr r0, [r4] + bl MOD12_0223E868 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r0] + add r0, sp, #0x2c + cmp r7, #0 + strb r1, [r0, #4] + ldr r0, [r4] + add r2, sp, #0x2c + bne _0223F67A + mov r1, #4 + bl MOD12_0223E488 + b _0223F680 +_0223F67A: + mov r1, #5 + bl MOD12_0223E488 +_0223F680: + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F68A: + ldrb r2, [r4, #0x19] + add r1, r4, #0 + add r1, #0x3c + bl MOD12_0223E590 + mov r3, #0 + mov r2, #0 + sub r0, r2, r0 + sbc r3, r1 + bge _0223F6A0 + b _0223FA66 +_0223F6A0: + ldr r0, [r4] + bl MOD12_0223E528 + ldr r5, [r4] + add r1, r4, #0 + ldrb r2, [r4, #0x19] + add r0, r5, #0 + add r1, #0x3c + bl MOD12_0223E590 + ldr r2, _0223F924 ; =0x00001138 + add r6, r0, #0 + add r0, r1, #0 + add r1, r2, #4 + ldr r3, [r5, r2] + ldr r1, [r5, r1] + add r3, r3, r6 + adc r1, r0 + add r0, r2, #0 + add r0, #8 + add r2, #0xc + str r3, [r5, r0] + str r1, [r5, r2] + cmp r7, #0 + bne _0223F6E0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] +_0223F6E0: + ldrb r1, [r4, #0x18] + ldr r0, [r4] + mov r2, #0 + bl MOD12_0223EC88 + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F6F4: + ldr r1, [sp, #0x20] + add r0, #0x14 + bl MOD12_0223C438 + mov r0, #0x21 + ldr r3, [r4] + ldr r1, _0223F924 ; =0x00001138 + lsl r0, r0, #4 + ldr r2, [r3, r1] + add r1, #8 + ldr r1, [r3, r1] + ldr r0, [r3, r0] + sub r1, r2, r1 + ldr r2, [r4, #0x24] + bl MOD12_0223E3DC + ldr r5, [r4, #0x24] + ldr r0, [sp, #0x20] + cmp r0, r5 + blo _0223F7DC + ldrb r0, [r4, #0x16] + ldr r1, _0223F924 ; =0x00001138 + add r0, r0, #1 + strb r0, [r4, #0x16] + ldr r5, [r4] + add r0, r5, r1 + ldmia r0!, {r2, r3} + add r1, #8 + add r0, r5, r1 + stmia r0!, {r2, r3} + mov r0, #0 + strb r0, [r4, #0x11] + strb r0, [r4, #0x12] + ldr r0, [r4] + bl MOD12_0223FDA0 + mov r0, #0 + strb r0, [r4, #0x17] + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F928 ; =0x00000127 + ldrb r6, [r1, r0] + cmp r6, #4 + bge _0223F764 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r6 + add r5, r1, r0 +_0223F756: + add r0, r5, #0 + bl MOD12_0224079C + add r6, r6, #1 + add r5, #0x3c + cmp r6, #4 + blt _0223F756 +_0223F764: + ldr r0, [r4] + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4] + bl MOD12_0223DC0C + add r3, r4, #0 + ldrb r2, [r4, #0x18] + mov r1, #0x3c + add r3, #0x5c + mul r1, r2 + add r1, r3, r1 + ldr r0, [r4] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x20] + bl MOD12_022407D4 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + add r0, r4, #0 + add r0, #0x40 + ldrb r1, [r4, #0x16] + ldrb r0, [r0] + cmp r1, r0 + ldr r0, [r4] + blo _0223F7B6 + bl MOD12_0223ECD0 + ldr r0, [r4] + mov r1, #2 + add r0, #0x14 + bl MOD12_0223D068 + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223F7B6: + ldrb r1, [r4, #0x18] + mov r2, #0 + bl MOD12_0223EC88 + cmp r7, #0 + bne _0223F7C8 + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _0223F7CA +_0223F7C8: + b _0223FA66 +_0223F7CA: + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x11] + pop {r4, r5, r6, r7, pc} +_0223F7DC: + ldr r1, [r4] + ldr r0, _0223F92C ; =0x00000ACC + ldrb r6, [r1, r0] + ldr r0, [sp, #0x20] + lsr r1, r5, #1 + cmp r0, r1 + blo _0223F7EE + mov r0, #1 + b _0223F7F0 +_0223F7EE: + mov r0, #0 +_0223F7F0: + cmp r7, #0 + bne _0223F88C + cmp r0, #0 + bne _0223F828 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r4, #0x17] + ldrb r0, [r0] + cmp r1, r0 + bhs _0223F828 + ldr r0, [r4, #0x20] + ldr r1, _0223F930 ; =0x00002710 + lsr r0, r0, #2 + bl _u32_div_f + lsr r1, r5, #1 + sub r1, r1, r0 + ldr r0, [sp, #0x20] + cmp r0, r1 + bhs _0223F828 + add r0, r4, #0 + mov r2, #0 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 + b _0223F836 +_0223F828: + add r0, r4, #0 + mov r2, #1 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 +_0223F836: + mov r0, #0 + ldr r1, [sp, #0x34] + mvn r0, r0 + cmp r1, r0 + bne _0223F842 + b _0223F94E +_0223F842: + add r0, r4, #0 + add r0, #0x44 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrb r0, [r4, #0x17] + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x41 + ldrb r0, [r0] + str r0, [sp, #0x14] + ldr r0, [r4] + ldr r3, [r4, #0x20] + ldr r2, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldrb r0, [r2, r0] + ldr r2, [sp, #0x20] + bl MOD12_0223FCAC + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldrb r1, [r1, r0] + add r0, #0x29 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, sp, #0x38 + bl MOD12_0223F56C + ldrb r0, [r4, #0x17] + add r0, r0, #1 + strb r0, [r4, #0x17] + b _0223F94E +_0223F88C: + cmp r0, #1 + bne _0223F8D2 + add r0, r4, #0 + add r0, #0x41 + ldrb r1, [r4, #0x17] + ldrb r0, [r0] + cmp r1, r0 + bhs _0223F8D2 + ldr r0, [r4, #0x20] + ldr r1, _0223F930 ; =0x00002710 + lsr r0, r0, #2 + bl _u32_div_f + sub r1, r5, r0 + ldr r0, [sp, #0x20] + cmp r0, r1 + bhs _0223F8D2 + add r0, r4, #0 + mov r2, #0 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 + ldrb r0, [r4, #0x11] + cmp r0, #0 + bne _0223F8E0 + ldr r0, [r4] + add r1, r7, #0 + bl MOD12_0223E8B4 + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + b _0223F8E0 +_0223F8D2: + add r0, r4, #0 + mov r2, #1 + add r0, #0x54 + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD12_0223FA74 +_0223F8E0: + mov r0, #0 + ldr r1, [sp, #0x34] + mvn r0, r0 + cmp r1, r0 + beq _0223F94E + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x44 + str r2, [sp] + add r2, sp, #0x38 + str r2, [sp, #4] + ldr r2, _0223F934 ; =0x00001B98 + add r2, r0, r2 + str r2, [sp, #8] + str r6, [sp, #0xc] + ldrb r2, [r4, #0x17] + str r2, [sp, #0x10] + add r2, r4, #0 + add r2, #0x41 + ldrb r2, [r2] + str r2, [sp, #0x14] + ldr r2, [r0] + ldr r0, _0223F920 ; =0x00000123 + ldr r3, [r4, #0x20] + ldrb r0, [r2, r0] + ldr r2, [sp, #0x20] + bl MOD12_0223FCAC + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223F920 ; =0x00000123 + b _0223F938 + .align 2, 0 +_0223F920: .word 0x00000123 +_0223F924: .word 0x00001138 +_0223F928: .word 0x00000127 +_0223F92C: .word 0x00000ACC +_0223F930: .word 0x00002710 +_0223F934: .word 0x00001B98 +_0223F938: + ldrb r1, [r1, r0] + add r0, #0x29 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + add r1, sp, #0x38 + bl MOD12_0223F56C + ldrb r0, [r4, #0x17] + add r0, r0, #1 + strb r0, [r4, #0x17] +_0223F94E: + ldr r0, [r4] + ldr r1, [r0] + ldr r0, _0223FA6C ; =0x00000127 + ldrb r7, [r1, r0] + cmp r7, #4 + bge _0223F99A + lsl r0, r7, #2 + add r5, r4, r0 + add r1, r4, #0 + mov r0, #0x3c + add r1, #0x5c + mul r0, r7 + add r6, r1, r0 + add r0, r4, #0 + str r0, [sp, #0x28] + add r0, #0x3c + str r0, [sp, #0x28] +_0223F970: + ldr r0, [r4, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [r4, #0x20] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x28] + str r0, [sp, #8] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r1, [r4] + bl MOD12_02240B08 + add r7, r7, #1 + add r5, r5, #4 + add r6, #0x3c + cmp r7, #4 + blt _0223F970 +_0223F99A: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0223F9B6 + ldrb r0, [r4, #0x12] + cmp r0, #0 + bne _0223F9B6 + ldrb r1, [r4, #0x18] + ldr r0, [r4] + mov r2, #1 + bl MOD12_0223EC88 + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] +_0223F9B6: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _0223FA66 + ldr r0, [r4] + ldr r1, [sp, #0x20] + bl MOD12_0223E7D4 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_0223F9C8: + add r0, r4, #0 + add r0, #0x54 + add r1, sp, #0x34 + mov r2, #1 + mov r3, #0 + bl MOD12_0223FA74 + cmp r0, #1 + bne _0223FA66 + ldr r0, [r4] + add r0, #0x14 + bl MOD12_0223C640 + ldr r0, [r4] + ldr r2, [r4, #0x24] + add r0, #0x14 + mov r1, #0 + bl MOD12_0223C438 + mov r0, #0x21 + ldr r1, [r4] + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD12_0223E43C + ldr r0, [r4] + mov r1, #2 + add r0, #0x14 + bl MOD12_0223D068 + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223E750 + ldr r0, [r4] + bl MOD12_0223E898 + ldr r1, [r4] + ldr r0, _0223FA70 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B92C + cmp r0, #0 + beq _0223FA2E + ldr r1, [r4] + ldr r0, _0223FA70 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 +_0223FA2E: + ldrb r0, [r4, #0x10] + add sp, #0x44 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0223FA38: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + mov r7, #0x53 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_0223FA4C: + ldr r0, [r5, r7] + bl MOD12_0223F558 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _0223FA4C + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x18] + bl FUN_0200CAB4 +_0223FA66: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_0223FA6C: .word 0x00000127 +_0223FA70: .word 0x00001130 + + thumb_func_start MOD12_0223FA74 +MOD12_0223FA74: ; 0x0223FA74 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r7, r1, #0 + sub r0, r4, #1 + add r6, r2, #0 + str r3, [sp] + str r0, [r7] + cmp r6, #0 + bne _0223FAA6 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FAA6 + sub r0, r0, #1 + strb r0, [r5, #5] + ldrb r0, [r5, #5] + cmp r0, #0 + bne _0223FAA6 + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + add r2, r4, #0 + ldr r0, [r1, r0] + add r1, r4, #0 + bl MOD12_0223C1F4 +_0223FAA6: + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0223FAB6 + cmp r0, #1 + beq _0223FADC + cmp r0, #2 + beq _0223FB1E + b _0223FB44 +_0223FAB6: + cmp r6, #0 + bne _0223FAD8 + ldr r0, [sp] + cmp r0, #0 + bne _0223FAD8 + mov r1, #0 + strb r1, [r5, #5] + ldr r2, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r2, r0] + add r2, r1, #0 + bl MOD12_0223C1F4 + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + b _0223FB44 +_0223FAD8: + mov r4, #1 + b _0223FB44 +_0223FADC: + cmp r6, #1 + beq _0223FAE6 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FAEA +_0223FAE6: + mov r4, #1 + b _0223FB44 +_0223FAEA: + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B878 + mov r1, #0 + mvn r1, r1 + str r0, [r7] + cmp r0, r1 + beq _0223FB1A + ldr r1, [r5] + ldr r0, _0223FB78 ; =0x00000AE8 + ldr r0, [r1, r0] + ldr r1, _0223FB7C ; =0x00002710 + bl _u32_div_f + strb r0, [r5, #5] + ldrb r0, [r5, #5] + sub r0, r0, #2 + strb r0, [r5, #5] + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] + b _0223FB44 +_0223FB1A: + mov r4, #1 + b _0223FB44 +_0223FB1E: + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B91C + cmp r0, #1 + bne _0223FB44 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0223FB40 + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 +_0223FB40: + mov r0, #1 + strb r0, [r5, #4] +_0223FB44: + ldr r0, [sp] + cmp r0, #1 + bne _0223FB6E + cmp r4, #1 + bne _0223FB6E + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + ldr r0, [r1, r0] + bl MOD12_0223B92C + cmp r0, #0 + beq _0223FB6E + ldr r1, [r5] + ldr r0, _0223FB74 ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 + mov r0, #0 + strb r0, [r5, #4] +_0223FB6E: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FB74: .word 0x00001130 +_0223FB78: .word 0x00000AE8 +_0223FB7C: .word 0x00002710 + + thumb_func_start MOD12_0223FB80 +MOD12_0223FB80: ; 0x0223FB80 + push {r3, lr} + cmp r0, #3 + bhi _0223FBAA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FB92: ; jump table + .short _0223FB9A - _0223FB92 - 2 ; case 0 + .short _0223FB9E - _0223FB92 - 2 ; case 1 + .short _0223FBA2 - _0223FB92 - 2 ; case 2 + .short _0223FBA6 - _0223FB92 - 2 ; case 3 +_0223FB9A: + mov r0, #1 + pop {r3, pc} +_0223FB9E: + mov r0, #2 + pop {r3, pc} +_0223FBA2: + mov r0, #3 + pop {r3, pc} +_0223FBA6: + mov r0, #4 + pop {r3, pc} +_0223FBAA: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FBB4 +MOD12_0223FBB4: ; 0x0223FBB4 + push {r3, lr} + cmp r0, #4 + bhi _0223FBE0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FBC6: ; jump table + .short _0223FBE0 - _0223FBC6 - 2 ; case 0 + .short _0223FBD0 - _0223FBC6 - 2 ; case 1 + .short _0223FBD4 - _0223FBC6 - 2 ; case 2 + .short _0223FBD8 - _0223FBC6 - 2 ; case 3 + .short _0223FBDC - _0223FBC6 - 2 ; case 4 +_0223FBD0: + mov r0, #0 + pop {r3, pc} +_0223FBD4: + mov r0, #1 + pop {r3, pc} +_0223FBD8: + mov r0, #2 + pop {r3, pc} +_0223FBDC: + mov r0, #3 + pop {r3, pc} +_0223FBE0: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD12_0223FBE8 +MOD12_0223FBE8: ; 0x0223FBE8 + push {r3, r4} + ldrb r4, [r1] + cmp r0, r4 + bgt _0223FBFA + mov r0, #0 + strb r0, [r2] + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FBFA: + ldrb r4, [r1, #1] + cmp r0, r4 + bgt _0223FC0C + mov r0, #0 + strb r0, [r2] + mov r0, #1 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC0C: + ldrb r4, [r1, #2] + cmp r0, r4 + bgt _0223FC1E + mov r0, #1 + strb r0, [r2] + mov r0, #2 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC1E: + ldrb r1, [r1, #3] + cmp r0, r1 + bgt _0223FC30 + mov r0, #1 + strb r0, [r2] + mov r0, #3 + strb r0, [r3] + pop {r3, r4} + bx lr +_0223FC30: + mov r0, #2 + strb r0, [r2] + mov r0, #4 + strb r0, [r3] + pop {r3, r4} + bx lr + + thumb_func_start MOD12_0223FC3C +MOD12_0223FC3C: ; 0x0223FC3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r6, r0, #0 + mov r0, #0 + ldr r2, _0223FCA4 ; =0x00002710 + str r3, [sp] + mul r6, r2 + lsr r1, r1, #1 + add r5, r0, #0 + add r4, r0, #0 + cmp r6, #0 + bls _0223FC62 + bls _0223FC60 +_0223FC58: + add r4, r4, r1 + add r5, r5, #1 + cmp r4, r6 + blo _0223FC58 +_0223FC60: + sub r0, r4, r1 +_0223FC62: + ldr r1, _0223FCA8 ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + ldr r1, _0223FCA8 ; =0x00001388 + str r0, [sp, #4] + add r0, r4, r1 + lsl r1, r1, #1 + bl _u32_div_f + add r4, r0, #0 + ldr r1, _0223FCA4 ; =0x00002710 + add r0, r6, #0 + bl _u32_div_f + ldr r1, [sp, #4] + sub r1, r0, r1 + bpl _0223FC8A + neg r1, r1 +_0223FC8A: + sub r0, r0, r4 + bpl _0223FC90 + neg r0, r0 +_0223FC90: + cmp r1, r0 + bhi _0223FC98 + sub r5, r5, #1 + b _0223FC9A +_0223FC98: + add r1, r0, #0 +_0223FC9A: + ldr r0, [sp] + str r1, [r7] + str r5, [r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FCA4: .word 0x00002710 +_0223FCA8: .word 0x00001388 + + thumb_func_start MOD12_0223FCAC +MOD12_0223FCAC: ; 0x0223FCAC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + str r2, [sp, #4] + str r3, [sp, #8] + add r0, r1, #0 + ldr r5, [sp, #0x34] + ldr r6, [sp, #0x38] + mov r7, #0 + bl MOD12_0223FB80 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, sp, #0x18 + add r3, sp, #0x14 + bl MOD12_0223FC3C + cmp r6, #0 + beq _0223FD00 + ldr r0, [sp, #0x14] + add r4, r7, #0 + sub r0, #0x10 + add r1, r6, #0 + add r2, r6, #0 +_0223FCDE: + ldrb r3, [r1, #8] + lsl r3, r3, #0x1d + lsr r3, r3, #0x1f + cmp r3, #1 + bne _0223FCEE + ldrb r3, [r2, #6] + cmp r0, r3 + beq _0223FCF8 +_0223FCEE: + add r4, r4, #1 + add r1, #0xa + add r2, #0xa + cmp r4, #8 + blo _0223FCDE +_0223FCF8: + cmp r4, #8 + bne _0223FD00 + mov r0, #0xff + str r0, [sp, #0x18] +_0223FD00: + add r2, sp, #0x10 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x30] + add r2, #1 + add r3, sp, #0x10 + bl MOD12_0223FBE8 + cmp r6, #0 + beq _0223FD40 + cmp r4, #8 + beq _0223FD40 + add r0, sp, #0x10 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _0223FD22 + cmp r0, #1 + bne _0223FD40 +_0223FD22: + mov r0, #0xa + mul r0, r4 + add r0, r6, r0 + ldrb r1, [r0, #3] + ldr r0, [sp, #0xc] + cmp r0, r1 + beq _0223FD40 + mov r0, #0xff + str r0, [sp, #0x18] + mov r1, #4 + add r0, sp, #0x10 + strb r1, [r0] + mov r1, #2 + strb r1, [r0, #1] + mov r7, #1 +_0223FD40: + ldr r0, [sp] + strb r0, [r5, #2] + ldr r0, [sp, #4] + strh r0, [r5] + ldr r0, [sp, #0xc] + strb r0, [r5, #3] + add r0, sp, #0x10 + ldrb r1, [r0, #1] + strb r1, [r5, #4] + ldrb r0, [r0] + ldr r1, [sp, #0x40] + strb r0, [r5, #5] + ldr r0, [sp, #0x14] + strb r0, [r5, #6] + ldr r0, [sp, #0x3c] + strb r0, [r5, #7] + ldr r0, [sp, #0x44] + sub r0, r0, #1 + cmp r1, r0 + blt _0223FD6C + mov r1, #1 + b _0223FD6E +_0223FD6C: + mov r1, #0 +_0223FD6E: + ldrb r2, [r5, #8] + mov r0, #1 + bic r2, r0 + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + mov r0, #1 + and r0, r1 + orr r0, r2 + strb r0, [r5, #8] + ldrb r1, [r5, #8] + mov r0, #2 + bic r1, r0 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1e + orr r0, r1 + strb r0, [r5, #8] + ldrb r1, [r5, #8] + mov r0, #4 + orr r0, r1 + strb r0, [r5, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FDA0 +MOD12_0223FDA0: ; 0x0223FDA0 + push {r4, r5} + ldr r1, _0223FDC8 ; =0x00000ABD + mov r5, #0 + add r3, r5, #0 + add r2, r1, #4 +_0223FDAA: + add r4, r0, r5 + strb r3, [r4, r1] + add r5, r5, #1 + strb r3, [r4, r2] + cmp r5, #4 + blt _0223FDAA + ldr r1, _0223FDCC ; =0x00000AC5 + strb r3, [r0, r1] + add r2, r1, #1 + strb r3, [r0, r2] + add r1, r1, #2 + strb r3, [r0, r1] + pop {r4, r5} + bx lr + nop +_0223FDC8: .word 0x00000ABD +_0223FDCC: .word 0x00000AC5 + + thumb_func_start MOD12_0223FDD0 +MOD12_0223FDD0: ; 0x0223FDD0 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0223FDD4 +MOD12_0223FDD4: ; 0x0223FDD4 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0223FDE8 +MOD12_0223FDE8: ; 0x0223FDE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0x17 + str r1, [sp] + add r1, r0, #0 + add r1, #0xed + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x41 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0xc8 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0223FE24: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FE24 + ldr r0, [r6] + ldr r2, _0223FE3C ; =0x00007530 + str r0, [r3] + ldr r0, _0223FE40 ; =MOD12_0223FE44 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FE3C: .word 0x00007530 +_0223FE40: .word MOD12_0223FE44 + + thumb_func_start MOD12_0223FE44 +MOD12_0223FE44: ; 0x0223FE44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bls _0223FE54 + b _02240002 +_0223FE54: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223FE60: ; jump table + .short _0223FE6C - _0223FE60 - 2 ; case 0 + .short _0223FEBC - _0223FE60 - 2 ; case 1 + .short _0223FEEA - _0223FE60 - 2 ; case 2 + .short _0223FF9C - _0223FE60 - 2 ; case 3 + .short _0223FFBE - _0223FE60 - 2 ; case 4 + .short _0223FFE2 - _0223FE60 - 2 ; case 5 +_0223FE6C: + ldr r0, [r4] + mov r1, #0 + bl MOD12_0223EC7C + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, _02240020 ; =0x00001FE3 + sub r3, r1, #3 + bl FUN_02003210 + add r6, r4, #0 + mov r5, #0 + mov r7, #0x10 + add r6, #0x11 +_0223FE96: + str r7, [sp] + mov r0, #4 + str r0, [sp, #4] + add r0, r6, r5 + str r0, [sp, #8] + ldr r0, [r4] + ldr r2, _02240024 ; =0x00007FFF + ldr r3, _02240028 ; =0x0000254A + add r1, r5, #0 + bl MOD12_0223EDAC + add r5, r5, #1 + cmp r5, #4 + blt _0223FE96 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FEBC: + ldr r0, [r4] + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0223FEDE + mov r1, #0 +_0223FECC: + add r0, r4, r1 + ldrb r0, [r0, #0x11] + cmp r0, #0 + beq _0223FEDA + add r1, r1, #1 + cmp r1, #4 + blt _0223FECC +_0223FEDA: + cmp r1, #4 + beq _0223FEE0 +_0223FEDE: + b _0224001A +_0223FEE0: + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FEEA: + add r0, r4, #0 + str r0, [sp, #0xc] + add r0, #0x18 + mov r6, #0 + str r0, [sp, #0xc] +_0223FEF4: + add r0, r4, r6 + add r0, #0xca + ldrb r1, [r0] + mov r2, #0x2c + add r7, r1, #0 + mul r7, r2 + ldr r2, [r4] + lsl r0, r1, #2 + ldr r2, [r2, #0x14] + add r5, r4, r7 + ldr r2, [r2, r0] + str r2, [r5, #0x18] + ldr r2, [r4] + add r0, r2, r0 + ldr r0, [r0, #0x5c] + str r0, [r5, #0x1c] + ldr r2, [r4] + lsl r0, r1, #4 + add r2, #0x18 + add r0, r2, r0 + str r0, [r5, #0x20] + ldr r1, [r4] + ldr r0, _0224002C ; =0x00000AF4 + ldr r0, [r1, r0] + ldr r1, _02240030 ; =0x00002710 + bl _u32_div_f + mov r1, #0x28 + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl _u32_div_f + strh r0, [r5, #0x26] + add r0, r5, #0 + add r0, #0x24 + strb r6, [r0] + cmp r6, #0 + bne _0223FF48 + add r5, #0x25 + mov r0, #3 + b _0223FF4C +_0223FF48: + sub r0, r6, #1 + add r5, #0x25 +_0223FF4C: + ldr r1, [sp, #0xc] + strb r0, [r5] + ldr r0, _02240034 ; =MOD12_02240044 + ldr r2, _02240038 ; =0x00009CA4 + add r1, r1, r7 + bl FUN_0200CA44 + add r6, r6, #1 + cmp r6, #4 + blt _0223FEF4 + add r0, r4, #0 + add r0, #0xf1 + ldrb r1, [r0] + add r0, sp, #0x10 + strb r1, [r0, #4] + ldr r0, [r4] + add r1, r4, #0 + add r1, #0xcb + ldrb r3, [r1] + ldr r2, [r0] + ldr r1, _0224003C ; =0x00000123 + ldrb r1, [r2, r1] + cmp r3, r1 + add r2, sp, #0x10 + bne _0223FF86 + mov r1, #4 + bl MOD12_0223E488 + b _0223FF8C +_0223FF86: + mov r1, #5 + bl MOD12_0223E488 +_0223FF8C: + ldr r0, _02240040 ; =0x000006F7 + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FF9C: + mov r2, #0 +_0223FF9E: + add r0, r1, #0 + add r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FFB0 + add r2, r2, #1 + add r1, #0x2c + cmp r2, #4 + blt _0223FF9E +_0223FFB0: + cmp r2, #4 + bne _0224001A + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FFBE: + mov r0, #6 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #1 + add r0, #0xa4 + ldr r0, [r0] + ldr r2, _02240020 ; =0x00001FE3 + sub r3, r1, #3 + bl FUN_02003210 + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0223FFE2: + ldr r0, [r4] + add r0, #0xa4 + ldr r0, [r0] + bl FUN_020038E4 + cmp r0, #0 + bne _0224001A + ldr r0, [r4] + mov r1, #1 + bl MOD12_0223EC7C + ldrb r0, [r4, #0x10] + add sp, #0x18 + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02240002: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224001A: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240020: .word 0x00001FE3 +_02240024: .word 0x00007FFF +_02240028: .word 0x0000254A +_0224002C: .word 0x00000AF4 +_02240030: .word 0x00002710 +_02240034: .word MOD12_02240044 +_02240038: .word 0x00009CA4 +_0224003C: .word 0x00000123 +_02240040: .word 0x000006F7 + + thumb_func_start MOD12_02240044 +MOD12_02240044: ; 0x02240044 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r1, #0x2a + ldrb r1, [r1] + cmp r1, #0 + beq _02240058 + cmp r1, #1 + beq _02240114 + b _0224025E +_02240058: + ldr r0, [r5, #8] + ldr r0, [r0, #4] + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0, #8] + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldr r0, [r5, #8] + ldr r0, [r0, #0xc] + lsl r0, r0, #8 + str r0, [r5, #0x18] + ldrb r0, [r5, #0xc] + bl MOD12_0223C210 + lsl r4, r0, #8 + ldrb r0, [r5, #0xc] + bl MOD12_0223C220 + lsl r0, r0, #8 + str r0, [sp, #8] + ldrb r0, [r5, #0xc] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [sp, #4] + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _02240096 + cmp r0, #3 + bne _022400C8 +_02240096: + cmp r0, #0 + bne _0224009E + ldr r0, _0224026C ; =0xFFFFB000 + b _022400A2 +_0224009E: + mov r0, #0x59 + lsl r0, r0, #0xa +_022400A2: + ldrh r1, [r5, #0xe] + sub r0, r0, r4 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x1c] + ldrh r1, [r5, #0xe] + mov r0, #0 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x20] + ldrh r1, [r5, #0xe] + mov r0, #0 + lsr r1, r1, #1 + bl _s32_div_f + str r0, [r5, #0x24] + b _02240104 +_022400C8: + bl MOD12_0223C210 + lsl r6, r0, #8 + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + lsl r0, r0, #8 + str r0, [sp] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r7, r0, #8 + ldrh r1, [r5, #0xe] + sub r0, r6, r4 + bl _s32_div_f + str r0, [r5, #0x1c] + ldr r1, [sp] + ldr r0, [sp, #8] + sub r0, r1, r0 + ldrh r1, [r5, #0xe] + bl _s32_div_f + str r0, [r5, #0x20] + ldr r0, [sp, #4] + ldrh r1, [r5, #0xe] + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x24] +_02240104: + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r5, #0x2a + add sp, #0xc + add r0, r0, #1 + strb r0, [r5] + pop {r4, r5, r6, r7, pc} +_02240114: + ldr r1, [r5, #0x10] + ldr r0, [r5, #0x1c] + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r1, [r5, #0x14] + ldr r0, [r5, #0x20] + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [r5, #0x18] + ldrh r0, [r5, #0x28] + add r0, r0, #1 + strh r0, [r5, #0x28] + ldrb r0, [r5, #0xd] + cmp r0, #0 + beq _0224013C + cmp r0, #3 + bne _022401DC +_0224013C: + ldrh r1, [r5, #0xe] + ldrh r2, [r5, #0x28] + lsr r1, r1, #1 + cmp r2, r1 + bne _022401DC + cmp r0, #0 + bne _02240164 + ldr r0, _02240270 ; =0xFFFF9C00 + mov r1, #1 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0] + bl FUN_021DD59C + ldr r0, [r5, #8] + mov r1, #0x64 + ldr r0, [r0] + bl FUN_021DD6CC + b _02240184 +_02240164: + bl MOD12_0223C210 + add r0, #0x50 + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldr r0, [r5, #8] + mov r1, #0 + ldr r0, [r0] + bl FUN_021DD59C + ldr r0, [r5, #8] + mov r1, #0x63 + ldr r0, [r0] + mvn r1, r1 + bl FUN_021DD6CC +_02240184: + ldr r0, [r5] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + add r0, r4, r0 + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [r5, #0x18] + ldrb r0, [r5, #0xd] + bl MOD12_0223C210 + ldrh r2, [r5, #0xe] + ldrh r1, [r5, #0x28] + lsl r0, r0, #8 + ldr r7, [r5, #0x14] + sub r1, r2, r1 + sub r4, r1, #1 + ldr r1, [r5, #0x10] + ldr r6, [r5, #0x18] + sub r0, r0, r1 + add r1, r4, #0 + bl _s32_div_f + str r0, [r5, #0x1c] + ldr r0, [r5, #0x14] + add r1, r4, #0 + sub r0, r7, r0 + bl _s32_div_f + str r0, [r5, #0x20] + ldr r0, [r5, #0x18] + add r1, r4, #0 + sub r0, r6, r0 + bl _s32_div_f + str r0, [r5, #0x24] +_022401DC: + ldrh r1, [r5, #0x28] + ldrh r0, [r5, #0xe] + cmp r1, r0 + blo _0224021C + ldr r0, [r5] + mov r1, #2 + bl FUN_02068E14 + add r4, r0, #0 + ldrb r0, [r5, #0xd] + bl MOD12_0223C210 + lsl r0, r0, #8 + str r0, [r5, #0x10] + ldrb r0, [r5, #0xd] + bl MOD12_0223C220 + add r0, r4, r0 + lsl r0, r0, #8 + str r0, [r5, #0x14] + ldrb r0, [r5, #0xd] + bl MOD12_0223C234 + lsl r0, r0, #8 + str r0, [r5, #0x18] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x2a + strb r1, [r0] +_0224021C: + ldr r1, [r5, #0x10] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #4] + ldr r1, [r5, #0x14] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #8] + ldr r1, [r5, #0x18] + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r1, r0, #8 + ldr r0, [r5, #8] + str r1, [r0, #0xc] + ldr r2, [r5, #8] + ldr r0, [r2] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_021DD620 + ldr r0, [r5, #4] + ldr r1, [r5, #8] + bl MOD12_0223D09C + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224025E: + mov r1, #1 + add r5, #0x2b + strb r1, [r5] + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224026C: .word 0xFFFFB000 +_02240270: .word 0xFFFF9C00 + + thumb_func_start MOD12_02240274 +MOD12_02240274: ; 0x02240274 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240288 +MOD12_02240288: ; 0x02240288 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x50 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x50 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_022402C0: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022402C0 + ldr r0, [r6] + ldr r2, _022402D8 ; =0x00007530 + str r0, [r3] + ldr r0, _022402DC ; =MOD12_022402E0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022402D8: .word 0x00007530 +_022402DC: .word MOD12_022402E0 + + thumb_func_start MOD12_022402E0 +MOD12_022402E0: ; 0x022402E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + bne _02240330 + mov r4, #0 +_022402F2: + add r1, r5, r4 + ldrb r1, [r1, #0x12] + ldr r0, [r5] + add r2, r4, #0 + bl MOD12_0223DC28 + add r4, r4, #1 + cmp r4, #4 + blt _022402F2 + ldr r1, [r5] + ldr r0, _0224034C ; =0x00001130 + mov r3, #0 + ldr r0, [r1, r0] + mov r1, #1 + add r2, r1, #0 + bl MOD12_0223B758 + ldr r1, [r5] + ldr r0, _0224034C ; =0x00001130 + mov r2, #6 + ldr r0, [r1, r0] + mov r1, #0 + bl MOD12_0223C1F4 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, pc} +_02240330: + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_0224034C: .word 0x00001130 + + thumb_func_start MOD12_02240350 +MOD12_02240350: ; 0x02240350 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240364 +MOD12_02240364: ; 0x02240364 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x50 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x50 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_0224039C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224039C + ldr r0, [r6] + ldr r2, _022403B4 ; =0x00007530 + str r0, [r3] + ldr r0, _022403B8 ; =MOD12_022403BC + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022403B4: .word 0x00007530 +_022403B8: .word MOD12_022403BC + + thumb_func_start MOD12_022403BC +MOD12_022403BC: ; 0x022403BC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + cmp r0, #0 + beq _022403D2 + cmp r0, #1 + beq _0224040A + b _0224044E +_022403D2: + ldr r0, [r5] + bl MOD12_0223D588 + cmp r0, #0 + beq _02240484 + mov r4, #0 + mov r6, #2 + mov r7, #5 +_022403E2: + ldr r0, [r5] + add r1, r4, #0 + add r2, r6, #0 + bl MOD12_0223DCE8 + ldr r0, [r5] + add r1, r4, #0 + add r2, r7, #0 + bl MOD12_0223DCE8 + add r4, r4, #1 + cmp r4, #4 + blt _022403E2 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224040A: + mov r7, #0 + add r6, r7, #0 + add r4, r7, #0 +_02240410: + ldr r0, [r5] + add r1, r4, #0 + bl MOD12_0223DDB0 + cmp r0, #1 + bne _0224041E + add r7, r7, #1 +_0224041E: + ldr r0, [r5] + add r1, r4, #0 + bl MOD12_0223DDE4 + cmp r0, #1 + bne _0224042C + add r6, r6, #1 +_0224042C: + add r4, r4, #1 + cmp r4, #4 + blt _02240410 + cmp r7, #4 + blt _02240484 + cmp r6, #4 + blt _02240484 + ldr r0, [r5] + bl MOD12_0223DCC0 + add r0, r5, #0 + add r0, #0x4c + ldrb r0, [r0] + add r5, #0x4c + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_0224044E: + ldr r1, [r5] + ldr r0, _02240488 ; =0x00001130 + mov r2, #1 + ldr r0, [r1, r0] + mov r1, #0 + add r3, r1, #0 + bl MOD12_0223B758 + ldr r1, [r5] + ldr r0, _02240488 ; =0x00001130 + ldr r0, [r1, r0] + mov r1, #0 + add r2, r1, #0 + bl MOD12_0223C1F4 + mov r2, #0 + ldr r0, [r5, #0xc] + add r1, r5, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02240484: + pop {r3, r4, r5, r6, r7, pc} + nop +_02240488: .word 0x00001130 + + thumb_func_start MOD12_0224048C +MOD12_0224048C: ; 0x0224048C + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022404A0 +MOD12_022404A0: ; 0x022404A0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02240504 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrh r0, [r5, #0x30] + strh r0, [r4, #0x14] + ldrh r0, [r5, #0x32] + strh r0, [r4, #0x16] + ldrh r0, [r5, #0x34] + strh r0, [r4, #0x18] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + strb r0, [r4, #0x1a] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + add r5, #0x37 + strb r0, [r4, #0x1c] + ldrb r0, [r5] + strb r0, [r4, #0x1b] + ldr r0, _02240508 ; =MOD12_0224050C + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240504: .word 0x00007530 +_02240508: .word MOD12_0224050C + + thumb_func_start MOD12_0224050C +MOD12_0224050C: ; 0x0224050C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02240522 + cmp r0, #1 + beq _0224055A + cmp r0, #2 + beq _0224056C + b _022405A4 +_02240522: + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _02240554 + ldr r0, [r4] + mov r1, #1 + add r0, #0x78 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + add r2, r4, #0 + ldrb r1, [r4, #0x1a] + ldr r0, [r4] + add r2, #0x14 + bl MOD12_0223E274 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02240554: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224055A: + ldr r0, [r4] + bl MOD12_0223E2A8 + cmp r0, #0 + bne _022405BC + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224056C: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02240580 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02240580: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _022405BC + ldr r0, [r4] + mov r1, #1 + add r0, #0x78 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x74] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022405A4: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022405BC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022405C0 +MOD12_022405C0: ; 0x022405C0 + push {r3, lr} + mov r1, #0x30 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022405D4 +MOD12_022405D4: ; 0x022405D4 + push {r4, r5, r6, lr} + add r4, r0, #0 + mov r0, #0xad + lsl r0, r0, #4 + add r6, r1, r0 + mov r5, #6 +_022405E0: + ldmia r3!, {r0, r1} + stmia r6!, {r0, r1} + sub r5, r5, #1 + bne _022405E0 + add r1, r2, #0 + mov r2, #0 + add r0, r4, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022405F8 +MOD12_022405F8: ; 0x022405F8 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224060C +MOD12_0224060C: ; 0x0224060C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl FUN_0200541C + ldrh r0, [r4, #0x24] + bl FUN_0200521C + ldr r0, _02240640 ; =0x00001134 + mov r1, #1 + strb r1, [r5, r0] + add r1, r0, #4 + add r0, #0xc + add r1, r5, r1 + ldmia r1!, {r2, r3} + add r0, r5, r0 + stmia r0!, {r2, r3} + mov r2, #0 + add r0, r6, #0 + add r1, r7, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240640: .word 0x00001134 + + thumb_func_start MOD12_02240644 +MOD12_02240644: ; 0x02240644 + push {r3, lr} + mov r1, #0x3c + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02240658 +MOD12_02240658: ; 0x02240658 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x17 + mov r1, #0x54 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x54 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + add r3, r4, #0 + str r0, [r4] + ldrh r0, [r5] + add r3, #0x10 + mov r2, #7 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_02240690: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02240690 + ldr r0, [r6] + ldr r2, _022406A8 ; =0x00007530 + str r0, [r3] + ldr r0, _022406AC ; =MOD12_022406B0 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022406A8: .word 0x00007530 +_022406AC: .word MOD12_022406B0 + + thumb_func_start MOD12_022406B0 +MOD12_022406B0: ; 0x022406B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + cmp r0, #4 + bhi _0224074E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022406CC: ; jump table + .short _022406D6 - _022406CC - 2 ; case 0 + .short _022406EC - _022406CC - 2 ; case 1 + .short _02240704 - _022406CC - 2 ; case 2 + .short _02240718 - _022406CC - 2 ; case 3 + .short _02240734 - _022406CC - 2 ; case 4 +_022406D6: + ldr r1, [r4] + ldr r0, _02240768 ; =0x00001134 + mov r2, #0 + strb r2, [r1, r0] + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_022406EC: + ldrh r0, [r4, #0x34] + bl FUN_02005410 + cmp r0, #0 + bne _02240766 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240704: + ldr r0, [r4] + bl MOD12_0223ECF0 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240718: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + cmp r0, #0x3c + bls _02240766 + mov r0, #0 + str r0, [r4, #0x4c] + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02240734: + ldr r0, _0224076C ; =0x0000046F + bl FUN_0200521C + ldr r0, _02240770 ; =0x000006E5 + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x50 + ldrb r0, [r0] + add r4, #0x50 + add r0, r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_0224074E: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02240766: + pop {r3, r4, r5, pc} + .align 2, 0 +_02240768: .word 0x00001134 +_0224076C: .word 0x0000046F +_02240770: .word 0x000006E5 + + thumb_func_start MOD12_02240774 +MOD12_02240774: ; 0x02240774 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + mov r1, #0 + mov r2, #0x3c + add r7, r3, #0 + bl MI_CpuFill8 + add r0, r5, #0 + add r0, #0x37 + strb r4, [r0] + add r0, r5, #0 + add r0, #0x38 + strb r6, [r0] + str r7, [r5, #0x30] + ldr r0, [sp, #0x18] + add r5, #0x39 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224079C +MOD12_0224079C: ; 0x0224079C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5, #0x30] + mov r2, #0x3c + str r1, [sp] + add r1, r5, #0 + add r1, #0x37 + ldrb r7, [r1] + add r1, r5, #0 + add r1, #0x38 + ldrb r6, [r1] + add r1, r5, #0 + add r1, #0x39 + ldrb r4, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, [sp] + str r0, [r5, #0x30] + add r0, r5, #0 + add r0, #0x37 + strb r7, [r0] + add r0, r5, #0 + add r0, #0x38 + strb r6, [r0] + add r5, #0x39 + strb r4, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_022407D4 +MOD12_022407D4: ; 0x022407D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r1, #0 + add r7, r0, #0 + ldr r1, _022409BC ; =0x00001388 + lsr r0, r3, #2 + add r0, r0, r1 + lsl r1, r1, #1 + str r3, [sp] + bl _u32_div_f + str r0, [sp, #8] + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _022407FC + cmp r0, #1 + bne _02240806 +_022407FC: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + b _02240814 +_02240806: + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp] + lsr r0, r0, #1 + str r0, [sp] +_02240814: + mov r5, #0 + add r1, r5, #0 + add r0, sp, #0x24 + b _02240820 +_0224081C: + strb r1, [r0, r5] + add r5, r5, #1 +_02240820: + cmp r5, #0x10 + blt _0224081C + ldr r0, [sp, #0x10] + mov r6, #0 + sub r0, r0, #1 + str r0, [sp, #0x18] + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x30 + str r0, [sp, #0x14] +_02240834: + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x14] + bl FUN_02082880 + ldr r1, [sp, #0x10] + bl _s32_div_f + add r5, r1, #0 + beq _02240834 + add r0, sp, #0x24 + ldrb r0, [r0, r5] + cmp r0, #0 + bne _02240834 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _0224088E + ldr r0, [sp, #0x18] + cmp r5, r0 + bne _02240864 + sub r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 +_02240864: + sub r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 + add r1, r5, #1 + add r0, sp, #0x24 + ldrb r0, [r0, r1] + cmp r0, #1 + beq _02240834 + mov r0, #1 + tst r0, r5 + beq _0224088E + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x14] + bl FUN_02082880 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x80 + blt _02240834 +_0224088E: + mov r1, #1 + add r0, sp, #0x24 + strb r1, [r0, r5] + ldr r0, _022409C0 ; =0x00000AFE + add r6, r6, #1 + ldrb r0, [r7, r0] + cmp r6, r0 + blt _02240834 + mov r6, #0 + add r5, r6, #0 + b _022408C4 +_022408A4: + add r0, sp, #0x24 + ldrb r0, [r0, r5] + cmp r0, #1 + bne _022408C2 + ldr r0, [sp] + add r1, r5, #0 + mul r1, r0 + ldr r0, _022409BC ; =0x00001388 + add r0, r1, r0 + ldr r1, _022409C4 ; =0x00002710 + bl _u32_div_f + lsl r1, r6, #2 + str r0, [r4, r1] + add r6, r6, #1 +_022408C2: + add r5, r5, #1 +_022408C4: + cmp r5, #0x10 + blt _022408A4 + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r4, #0 + add r1, #0x39 + ldrb r1, [r1] + bl MOD12_022409CC + add r6, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x30 + str r0, [sp, #0x1c] + lsr r0, r6, #0x1f + add r0, r6, r0 + asr r0, r0, #1 + add r0, r0, #1 + mov r5, #0 + str r0, [sp, #0x20] + b _0224092C +_022408F2: + ldr r0, [r4, #0x30] + ldr r1, [sp, #0x1c] + bl FUN_02082880 + add r1, r6, #2 + bl _s32_div_f + lsl r0, r5, #2 + ldr r0, [r4, r0] + add r1, r0, r1 + ldr r0, [sp, #0x20] + sub r3, r1, r0 + bpl _0224090E + mov r3, #0 +_0224090E: + lsl r0, r5, #2 + ldr r1, [r4, r0] + ldr r0, [sp, #8] + sub r2, r3, r1 + cmp r2, r0 + blo _0224091E + add r0, r0, r1 + sub r3, r0, #1 +_0224091E: + lsl r0, r5, #2 + add r1, r4, r5 + str r3, [r4, r0] + add r1, #0x28 + mov r0, #1 + strb r0, [r1] + add r5, r5, #1 +_0224092C: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + cmp r5, r0 + blt _022408F2 + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r1, [r1, r0] + ldr r0, _022409C8 ; =0x022464C4 + ldrb r0, [r0, r1] + add r1, r4, #0 + add r1, #0x30 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + bl FUN_02082880 + add r6, r4, #0 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r4, #0 + add r1, r2, r1 + add r0, #0x20 + strb r1, [r0] + mov r5, #1 + add r6, #0x30 + b _022409B0 +_02240966: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + sub r0, r0, #1 + cmp r5, r0 + bge _02240994 + ldr r0, [r4, #0x30] + add r1, r6, #0 + bl FUN_02082880 + mov r1, #0x64 + bl _s32_div_f + ldr r0, [sp, #4] + cmp r0, r1 + ble _02240994 + sub r0, r5, #1 + add r0, r4, r0 + add r0, #0x20 + ldrb r1, [r0] + add r0, r4, r5 + add r0, #0x20 + strb r1, [r0] + b _022409AE +_02240994: + ldr r0, [r4, #0x30] + add r1, r6, #0 + bl FUN_02082880 + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r4, r5 + add r1, r1, r2 + add r0, #0x20 + strb r1, [r0] +_022409AE: + add r5, r5, #1 +_022409B0: + ldr r0, _022409C0 ; =0x00000AFE + ldrb r0, [r7, r0] + cmp r5, r0 + blt _02240966 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022409BC: .word 0x00001388 +_022409C0: .word 0x00000AFE +_022409C4: .word 0x00002710 +_022409C8: .word 0x022464C4 + + thumb_func_start MOD12_022409CC +MOD12_022409CC: ; 0x022409CC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #4 + blo _022409DA + bl ErrorHandling +_022409DA: + ldr r0, _02240A0C ; =0x022464C0 + cmp r4, #3 + ldrsb r0, [r0, r5] + bhi _02240A02 + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022409EE: ; jump table + .short _022409F6 - _022409EE - 2 ; case 0 + .short _02240A08 - _022409EE - 2 ; case 1 + .short _022409FA - _022409EE - 2 ; case 2 + .short _02240A02 - _022409EE - 2 ; case 3 +_022409F6: + lsl r0, r0, #1 + pop {r3, r4, r5, pc} +_022409FA: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + pop {r3, r4, r5, pc} +_02240A02: + mov r1, #3 + bl _s32_div_f +_02240A08: + pop {r3, r4, r5, pc} + nop +_02240A0C: .word 0x022464C0 + + thumb_func_start MOD12_02240A10 +MOD12_02240A10: ; 0x02240A10 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + add r4, r3, #0 + cmp r7, #4 + blo _02240A22 + bl ErrorHandling +_02240A22: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _02240A3C + mov r0, #1 + add r1, r5, #0 + and r1, r0 + and r0, r4 + cmp r1, r0 + sub r0, r5, r4 + cmp r0, #4 + sub r0, r5, r4 + cmp r0, #8 +_02240A3C: + ldr r0, _02240A70 ; =0x022464C0 + cmp r6, #3 + ldrsb r0, [r0, r7] + bhi _02240A68 + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02240A50: ; jump table + .short _02240A58 - _02240A50 - 2 ; case 0 + .short _02240A5C - _02240A50 - 2 ; case 1 + .short _02240A60 - _02240A50 - 2 ; case 2 + .short _02240A68 - _02240A50 - 2 ; case 3 +_02240A58: + lsl r0, r0, #1 + b _02240A68 +_02240A5C: + lsl r0, r0, #1 + b _02240A68 +_02240A60: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r1, r1, #1 + add r0, r0, r1 +_02240A68: + cmp r0, #0 + bge _02240A6E + mov r0, #0 +_02240A6E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240A70: .word 0x022464C0 + + thumb_func_start MOD12_02240A74 +MOD12_02240A74: ; 0x02240A74 + push {r4, r5} + mov r4, #0 + ldr r5, [sp, #8] + cmp r1, #3 + bhi _02240AB0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02240A8A: ; jump table + .short _02240A92 - _02240A8A - 2 ; case 0 + .short _02240A9A - _02240A8A - 2 ; case 1 + .short _02240AA2 - _02240A8A - 2 ; case 2 + .short _02240AAA - _02240A8A - 2 ; case 3 +_02240A92: + cmp r5, #1 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240A9A: + cmp r5, #2 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240AA2: + cmp r5, #4 + bne _02240AB0 + add r4, r4, #3 + b _02240AB0 +_02240AAA: + cmp r5, #3 + bne _02240AB0 + add r4, r4, #3 +_02240AB0: + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _02240ABC + cmp r5, r1 + beq _02240ABC + add r4, #8 +_02240ABC: + mov r1, #0 + mvn r1, r1 + cmp r3, r1 + beq _02240ADA + mov r1, #1 + add r5, r2, #0 + and r5, r1 + and r1, r3 + cmp r5, r1 + beq _02240AD2 + add r4, r4, #2 +_02240AD2: + sub r1, r2, r3 + cmp r1, #8 + blt _02240ADA + add r4, r4, #5 +_02240ADA: + cmp r0, #3 + bhi _02240B02 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240AEA: ; jump table + .short _02240AF2 - _02240AEA - 2 ; case 0 + .short _02240AF6 - _02240AEA - 2 ; case 1 + .short _02240AFA - _02240AEA - 2 ; case 2 + .short _02240B02 - _02240AEA - 2 ; case 3 +_02240AF2: + lsl r4, r4, #1 + b _02240B02 +_02240AF6: + lsl r4, r4, #1 + b _02240B02 +_02240AFA: + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + add r4, r4, r0 +_02240B02: + add r0, r4, #0 + pop {r4, r5} + bx lr + + thumb_func_start MOD12_02240B08 +MOD12_02240B08: ; 0x02240B08 + push {r3, r4, lr} + sub sp, #0xc + add r4, r2, #0 + add r4, #0x38 + ldrb r4, [r4] + cmp r4, #0 + bne _02240B36 + cmp r0, #0 + bne _02240B36 + ldr r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x20] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, [sp, #0x18] + bl MOD12_02240B5C + add sp, #0xc + pop {r3, r4, pc} +_02240B36: + cmp r4, #0 + beq _02240B56 + cmp r0, #1 + bne _02240B56 + ldr r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x20] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, [sp, #0x18] + bl MOD12_02240C00 +_02240B56: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02240B5C +MOD12_02240B5C: ; 0x02240B5C + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r4, r1, #0 + add r0, r4, #0 + add r0, #0x38 + ldrb r3, [r0] + cmp r3, #0 + bne _02240BF6 + ldr r0, [sp, #0x3c] + add r1, #0x36 + ldrb r0, [r0, #5] + ldrb r1, [r1] + cmp r1, r0 + bhs _02240BF6 + mov r5, #0x34 + ldrsh r5, [r4, r5] + cmp r5, #0 + ble _02240B88 + sub r0, r5, #1 + add sp, #0x24 + strh r0, [r4, #0x34] + pop {r3, r4, r5, r6, pc} +_02240B88: + mov r5, #0 +_02240B8A: + add r6, r4, r5 + add r6, #0x28 + ldrb r6, [r6] + cmp r6, #1 + beq _02240B9A + add r5, r5, #1 + cmp r5, #8 + blt _02240B8A +_02240B9A: + cmp r5, #8 + bge _02240BF6 + lsl r6, r5, #2 + ldr r6, [r4, r6] + cmp r6, r2 + bhi _02240BF6 + ldr r6, [sp, #0x3c] + add r6, #8 + str r6, [sp] + add r6, sp, #0x18 + str r6, [sp, #4] + mov r6, #0 + str r6, [sp, #8] + str r3, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, r4, r5 + add r0, #0x37 + add r1, #0x20 + ldrb r0, [r0] + ldrb r1, [r1] + ldr r3, [sp, #0x38] + bl MOD12_0223FCAC + ldr r0, [sp, #0x40] + add r1, sp, #0x18 + bl MOD12_0223F56C + add r0, r4, r5 + add r1, r6, #0 + add r0, #0x28 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x36 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #0x38] + ldr r1, _02240BFC ; =0x00002710 + bl _u32_div_f + sub r0, r0, #2 + strh r0, [r4, #0x34] +_02240BF6: + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + nop +_02240BFC: .word 0x00002710 + + thumb_func_start MOD12_02240C00 +MOD12_02240C00: ; 0x02240C00 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r7, r0, #0 + ldr r0, [sp, #0x5c] + add r5, r1, #0 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + str r2, [sp, #0x18] + lsr r0, r0, #1 + str r0, [sp, #0x34] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _02240C3C + add r0, r5, #0 + add r0, #0x36 + ldrb r1, [r0] + ldr r0, [sp, #0x5c] + ldrb r0, [r0, #5] + cmp r1, r0 + bhs _02240C3C + mov r0, #0xa + mul r0, r1 + ldr r2, _02240DB4 ; =0x00001BA0 + add r4, r7, r0 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + bne _02240C3E +_02240C3C: + b _02240DB0 +_02240C3E: + mov r6, #0x34 + ldrsh r2, [r5, r6] + cmp r2, #0 + ble _02240C4E + sub r0, r2, #1 + add sp, #0x44 + strh r0, [r5, #0x34] + pop {r4, r5, r6, r7, pc} +_02240C4E: + ldr r2, _02240DB4 ; =0x00001BA0 + sub r2, #8 + add r2, r7, r2 + add r4, r2, r0 + ldr r0, [sp, #0x18] + lsr r2, r3, #1 + sub r0, r0, r2 + str r0, [sp, #0x30] + ldrb r0, [r5, #5] + cmp r0, #0 + bne _02240D4C + cmp r1, #0 + bne _02240C70 + mov r0, #0 + sub r6, #0x35 + str r0, [sp, #0x1c] + b _02240C86 +_02240C70: + sub r1, r1, #1 + mov r0, #0xa + mul r0, r1 + ldr r1, _02240DB4 ; =0x00001BA0 + add r0, r7, r0 + sub r1, r1, #2 + ldrb r6, [r0, r1] + ldr r1, _02240DB4 ; =0x00001BA0 + sub r1, r1, #5 + ldrb r0, [r0, r1] + str r0, [sp, #0x1c] +_02240C86: + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r5, #0 + add r1, #0x39 + ldrb r1, [r1] + ldrb r2, [r4, #6] + add r3, r6, #0 + bl MOD12_02240A10 + str r0, [sp, #0x28] + ldrb r0, [r4, #3] + add r3, r6, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + str r0, [sp, #4] + mov r0, #0x12 + ldr r1, [r7] + lsl r0, r0, #4 + ldrb r0, [r1, r0] + add r1, r5, #0 + add r1, #0x39 + ldrb r1, [r1] + ldrb r2, [r4, #6] + bl MOD12_02240A74 + str r0, [sp, #0x24] + ldrb r1, [r4, #6] + ldr r0, [sp, #0x34] + mul r0, r1 + ldr r1, _02240DB8 ; =0x00001388 + add r0, r0, r1 + lsl r1, r1, #1 + bl _u32_div_f + add r6, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x30] + add r1, #0x30 + bl FUN_02082880 + ldr r1, [sp, #0x28] + add r1, r1, #2 + bl _s32_div_f + ldr r0, [sp, #0x28] + lsr r2, r0, #0x1f + add r2, r0, r2 + asr r0, r2, #1 + add r0, r0, #1 + sub r0, r1, r0 + add r0, r0, r6 + str r0, [sp, #0x2c] + bpl _02240CF8 + mov r0, #0 + str r0, [sp, #0x2c] +_02240CF8: + add r1, r5, #0 + ldr r0, [r5, #0x30] + add r1, #0x30 + bl FUN_02082880 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #0x28] + ldr r0, [sp, #0x24] + add r0, r2, r0 + cmp r1, r0 + bge _02240D38 + add r6, r5, #0 + add r6, #0x30 +_02240D16: + ldr r0, [r5, #0x30] + add r1, r6, #0 + bl FUN_02082880 + lsr r1, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r1 + mov r0, #0x1e + ror r2, r0 + add r0, r1, r2 + str r0, [sp, #0x20] + bl MOD12_0223FB80 + ldrb r1, [r4, #3] + cmp r1, r0 + beq _02240D16 + b _02240D40 +_02240D38: + ldrb r0, [r4, #3] + bl MOD12_0223FBB4 + str r0, [sp, #0x20] +_02240D40: + ldr r0, [sp, #0x2c] + str r0, [r5] + ldr r0, [sp, #0x20] + strb r0, [r5, #4] + mov r0, #1 + strb r0, [r5, #5] +_02240D4C: + ldr r1, [r5] + ldr r0, [sp, #0x30] + cmp r1, r0 + bhi _02240DB0 + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x18] + add r0, #8 + str r0, [sp] + add r0, sp, #0x38 + str r0, [sp, #4] + ldr r0, _02240DBC ; =0x00001B98 + ldr r3, [sp, #0x58] + add r0, r7, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x38 + ldrb r0, [r0] + str r0, [sp, #0xc] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + ldrb r0, [r0, #5] + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x37 + ldrb r0, [r0] + ldrb r1, [r5, #4] + bl MOD12_0223FCAC + ldr r0, [sp, #0x60] + add r1, sp, #0x38 + bl MOD12_0223F56C + mov r0, #0 + strb r0, [r5, #5] + add r0, r5, #0 + add r0, #0x36 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x36 + strb r1, [r0] + ldr r0, [sp, #0x58] + ldr r1, _02240DC0 ; =0x00002710 + bl _u32_div_f + sub r0, r0, #2 + strh r0, [r5, #0x34] +_02240DB0: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240DB4: .word 0x00001BA0 +_02240DB8: .word 0x00001388 +_02240DBC: .word 0x00001B98 +_02240DC0: .word 0x00002710 + + thumb_func_start MOD12_02240DC4 +MOD12_02240DC4: ; 0x02240DC4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #5 + blo _02240DD0 + bl ErrorHandling +_02240DD0: + ldr r0, _02240DD8 ; =0x022464D0 + lsl r1, r4, #2 + ldr r0, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02240DD8: .word 0x022464D0 + + thumb_func_start MOD12_02240DDC +MOD12_02240DDC: ; 0x02240DDC + mov r0, #0x31 + bx lr + + thumb_func_start MOD12_02240DE0 +MOD12_02240DE0: ; 0x02240DE0 + mov r0, #0x32 + bx lr + + thumb_func_start MOD12_02240DE4 +MOD12_02240DE4: ; 0x02240DE4 + push {r4, lr} + add r4, r0, #0 + cmp r4, #5 + blo _02240DF0 + bl ErrorHandling +_02240DF0: + ldr r0, _02240DF8 ; =0x022464C8 + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_02240DF8: .word 0x022464C8 + + thumb_func_start MOD12_02240DFC +MOD12_02240DFC: ; 0x02240DFC + mov r0, #0x2e + bx lr + + thumb_func_start MOD12_02240E00 +MOD12_02240E00: ; 0x02240E00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r3, #0 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + bl MOD12_02240DFC + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD12_02240DC4 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x28] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C00C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02240E34 +MOD12_02240E34: ; 0x02240E34 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD12_02240DFC + str r0, [sp, #8] + bl MOD12_02240DDC + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + str r6, [sp, #4] + bl FUN_0200C124 + bl MOD12_02240DFC + add r6, r0, #0 + bl MOD12_02240DE0 + add r3, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + str r7, [sp, #4] + bl FUN_0200C13C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02240E7C +MOD12_02240E7C: ; 0x02240E7C + ldr r3, _02240E80 ; =0x0200C359 + bx r3 + .align 2, 0 +_02240E80: .word 0x0200C359 + + thumb_func_start MOD12_02240E84 +MOD12_02240E84: ; 0x02240E84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl FUN_0200C378 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C388 + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02240E98 +MOD12_02240E98: ; 0x02240E98 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r3, #0 + add r4, r0, #0 + add r7, r1, #0 + add r5, sp, #0 + mov r3, #6 +_02240EA6: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02240EA6 + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + bl MOD12_02240DE4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0 + bl FUN_0200C154 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02240EC8 +MOD12_02240EC8: ; 0x02240EC8 + ldr r3, _02240ECC ; =0x0200C3DD + bx r3 + .align 2, 0 +_02240ECC: .word 0x0200C3DD + + thumb_func_start MOD12_02240ED0 +MOD12_02240ED0: ; 0x02240ED0 + push {r3, r4, r5, lr} + ldr r2, _02240EF4 ; =0x00000A18 + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, [r4] + str r0, [r5] + ldrh r0, [r4, #4] + strh r0, [r5, #4] + ldrb r0, [r4, #6] + strb r0, [r5, #6] + ldrb r0, [r4, #7] + strb r0, [r5, #7] + ldrb r0, [r4, #8] + strb r0, [r5, #8] + pop {r3, r4, r5, pc} + .align 2, 0 +_02240EF4: .word 0x00000A18 + + thumb_func_start MOD12_02240EF8 +MOD12_02240EF8: ; 0x02240EF8 + push {r3, r4, r5, lr} + ldr r5, [r0, #0xc] + mov r4, #0 + mov r2, #1 +_02240F00: + add r3, r2, #0 + lsl r3, r4 + add r1, r5, #0 + tst r1, r3 + bne _02240F14 + ldr r1, [r0, #0xc] + orr r1, r3 + str r1, [r0, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02240F14: + add r4, r4, #1 + cmp r4, #0x20 + blt _02240F00 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02240F24 +MOD12_02240F24: ; 0x02240F24 + push {r3, r4} + mov r2, #1 + add r3, r2, #0 + lsl r3, r1 + sub r1, r2, #2 + ldr r4, [r0, #0xc] + eor r1, r3 + and r1, r4 + str r1, [r0, #0xc] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD12_02240F3C +MOD12_02240F3C: ; 0x02240F3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x28] + add r5, r0, #0 + mov r0, #2 + str r4, [sp, #4] + add r4, #8 + lsl r0, r0, #8 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + cmp r4, r0 + bls _02240F5A + bl ErrorHandling +_02240F5A: + add r0, r5, #0 + mov r2, #2 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + add r0, sp, #8 + strb r6, [r0, #4] + strh r7, [r0, #2] + add r0, r5, #0 + bl MOD12_02240EF8 + add r1, sp, #8 + strb r0, [r1, #5] + mov r0, #0 + strb r0, [r1, #6] + strh r4, [r1] + add r1, r5, #0 + add r0, sp, #8 + add r1, #0x10 + mov r2, #8 + bl MIi_CpuCopy32 + add r1, r5, #0 + ldr r0, [sp] + ldr r2, [sp, #4] + add r1, #0x18 + bl MI_CpuCopy8 + ldr r0, _02240FAC ; =0x00000A15 + mov r1, #0 + strb r1, [r5, r0] + mov r1, #1 + sub r0, r0, #5 + strb r1, [r5, r0] + add r0, sp, #8 + ldrb r0, [r0, #5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240FAC: .word 0x00000A15 + + thumb_func_start MOD12_02240FB0 +MOD12_02240FB0: ; 0x02240FB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r3, #0 + mov r0, #2 + add r7, #8 + lsl r0, r0, #8 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + cmp r7, r0 + bls _02240FCC + bl ErrorHandling +_02240FCC: + add r0, r5, #0 + mov r2, #2 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #8 + bl MI_CpuFill8 + ldrh r2, [r4] + add r1, sp, #4 + add r0, sp, #4 + strh r2, [r1] + ldrh r2, [r4, #2] + strh r2, [r1, #2] + ldrh r2, [r4, #4] + strh r2, [r1, #4] + ldrh r2, [r4, #6] + strh r2, [r1, #6] + mov r2, #0xfe + strb r2, [r1, #4] + mov r2, #1 + strb r2, [r1, #6] + strh r7, [r1] + add r1, r5, #0 + add r1, #0x10 + mov r2, #8 + bl MIi_CpuCopy32 + cmp r6, #0 + beq _02241012 + add r1, r5, #0 + ldr r2, [sp] + add r0, r6, #0 + add r1, #0x18 + bl MI_CpuCopy8 +_02241012: + mov r0, #0xa1 + mov r1, #1 + lsl r0, r0, #4 + strb r1, [r5, r0] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02241020 +MOD12_02241020: ; 0x02241020 + push {r4, r5} + lsl r5, r1, #9 + mov r1, #0x21 + lsl r1, r1, #4 + add r4, r0, r1 + add r1, #8 + add r4, r4, r5 + add r0, r0, r1 + str r4, [r2] + add r0, r0, r5 + str r0, [r3] + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD12_0224103C +MOD12_0224103C: ; 0x0224103C + mov r1, #0xa1 + lsl r1, r1, #4 + ldrb r0, [r0, r1] + cmp r0, #1 + bne _0224104A + mov r0, #0 + bx lr +_0224104A: + mov r0, #1 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241050 +MOD12_02241050: ; 0x02241050 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl MOD12_0224103C + cmp r0, #0 + bne _02241066 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02241066: + ldrh r0, [r5, #4] + cmp r4, r0 + blt _02241070 + bl ErrorHandling +_02241070: + add r0, r5, #0 + add r1, r6, #0 + mov r6, #0xc + ldr r5, [r5] + mul r6, r4 + add r2, r4, #0 + ldr r4, [r5, r6] + add r3, r7, #0 + blx r4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD12_02241088 +MOD12_02241088: ; 0x02241088 + cmp r0, r2 + beq _02241098 + cmp r2, #0xff + beq _02241098 + cmp r2, #0xfe + bne _0224109C + cmp r1, r0 + bne _0224109C +_02241098: + mov r0, #1 + bx lr +_0224109C: + mov r0, #0 + bx lr + + thumb_func_start MOD12_022410A0 +MOD12_022410A0: ; 0x022410A0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xa1 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _022410B2 + mov r0, #0 + pop {r4, pc} +_022410B2: + ldrb r0, [r4, #7] + cmp r0, #0 + bne _022410F0 + ldrb r1, [r4, #6] + mov r2, #0x21 + lsl r2, r2, #4 + add r0, r4, #0 + add r3, r4, r2 + lsl r1, r1, #9 + add r0, #0x10 + add r1, r3, r1 + sub r2, #0x10 + bl MI_CpuCopy8 + ldrb r0, [r4, #6] + mov r2, #1 + add r1, r4, r0 + ldr r0, _02241110 ; =0x00000A11 + strb r2, [r1, r0] + add r0, r4, #0 + add r0, #0x10 + mov r1, #0 + lsl r2, r2, #9 + bl MI_CpuFill8 + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_022410F0: + ldrh r2, [r4, #0x10] + add r1, r4, #0 + mov r0, #0x18 + add r1, #0x10 + bl FUN_02030A78 + cmp r0, #1 + bne _0224110C + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_0224110C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02241110: .word 0x00000A11 + + thumb_func_start MOD12_02241114 +MOD12_02241114: ; 0x02241114 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + add r4, r1, #0 + add r0, sp, #0x18 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, _022411EC ; =0x00000A11 + mov r6, #0 +_0224112A: + add r1, r7, r6 + ldrb r1, [r1, r0] + cmp r1, #1 + bne _022411DE + add r0, r7, #0 + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD12_02241020 + ldr r2, [sp, #0x14] + ldrb r0, [r7, #6] + ldrb r1, [r7, #8] + ldrb r2, [r2, #4] + bl MOD12_02241088 + cmp r0, #1 + bne _022411C0 + ldr r2, [sp, #0x14] + ldrh r1, [r7, #4] + ldrh r0, [r2, #2] + str r0, [sp, #8] + cmp r0, r1 + bhs _022411C0 + ldrb r0, [r2, #6] + cmp r0, #0 + bne _0224117A + add r1, r4, #0 + ldr r4, [r7] + ldr r5, [sp, #8] + str r4, [sp, #4] + mov r4, #0xc + mul r4, r5 + ldr r5, [sp, #4] + ldr r3, [sp, #0x10] + add r4, r5, r4 + ldr r4, [r4, #4] + add r0, r7, #0 + blx r4 + b _022411C0 +_0224117A: + ldr r1, [sp, #8] + mov r3, #0xc + ldr r0, [r7] + mul r3, r1 + add r0, r0, r3 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022411AE + ldr r1, [sp, #0x10] + lsl r0, r6, #2 + add r3, sp, #0x18 + str r1, [r3, r0] + str r6, [sp] + add r1, r4, #0 + ldr r4, [r7] + mov r5, #0xc + mov ip, r4 + ldrh r4, [r2, #2] + add r0, r7, #0 + mul r5, r4 + str r5, [sp, #0xc] + ldr r4, [sp, #0xc] + mov r5, ip + add r4, r5, r4 + ldr r4, [r4, #8] + blx r4 +_022411AE: + ldr r1, [sp, #0x14] + add r0, r7, #0 + ldrb r1, [r1, #5] + bl MOD12_02240F24 + ldr r0, _022411F0 ; =0x00000A15 + ldrb r1, [r7, r0] + add r1, r1, #1 + strb r1, [r7, r0] +_022411C0: + ldr r0, _022411EC ; =0x00000A11 + mov r1, #0 + add r2, r7, r6 + strb r1, [r2, r0] + mov r2, #0x21 + lsl r2, r2, #4 + add r3, r7, r2 + lsl r0, r6, #9 + add r0, r3, r0 + sub r2, #0x10 + bl MI_CpuFill8 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022411DE: + add r6, r6, #1 + cmp r6, #4 + blt _0224112A + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_022411EC: .word 0x00000A11 +_022411F0: .word 0x00000A15 + + thumb_func_start MOD12_022411F4 +MOD12_022411F4: ; 0x022411F4 + cmp r2, r3 + beq _022411FC + mov r0, #1 + bx lr +_022411FC: + ldr r2, _0224120C ; =0x00000A15 + ldrb r0, [r0, r2] + cmp r0, r1 + blt _02241208 + mov r0, #1 + bx lr +_02241208: + mov r0, #0 + bx lr + .align 2, 0 +_0224120C: .word 0x00000A15 + + thumb_func_start MOD12_02241210 +MOD12_02241210: ; 0x02241210 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r2, _02241454 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1] + ldr r0, _02241458 ; =0x04001000 + ldr r3, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _0224145C ; =0xFFFF1FFF + and r3, r2 + str r3, [r1] + ldr r3, [r0] + add r1, #0x50 + and r2, r3 + str r2, [r0] + mov r2, #0 + strh r2, [r1] + add r0, #0x50 + strh r2, [r0] + mov r2, #7 + mov r0, #3 + mov r1, #0x18 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0x4a + add r0, r4, #0 + lsl r1, r1, #6 + mov r2, #0x18 + bl FUN_02006268 + mov r2, #0x4a + mov r1, #0 + lsl r2, r2, #6 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0x18 + bl MOD12_022312D8 + str r0, [r5, #0xc] + add r0, r4, #0 + bl FUN_0200628C + mov r1, #0x5b + str r0, [r5] + lsl r1, r1, #2 + str r5, [r0, r1] + ldr r2, [r5] + mov r3, #3 + add r0, r1, #4 + strb r3, [r2, r0] + ldr r0, [r5] + str r0, [r5, #0x10] + add r0, r5, #0 + bl MOD12_02241B4C + ldr r0, _02241460 ; =0x0000127F + mov r1, #0 + strb r1, [r5, r0] + mov r0, #0x18 + bl FUN_02002FD0 + add r1, r5, #0 + add r1, #0xd0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + bl FUN_020038F0 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #2 + ldr r0, [r0] + mov r1, #0 + lsl r2, r2, #8 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r1, #1 + ldr r0, [r0] + lsl r2, r1, #9 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #7 + ldr r0, [r0] + mov r1, #2 + lsl r2, r2, #6 + mov r3, #0x18 + bl FUN_02003008 + add r0, r5, #0 + add r0, #0xd0 + mov r2, #2 + ldr r0, [r0] + mov r1, #3 + lsl r2, r2, #8 + mov r3, #0x18 + bl FUN_02003008 + mov r0, #0x18 + bl FUN_02016B94 + str r0, [r5, #0x30] + mov r0, #0x40 + mov r1, #0x18 + bl FUN_0201C24C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + ldr r0, [r5, #0x30] + bl MOD12_02241864 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r0, #2 + mov r1, #0x18 + bl FUN_02002C50 + mov r0, #0x18 + bl FUN_0200BB14 + ldr r1, _02241464 ; =0x0224654C + ldr r2, _02241468 ; =0x02246504 + mov r3, #0x20 + str r0, [r5, #0x28] + bl FUN_0200BB6C + ldr r1, _0224146C ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + ldr r0, [r5, #0x28] + bl FUN_0200BB34 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r2, #0x80 + bl FUN_0200BBF0 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02241470 ; =0x02246518 + bl FUN_0200BF60 + mov r0, #0x18 + bl FUN_02006D98 + str r0, [r5, #0x14] + bl MOD12_02241B0C + mov r0, #0 + mov r1, #0x1a + mov r2, #0xcc + mov r3, #0x18 + bl FUN_0200A86C + add r1, r5, #0 + add r1, #0xc4 + str r0, [r1] + mov r0, #0x18 + bl FUN_0200AA80 + add r1, r5, #0 + add r1, #0xc8 + str r0, [r1] + mov r0, #5 + lsl r0, r0, #6 + mov r1, #0x18 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xcc + str r0, [r1] + mov r0, #0xa + mov r1, #0x18 + bl FUN_02011744 + add r1, r5, #0 + add r1, #0xd4 + str r0, [r1] + add r0, r5, #0 + bl MOD12_02241B90 + add r0, r5, #0 + bl MOD12_02241BA0 + add r0, r5, #0 + bl MOD12_022419D0 + add r0, r5, #0 + bl MOD12_02241B78 + add r0, r5, #0 + bl MOD12_02241B88 + add r0, r5, #0 + bl MOD12_02242454 + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0x18 + str r1, [sp, #8] + mov r1, #0x21 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _02241474 ; =MOD12_0224182C + ldr r2, _02241478 ; =0x00013880 + add r1, r5, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + mov r0, #0x85 + mov r1, #1 + lsl r0, r0, #4 + strb r1, [r5, r0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r1, _0224147C ; =0x0000046F + mov r0, #6 + mov r2, #1 + bl FUN_0200433C + ldr r1, [r5] + ldr r0, _02241480 ; =0x00000171 + ldrb r0, [r1, r0] + bl FUN_020833D4 + ldr r0, _02241484 ; =MOD12_02241754 + add r1, r5, #0 + bl FUN_02015F10 + ldr r0, _02241488 ; =MOD12_02241814 + add r1, r5, #0 + mov r2, #0xa + bl FUN_0200CA60 + str r0, [r5, #8] + ldr r0, _0224148C ; =0x000006E5 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02241454: .word 0xFFFFE0FF +_02241458: .word 0x04001000 +_0224145C: .word 0xFFFF1FFF +_02241460: .word 0x0000127F +_02241464: .word 0x0224654C +_02241468: .word 0x02246504 +_0224146C: .word 0x00100010 +_02241470: .word 0x02246518 +_02241474: .word MOD12_0224182C +_02241478: .word 0x00013880 +_0224147C: .word 0x0000046F +_02241480: .word 0x00000171 +_02241484: .word MOD12_02241754 +_02241488: .word MOD12_02241814 +_0224148C: .word 0x000006E5 + + thumb_func_start MOD12_02241490 +MOD12_02241490: ; 0x02241490 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02082878 + ldr r0, [r5] + cmp r0, #0 + beq _022414B2 + cmp r0, #1 + beq _022414E4 + cmp r0, #2 + beq _0224156C + b _0224157A +_022414B2: + bl FUN_0200E308 + cmp r0, #1 + bne _0224157A + ldr r0, _02241580 ; =MOD12_022417DC + add r1, r4, #0 + bl FUN_02015F34 + mov r0, #0xff + str r0, [sp] + ldr r0, _02241584 ; =0x0000D6D8 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0xd0 + ldr r1, [r1] + ldr r2, _02241588 ; =0x022464F4 + mov r0, #0x18 + mov r3, #8 + bl MOD12_022318A4 + ldr r1, _0224158C ; =0x00000848 + str r0, [r4, r1] + mov r0, #1 + str r0, [r5] + b _0224157A +_022414E4: + ldr r0, [r4] + bl FUN_020828BC + cmp r0, #1 + bne _02241540 + ldr r2, _02241590 ; =0x0000084E + ldr r1, _02241594 ; =0x00001274 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r4, r1 + lsl r3, r2, #2 + ldr r2, _02241598 ; =0x02246594 + ldr r2, [r2, r3] + blx r2 + cmp r0, #1 + beq _02241508 + cmp r0, #2 + bne _0224152A +_02241508: + cmp r0, #1 + bne _02241514 + ldr r0, _02241590 ; =0x0000084E + ldrh r1, [r4, r0] + add r1, r1, #1 + b _0224151A +_02241514: + ldr r0, _0224159C ; =0x00001276 + ldrh r1, [r4, r0] + ldr r0, _02241590 ; =0x0000084E +_0224151A: + strh r1, [r4, r0] + ldr r0, _02241594 ; =0x00001274 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _02241540 +_0224152A: + cmp r0, #3 + bne _02241540 + mov r0, #2 + str r0, [r5] + ldr r0, _02241594 ; =0x00001274 + mov r1, #0 + add r0, r4, r0 + mov r2, #8 + bl MI_CpuFill8 + b _0224157A +_02241540: + ldr r0, _022415A0 ; =0x0000085C + add r0, r4, r0 + bl MOD12_022410A0 + ldr r0, _022415A0 ; =0x0000085C + add r1, r4, #0 + add r0, r4, r0 + bl MOD12_02241114 + ldr r0, _022415A4 ; =0x0000127C + ldrb r1, [r4, r0] + cmp r1, #1 + bne _0224157A + mov r1, #2 + sub r0, #8 + str r1, [r5] + add r0, r4, r0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + b _0224157A +_0224156C: + bl FUN_0200E308 + cmp r0, #1 + bne _0224157A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224157A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241580: .word MOD12_022417DC +_02241584: .word 0x0000D6D8 +_02241588: .word 0x022464F4 +_0224158C: .word 0x00000848 +_02241590: .word 0x0000084E +_02241594: .word 0x00001274 +_02241598: .word 0x02246594 +_0224159C: .word 0x00001276 +_022415A0: .word 0x0000085C +_022415A4: .word 0x0000127C + + thumb_func_start MOD12_022415A8 +MOD12_022415A8: ; 0x022415A8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02012EAC + add r0, r4, #0 + bl MOD12_02241B80 + add r0, r4, #0 + bl MOD12_02241B8C + add r0, r4, #0 + bl MOD12_02241B98 + add r0, r4, #0 + bl MOD12_02241BF8 + add r5, r4, #0 + mov r6, #0 + add r5, #0x34 +_022415D4: + add r0, r5, #0 + bl FUN_02019178 + add r6, r6, #1 + add r5, #0x10 + cmp r6, #9 + blt _022415D4 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x30] + mov r1, #3 + bl FUN_020178A0 + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x30] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl FUN_0200C398 + ldr r0, [r4, #0x28] + bl FUN_0200BD04 + bl FUN_0201C29C + add r0, r4, #0 + add r0, #0x10 + bl MOD12_022424D4 + ldr r0, [r4, #0x14] + bl FUN_020072E8 + add r0, r4, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_020117BC + mov r0, #2 + bl FUN_02002CF8 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #2 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02003038 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02002FEC + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_0200AB18 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD12_02231378 + bl FUN_0201CD04 + add r0, r7, #0 + bl FUN_0200627C + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _02241734 ; =0xFFFF1FFF + and r1, r0 + str r1, [r2] + ldr r2, _02241738 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r0, #0x18 + bl FUN_020168D0 + bl FUN_02083404 + mov r1, #5 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + lsl r1, r1, #0x18 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241740 ; =0x05000200 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241744 ; =0x05000400 + lsl r2, r2, #8 + bl MIi_CpuClear16 + mov r2, #2 + ldr r0, _0224173C ; =0x00007FFF + ldr r1, _02241748 ; =0x05000600 + lsl r2, r2, #8 + bl MIi_CpuClear16 + bl FUN_02033ED0 + ldr r0, _0224174C ; =SDK_OVERLAY_MODULE_08_ID + bl UnloadOverlayByID + ldr r0, _02241750 ; =SDK_OVERLAY_MODULE_17_ID + bl UnloadOverlayByID + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241734: .word 0xFFFF1FFF +_02241738: .word 0x04001000 +_0224173C: .word 0x00007FFF +_02241740: .word 0x05000200 +_02241744: .word 0x05000400 +_02241748: .word 0x05000600 +_0224174C: .word SDK_OVERLAY_MODULE_08_ID +_02241750: .word SDK_OVERLAY_MODULE_17_ID + + thumb_func_start MOD12_02241754 +MOD12_02241754: ; 0x02241754 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, _022417CC ; =0x00000854 + sub r1, r0, #2 + ldrb r3, [r4, r1] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r6, r0, #1 + ldrb r6, [r4, r6] + lsl r2, r1, #8 + mov r1, #0xff + lsl r1, r1, #8 + and r2, r1 + orr r2, r6 + ldrb r5, [r4, r0] + ldr r6, _022417D0 ; =0x04000040 + strh r2, [r6] + lsl r2, r3, #8 + and r2, r1 + orr r2, r5 + strh r2, [r6, #4] + add r2, r0, #4 + ldrb r5, [r4, r2] + add r2, r0, #2 + ldrb r3, [r4, r2] + add r2, r0, #1 + ldrb r2, [r4, r2] + add r0, r0, #3 + ldrb r0, [r4, r0] + lsl r2, r2, #8 + and r2, r1 + orr r0, r2 + strh r0, [r6, #2] + lsl r0, r3, #8 + and r0, r1 + orr r0, r5 + strh r0, [r6, #6] + ldr r0, [r4, #0x14] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_0200372C + ldr r0, [r4, #0x30] + bl FUN_0201AB60 + ldr r3, _022417D4 ; =0x027E0000 + ldr r1, _022417D8 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, r5, r6, pc} + nop +_022417CC: .word 0x00000854 +_022417D0: .word 0x04000040 +_022417D4: .word 0x027E0000 +_022417D8: .word 0x00003FF8 + + thumb_func_start MOD12_022417DC +MOD12_022417DC: ; 0x022417DC + push {r3, lr} + ldr r1, _0224180C ; =0x0000127F + ldrb r0, [r0, r1] + cmp r0, #1 + bne _02241808 + ldr r0, _02241810 ; =0x04000006 + ldrh r0, [r0] + cmp r0, #0x90 + blt _022417FC + cmp r0, #0x98 + bgt _022417FC + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + pop {r3, pc} +_022417FC: + cmp r0, #0x90 + bge _02241808 + mov r0, #1 + mov r1, #2 + bl FUN_020178BC +_02241808: + pop {r3, pc} + nop +_0224180C: .word 0x0000127F +_02241810: .word 0x04000006 + + thumb_func_start MOD12_02241814 +MOD12_02241814: ; 0x02241814 + push {r3, lr} + ldr r0, _02241828 ; =0x0000127F + ldrb r0, [r1, r0] + cmp r0, #1 + bne _02241826 + mov r0, #1 + mov r1, #2 + bl FUN_020178BC +_02241826: + pop {r3, pc} + .align 2, 0 +_02241828: .word 0x0000127F + + thumb_func_start MOD12_0224182C +MOD12_0224182C: ; 0x0224182C + push {r4, lr} + mov r0, #0x85 + add r4, r1, #0 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _02241854 + ldr r0, [r4, #0x14] + bl FUN_02006ED4 + bl FUN_02215A44 + ldr r0, [r4, #0x2c] + bl FUN_0200BC1C + bl FUN_0200BC38 + ldr r0, _02241860 ; =0x04000540 + mov r1, #1 + str r1, [r0] +_02241854: + ldr r1, [r4, #0x30] + mov r0, #0x18 + bl FUN_020335F0 + pop {r4, pc} + nop +_02241860: .word 0x04000540 + + thumb_func_start MOD12_02241864 +MOD12_02241864: ; 0x02241864 + push {r3, r4, r5, lr} + sub sp, #0xa8 + add r4, r0, #0 + bl FUN_0201E6D8 + ldr r5, _022419BC ; =0x0224656C + add r3, sp, #0x2c + mov r2, #5 +_02241874: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02241874 + add r0, sp, #0x2c + bl FUN_0201E66C + mov r1, #6 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x62 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + mov r1, #0x19 + mov r2, #1 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + bl MIi_CpuClear32 + mov r1, #0x66 + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + bl MIi_CpuClear32 + ldr r5, _022419C0 ; =0x022464E4 + add r3, sp, #0x1c + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _022419C4 ; =0x022465C0 + add r3, sp, #0x54 + mov r2, #0xa +_022418D4: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022418D4 + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + add r2, sp, #0x54 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x70 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0x8c + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, _022419C8 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r2, r0 + strh r2, [r1] + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _022419CC ; =0x02246530 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r2, #0 + add r0, r4, #0 + mov r1, #4 + add r3, r2, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #4 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0xa8 + pop {r3, r4, r5, pc} + .align 2, 0 +_022419BC: .word 0x0224656C +_022419C0: .word 0x022464E4 +_022419C4: .word 0x022465C0 +_022419C8: .word 0x04000008 +_022419CC: .word 0x02246530 + + thumb_func_start MOD12_022419D0 +MOD12_022419D0: ; 0x022419D0 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x34 + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r2, #1 + add r1, r4, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x8b + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0x44 + mov r3, #6 + bl FUN_02019064 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa3 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x54 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r0, #9 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xbb + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x64 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r1, #0xd + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0xd3 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x74 + mov r2, #1 + mov r3, #6 + bl FUN_02019064 + mov r2, #1 + add r1, r4, #0 + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xeb + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0x84 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #5 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, #0xf6 + str r0, [sp, #0x10] + add r1, r4, #0 + ldr r0, [r4, #0x30] + add r1, #0x94 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #9 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02241B04 ; =0x0000011B + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r1, #0xa4 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + mov r1, #0xd + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _02241B08 ; =0x00000133 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4, #0x30] + add r4, #0xb4 + add r1, r4, #0 + mov r2, #1 + mov r3, #0x10 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_02241B04: .word 0x0000011B +_02241B08: .word 0x00000133 + + thumb_func_start MOD12_02241B0C +MOD12_02241B0C: ; 0x02241B0C + push {r3, r4, r5, lr} + ldr r3, _02241B44 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _02241B48 ; =0x021064C0 + mov r1, #0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + add r2, r1, #0 + blx r3 + add r5, r0, #0 + cmp r4, #0 + bne _02241B34 + bl ErrorHandling +_02241B34: + cmp r5, #0 + bne _02241B3C + bl ErrorHandling +_02241B3C: + bl FUN_02012CC8 + pop {r3, r4, r5, pc} + nop +_02241B44: .word 0x021064B8 +_02241B48: .word 0x021064C0 + + thumb_func_start MOD12_02241B4C +MOD12_02241B4C: ; 0x02241B4C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02241B5A + bl ErrorHandling +_02241B5A: + mov r1, #0xf3 + mov r5, #0 + mov r0, #3 + lsl r1, r1, #2 +_02241B62: + sub r3, r0, r5 + add r2, r4, r5 + add r5, r5, #1 + strb r3, [r2, r1] + cmp r5, #4 + blt _02241B62 + add r0, r4, #0 + bl MOD12_02243A20 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_02241B78 +MOD12_02241B78: ; 0x02241B78 + ldr r3, _02241B7C ; =MOD12_0224278C + bx r3 + .align 2, 0 +_02241B7C: .word MOD12_0224278C + + thumb_func_start MOD12_02241B80 +MOD12_02241B80: ; 0x02241B80 + ldr r3, _02241B84 ; =MOD12_02242A6C + bx r3 + .align 2, 0 +_02241B84: .word MOD12_02242A6C + + thumb_func_start MOD12_02241B88 +MOD12_02241B88: ; 0x02241B88 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241B8C +MOD12_02241B8C: ; 0x02241B8C + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241B90 +MOD12_02241B90: ; 0x02241B90 + ldr r3, _02241B94 ; =MOD12_022426BC + bx r3 + .align 2, 0 +_02241B94: .word MOD12_022426BC + + thumb_func_start MOD12_02241B98 +MOD12_02241B98: ; 0x02241B98 + ldr r3, _02241B9C ; =MOD12_02242A18 + bx r3 + .align 2, 0 +_02241B9C: .word MOD12_02242A18 + + thumb_func_start MOD12_02241BA0 +MOD12_02241BA0: ; 0x02241BA0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x12 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r4, #0x30] + mov r0, #0x2d + mov r1, #0x13 + mov r3, #4 + bl FUN_020068C8 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r4, #0xd0 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x2d + mov r2, #0x21 + mov r3, #0x18 + bl FUN_020030E8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02241BF8 +MOD12_02241BF8: ; 0x02241BF8 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02241BFC +MOD12_02241BFC: ; 0x02241BFC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldrh r1, [r7] + add r4, r0, #0 + cmp r1, #0 + beq _02241C12 + cmp r1, #1 + beq _02241CA0 + cmp r1, #2 + beq _02241CBE + b _02241CE0 +_02241C12: + bl MOD12_022436D0 + mov r0, #0x13 + ldr r2, [r4] + mov r5, #0 + lsl r0, r0, #4 +_02241C1E: + ldrb r1, [r2, r0] + cmp r1, #0 + beq _02241C2C + add r5, r5, #1 + add r2, #0xc + cmp r5, #4 + blt _02241C1E +_02241C2C: + cmp r5, #4 + bne _02241C34 + bl ErrorHandling +_02241C34: + ldr r0, _02241CE8 ; =0x00000438 + ldr r1, _02241CEC ; =0x00000439 + strb r5, [r4, r0] + mov r5, #0 + sub r0, #0x67 +_02241C3E: + add r3, r4, r5 + ldrb r2, [r3, r0] + add r5, r5, #1 + cmp r5, #4 + strb r2, [r3, r1] + blt _02241C3E + mov r3, #0 + add r1, r3, #0 + add r2, r4, #0 +_02241C50: + ldr r0, [r4] + mov r5, #0x4a + add r0, r0, r1 + lsl r5, r5, #2 + ldrh r6, [r0, r5] + mov r5, #0xe7 + lsl r5, r5, #2 + strh r6, [r2, r5] + ldr r5, _02241CF0 ; =0x0000012A + add r3, r3, #1 + ldrh r6, [r0, r5] + ldr r5, _02241CF4 ; =0x0000039E + add r1, #0xc + strh r6, [r2, r5] + mov r5, #0x4b + lsl r5, r5, #2 + ldrh r6, [r0, r5] + mov r5, #0x3a + lsl r5, r5, #4 + strh r6, [r2, r5] + ldr r5, _02241CF8 ; =0x0000012E + ldrh r6, [r0, r5] + ldr r5, _02241CFC ; =0x000003A2 + strh r6, [r2, r5] + mov r5, #0x13 + lsl r5, r5, #4 + ldrh r6, [r0, r5] + mov r5, #0xe9 + lsl r5, r5, #2 + strh r6, [r2, r5] + ldr r5, _02241D00 ; =0x00000132 + ldrh r5, [r0, r5] + ldr r0, _02241D04 ; =0x000003A6 + strh r5, [r2, r0] + add r2, #0xc + cmp r3, #4 + blt _02241C50 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] +_02241CA0: + ldr r0, _02241D08 ; =0x0000085C + mov r3, #0xe7 + lsl r3, r3, #2 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #1 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241CE4 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _02241CE4 +_02241CBE: + ldr r0, _02241D08 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02241D0C ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241CE4 + ldrh r0, [r7] + add r0, r0, #1 + strh r0, [r7] + b _02241CE4 +_02241CE0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241CE4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241CE8: .word 0x00000438 +_02241CEC: .word 0x00000439 +_02241CF0: .word 0x0000012A +_02241CF4: .word 0x0000039E +_02241CF8: .word 0x0000012E +_02241CFC: .word 0x000003A2 +_02241D00: .word 0x00000132 +_02241D04: .word 0x000003A6 +_02241D08: .word 0x0000085C +_02241D0C: .word 0x00000127 + + thumb_func_start MOD12_02241D10 +MOD12_02241D10: ; 0x02241D10 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241D22 + cmp r0, #1 + beq _02241D5C + b _02241D7E +_02241D22: + ldr r3, _02241D88 ; =0x00000445 + mov r1, #0 + strb r1, [r5, r3] + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #1 + strb r1, [r5, r0] + add r0, r3, #0 + sub r0, #0x79 + ldrb r1, [r5, r0] + sub r0, r3, #7 + mov r2, #5 + strb r1, [r5, r0] + sub r0, r3, #1 + mov r1, #1 + strb r1, [r5, r0] + ldr r0, _02241D8C ; =0x0000085C + sub r3, #0xf + add r0, r5, r0 + add r1, r5, #0 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241D82 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241D82 +_02241D5C: + ldr r0, _02241D8C ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241D90 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241D82 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241D82 +_02241D7E: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241D82: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02241D88: .word 0x00000445 +_02241D8C: .word 0x0000085C +_02241D90: .word 0x00000127 + + thumb_func_start MOD12_02241D94 +MOD12_02241D94: ; 0x02241D94 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241DA6 + cmp r0, #1 + beq _02241DC4 + b _02241DE6 +_02241DA6: + ldr r0, _02241DF0 ; =0x0000085C + mov r3, #0xe7 + lsl r3, r3, #2 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #6 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241DEA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241DEA +_02241DC4: + ldr r0, _02241DF0 ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241DF4 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241DEA + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241DEA +_02241DE6: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241DEA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02241DF0: .word 0x0000085C +_02241DF4: .word 0x00000127 + + thumb_func_start MOD12_02241DF8 +MOD12_02241DF8: ; 0x02241DF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02241E0E + cmp r0, #1 + beq _02241E40 + cmp r0, #2 + beq _02241E62 + b _02241E74 +_02241E0E: + ldr r3, _02241E7C ; =0x00000445 + mov r0, #0 + strb r0, [r5, r3] + mov r1, #1 + add r0, r3, #2 + strb r1, [r5, r0] + add r0, r3, #1 + strb r1, [r5, r0] + sub r0, r3, #1 + mov r1, #6 + strb r1, [r5, r0] + ldr r0, _02241E80 ; =0x0000085C + sub r3, #0xf + add r0, r5, r0 + add r1, r5, #0 + mov r2, #5 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E40: + ldr r0, _02241E80 ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02241E84 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E62: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x3c + ble _02241E78 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241E78 +_02241E74: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241E78: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241E7C: .word 0x00000445 +_02241E80: .word 0x0000085C +_02241E84: .word 0x00000127 + + thumb_func_start MOD12_02241E88 +MOD12_02241E88: ; 0x02241E88 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #4 + bhi _02241F78 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241EA0: ; jump table + .short _02241EAA - _02241EA0 - 2 ; case 0 + .short _02241F00 - _02241EA0 - 2 ; case 1 + .short _02241F22 - _02241EA0 - 2 ; case 2 + .short _02241F44 - _02241EA0 - 2 ; case 3 + .short _02241F66 - _02241EA0 - 2 ; case 4 +_02241EAA: + ldr r1, [r3] + ldr r0, _02241F80 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #4 + bhi _02241ECA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241EC0: ; jump table + .short _02241ECE - _02241EC0 - 2 ; case 0 + .short _02241ECE - _02241EC0 - 2 ; case 1 + .short _02241ECE - _02241EC0 - 2 ; case 2 + .short _02241ECE - _02241EC0 - 2 ; case 3 + .short _02241ECE - _02241EC0 - 2 ; case 4 +_02241ECA: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241ECE: + ldr r5, _02241F84 ; =0x00000445 + mov r0, #0 + strb r0, [r3, r5] + mov r1, #1 + add r0, r5, #2 + strb r1, [r3, r0] + add r0, r5, #1 + strb r1, [r3, r0] + sub r0, r5, #1 + mov r1, #2 + strb r1, [r3, r0] + ldr r0, _02241F88 ; =0x0000085C + sub r5, #0xf + add r0, r3, r0 + add r1, r3, #0 + mov r2, #5 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F00: + ldr r0, _02241F88 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02241F8C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F22: + ldr r5, _02241F90 ; =0x0000043D + mov r0, #0 + strb r0, [r3, r5] + ldr r0, _02241F88 ; =0x0000085C + sub r5, r5, #7 + add r0, r3, r0 + add r1, r3, #0 + mov r2, #9 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F44: + ldr r0, _02241F88 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _02241F8C ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F66: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x3c + ble _02241F7C + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02241F7C +_02241F78: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241F7C: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02241F80: .word 0x00000121 +_02241F84: .word 0x00000445 +_02241F88: .word 0x0000085C +_02241F8C: .word 0x00000127 +_02241F90: .word 0x0000043D + + thumb_func_start MOD12_02241F94 +MOD12_02241F94: ; 0x02241F94 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bhi _022420A0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241FAC: ; jump table + .short _02241FB6 - _02241FAC - 2 ; case 0 + .short _02242028 - _02241FAC - 2 ; case 1 + .short _0224204A - _02241FAC - 2 ; case 2 + .short _0224206C - _02241FAC - 2 ; case 3 + .short _0224208E - _02241FAC - 2 ; case 4 +_02241FB6: + ldr r1, [r4] + ldr r0, _022420A8 ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #6 + bhi _02241FDA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241FCC: ; jump table + .short _02241FDA - _02241FCC - 2 ; case 0 + .short _02241FDE - _02241FCC - 2 ; case 1 + .short _02241FDE - _02241FCC - 2 ; case 2 + .short _02241FDA - _02241FCC - 2 ; case 3 + .short _02241FDA - _02241FCC - 2 ; case 4 + .short _02241FDE - _02241FCC - 2 ; case 5 + .short _02241FDE - _02241FCC - 2 ; case 6 +_02241FDA: + mov r0, #1 + pop {r3, r4, r5, pc} +_02241FDE: + ldr r1, _022420AC ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x79 + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0x79 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _022420B0 ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r1, #3 + strb r1, [r4, r0] + ldr r0, _022420B4 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + mov r2, #5 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_02242028: + ldr r0, _022420B4 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022420B8 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224204A: + ldr r3, _022420BC ; =0x0000043D + mov r0, #1 + strb r0, [r4, r3] + ldr r0, _022420B4 ; =0x0000085C + sub r3, r3, #7 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #9 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224206C: + ldr r0, _022420B4 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022420B8 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_0224208E: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + cmp r0, #0x5a + ble _022420A4 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022420A4 +_022420A0: + mov r0, #1 + pop {r3, r4, r5, pc} +_022420A4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022420A8: .word 0x00000121 +_022420AC: .word 0x00000445 +_022420B0: .word 0x00000442 +_022420B4: .word 0x0000085C +_022420B8: .word 0x00000127 +_022420BC: .word 0x0000043D + + thumb_func_start MOD12_022420C0 +MOD12_022420C0: ; 0x022420C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #4 + bls _022420CE + b _022421D2 +_022420CE: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022420DA: ; jump table + .short _022420E4 - _022420DA - 2 ; case 0 + .short _0224215A - _022420DA - 2 ; case 1 + .short _0224217C - _022420DA - 2 ; case 2 + .short _0224219E - _022420DA - 2 ; case 3 + .short _022421C0 - _022420DA - 2 ; case 4 +_022420E4: + ldr r1, [r4] + ldr r0, _022421DC ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #8 + bhi _0224210C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022420FA: ; jump table + .short _02242110 - _022420FA - 2 ; case 0 + .short _0224210C - _022420FA - 2 ; case 1 + .short _02242110 - _022420FA - 2 ; case 2 + .short _0224210C - _022420FA - 2 ; case 3 + .short _0224210C - _022420FA - 2 ; case 4 + .short _0224210C - _022420FA - 2 ; case 5 + .short _0224210C - _022420FA - 2 ; case 6 + .short _02242110 - _022420FA - 2 ; case 7 + .short _02242110 - _022420FA - 2 ; case 8 +_0224210C: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242110: + ldr r1, _022421E0 ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x79 + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0x79 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _022421E4 ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r1, #4 + strb r1, [r4, r0] + ldr r0, _022421E8 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + mov r2, #5 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224215A: + ldr r0, _022421E8 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022421EC ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224217C: + ldr r3, _022421F0 ; =0x0000043D + mov r0, #2 + strb r0, [r4, r3] + ldr r0, _022421E8 ; =0x0000085C + sub r3, r3, #7 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #9 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_0224219E: + ldr r0, _022421E8 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _022421EC ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_022421C0: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + cmp r0, #0xf + ble _022421D6 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _022421D6 +_022421D2: + mov r0, #1 + pop {r3, r4, r5, pc} +_022421D6: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022421DC: .word 0x00000121 +_022421E0: .word 0x00000445 +_022421E4: .word 0x00000442 +_022421E8: .word 0x0000085C +_022421EC: .word 0x00000127 +_022421F0: .word 0x0000043D + + thumb_func_start MOD12_022421F4 +MOD12_022421F4: ; 0x022421F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _02242206 + cmp r0, #1 + beq _02242222 + b _02242244 +_02242206: + ldr r0, _0224224C ; =0x0000085C + ldr r3, _02242250 ; =0x00000436 + add r0, r5, r0 + add r1, r5, #0 + mov r2, #7 + add r3, r5, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242248 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242248 +_02242222: + ldr r0, _0224224C ; =0x0000085C + ldr r3, [r5] + add r0, r5, r0 + ldr r5, _02242254 ; =0x00000127 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242248 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242248 +_02242244: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242248: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224224C: .word 0x0000085C +_02242250: .word 0x00000436 +_02242254: .word 0x00000127 + + thumb_func_start MOD12_02242258 +MOD12_02242258: ; 0x02242258 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldrh r0, [r5] + cmp r0, #3 + bhi _02242320 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242270: ; jump table + .short _02242278 - _02242270 - 2 ; case 0 + .short _022422C0 - _02242270 - 2 ; case 1 + .short _022422E2 - _02242270 - 2 ; case 2 + .short _022422FE - _02242270 - 2 ; case 3 +_02242278: + ldr r1, _02242328 ; =0x00000445 + mov r0, #0 + strb r0, [r4, r1] + mov r2, #1 + add r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xd + ldrb r2, [r4, r0] + sub r0, r1, #7 + sub r1, #0xd + strb r2, [r4, r0] + ldrb r0, [r4, r1] + bl FUN_020832DC + ldr r3, _0224232C ; =0x00000442 + add r0, r0, #1 + strb r0, [r4, r3] + add r0, r3, #2 + mov r2, #5 + strb r2, [r4, r0] + ldr r0, _02242330 ; =0x0000085C + sub r3, #0xc + add r0, r4, r0 + add r1, r4, #0 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422C0: + ldr r0, _02242330 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02242334 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422E2: + ldr r0, _02242330 ; =0x0000085C + ldr r3, _02242338 ; =0x00000436 + add r0, r4, r0 + add r1, r4, #0 + mov r2, #8 + add r3, r4, r3 + bl MOD12_02241050 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_022422FE: + ldr r0, _02242330 ; =0x0000085C + ldr r3, [r4] + add r0, r4, r0 + ldr r4, _02242334 ; =0x00000127 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242324 + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + b _02242324 +_02242320: + mov r0, #1 + pop {r3, r4, r5, pc} +_02242324: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02242328: .word 0x00000445 +_0224232C: .word 0x00000442 +_02242330: .word 0x0000085C +_02242334: .word 0x00000127 +_02242338: .word 0x00000436 + + thumb_func_start MOD12_0224233C +MOD12_0224233C: ; 0x0224233C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r3, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0224234E + cmp r0, #1 + beq _02242386 + b _022423A8 +_0224234E: + ldr r5, _022423B0 ; =0x00000445 + mov r0, #0 + strb r0, [r3, r5] + add r1, r5, #2 + strb r0, [r3, r1] + add r1, r5, #1 + strb r0, [r3, r1] + add r1, r5, #0 + sub r1, #0x79 + ldrb r2, [r3, r1] + sub r1, r5, #7 + strb r2, [r3, r1] + sub r1, r5, #1 + strb r0, [r3, r1] + ldr r0, _022423B4 ; =0x0000085C + sub r5, #0xf + add r0, r3, r0 + add r1, r3, #0 + mov r2, #5 + add r3, r3, r5 + bl MOD12_02241050 + cmp r0, #1 + bne _022423AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022423AC +_02242386: + ldr r0, _022423B4 ; =0x0000085C + ldr r5, [r3] + add r0, r3, r0 + ldr r3, _022423B8 ; =0x00000127 + sub r2, r3, #4 + ldrb r1, [r5, r3] + sub r3, #0xb + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + bl MOD12_022411F4 + cmp r0, #1 + bne _022423AC + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _022423AC +_022423A8: + mov r0, #1 + pop {r3, r4, r5, pc} +_022423AC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022423B0: .word 0x00000445 +_022423B4: .word 0x0000085C +_022423B8: .word 0x00000127 + + thumb_func_start MOD12_022423BC +MOD12_022423BC: ; 0x022423BC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r2, r0, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _022423D2 + cmp r0, #1 + beq _022423EC + cmp r0, #2 + beq _0224240E + b _02242428 +_022423D2: + ldr r0, _0224244C ; =0x0000085C + add r1, r2, #0 + add r0, r2, r0 + mov r2, #0xa + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_022423EC: + ldr r0, _0224244C ; =0x0000085C + ldr r3, [r2] + ldr r5, _02242450 ; =0x00000127 + add r0, r2, r0 + sub r2, r5, #4 + ldrb r1, [r3, r5] + sub r5, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r5] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_0224240E: + ldr r0, _0224244C ; =0x0000085C + add r1, r2, #0 + add r0, r2, r0 + mov r2, #4 + mov r3, #0 + bl MOD12_02241050 + cmp r0, #1 + bne _02242446 + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + b _02242446 +_02242428: + ldr r0, _0224244C ; =0x0000085C + ldr r3, [r2] + ldr r4, _02242450 ; =0x00000127 + add r0, r2, r0 + sub r2, r4, #4 + ldrb r1, [r3, r4] + sub r4, #0xb + ldrb r2, [r3, r2] + ldrb r3, [r3, r4] + bl MOD12_022411F4 + cmp r0, #1 + bne _02242446 + mov r0, #3 + pop {r3, r4, r5, pc} +_02242446: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224244C: .word 0x0000085C +_02242450: .word 0x00000127 + + thumb_func_start MOD12_02242454 +MOD12_02242454: ; 0x02242454 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r5, #0 + mov r4, #0 + add r7, #0xd8 + b _022424C6 +_02242462: + mov r0, #0xf3 + add r1, r5, r4 + lsl r0, r0, #2 + ldrb r6, [r1, r0] + lsl r0, r6, #4 + add r0, r5, r0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _0224247A + bl ErrorHandling +_0224247A: + mov r1, #0x32 + mov r0, #0x18 + lsl r1, r1, #6 + bl FUN_02016998 + lsl r2, r6, #4 + add r1, r5, r2 + add r1, #0xd8 + str r0, [r1] + add r0, r7, r2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #6 + ldr r1, _022424D0 ; =0x02246634 + mul r0, r4 + ldrsh r1, [r1, r0] + lsl r2, r6, #2 + str r1, [sp, #8] + ldr r1, _022424D0 ; =0x02246634 + add r0, r1, r0 + mov r1, #2 + ldrsh r1, [r0, r1] + str r1, [sp, #0xc] + mov r1, #4 + ldrsh r0, [r0, r1] + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r3, [r5, #0x10] + ldr r0, [r5, #0x14] + ldr r2, [r3, r2] + mov r3, #2 + bl FUN_02082E64 + lsl r1, r6, #2 + add r1, r5, r1 + str r0, [r1, #0x18] + add r4, r4, #1 +_022424C6: + cmp r4, #4 + blt _02242462 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_022424D0: .word 0x02246634 + + thumb_func_start MOD12_022424D4 +MOD12_022424D4: ; 0x022424D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_022424DE: + ldr r0, [r5, #8] + bl FUN_02007534 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + add r0, #0xc8 + add r6, r6, #1 + str r7, [r0] + add r5, r5, #4 + add r4, #0x10 + cmp r6, #4 + blt _022424DE + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_02242500 +MOD12_02242500: ; 0x02242500 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _02242516 + cmp r5, #0 + bne _02242516 + bl ErrorHandling +_02242516: + cmp r6, #3 + bhi _022425EC + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242526: ; jump table + .short _022425F0 - _02242526 - 2 ; case 0 + .short _0224252E - _02242526 - 2 ; case 1 + .short _02242552 - _02242526 - 2 ; case 2 + .short _02242596 - _02242526 - 2 ; case 3 +_0224252E: + mov r2, #0x12 + lsl r2, r2, #4 + ldr r3, [r4] + add r1, r2, #1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_0200B278 + add sp, #8 + pop {r4, r5, r6, pc} +_02242552: + ldrb r6, [r5] + ldr r3, [r4] + mov r0, #1 + lsl r2, r6, #2 + str r0, [sp] + mov r0, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0xc8 + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x10] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_02242596: + mov r1, #0 + str r1, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r4, #0 + add r0, #0xc8 + ldrb r2, [r5, #4] + ldr r0, [r0] + bl FUN_0200AD38 + ldrb r6, [r5] + ldr r3, [r4] + mov r1, #1 + lsl r2, r6, #2 + add r2, r3, r2 + add r6, r3, r6 + mov r3, #0x42 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + lsl r3, r3, #2 + add r0, #0xc8 + add r2, #0xe8 + ldrb r3, [r6, r3] + ldr r0, [r0] + ldr r2, [r2] + bl FUN_0200ABB4 + ldrb r0, [r5] + ldr r1, [r4, #0x10] + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_020690E4 + add r4, #0xc8 + add r2, r0, #0 + ldr r0, [r4] + mov r1, #2 + bl FUN_0200ACF8 + add sp, #8 + pop {r4, r5, r6, pc} +_022425EC: + bl ErrorHandling +_022425F0: + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022425F4 +MOD12_022425F4: ; 0x022425F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5] + ldr r0, _02242670 ; =0x00000171 + add r7, r2, #0 + ldrb r0, [r1, r0] + str r3, [sp, #0xc] + cmp r0, #0 + bne _02242616 + ldr r0, _02242674 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02024FF4 + add r4, r0, #0 + b _02242618 +_02242616: + mov r4, #1 +_02242618: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + add r0, r5, #0 + bl MOD12_02242500 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xc8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x34 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + add r2, r5, #0 + add r0, r5, #0 + str r3, [sp, #8] + add r2, #0xcc + ldr r2, [r2] + add r0, #0x34 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0xe6 + lsl r1, r1, #2 + strb r0, [r5, r1] + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242670: .word 0x00000171 +_02242674: .word 0x00001988 + + thumb_func_start MOD12_02242678 +MOD12_02242678: ; 0x02242678 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #7 + blo _0224268A + bl ErrorHandling +_0224268A: + lsl r3, r4, #2 + ldr r2, _022426A4 ; =0x0224664C + add r0, r5, #0 + ldr r4, _022426A8 ; =0x0224664E + ldrh r2, [r2, r3] + str r6, [sp] + add r5, #0xc4 + ldrb r3, [r4, r3] + ldr r1, [r5] + bl MOD12_022425F4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022426A4: .word 0x0224664C +_022426A8: .word 0x0224664E + + thumb_func_start MOD12_022426AC +MOD12_022426AC: ; 0x022426AC + mov r1, #0xe6 + lsl r1, r1, #2 + ldr r3, _022426B8 ; =0x0201BD71 + ldrb r0, [r0, r1] + bx r3 + nop +_022426B8: .word 0x0201BD71 + + thumb_func_start MOD12_022426BC +MOD12_022426BC: ; 0x022426BC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x16 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r5, #0x30] + mov r0, #0x2d + mov r1, #0x15 + mov r3, #3 + bl FUN_020068C8 + ldr r0, [r5, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x22 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x18 + bl FUN_020030E8 + ldr r1, [r5] + ldr r0, _02242784 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r5, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + ldr r0, [r5, #0x30] + mov r1, #2 + bl FUN_02018744 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02242784: .word 0x00001988 + + thumb_func_start MOD12_02242788 +MOD12_02242788: ; 0x02242788 + bx lr + .align 2, 0 + + thumb_func_start MOD12_0224278C +MOD12_0224278C: ; 0x0224278C + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, _022427D4 ; =0x000080EA + add r2, r4, #0 + str r0, [sp] + sub r3, r0, #1 + str r3, [sp, #4] + str r3, [sp, #8] + add r2, #0xd0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r2] + bl MOD12_022316F8 + ldr r0, _022427D4 ; =0x000080EA + mov r1, #0xc8 + str r0, [sp] + sub r3, r0, #1 + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, _022427D8 ; =0x0000C350 + add r1, #0x50 + str r0, [sp, #0x18] + add r0, r4, r1 + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + bl MOD12_022317C8 + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_022427D4: .word 0x000080EA +_022427D8: .word 0x0000C350 + + thumb_func_start MOD12_022427DC +MOD12_022427DC: ; 0x022427DC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x46 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD12_0223185C + ldr r1, _02242800 ; =0x000080E9 + str r1, [sp] + ldr r0, [r4, #0x2c] + add r2, r1, #1 + add r3, r1, #0 + bl MOD12_02231780 + add sp, #4 + pop {r3, r4, pc} + nop +_02242800: .word 0x000080E9 + + thumb_func_start MOD12_02242804 +MOD12_02242804: ; 0x02242804 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x1a + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #0x18 + str r1, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x18 + str r0, [sp, #0xc] + ldr r2, [r6, #0x30] + mov r0, #0x2d + mov r1, #0x19 + mov r3, #2 + bl FUN_020068C8 + ldr r0, [r6, #0x30] + mov r1, #1 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xd0 + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x2d + mov r2, #0x23 + mov r3, #0x18 + bl FUN_020030E8 + ldr r1, [r6] + ldr r0, _022429D0 ; =0x00001988 + ldr r0, [r1, r0] + bl FUN_02025084 + add r4, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r1, #1 + ldr r0, [r6, #0x30] + add r2, r1, #0 + mov r3, #0xf + bl FUN_0200CD68 + add r0, r4, #0 + bl FUN_0200CD64 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xe0 + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #0x26 + mov r3, #0x18 + bl FUN_020030E8 + mov r0, #0xc + mov r1, #0x18 + bl FUN_020219F4 + add r4, r6, #0 + add r7, r0, #0 + mov r5, #0 + add r4, #0x34 +_022428E6: + mov r0, #0xf3 + add r1, r6, r5 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldr r1, [r6, #0x10] + add r2, r7, #0 + lsl r0, r0, #2 + str r0, [sp, #0x10] + ldr r0, [r1, r0] + mov r1, #0x76 + bl FUN_020671BC + add r0, r5, #1 + lsl r0, r0, #4 + str r0, [sp, #0x14] + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #5 + lsl r0, r0, #4 + str r0, [sp, #0x18] + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #3 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022429D4 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r2, r7, #0 + add r0, r4, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + mov r0, #3 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _022429D4 ; =0x00010200 + ldr r2, [sp, #0x10] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r3, [r6] + ldr r0, [sp, #0x18] + add r2, r3, r2 + add r2, #0xe8 + mov r1, #0 + ldr r2, [r2] + add r0, r4, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + add r5, r5, #1 + cmp r5, #4 + blt _022428E6 + add r0, r7, #0 + bl FUN_02021A20 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _022429D8 ; =0xFFFF1FFF + mov r5, #0x3f + and r1, r0 + mov r0, #6 + lsl r0, r0, #0xc + orr r0, r1 + add r1, r2, #0 + add r1, #0x48 + str r0, [r2] + ldrh r0, [r1] + mov r3, #0x1f + bic r0, r5 + add r4, r0, #0 + orr r4, r3 + mov r0, #0x20 + orr r4, r0 + strh r4, [r1] + ldrh r6, [r1] + ldr r4, _022429DC ; =0xFFFFC0FF + lsl r3, r3, #8 + and r4, r6 + orr r4, r3 + lsl r3, r0, #8 + orr r3, r4 + strh r3, [r1] + add r3, r2, #0 + add r3, #0x4a + ldrh r4, [r3] + mov r1, #0x1b + bic r4, r5 + orr r1, r4 + orr r0, r1 + strh r0, [r3] + add r0, r2, #0 + mov r3, #0xff + add r0, #0x40 + strh r3, [r0] + add r0, r2, #0 + mov r1, #0 + add r0, #0x44 + strh r1, [r0] + add r0, r2, #0 + add r0, #0x42 + strh r3, [r0] + add r2, #0x46 + strh r1, [r2] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022429D0: .word 0x00001988 +_022429D4: .word 0x00010200 +_022429D8: .word 0xFFFF1FFF +_022429DC: .word 0xFFFFC0FF + + thumb_func_start MOD12_022429E0 +MOD12_022429E0: ; 0x022429E0 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r3, #0 + mov r0, #1 + str r3, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + mov r1, #1 + mov r2, #2 + bl FUN_02003914 + mov r3, #0 + mov r0, #1 + str r3, [sp] + lsl r0, r0, #8 + add r4, #0xd0 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #2 + bl FUN_02003914 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD12_02242A18 +MOD12_02242A18: ; 0x02242A18 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02242A1C +MOD12_02242A1C: ; 0x02242A1C + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02242A68 ; =0x000080E9 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + add r0, r4, #0 + bl MOD12_02242C38 + add r0, r4, #0 + bl MOD12_02242A90 + add r0, r4, #0 + bl MOD12_02242EE0 + add r0, r4, #0 + bl MOD12_02242FF8 + add sp, #0x18 + pop {r4, pc} + nop +_02242A68: .word 0x000080E9 + + thumb_func_start MOD12_02242A6C +MOD12_02242A6C: ; 0x02242A6C + push {r4, lr} + add r4, r0, #0 + bl MOD12_02242BCC + add r0, r4, #0 + bl MOD12_02242F94 + add r0, r4, #0 + bl MOD12_022431F8 + add r0, r4, #0 + bl MOD12_02242C88 + add r0, r4, #0 + bl MOD12_02243074 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_02242A90 +MOD12_02242A90: ; 0x02242A90 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + bl FUN_0206B888 + mov r1, #0x13 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _02242BB4 ; =0x000080EB + mov r1, #2 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r5, #0x28] + ldr r3, [r5, #0x2c] + bl FUN_0200C0DC + bl FUN_0206B894 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C124 + bl FUN_0206B8A0 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C13C + ldr r4, _02242BBC ; =0x0224669C + add r3, sp, #0x18 + mov r2, #6 +_02242AF6: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02242AF6 + ldr r0, [r4] + mov r7, #0 + str r0, [r3] + add r6, r7, #0 + add r4, r5, #0 +_02242B08: + ldr r0, [r5] + ldr r0, [r0, r6] + bl FUN_0206B6C8 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _02242BB8 ; =0x000080EA + mov r2, #0x13 + add r0, r7, r0 + str r0, [sp, #8] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C978 + ldr r0, _02242BB8 ; =0x000080EA + add r2, sp, #0x18 + add r0, r7, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl FUN_0200C154 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5] + ldr r0, [r0, r6] + bl FUN_0206B87C + add r1, r0, #0 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r0, [r0] + bl FUN_020202DC + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #4 + cmp r7, #4 + blt _02242B08 + ldr r4, _02242BC0 ; =0x02246614 + mov r6, #0 + mov r7, #2 +_02242B7A: + mov r0, #0xf3 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldrsh r2, [r4, r7] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + ldrsh r1, [r4, r1] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242B7A + ldr r0, _02242BC4 ; =MOD12_02242C1C + ldr r2, _02242BC8 ; =0x0000C738 + add r1, r5, #0 + bl FUN_0200CA44 + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_02242BB4: .word 0x000080EB +_02242BB8: .word 0x000080EA +_02242BBC: .word 0x0224669C +_02242BC0: .word 0x02246614 +_02242BC4: .word MOD12_02242C1C +_02242BC8: .word 0x0000C738 + + thumb_func_start MOD12_02242BCC +MOD12_02242BCC: ; 0x02242BCC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x2c] + ldr r1, _02242C14 ; =0x000080EA + bl FUN_0200C378 + ldr r0, [r6, #0x2c] + ldr r1, _02242C14 ; =0x000080EA + bl FUN_0200C388 + ldr r0, [r6, #0x2c] + ldr r1, _02242C18 ; =0x000080EB + bl FUN_0200C368 + mov r7, #0x4e + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02242BF0: + ldr r1, _02242C14 ; =0x000080EA + ldr r0, [r6, #0x2c] + add r1, r4, r1 + bl FUN_0200C358 + ldr r0, [r5, r7] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242BF0 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0200CAB4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242C14: .word 0x000080EA +_02242C18: .word 0x000080EB + + thumb_func_start MOD12_02242C1C +MOD12_02242C1C: ; 0x02242C1C + push {r4, r5, r6, lr} + mov r6, #0x4e + add r5, r1, #0 + mov r4, #0 + lsl r6, r6, #2 +_02242C26: + ldr r0, [r5, r6] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242C26 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02242C38 +MOD12_02242C38: ; 0x02242C38 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02242C80 ; =0x000080EF + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x51 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02242C84 ; =0x000080EC + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x50 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02242C84 ; =0x000080EC + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x4f + bl FUN_0200C13C + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02242C80: .word 0x000080EF +_02242C84: .word 0x000080EC + + thumb_func_start MOD12_02242C88 +MOD12_02242C88: ; 0x02242C88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + ldr r1, _02242CA8 ; =0x000080EF + bl FUN_0200C358 + ldr r0, [r4, #0x2c] + ldr r1, _02242CAC ; =0x000080EC + bl FUN_0200C378 + ldr r0, [r4, #0x2c] + ldr r1, _02242CAC ; =0x000080EC + bl FUN_0200C388 + pop {r4, pc} + nop +_02242CA8: .word 0x000080EF +_02242CAC: .word 0x000080EC + + thumb_func_start MOD12_02242CB0 +MOD12_02242CB0: ; 0x02242CB0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x18 + mov r1, #8 + bl FUN_02016998 + mov r1, #0 + mov r2, #8 + add r6, r0, #0 + bl MI_CpuFill8 + str r5, [r6] + mov r4, #0 +_02242CCA: + add r0, r5, #0 + bl MOD12_02242D3C + add r4, r4, #1 + cmp r4, #8 + blt _02242CCA + ldr r0, _02242CE4 ; =MOD12_02242CF8 + ldr r2, _02242CE8 ; =0x0000C35A + add r1, r6, #0 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + nop +_02242CE4: .word MOD12_02242CF8 +_02242CE8: .word 0x0000C35A + + thumb_func_start MOD12_02242CEC +MOD12_02242CEC: ; 0x02242CEC + ldr r1, _02242CF4 ; =0x0000127D + mov r2, #1 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_02242CF4: .word 0x0000127D + + thumb_func_start MOD12_02242CF8 +MOD12_02242CF8: ; 0x02242CF8 + push {r4, lr} + add r4, r0, #0 + ldr r3, [r1] + ldr r0, _02242D38 ; =0x0000127D + ldrb r2, [r3, r0] + cmp r2, #1 + bne _02242D14 + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} +_02242D14: + add r0, r0, #1 + ldrb r0, [r3, r0] + cmp r0, #0x30 + bhs _02242D34 + mov r0, #4 + ldrsh r2, [r1, r0] + add r2, r2, #1 + strh r2, [r1, #4] + ldrsh r0, [r1, r0] + cmp r0, #6 + ble _02242D34 + mov r0, #0 + strh r0, [r1, #4] + ldr r0, [r1] + bl MOD12_02242D3C +_02242D34: + pop {r4, pc} + nop +_02242D38: .word 0x0000127D + + thumb_func_start MOD12_02242D3C +MOD12_02242D3C: ; 0x02242D3C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x18 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + str r5, [r4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02242DE8 ; =0x02246668 + bl FUN_0200C154 + str r0, [r4, #4] + ldr r0, [r5] + bl FUN_02082878 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [r5] + add r6, #0x14 + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r2, r2, r1 + lsl r0, r6, #8 + lsl r1, r6, #0x10 + sub r2, #0x10 + str r0, [r4, #8] + lsl r0, r2, #8 + str r0, [r4, #0xc] + lsl r2, r2, #0x10 + ldr r0, [r4, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r5] + bl FUN_02082878 + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + add r0, #0x30 + str r0, [r4, #0x14] + ldr r0, [r5] + bl FUN_02082878 + mov r1, #3 + lsl r1, r1, #8 + bl _s32_div_f + str r1, [r4, #0x18] + ldr r0, [r5] + bl FUN_02082878 + mov r1, #0x18 + bl _s32_div_f + add r1, #0x10 + strh r1, [r4, #0x12] + ldr r0, [r4, #4] + bl FUN_0200C5A8 + ldr r0, _02242DEC ; =MOD12_02242DF8 + ldr r2, _02242DF0 ; =0x0000C35B + add r1, r4, #0 + bl FUN_0200CA44 + ldr r0, _02242DF4 ; =0x0000127E + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + pop {r4, r5, r6, pc} + nop +_02242DE8: .word 0x02246668 +_02242DEC: .word MOD12_02242DF8 +_02242DF0: .word 0x0000C35B +_02242DF4: .word 0x0000127E + + thumb_func_start MOD12_02242DF8 +MOD12_02242DF8: ; 0x02242DF8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, _02242ED8 ; =0x0000127D + ldrb r1, [r0, r1] + cmp r1, #1 + beq _02242E2C + ldr r2, [r4, #0xc] + asr r1, r2, #7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #8 + cmp r1, #0xd0 + bgt _02242E2C + mov r2, #0x10 + ldrsh r1, [r4, r2] + ldr r3, [r4, #8] + sub r2, #0x20 + add r3, r3, r1 + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + asr r1, r1, #8 + cmp r1, r2 + bge _02242E48 +_02242E2C: + ldr r1, _02242EDC ; =0x0000127E + ldrb r2, [r0, r1] + sub r2, r2, #1 + strb r2, [r0, r1] + ldr r0, [r4, #4] + bl FUN_0200C3DC + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_02242E48: + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x18] + add r0, r4, #0 + add r2, r2, r1 + mov r1, #0x5a + lsl r1, r1, #0xa + add r0, #0x1c + str r2, [r4, #0x1c] + cmp r2, r1 + blt _02242E62 + ldr r2, [r0] + sub r1, r2, r1 + str r1, [r0] +_02242E62: + mov r0, #0x12 + ldrsh r0, [r4, r0] + ldr r1, [r4, #0x1c] + lsl r5, r0, #0xc + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + lsl r0, r0, #8 + lsr r0, r0, #0x10 + bl FUN_0201B93C + asr r1, r0, #0x1f + asr r3, r5, #0x1f + add r2, r5, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r5, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r5, #0xc + orr r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r4, #0x10] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + sub r0, r1, r0 + str r0, [r4, #8] + ldr r1, [r4, #0xc] + lsr r0, r2, #2 + add r2, r1, r0 + str r2, [r4, #0xc] + ldr r3, [r4, #8] + ldr r0, [r4, #4] + asr r1, r3, #7 + lsr r1, r1, #0x18 + add r1, r3, r1 + asr r3, r1, #8 + mov r1, #0x10 + ldrsh r1, [r4, r1] + add r1, r3, r1 + asr r3, r2, #7 + lsr r3, r3, #0x18 + add r3, r2, r3 + lsl r1, r1, #0x10 + lsl r2, r3, #8 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C714 + ldr r0, [r4, #4] + bl FUN_0200C5A8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02242ED8: .word 0x0000127D +_02242EDC: .word 0x0000127E + + thumb_func_start MOD12_02242EE0 +MOD12_02242EE0: ; 0x02242EE0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _02242F84 ; =0x000080EE + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x54 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02242F88 ; =0x000080EB + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x53 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02242F88 ; =0x000080EB + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + mov r3, #0x52 + bl FUN_0200C13C + mov r7, #0x52 + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02242F2C: + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + ldr r2, _02242F8C ; =0x022466D0 + bl FUN_0200C154 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + bl FUN_0200C5A8 + ldr r0, [r4, r7] + mov r1, #0 + bl FUN_0200C644 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242F2C + ldr r4, _02242F90 ; =0x02246624 + mov r6, #0 + mov r7, #2 +_02242F5A: + mov r0, #0xf3 + add r1, r5, r6 + lsl r0, r0, #2 + ldrb r0, [r1, r0] + ldrsh r2, [r4, r7] + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + ldrsh r1, [r4, r1] + bl FUN_0200C714 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02242F5A + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02242F84: .word 0x000080EE +_02242F88: .word 0x000080EB +_02242F8C: .word 0x022466D0 +_02242F90: .word 0x02246624 + + thumb_func_start MOD12_02242F94 +MOD12_02242F94: ; 0x02242F94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + ldr r1, _02242FC8 ; =0x000080EE + bl FUN_0200C358 + ldr r0, [r5, #0x2c] + ldr r1, _02242FCC ; =0x000080EB + bl FUN_0200C378 + ldr r0, [r5, #0x2c] + ldr r1, _02242FCC ; =0x000080EB + bl FUN_0200C388 + mov r6, #0x52 + mov r4, #0 + lsl r6, r6, #2 +_02242FB6: + ldr r0, [r5, r6] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02242FB6 + pop {r4, r5, r6, pc} + nop +_02242FC8: .word 0x000080EE +_02242FCC: .word 0x000080EB + + thumb_func_start MOD12_02242FD0 +MOD12_02242FD0: ; 0x02242FD0 + push {r3, r4, r5, lr} + mov r3, #0x52 + lsl r3, r3, #2 + lsl r4, r1, #2 + add r5, r0, r3 + ldr r0, [r5, r4] + add r1, r2, #0 + bl FUN_0200C5C0 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_0200C644 + ldr r0, _02242FF4 ; =0x000005DD + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_02242FF4: .word 0x000005DD + + thumb_func_start MOD12_02242FF8 +MOD12_02242FF8: ; 0x02242FF8 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x2e + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02243068 ; =0x000080EC + mov r1, #2 + str r0, [sp, #0x14] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + ldr r2, [r4, #0x28] + ldr r3, [r4, #0x2c] + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0224306C ; =0x000080F0 + mov r2, #0x2e + str r0, [sp, #8] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x57 + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, _02243070 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x56 + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, _02243070 ; =0x000080ED + mov r2, #0x2e + str r0, [sp, #4] + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + mov r3, #0x55 + bl FUN_0200C13C + add sp, #0x18 + pop {r4, pc} + nop +_02243068: .word 0x000080EC +_0224306C: .word 0x000080F0 +_02243070: .word 0x000080ED + + thumb_func_start MOD12_02243074 +MOD12_02243074: ; 0x02243074 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + ldr r1, _0224309C ; =0x000080EC + bl FUN_0200C368 + ldr r0, [r4, #0x2c] + ldr r1, _022430A0 ; =0x000080F0 + bl FUN_0200C358 + ldr r0, [r4, #0x2c] + ldr r1, _022430A4 ; =0x000080ED + bl FUN_0200C378 + ldr r0, [r4, #0x2c] + ldr r1, _022430A4 ; =0x000080ED + bl FUN_0200C388 + pop {r4, pc} + nop +_0224309C: .word 0x000080EC +_022430A0: .word 0x000080F0 +_022430A4: .word 0x000080ED + + thumb_func_start MOD12_022430A8 +MOD12_022430A8: ; 0x022430A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r3, [sp] + cmp r2, #0 + beq _022430BE + cmp r2, #1 + beq _022430D2 + cmp r2, #2 + beq _022430EC + b _0224310C +_022430BE: + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0x56 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + mov r6, #0 + add r4, r2, r0 + b _02243114 +_022430D2: + lsl r0, r1, #1 + add r2, r7, r0 + ldr r0, _022431F0 ; =0x0000041E + ldrsh r6, [r2, r0] + mov r0, #0x11 + str r0, [sp, #0x14] + mov r0, #0x86 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + add r4, r2, r0 + b _02243114 +_022430EC: + lsl r0, r1, #1 + add r3, r7, r0 + ldr r0, _022431F0 ; =0x0000041E + ldrsh r2, [r3, r0] + add r0, #8 + ldrsh r0, [r3, r0] + add r6, r2, r0 + mov r0, #0x21 + str r0, [sp, #0x14] + mov r0, #0xb6 + lsl r0, r0, #2 + add r2, r7, r0 + mov r0, #0x30 + mul r0, r1 + add r4, r2, r0 + b _02243114 +_0224310C: + bl ErrorHandling + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02243114: + ldr r0, [sp, #0x30] + add r6, #0x30 + lsl r0, r0, #5 + str r0, [sp, #0x10] + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp] + asr r0, r0, #3 + lsr r1, r0, #0x1c + ldr r0, [sp] + add r1, r0, r1 + asr r0, r1, #4 + str r0, [sp, #0xc] + ldr r0, [sp] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + beq _02243144 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] +_02243144: + ldr r0, [sp, #0xc] + cmp r0, #0xc + ble _0224314E + bl ErrorHandling +_0224314E: + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _0224317A + add r5, r4, #0 +_0224315A: + ldr r0, [r5] + cmp r0, #0 + bne _0224316C + ldr r0, [r7, #0x28] + ldr r1, [r7, #0x2c] + ldr r2, _022431F4 ; =0x02246704 + bl FUN_0200C154 + str r0, [r5] +_0224316C: + ldr r0, [sp, #8] + add r5, r5, #4 + add r1, r0, #1 + ldr r0, [sp, #0xc] + str r1, [sp, #8] + cmp r1, r0 + blt _0224315A +_0224317A: + ldr r0, [sp] + mov r7, #0 + cmp r0, #0x10 + blt _022431A2 + ldr r0, [sp, #0x14] + add r5, r4, #0 + str r0, [sp, #4] + add r0, #0xf + str r0, [sp, #4] +_0224318C: + ldr r0, [r5] + ldr r1, [sp, #4] + bl FUN_0200C5C0 + ldr r0, [sp] + add r5, r5, #4 + sub r0, #0x10 + add r7, r7, #1 + str r0, [sp] + cmp r0, #0x10 + bge _0224318C +_022431A2: + ldr r0, [sp] + cmp r0, #0 + ble _022431BE + ldr r0, [sp, #0xc] + cmp r7, r0 + bge _022431BE + ldr r2, [sp, #0x14] + ldr r1, [sp] + lsl r0, r7, #2 + add r1, r2, r1 + ldr r0, [r4, r0] + sub r1, r1, #1 + bl FUN_0200C5C0 +_022431BE: + ldr r0, [sp, #0xc] + mov r5, #0 + cmp r0, #0 + ble _022431EA + ldr r0, [sp, #0x10] + lsl r0, r0, #0x10 + asr r7, r0, #0x10 +_022431CC: + lsl r1, r6, #0x10 + ldr r0, [r4] + asr r1, r1, #0x10 + add r2, r7, #0 + bl FUN_0200C714 + ldr r0, [r4] + bl FUN_0200C5A8 + ldr r0, [sp, #0xc] + add r5, r5, #1 + add r6, #0x10 + add r4, r4, #4 + cmp r5, r0 + blt _022431CC +_022431EA: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_022431F0: .word 0x0000041E +_022431F4: .word 0x02246704 + + thumb_func_start MOD12_022431F8 +MOD12_022431F8: ; 0x022431F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r7, #0x86 + lsl r7, r7, #2 + str r0, [sp] + mov r0, #0 + add r6, r7, #0 + str r0, [sp, #4] + sub r6, #0xc0 +_0224320A: + ldr r5, [sp] + mov r4, #0 +_0224320E: + ldr r0, [r5, r6] + cmp r0, #0 + beq _02243218 + bl FUN_0200C3DC +_02243218: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02243222 + bl FUN_0200C3DC +_02243222: + mov r0, #0xb6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02243230 + bl FUN_0200C3DC +_02243230: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _0224320E + ldr r0, [sp] + add r0, #0x30 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0224320A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224324C +MOD12_0224324C: ; 0x0224324C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0 + strb r0, [r7] + mov r0, #0x18 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4] + str r7, [r4, #4] + cmp r6, #0 + ldr r2, _0224329C ; =0x0000A028 + bne _02243286 + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #8] + str r0, [r4, #0xc] + ldr r0, _022432A0 ; =MOD12_022432A8 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02243286: + mov r0, #3 + lsl r0, r0, #0xc + str r0, [r4, #8] + mov r0, #9 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _022432A4 ; =MOD12_0224333C + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224329C: .word 0x0000A028 +_022432A0: .word MOD12_022432A8 +_022432A4: .word MOD12_0224333C + + thumb_func_start MOD12_022432A8 +MOD12_022432A8: ; 0x022432A8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _02243322 + mov r0, #1 + ldr r2, [r1, #8] + lsl r0, r0, #0xa + sub r2, r2, r0 + str r2, [r1, #8] + ldr r2, [r1, #0xc] + add r0, r2, r0 + str r0, [r1, #0xc] + mov r0, #3 + ldr r2, [r1, #8] + lsl r0, r0, #0xc + cmp r2, r0 + bgt _022432DA + str r0, [r1, #8] + mov r0, #9 + lsl r0, r0, #0xc + str r0, [r1, #0xc] + ldrb r0, [r1, #0x10] + add r0, r0, #1 + strb r0, [r1, #0x10] +_022432DA: + ldr r3, [r1] + ldr r2, _02243338 ; =0x00000851 + mov r0, #0 + strb r0, [r3, r2] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #1 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #0xff + add r3, r2, #2 + strb r5, [r4, r3] + ldr r3, [r1, #0xc] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #3 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #1 + add r3, r2, #4 + strb r5, [r4, r3] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #5 + strb r5, [r4, r3] + ldr r4, [r1] + add r3, r2, #6 + strb r0, [r4, r3] + ldr r0, [r1, #0xc] + ldr r1, [r1] + asr r3, r0, #8 + add r0, r2, #7 + strb r3, [r1, r0] + pop {r3, r4, r5, pc} +_02243322: + ldr r0, [r1, #4] + mov r2, #1 + strb r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_02243338: .word 0x00000851 + + thumb_func_start MOD12_0224333C +MOD12_0224333C: ; 0x0224333C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _022433B2 + mov r0, #1 + ldr r2, [r1, #8] + lsl r0, r0, #0xa + add r2, r2, r0 + str r2, [r1, #8] + ldr r2, [r1, #0xc] + sub r0, r2, r0 + str r0, [r1, #0xc] + mov r0, #6 + ldr r2, [r1, #8] + lsl r0, r0, #0xc + cmp r2, r0 + blt _0224336A + str r0, [r1, #8] + str r0, [r1, #0xc] + ldrb r0, [r1, #0x10] + add r0, r0, #1 + strb r0, [r1, #0x10] +_0224336A: + ldr r3, [r1] + ldr r2, _022433C8 ; =0x00000851 + mov r0, #0 + strb r0, [r3, r2] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #1 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #0xff + add r3, r2, #2 + strb r5, [r4, r3] + ldr r3, [r1, #0xc] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #3 + strb r5, [r4, r3] + ldr r4, [r1] + mov r5, #1 + add r3, r2, #4 + strb r5, [r4, r3] + ldr r3, [r1, #8] + ldr r4, [r1] + asr r5, r3, #8 + add r3, r2, #5 + strb r5, [r4, r3] + ldr r4, [r1] + add r3, r2, #6 + strb r0, [r4, r3] + ldr r0, [r1, #0xc] + ldr r1, [r1] + asr r3, r0, #8 + add r0, r2, #7 + strb r3, [r1, r0] + pop {r3, r4, r5, pc} +_022433B2: + ldr r0, [r1, #4] + mov r2, #1 + strb r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_022433C8: .word 0x00000851 + + thumb_func_start MOD12_022433CC +MOD12_022433CC: ; 0x022433CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, r3, #0 + strb r1, [r0] + mov r0, #0x18 + mov r1, #0x14 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x18] + cmp r7, #0 + str r0, [r4] + ldr r0, [sp] + ldr r2, _0224342C ; =0x0000C350 + str r0, [r4, #4] + bne _02243416 + mov r0, #0x4a + lsl r0, r0, #0xa + str r0, [r4, #8] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _02243430 ; =MOD12_02243438 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_02243416: + mov r0, #2 + lsl r0, r0, #0xe + str r0, [r4, #8] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0xc] + ldr r0, _02243434 ; =MOD12_022434A4 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224342C: .word 0x0000C350 +_02243430: .word MOD12_02243438 +_02243434: .word MOD12_022434A4 + + thumb_func_start MOD12_02243438 +MOD12_02243438: ; 0x02243438 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0224344A + cmp r0, #1 + beq _0224345A + b _0224348E +_0224344A: + ldr r0, [r4] + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_0224345A: + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + sub r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #8] + cmp r2, r1 + bgt _02243474 + lsl r0, r0, #4 + str r0, [r4, #8] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02243474: + ldr r2, [r4, #8] + ldr r0, [r4] + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r2, [r4, #0xc] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_0224348E: + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD12_022434A4 +MOD12_022434A4: ; 0x022434A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _022434B6 + cmp r0, #1 + beq _022434BA + b _022434F0 +_022434B6: + add r0, r0, #1 + strb r0, [r4, #0x10] +_022434BA: + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xa + sub r1, r1, r0 + ldr r0, _02243510 ; =0xFFFFD800 + str r1, [r4, #8] + cmp r1, r0 + bgt _022434D0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_022434D0: + ldr r3, [r4, #8] + ldr r0, [r4] + asr r2, r3, #7 + lsr r2, r2, #0x18 + add r2, r3, r2 + mov r1, #0 + asr r2, r2, #8 + bl FUN_02007558 + ldr r2, [r4, #0xc] + ldr r0, [r4] + mov r1, #1 + asr r2, r2, #8 + bl FUN_02007558 + pop {r3, r4, r5, pc} +_022434F0: + ldr r0, [r4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + ldr r0, [r4, #4] + mov r1, #1 + strb r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_02243510: .word 0xFFFFD800 + + thumb_func_start MOD12_02243514 +MOD12_02243514: ; 0x02243514 + ldr r2, _022435B0 ; =0x00000121 + ldrb r0, [r0, r2] + cmp r0, #8 + bhi _022435AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243528: ; jump table + .short _0224353A - _02243528 - 2 ; case 0 + .short _02243552 - _02243528 - 2 ; case 1 + .short _02243568 - _02243528 - 2 ; case 2 + .short _02243586 - _02243528 - 2 ; case 3 + .short _02243586 - _02243528 - 2 ; case 4 + .short _02243592 - _02243528 - 2 ; case 5 + .short _02243592 - _02243528 - 2 ; case 6 + .short _0224359E - _02243528 - 2 ; case 7 + .short _0224359E - _02243528 - 2 ; case 8 +_0224353A: + cmp r1, #0 + beq _02243544 + cmp r1, #2 + beq _02243548 + b _0224354E +_02243544: + ldr r0, _022435B4 ; =0x00001770 + bx lr +_02243548: + mov r0, #0xfa + lsl r0, r0, #4 + bx lr +_0224354E: + mov r0, #0 + bx lr +_02243552: + cmp r1, #0 + beq _0224355C + cmp r1, #1 + beq _02243560 + b _02243564 +_0224355C: + ldr r0, _022435B8 ; =0x00001B58 + bx lr +_02243560: + ldr r0, _022435BC ; =0x00000BB8 + bx lr +_02243564: + mov r0, #0 + bx lr +_02243568: + cmp r1, #0 + beq _02243576 + cmp r1, #1 + beq _0224357A + cmp r1, #2 + beq _0224357E + b _02243582 +_02243576: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_0224357A: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_0224357E: + ldr r0, _022435C0 ; =0x00000D05 + bx lr +_02243582: + mov r0, #0 + bx lr +_02243586: + cmp r1, #0 + bne _0224358E + ldr r0, _022435C4 ; =0x00002710 + bx lr +_0224358E: + mov r0, #0 + bx lr +_02243592: + cmp r1, #1 + bne _0224359A + ldr r0, _022435C4 ; =0x00002710 + bx lr +_0224359A: + mov r0, #0 + bx lr +_0224359E: + cmp r1, #2 + bne _022435A6 + ldr r0, _022435C4 ; =0x00002710 + bx lr +_022435A6: + mov r0, #0 + bx lr +_022435AA: + mov r0, #0 + bx lr + nop +_022435B0: .word 0x00000121 +_022435B4: .word 0x00001770 +_022435B8: .word 0x00001B58 +_022435BC: .word 0x00000BB8 +_022435C0: .word 0x00000D05 +_022435C4: .word 0x00002710 + + thumb_func_start MOD12_022435C8 +MOD12_022435C8: ; 0x022435C8 + push {r3, lr} + bl MOD12_02243514 + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + ldr r1, _022435E0 ; =0x00001388 + add r0, r2, r1 + lsl r1, r1, #1 + bl _s32_div_f + pop {r3, pc} + .align 2, 0 +_022435E0: .word 0x00001388 + + thumb_func_start MOD12_022435E4 +MOD12_022435E4: ; 0x022435E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp] + mov r0, #0 + ldr r7, [sp] + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #8] + add r4, sp, #0x24 +_022435F6: + cmp r5, #0 + beq _02243604 + cmp r5, #1 + beq _0224361E + cmp r5, #2 + beq _02243628 + b _02243630 +_02243604: + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_02083308 + str r0, [sp, #0x10] + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_0208336C + ldr r1, [sp, #0x10] + add r0, r1, r0 + str r0, [r4] + b _02243638 +_0224361E: + mov r0, #0x4b + lsl r0, r0, #2 + ldrsh r0, [r7, r0] + str r0, [r4] + b _02243638 +_02243628: + ldr r0, _022436CC ; =0x0000012E + ldrsh r0, [r7, r0] + str r0, [r4] + b _02243638 +_02243630: + bl ErrorHandling + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_02243638: + ldr r0, [sp, #8] + add r4, r4, #4 + add r0, r0, #1 + add r7, #0xc + str r0, [sp, #8] + cmp r0, #4 + blt _022435F6 + mov r4, #0 + mov r3, #1 + add r2, sp, #0x28 + add r7, sp, #0x24 +_0224364E: + lsl r0, r4, #2 + ldr r1, [r7, r0] + ldr r0, [r2] + cmp r1, r0 + bge _0224365A + add r4, r3, #0 +_0224365A: + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _0224364E + ldr r0, [sp] + add r1, r5, #0 + bl MOD12_02243514 + lsl r2, r4, #2 + add r1, sp, #0x24 + ldr r1, [r1, r2] + bl _s32_div_f + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #4] + add r7, sp, #0x24 + add r4, sp, #0x14 +_0224367E: + ldr r0, [r7] + ldr r1, [sp, #0xc] + mul r0, r1 + str r0, [r4] + add r0, #0x32 + mov r1, #0x64 + bl _s32_div_f + stmia r4!, {r0} + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0224367E + mov r2, #0 + add r1, sp, #0x14 +_022436A0: + cmp r5, #0 + beq _022436AE + cmp r5, #1 + beq _022436B4 + cmp r5, #2 + beq _022436BA + b _022436BE +_022436AE: + ldr r0, [r1] + strh r0, [r6] + b _022436BE +_022436B4: + ldr r0, [r1] + strh r0, [r6] + b _022436BE +_022436BA: + ldr r0, [r1] + strh r0, [r6] +_022436BE: + add r2, r2, #1 + add r1, r1, #4 + add r6, r6, #2 + cmp r2, #4 + blt _022436A0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022436CC: .word 0x0000012E + + thumb_func_start MOD12_022436D0 +MOD12_022436D0: ; 0x022436D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + str r0, [sp] + ldr r0, [r0] + ldr r1, _022439F0 ; =0x00000121 + ldrb r1, [r0, r1] + cmp r1, #8 + bhi _02243790 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022436EC: ; jump table + .short _022436FE - _022436EC - 2 ; case 0 + .short _0224371C - _022436EC - 2 ; case 1 + .short _0224373A - _022436EC - 2 ; case 2 + .short _02243768 - _022436EC - 2 ; case 3 + .short _02243768 - _022436EC - 2 ; case 4 + .short _02243776 - _022436EC - 2 ; case 5 + .short _02243776 - _022436EC - 2 ; case 6 + .short _02243784 - _022436EC - 2 ; case 7 + .short _02243784 - _022436EC - 2 ; case 8 +_022436FE: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_0224371C: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + ldr r0, [r0] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_0224373A: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + ldr r0, [r0] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + ldr r0, [sp] + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + ldr r0, [r0] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243768: + ldr r3, _022439F4 ; =0x000003D6 + ldr r2, [sp] + mov r1, #0 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243776: + ldr r3, _022439FC ; =0x000003DE + ldr r2, [sp] + mov r1, #1 + add r2, r2, r3 + bl MOD12_022435E4 + b _02243790 +_02243784: + ldr r3, _022439F8 ; =0x000003E6 + ldr r2, [sp] + mov r1, #2 + add r2, r2, r3 + bl MOD12_022435E4 +_02243790: + ldr r7, _022439F4 ; =0x000003D6 + ldr r6, [sp] + add r0, r7, #0 + add r1, r7, #0 + mov r5, #0 + add r0, #8 + add r1, #0x18 +_0224379E: + ldr r2, _022439F8 ; =0x000003E6 + ldrsh r3, [r6, r7] + ldrsh r4, [r6, r2] + ldrsh r2, [r6, r0] + add r5, r5, #1 + add r2, r3, r2 + add r2, r4, r2 + strh r2, [r6, r1] + add r6, r6, #2 + cmp r5, #4 + blt _0224379E + ldr r1, [sp] + ldr r4, _022439F4 ; =0x000003D6 + mov r0, #0 + mov r2, #1 + add r1, r1, #2 + add r5, r4, #0 +_022437C0: + ldr r3, [sp] + lsl r6, r0, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r1, r5] + cmp r6, r3 + bge _022437D0 + add r0, r2, #0 +_022437D0: + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #4 + blt _022437C0 + lsl r1, r0, #1 + ldr r0, [sp] + ldr r4, [sp] + add r1, r0, r1 + ldr r0, _022439F4 ; =0x000003D6 + mov r5, #0 + add r7, r0, #0 + ldrsh r6, [r1, r0] + add r7, #0x20 +_022437EA: + ldr r0, _022439F4 ; =0x000003D6 + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022437EA + ldr r0, [sp] + ldr r4, _022439FC ; =0x000003DE + mov r2, #0 + mov r1, #1 + add r0, r0, #2 + add r5, r4, #0 +_0224380E: + ldr r3, [sp] + lsl r6, r2, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r0, r5] + cmp r6, r3 + bge _0224381E + add r2, r1, #0 +_0224381E: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _0224380E + ldr r0, [sp] + lsl r1, r2, #1 + add r1, r0, r1 + ldr r0, _022439FC ; =0x000003DE + ldr r4, [sp] + add r7, r0, #0 + ldrsh r6, [r1, r0] + mov r5, #0 + add r7, #0x20 +_02243838: + ldr r0, _022439FC ; =0x000003DE + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243838 + ldr r0, [sp] + ldr r4, _022439F8 ; =0x000003E6 + mov r2, #0 + mov r1, #1 + add r0, r0, #2 + add r5, r4, #0 +_0224385C: + ldr r3, [sp] + lsl r6, r2, #1 + add r3, r3, r6 + ldrsh r6, [r3, r4] + ldrsh r3, [r0, r5] + cmp r6, r3 + bge _0224386C + add r2, r1, #0 +_0224386C: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _0224385C + ldr r0, [sp] + lsl r1, r2, #1 + add r1, r0, r1 + ldr r0, _022439F8 ; =0x000003E6 + ldr r4, [sp] + add r7, r0, #0 + ldrsh r6, [r1, r0] + mov r5, #0 + add r7, #0x20 +_02243886: + ldr r0, _022439F8 ; =0x000003E6 + ldrsh r1, [r4, r0] + mov r0, #0x64 + mul r0, r1 + add r1, r6, #0 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243886 + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A00 ; =0x0000041E + add r6, r0, #0 + mov r5, #0 +_022438B0: + ldr r0, _02243A04 ; =0x000003F6 + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022438B0 + ldr r0, [sp] + mov r1, #1 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A08 ; =0x00000426 + add r6, r0, #0 + mov r5, #0 +_022438D8: + ldr r0, _02243A0C ; =0x000003FE + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _022438D8 + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + bl MOD12_022435C8 + ldr r4, [sp] + ldr r7, _02243A10 ; =0x0000042E + add r6, r0, #0 + mov r5, #0 +_02243900: + ldr r0, _02243A14 ; =0x00000406 + mov r1, #0x64 + ldrsh r0, [r4, r0] + mul r0, r6 + bl _s32_div_f + strh r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _02243900 + ldr r7, _02243A00 ; =0x0000041E + ldr r5, [sp] + add r0, r7, #0 + add r1, r7, #0 + mov r6, #0 + add r0, #8 + sub r1, #8 +_02243924: + ldr r2, _02243A10 ; =0x0000042E + ldrsh r3, [r5, r7] + ldrsh r4, [r5, r2] + ldrsh r2, [r5, r0] + add r6, r6, #1 + add r2, r3, r2 + add r2, r4, r2 + strh r2, [r5, r1] + add r5, r5, #2 + cmp r6, #4 + blt _02243924 + ldr r0, [sp] + mov r7, #0 + add r6, sp, #0x18 + str r0, [sp, #4] + add r4, sp, #8 + add r5, sp, #0x28 +_02243946: + stmia r6!, {r7} + ldr r1, [sp, #4] + ldr r0, _02243A18 ; =0x00000416 + ldrsh r0, [r1, r0] + stmia r4!, {r0} + ldr r0, [sp] + ldr r0, [r0] + bl FUN_02082878 + stmia r5!, {r0} + ldr r0, [sp, #4] + add r7, r7, #1 + add r0, r0, #2 + str r0, [sp, #4] + cmp r7, #4 + blt _02243946 + mov r0, #0 + mov ip, r0 +_0224396A: + mov r0, ip + mov r7, #3 + cmp r0, #3 + bge _022439B8 + add r2, sp, #0x14 + add r3, sp, #0x34 + add r4, sp, #0x24 +_02243978: + sub r0, r2, #4 + ldr r5, [r2] + ldr r6, [r0] + cmp r6, r5 + blt _02243990 + cmp r6, r5 + bne _022439AA + sub r0, r3, #4 + ldr r1, [r0] + ldr r0, [r3] + cmp r1, r0 + bge _022439AA +_02243990: + str r6, [r2] + sub r0, r2, #4 + str r5, [r0] + sub r0, r4, #4 + ldr r5, [r4] + ldr r1, [r0] + str r1, [r4] + str r5, [r0] + sub r0, r3, #4 + ldr r5, [r3] + ldr r1, [r0] + str r1, [r3] + str r5, [r0] +_022439AA: + sub r7, r7, #1 + mov r0, ip + sub r2, r2, #4 + sub r3, r3, #4 + sub r4, r4, #4 + cmp r7, r0 + bgt _02243978 +_022439B8: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #3 + blt _0224396A + mov r1, #0x13 + ldr r7, _02243A1C ; =0x000003D1 + mov r6, #0 + add r5, sp, #0x18 + mov r0, #0xc + lsl r1, r1, #4 +_022439CE: + ldr r3, [sp] + ldr r2, [r5] + add r3, r3, r6 + strb r2, [r3, r7] + ldr r2, [sp] + ldr r4, [r2] + ldr r2, [r5] + add r5, r5, #4 + add r3, r2, #0 + mul r3, r0 + add r2, r4, r3 + strb r6, [r2, r1] + add r6, r6, #1 + cmp r6, #4 + blt _022439CE + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022439F0: .word 0x00000121 +_022439F4: .word 0x000003D6 +_022439F8: .word 0x000003E6 +_022439FC: .word 0x000003DE +_02243A00: .word 0x0000041E +_02243A04: .word 0x000003F6 +_02243A08: .word 0x00000426 +_02243A0C: .word 0x000003FE +_02243A10: .word 0x0000042E +_02243A14: .word 0x00000406 +_02243A18: .word 0x00000416 +_02243A1C: .word 0x000003D1 + + thumb_func_start MOD12_02243A20 +MOD12_02243A20: ; 0x02243A20 + push {r3, r4, lr} + sub sp, #0xc + ldr r1, _02243A54 ; =0x02246758 + add r3, sp, #0 + str r1, [sp] + mov r1, #0xb + strh r1, [r3, #4] + ldr r1, [r0] + ldr r2, _02243A58 ; =0x00000123 + ldrb r1, [r1, r2] + strb r1, [r3, #6] + sub r1, r2, #7 + ldr r4, [r0] + add r2, #0x4e + ldrb r1, [r4, r1] + strb r1, [r3, #8] + ldr r1, [r0] + ldrb r1, [r1, r2] + strb r1, [r3, #7] + ldr r1, _02243A5C ; =0x0000085C + add r0, r0, r1 + add r1, sp, #0 + bl MOD12_02240ED0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02243A54: .word 0x02246758 +_02243A58: .word 0x00000123 +_02243A5C: .word 0x0000085C + + thumb_func_start MOD12_02243A60 +MOD12_02243A60: ; 0x02243A60 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A74 +MOD12_02243A74: ; 0x02243A74 + push {r3, lr} + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A84 +MOD12_02243A84: ; 0x02243A84 + bx lr + .align 2, 0 + + thumb_func_start MOD12_02243A88 +MOD12_02243A88: ; 0x02243A88 + push {r3, lr} + mov r1, #0x9a + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243A9C +MOD12_02243A9C: ; 0x02243A9C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xe7 + lsl r1, r1, #2 + str r0, [sp] + mov ip, r2 + add r0, r3, #0 + add r4, r6, r1 + mov r2, #0x4d +_02243AAE: + ldrh r1, [r0] + add r0, r0, #2 + strh r1, [r4] + add r4, r4, #2 + sub r2, r2, #1 + bne _02243AAE + mov r1, #0 + ldr r7, _02243B04 ; =0x00000132 + add r2, r1, #0 +_02243AC0: + ldr r0, [r6] + mov r4, #0x4a + add r0, r0, r2 + ldrh r5, [r3] + lsl r4, r4, #2 + add r1, r1, #1 + strh r5, [r0, r4] + ldrh r5, [r3, #2] + add r4, r4, #2 + add r2, #0xc + strh r5, [r0, r4] + mov r4, #0x4b + ldrh r5, [r3, #4] + lsl r4, r4, #2 + strh r5, [r0, r4] + ldrh r5, [r3, #6] + add r4, r4, #2 + strh r5, [r0, r4] + mov r4, #0x13 + ldrh r5, [r3, #8] + lsl r4, r4, #4 + strh r5, [r0, r4] + ldrh r4, [r3, #0xa] + add r3, #0xc + cmp r1, #4 + strh r4, [r0, r7] + blt _02243AC0 + mov r2, #0 + ldr r0, [sp] + mov r1, ip + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243B04: .word 0x00000132 + + thumb_func_start MOD12_02243B08 +MOD12_02243B08: ; 0x02243B08 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243B1C +MOD12_02243B1C: ; 0x02243B1C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02243B58 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02243B5C ; =MOD12_02243B60 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243B58: .word 0x00007530 +_02243B5C: .word MOD12_02243B60 + + thumb_func_start MOD12_02243B60 +MOD12_02243B60: ; 0x02243B60 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _02243B70 + b _02243C96 +_02243B70: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243B84 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_02243B84: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243B98 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_02243B98: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _02243C10 +_02243BB0: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + ldr r0, _02243CB4 ; =0x02246738 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _02243C0A + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0x12] + mov r7, #0x3f + str r5, [sp, #4] + lsl r1, r0, #1 + ldr r0, _02243CB8 ; =0x02246740 + lsl r7, r7, #0xa + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r0, r0, #5 + add r6, r1, r0 + b _02243C04 +_02243BE0: + mov r4, #0 + b _02243BF8 +_02243BE4: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_02243BF8: + cmp r4, #8 + blt _02243BE4 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_02243C04: + ldr r0, [sp, #4] + cmp r0, #4 + blt _02243BE0 +_02243C0A: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02243C10: + ldr r0, [sp, #8] + cmp r0, #4 + blt _02243BB0 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _02243C52 + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _02243C52 + ldr r0, _02243CB4 ; =0x02246738 + sub r1, r1, #1 + ldrsb r0, [r0, r1] + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #0x3f + str r0, [sp, #4] + lsl r1, r1, #0xa + b _02243C4C +_02243C3C: + ldr r0, [sp, #4] + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r1 + strh r0, [r3, r2] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02243C4C: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _02243C3C +_02243C52: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _02243CB0 + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _02243CB0 + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_02243C96: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02243CB0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243CB4: .word 0x02246738 +_02243CB8: .word 0x02246740 + + thumb_func_start MOD12_02243CBC +MOD12_02243CBC: ; 0x02243CBC + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243CD0 +MOD12_02243CD0: ; 0x02243CD0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02243D0C ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02243D10 ; =MOD12_02243D14 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243D0C: .word 0x00007530 +_02243D10: .word MOD12_02243D14 + + thumb_func_start MOD12_02243D14 +MOD12_02243D14: ; 0x02243D14 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + ldrb r0, [r1, #0x10] + str r1, [sp] + cmp r0, #0 + beq _02243D24 + b _02243E72 +_02243D24: + ldr r0, [sp] + mov r1, #0x14 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243D38 + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x14] + pop {r4, r5, r6, r7, pc} +_02243D38: + ldr r0, [sp] + mov r1, #0x13 + ldrsb r0, [r0, r1] + cmp r0, #0 + ble _02243D4C + sub r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x13] + pop {r4, r5, r6, r7, pc} +_02243D4C: + ldr r0, [sp] + mov r1, #1 + strb r1, [r0, #0x13] + ldr r0, [r0] + mov r1, #2 + ldr r0, [r0, #0x30] + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + str r0, [sp, #8] + b _02243DCC +_02243D64: + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + mov r0, #4 + sub r1, r0, r1 + ldr r0, _02243E90 ; =0x02246738 + ldrsb r1, [r0, r1] + ldr r0, [sp, #8] + add r0, r1, r0 + bmi _02243DC6 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + ldr r0, [sp] + mov r5, #0 + ldrb r1, [r0, #0x12] + mov r0, #0xb + mov r7, #0x3f + sub r0, r0, r1 + lsl r1, r0, #1 + ldr r0, _02243E94 ; =0x02246740 + str r5, [sp, #4] + ldrh r1, [r0, r1] + ldr r0, [sp, #8] + lsl r7, r7, #0xa + lsl r0, r0, #5 + add r6, r1, r0 + b _02243DC0 +_02243D9C: + mov r4, #0 + b _02243DB4 +_02243DA0: + add r0, r5, r4 + lsl r2, r0, #1 + ldrh r0, [r3, r2] + and r0, r7 + strh r0, [r3, r2] + ldrh r1, [r3, r2] + add r0, r6, r4 + add r4, r4, #1 + orr r0, r1 + strh r0, [r3, r2] +_02243DB4: + cmp r4, #8 + blt _02243DA0 + ldr r0, [sp, #4] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #4] +_02243DC0: + ldr r0, [sp, #4] + cmp r0, #4 + blt _02243D9C +_02243DC6: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_02243DCC: + ldr r0, [sp, #8] + cmp r0, #4 + blt _02243D64 + ldr r0, [sp] + mov r1, #0x11 + ldrsb r1, [r0, r1] + cmp r1, #0 + ble _02243E2E + ldrb r0, [r0, #0x12] + cmp r0, #0 + bne _02243E2E + mov r0, #5 + sub r1, r0, r1 + ldr r0, _02243E90 ; =0x02246738 + mov r7, #0x3f + ldrsb r0, [r0, r1] + lsl r7, r7, #0xa + mov r6, #0x1d + add r0, r0, #3 + lsl r1, r0, #6 + mov r0, ip + add r3, r0, r1 + mov r0, #0 + mov r1, #2 + str r0, [sp, #4] + lsl r1, r1, #8 + b _02243E28 +_02243E02: + ldr r0, [sp, #4] + ldr r5, [sp, #4] + lsl r4, r0, #1 + ldrh r0, [r3, r4] + lsl r5, r5, #0x1d + and r0, r7 + strh r0, [r3, r4] + ldr r0, [sp, #4] + ldrh r2, [r3, r4] + lsr r0, r0, #0x1f + sub r5, r5, r0 + ror r5, r6 + add r0, r0, r5 + add r0, r0, r1 + orr r0, r2 + strh r0, [r3, r4] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_02243E28: + ldr r0, [sp, #4] + cmp r0, #0x20 + blt _02243E02 +_02243E2E: + ldr r0, [sp] + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldr r0, [sp] + ldrb r0, [r0, #0x12] + add r1, r0, #1 + ldr r0, [sp] + strb r1, [r0, #0x12] + ldrb r0, [r0, #0x12] + cmp r0, #0xc + blo _02243E8C + ldr r1, [sp] + mov r0, #0 + mov r2, #0x11 + strb r0, [r1, #0x12] + ldrsb r1, [r1, r2] + add r3, r1, #1 + ldr r1, [sp] + strb r3, [r1, #0x11] + strb r0, [r1, #0x14] + add r0, r1, #0 + ldrsb r0, [r0, r2] + cmp r0, #5 + blo _02243E8C + add r0, r1, #0 + ldrb r0, [r0, #0x10] + add r1, r0, #1 + ldr r0, [sp] + add sp, #0xc + strb r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_02243E72: + add r0, r1, #0 + mov r2, #0 + ldr r0, [r0, #0xc] + add r1, r1, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + ldr r0, [sp] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 +_02243E8C: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243E90: .word 0x02246738 +_02243E94: .word 0x02246740 + + thumb_func_start MOD12_02243E98 +MOD12_02243E98: ; 0x02243E98 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243EAC +MOD12_02243EAC: ; 0x02243EAC + push {r4, lr} + ldr r3, _02243EC0 ; =0x0000127C + mov r4, #1 + strb r4, [r1, r3] + add r1, r2, #0 + mov r2, #0 + add r3, r2, #0 + bl MOD12_02240FB0 + pop {r4, pc} + .align 2, 0 +_02243EC0: .word 0x0000127C + + thumb_func_start MOD12_02243EC4 +MOD12_02243EC4: ; 0x02243EC4 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02243ED8 +MOD12_02243ED8: ; 0x02243ED8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + mov r0, #0x18 + mov r1, #0x20 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + ldr r2, _02243F38 ; =0x00007530 + str r0, [r4] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] + ldrb r0, [r5] + strb r0, [r4, #0x11] + ldrh r0, [r5, #8] + strh r0, [r4, #0x14] + ldrh r0, [r5, #0xa] + strh r0, [r4, #0x16] + ldrh r0, [r5, #0xc] + strh r0, [r4, #0x18] + ldrb r0, [r5, #0xe] + strb r0, [r4, #0x1a] + ldrb r0, [r5, #0x11] + strb r0, [r4, #0x1d] + ldrb r0, [r5, #0x10] + strb r0, [r4, #0x1c] + ldrb r0, [r5, #0xf] + strb r0, [r4, #0x1b] + ldr r0, _02243F3C ; =MOD12_02243F40 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243F38: .word 0x00007530 +_02243F3C: .word MOD12_02243F40 + + thumb_func_start MOD12_02243F40 +MOD12_02243F40: ; 0x02243F40 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02243F56 + cmp r0, #1 + beq _02243F94 + cmp r0, #2 + beq _02243FA6 + b _02243FDE +_02243F56: + ldrb r0, [r4, #0x1a] + cmp r0, #0 + beq _02243F8E + ldrb r0, [r4, #0x1d] + cmp r0, #0 + bne _02243F7A + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + add r2, r1, #0 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 +_02243F7A: + ldrb r1, [r4, #0x1a] + add r2, r4, #0 + ldr r0, [r4] + add r2, #0x14 + bl MOD12_02242678 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243F8E: + mov r0, #0x64 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243F94: + ldr r0, [r4] + bl MOD12_022426AC + cmp r0, #0 + bne _02243FF6 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FA6: + ldrb r0, [r4, #0x12] + add r0, r0, #1 + strb r0, [r4, #0x12] + ldrb r0, [r4, #0x1c] + cmp r0, #1 + bne _02243FBA + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FBA: + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x1b] + cmp r1, r0 + blo _02243FF6 + ldr r0, [r4] + mov r1, #1 + add r0, #0x34 + bl FUN_0200D0E0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x30] + bl FUN_0201AC68 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02243FDE: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02243FF6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_02243FF8 +MOD12_02243FF8: ; 0x02243FF8 + push {r3, lr} + mov r1, #0x9a + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224400C +MOD12_0224400C: ; 0x0224400C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xe7 + add r6, r1, #0 + lsl r0, r0, #2 + add r5, r2, #0 + add r2, r6, r0 + mov r1, #0x4d +_0224401C: + ldrh r0, [r3] + add r3, r3, #2 + strh r0, [r2] + add r2, r2, #2 + sub r1, r1, #1 + bne _0224401C + mov r0, #0x18 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r6, [r4] + ldrh r0, [r5] + mov r2, #0xfa + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + lsl r2, r2, #2 + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _0224405C ; =MOD12_02244060 + str r7, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224405C: .word MOD12_02244060 + + thumb_func_start MOD12_02244060 +MOD12_02244060: ; 0x02244060 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #6 + bls _02244070 + b _0224419A +_02244070: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224407C: ; jump table + .short _0224408A - _0224407C - 2 ; case 0 + .short _0224409E - _0224407C - 2 ; case 1 + .short _022440B2 - _0224407C - 2 ; case 2 + .short _022440DC - _0224407C - 2 ; case 3 + .short _022440EE - _0224407C - 2 ; case 4 + .short _0224415A - _0224407C - 2 ; case 5 + .short _02244182 - _0224407C - 2 ; case 6 +_0224408A: + ldr r1, [r4] + ldr r0, _022441B8 ; =0x00000848 + ldr r0, [r1, r0] + bl MOD12_022318DC + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224409E: + bl MOD12_022318F8 + cmp r0, #1 + beq _022440A8 + b _022441B2 +_022440A8: + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440B2: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, _022441BC ; =0x0000046F + mov r1, #0x1e + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440DC: + bl FUN_0200E308 + cmp r0, #1 + bne _022441B2 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_022440EE: + ldr r0, [r4] + bl MOD12_02242788 + ldr r0, [r4] + bl MOD12_022427DC + ldr r0, [r4] + bl MOD12_02242804 + ldr r0, [r4] + bl MOD12_02242A1C + ldr r0, [r4] + bl MOD12_022429E0 + ldr r0, [r4] + mov r1, #0 + add r0, #0x34 + mov r2, #1 + mov r3, #0xe + bl FUN_0200D0BC + ldr r0, [r4] + mov r1, #0xff + add r0, #0x34 + bl FUN_02019620 + ldr r0, [r4] + add r0, #0x34 + bl FUN_020191D0 + mov r6, #0 + add r5, r6, #0 + mov r7, #6 +_02244132: + ldr r0, [r4] + add r1, r7, #0 + add r0, r0, r5 + ldr r0, [r0, #0x18] + mov r2, #1 + bl FUN_02007558 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02244132 + ldr r1, [r4] + ldr r0, _022441C0 ; =0x0000127F + mov r2, #1 + strb r2, [r1, r0] + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224415A: + bl FUN_02005404 + cmp r0, #0 + bne _022441B2 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_02244182: + bl FUN_0200E308 + cmp r0, #1 + bne _022441B2 + ldr r0, _022441C4 ; =0x0000049D + bl FUN_0200521C + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, r6, r7, pc} +_0224419A: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022441B2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022441B8: .word 0x00000848 +_022441BC: .word 0x0000046F +_022441C0: .word 0x0000127F +_022441C4: .word 0x0000049D + + thumb_func_start MOD12_022441C8 +MOD12_022441C8: ; 0x022441C8 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022441DC +MOD12_022441DC: ; 0x022441DC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0x18 + str r1, [sp] + add r1, r0, #0 + add r6, r2, #0 + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp] + mov r2, #0 + str r0, [r4] + ldrh r0, [r6] + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + str r7, [r4, #0xc] +_02244210: + add r0, r5, r2 + ldrb r1, [r0, #3] + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #0x11] + cmp r2, #4 + blt _02244210 + ldr r0, _0224422C ; =MOD12_02244234 + ldr r2, _02244230 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224422C: .word MOD12_02244234 +_02244230: .word 0x00007530 + + thumb_func_start MOD12_02244234 +MOD12_02244234: ; 0x02244234 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #4 + bhi _022442A6 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224424C: ; jump table + .short _02244256 - _0224424C - 2 ; case 0 + .short _0224425C - _0224424C - 2 ; case 1 + .short _0224427A - _0224424C - 2 ; case 2 + .short _02244294 - _0224424C - 2 ; case 3 + .short _022442A6 - _0224424C - 2 ; case 4 +_02244256: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224425C: + ldrb r1, [r4, #0x15] + mov r0, #3 + sub r2, r0, r1 + add r1, r4, r2 + ldrb r1, [r1, #0x11] + ldr r0, [r4] + bl MOD12_02242FD0 + ldrb r0, [r4, #0x15] + add r0, r0, #1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224427A: + mov r0, #0x16 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x16] + ldrsh r0, [r4, r0] + cmp r0, #0x1e + ble _022442BE + mov r0, #0 + strh r0, [r4, #0x16] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_02244294: + ldrb r1, [r4, #0x15] + cmp r1, #4 + bhs _022442A0 + mov r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022442A0: + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022442A6: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_022442BE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD12_022442C0 +MOD12_022442C0: ; 0x022442C0 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_022442D4 +MOD12_022442D4: ; 0x022442D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r7, r1, #0 + add r1, r0, #0 + add r5, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x18 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02244318 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r6, [r4, #0xc] + ldrb r0, [r0, #2] + strb r0, [r4, #0x11] + ldr r0, _0224431C ; =MOD12_02244320 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244318: .word 0x00007530 +_0224431C: .word MOD12_02244320 + + thumb_func_start MOD12_02244320 +MOD12_02244320: ; 0x02244320 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #6 + bhi _02244414 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224433A: ; jump table + .short _02244348 - _0224433A - 2 ; case 0 + .short _02244370 - _0224433A - 2 ; case 1 + .short _0224437E - _0224433A - 2 ; case 2 + .short _02244396 - _0224433A - 2 ; case 3 + .short _022443A4 - _0224433A - 2 ; case 4 + .short _022443E6 - _0224433A - 2 ; case 5 + .short _022443F8 - _0224433A - 2 ; case 6 +_02244348: + ldr r0, [r4] + bl MOD12_02242CB0 + add r2, r4, #0 + ldr r0, [r4] + mov r1, #0 + add r2, #0x12 + bl MOD12_0224324C + ldr r0, _02244430 ; =0x0000049E + bl FUN_0200521C + ldr r0, _02244434 ; =0x000006E5 + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244370: + ldrb r1, [r4, #0x12] + cmp r1, #1 + bne _0224442C + add r0, r0, #1 + add sp, #0xc + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_0224437E: + ldrb r1, [r4, #0x11] + add r3, r4, #0 + ldr r0, [r4] + mov r2, #0 + add r3, #0x13 + bl MOD12_022433CC + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244396: + ldrb r1, [r4, #0x13] + cmp r1, #1 + bne _0224442C + add r0, r0, #1 + add sp, #0xc + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443A4: + ldr r0, [r4] + mov r2, #0 + ldr r1, [r0, #0x10] + ldrb r0, [r4, #0x11] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_020671BC + add r2, r0, #0 + mov r0, #0x7f + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r3, #0x18 + str r3, [sp, #8] + ldr r3, [r4] + lsl r2, r2, #0x10 + ldr r5, [r3] + ldrb r3, [r4, #0x11] + add r0, #0xdd + lsr r2, r2, #0x10 + lsl r3, r3, #2 + add r3, r5, r3 + ldr r0, [r3, r0] + add r3, r1, #0 + bl FUN_02069FB0 + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443E6: + bl FUN_02005670 + cmp r0, #0 + bne _0224442C + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_022443F8: + mov r0, #0x14 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x14] + ldrsh r0, [r4, r0] + cmp r0, #0x3c + ble _0224442C + mov r0, #0 + strh r0, [r4, #0x14] + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r4, r5, pc} +_02244414: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224442C: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02244430: .word 0x0000049E +_02244434: .word 0x000006E5 + + thumb_func_start MOD12_02244438 +MOD12_02244438: ; 0x02244438 + push {r3, lr} + mov r1, #0x12 + lsl r2, r2, #0x10 + str r1, [sp] + mov r1, #0xff + lsr r2, r2, #0x10 + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_0224444C +MOD12_0224444C: ; 0x0224444C + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r5, r1, #0 + mov r0, #0x18 + mov r1, #0x24 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x24 + bl MI_CpuFill8 + str r5, [r4] + ldrh r0, [r6] + strh r0, [r4, #4] + ldrh r0, [r6, #2] + strh r0, [r4, #6] + ldrh r0, [r6, #4] + strh r0, [r4, #8] + ldrh r0, [r6, #6] + strh r0, [r4, #0xa] + ldr r0, [sp] + str r0, [r4, #0xc] + ldrb r0, [r7, #7] + strb r0, [r4, #0x11] + ldrb r0, [r7, #7] + cmp r0, #0 + beq _02244492 + cmp r0, #1 + beq _022444A8 + cmp r0, #2 + beq _022444BE + b _022444D4 +_02244492: + ldr r0, _022444E4 ; =0x0000041E + mov r2, #0 + add r3, r4, #0 +_02244498: + ldrsh r1, [r5, r0] + add r2, r2, #1 + add r5, r5, #2 + strh r1, [r3, #0x14] + add r3, r3, #2 + cmp r2, #4 + blt _02244498 + b _022444D8 +_022444A8: + ldr r0, _022444E8 ; =0x00000426 + mov r3, #0 + add r2, r4, #0 +_022444AE: + ldrsh r1, [r5, r0] + add r3, r3, #1 + add r5, r5, #2 + strh r1, [r2, #0x14] + add r2, r2, #2 + cmp r3, #4 + blt _022444AE + b _022444D8 +_022444BE: + ldr r0, _022444EC ; =0x0000042E + mov r3, #0 + add r2, r4, #0 +_022444C4: + ldrsh r1, [r5, r0] + add r3, r3, #1 + add r5, r5, #2 + strh r1, [r2, #0x14] + add r2, r2, #2 + cmp r3, #4 + blt _022444C4 + b _022444D8 +_022444D4: + bl ErrorHandling +_022444D8: + ldr r0, _022444F0 ; =MOD12_022444F8 + ldr r2, _022444F4 ; =0x00007530 + add r1, r4, #0 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022444E4: .word 0x0000041E +_022444E8: .word 0x00000426 +_022444EC: .word 0x0000042E +_022444F0: .word MOD12_022444F8 +_022444F4: .word 0x00007530 + + thumb_func_start MOD12_022444F8 +MOD12_022444F8: ; 0x022444F8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #5 + bhi _022445E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02244510: ; jump table + .short _0224451C - _02244510 - 2 ; case 0 + .short _0224452A - _02244510 - 2 ; case 1 + .short _02244544 - _02244510 - 2 ; case 2 + .short _02244566 - _02244510 - 2 ; case 3 + .short _022445BC - _02244510 - 2 ; case 4 + .short _022445E8 - _02244510 - 2 ; case 5 +_0224451C: + ldr r0, _02244604 ; =0x000006FA + bl FUN_020054C8 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_0224452A: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x2d + ble _02244600 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_02244544: + mov r2, #0 + add r3, r4, #0 + mov r0, #0x14 +_0224454A: + ldrsh r1, [r3, r0] + cmp r1, #0 + ble _02244558 + ldr r0, _02244608 ; =0x000006FB + bl FUN_020054C8 + b _02244560 +_02244558: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #4 + blt _0224454A +_02244560: + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] +_02244566: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #1 + blt _02244600 + mov r6, #0 + strh r6, [r4, #0x12] + add r5, r6, #0 + mov r7, #0x14 +_0224457C: + ldr r0, [r4] + mov r2, #0x1c + add r1, r0, r5 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r1, [r1, r0] + lsl r0, r1, #1 + add r0, r4, r0 + ldrsh r2, [r0, r2] + add r2, r2, #1 + strh r2, [r0, #0x1c] + mov r2, #0x1c + ldrsh r3, [r0, r2] + ldrsh r0, [r0, r7] + cmp r3, r0 + bgt _022445A8 + str r5, [sp] + ldrb r2, [r4, #0x11] + ldr r0, [r4] + bl MOD12_022430A8 + b _022445AA +_022445A8: + add r6, r6, #1 +_022445AA: + add r5, r5, #1 + cmp r5, #4 + blt _0224457C + cmp r6, #4 + blt _02244600 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022445BC: + mov r3, #0 + add r2, r4, #0 + mov r0, #0x14 +_022445C2: + ldrsh r1, [r2, r0] + cmp r1, #0 + ble _022445D0 + ldr r0, _0224460C ; =0x000006F9 + bl FUN_020054C8 + b _022445D8 +_022445D0: + add r3, r3, #1 + add r2, r2, #2 + cmp r3, #4 + blt _022445C2 +_022445D8: + ldr r0, _02244604 ; =0x000006FA + mov r1, #0 + bl FUN_020054F0 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, r6, r7, pc} +_022445E8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02244600: + pop {r3, r4, r5, r6, r7, pc} + nop +_02244604: .word 0x000006FA +_02244608: .word 0x000006FB +_0224460C: .word 0x000006F9 + + thumb_func_start MOD12_02244610 +MOD12_02244610: ; 0x02244610 + push {r3, lr} + lsl r2, r2, #0x10 + mov r3, #0 + mov r1, #0xff + lsr r2, r2, #0x10 + str r3, [sp] + bl MOD12_02240F3C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02244624 +MOD12_02244624: ; 0x02244624 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #0x18 + mov r1, #0x14 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r7, [r4] + ldrh r0, [r5] + ldr r2, _02244660 ; =0x00007530 + add r1, r4, #0 + strh r0, [r4, #4] + ldrh r0, [r5, #2] + strh r0, [r4, #6] + ldrh r0, [r5, #4] + strh r0, [r4, #8] + ldrh r0, [r5, #6] + strh r0, [r4, #0xa] + ldr r0, _02244664 ; =MOD12_02244668 + str r6, [r4, #0xc] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244660: .word 0x00007530 +_02244664: .word MOD12_02244668 + + thumb_func_start MOD12_02244668 +MOD12_02244668: ; 0x02244668 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0224467E + cmp r0, #1 + beq _0224469E + cmp r0, #2 + beq _022446CE + b _022446E8 +_0224467E: + mov r0, #3 + str r0, [sp] + mov r0, #0x5a + mov r1, #0x10 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _02244704 ; =0x0000049E + mov r1, #0x5a + bl FUN_02005350 + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_0224469E: + mov r0, #3 + bl FUN_0200A344 + cmp r0, #1 + bne _02244700 + bl FUN_02005404 + cmp r0, #0 + bne _02244700 + ldr r0, [r4] + bl MOD12_02242CEC + ldr r0, _02244708 ; =0x0400006C + mov r1, #0x10 + bl GXx_SetMasterBrightness_ + ldr r0, _0224470C ; =0x0400106C + mov r1, #0x10 + bl GXx_SetMasterBrightness_ + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022446CE: + mov r0, #0x12 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #0x12] + ldrsh r0, [r4, r0] + cmp r0, #0x3c + ble _02244700 + mov r0, #0 + strh r0, [r4, #0x12] + ldrb r0, [r4, #0x10] + add r0, r0, #1 + strb r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_022446E8: + mov r2, #0 + ldr r0, [r4, #0xc] + add r1, r4, #4 + add r3, r2, #0 + bl MOD12_02240FB0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_02244700: + pop {r3, r4, r5, pc} + nop +_02244704: .word 0x0000049E +_02244708: .word 0x0400006C +_0224470C: .word 0x0400106C + + thumb_func_start MOD12_02244710 +MOD12_02244710: ; 0x02244710 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + add r7, r1, #0 + add r4, r6, #0 +_0224471A: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02027A14 + cmp r0, #1 + bne _02244732 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02027BDC + ldrb r0, [r7, r0] + add r6, r6, r0 +_02244732: + add r4, r4, #1 + cmp r4, #0x14 + blt _0224471A + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD12_0224473C +MOD12_0224473C: ; 0x0224473C + push {r3, lr} + add r3, r0, #0 + mov r2, #0 + mov r0, #0x5a + add r1, r1, #3 + str r2, [sp] + bl FUN_02006C98 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD12_02244750 +MOD12_02244750: ; 0x02244750 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r0, #0x2c + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + add r4, r1, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r2, #0 + mov r1, #3 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_0200C0DC + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0xba + str r6, [sp, #8] + bl FUN_0200C00C + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbb + bl FUN_0200C124 + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #0x30] + add r1, r4, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0xbc + bl FUN_0200C13C + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_022447C0 +MOD12_022447C0: ; 0x022447C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_0200C358 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200C368 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0200C378 + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl FUN_0200C388 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_022447E8 +MOD12_022447E8: ; 0x022447E8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r3, #0 + mov ip, r2 + ldr r3, _02244860 ; =0x022467DC + add r6, r0, #0 + add r7, r1, #0 + add r2, sp, #4 + mov r4, #6 +_022447FA: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r4, r4, #1 + bne _022447FA + ldr r0, [r3] + mov r1, #0x18 + str r0, [r2] + ldr r0, [sp, #0x50] + str r5, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x54] + str r0, [sp, #0x20] + ldr r0, [sp, #0x58] + str r0, [sp, #0x24] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x60] + str r0, [sp, #0x30] + mov r0, ip + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + str r0, [sp] + bl MI_CpuFill8 + ldr r5, [sp] + mov r4, #0 +_02244832: + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #4 + bl FUN_0200C154 + mov r1, #0 + stmia r5!, {r0} + bl FUN_0200C644 + add r4, r4, #1 + cmp r4, #5 + blt _02244832 + ldr r0, _02244864 ; =MOD12_02244958 + ldr r1, [sp] + ldr r2, _02244868 ; =0x00009C40 + bl FUN_0200CA44 + ldr r1, [sp] + str r0, [r1, #0x14] + add r0, r1, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244860: .word 0x022467DC +_02244864: .word MOD12_02244958 +_02244868: .word 0x00009C40 + + thumb_func_start MOD12_0224486C +MOD12_0224486C: ; 0x0224486C + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02244874: + ldr r0, [r5] + bl FUN_0200C3DC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02244874 + ldr r0, [r6, #0x14] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02244890 +MOD12_02244890: ; 0x02244890 + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r4, [sp, #0x24] + add r6, r3, #0 + ldr r0, [r5] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r2, [sp, #0x10] + lsl r1, r6, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #4] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #8] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r5, #0xc] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + add r3, r4, #0 + bl FUN_0200C750 + ldr r0, [r5] + mov r1, #0 + bl FUN_0200C5C0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_0200C5C0 + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_0200C5C0 + ldr r0, [r5, #0xc] + mov r1, #3 + bl FUN_0200C5C0 + mov r4, #0 + mov r6, #1 +_02244906: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02244906 + pop {r4, r5, r6, pc} + + thumb_func_start MOD12_02244918 +MOD12_02244918: ; 0x02244918 + push {r4, lr} + sub sp, #0x18 + add r4, r2, #0 + str r3, [sp] + ldr r2, [sp, #0x20] + str r1, [sp, #4] + str r2, [sp, #8] + str r4, [sp, #0xc] + str r2, [sp, #0x10] + ldr r2, [sp, #0x24] + str r2, [sp, #0x14] + add r2, r3, #0 + add r3, r4, #0 + bl MOD12_02244890 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD12_0224493C +MOD12_0224493C: ; 0x0224493C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_02244944: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_0200C644 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02244944 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD12_02244958 +MOD12_02244958: ; 0x02244958 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r0, [r6] + bl FUN_0200C658 + cmp r0, #0 + beq _02244988 + mov r4, #0 + add r5, r6, #0 +_0224496A: + ldr r0, [r5] + bl FUN_0200C5A8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224496A + ldr r0, [r6, #0x10] + bl FUN_0200C658 + cmp r0, #1 + bne _02244988 + ldr r0, [r6, #0x10] + bl FUN_0200C5A8 +_02244988: + pop {r4, r5, r6, pc} + + .section .data + ; 0x0224498C + .incbin "baserom.nds", 0x1F71CC, 0x1E94 diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s new file mode 100644 index 00000000..edb71ead --- /dev/null +++ b/arm9/modules/13/asm/module_13_arm1.s @@ -0,0 +1,6051 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD13_02211EA4 +MOD13_02211EA4: ; 0x02211EA4 + stmdb sp!, {lr} + sub sp, sp, #4 + strh r1, [sp] + add r2, sp, #0 + mov r1, #0xd + bl MOD13_022130E8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start MOD13_02211EC8 +MOD13_02211EC8: ; 0x02211EC8 + cmp r0, #1 + blo _02211EDC + cmp r0, #0xf + movls r0, #1 + bxls lr +_02211EDC: + mov r0, #0 + bx lr + + arm_func_start MOD13_02211EE4 +MOD13_02211EE4: ; 0x02211EE4 + cmp r1, r0 + movls r1, r0 + mov r0, r1 + bx lr + + arm_func_start MOD13_02211EF4 +MOD13_02211EF4: ; 0x02211EF4 + ldr r1, _02211F6C ; =0x02240A40 + mov r2, #1 + mov r2, r2, lsl r0 + ldr r1, [r1] + ands r1, r1, r2 + bxeq lr + ldr r2, _02211F70 ; =0x02240AFC + ldr r1, _02211F74 ; =0x000005D4 + ldr r2, [r2] + mla r3, r0, r1, r2 + add r0, r3, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + bxeq lr + add r0, r3, #0x1d00 + ldrh r1, [r0, #0x4c] + cmp r1, #0 + bxeq lr + ldrh r2, [r0, #0x48] + ldrh ip, [r0, #0x4a] + cmp ip, r2 + bhi _02211F60 + add r1, ip, #2 + cmp r2, r1 + addle r1, r2, #1 + strleh r1, [r0, #0x48] + bxle lr +_02211F60: + add r0, r3, #0x1d00 + strh ip, [r0, #0x48] + bx lr + .align 2, 0 +_02211F6C: .word 0x02240A40 +_02211F70: .word 0x02240AFC +_02211F74: .word 0x000005D4 + + arm_func_start MOD13_02211F78 +MOD13_02211F78: ; 0x02211F78 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r0, #0 + mov r2, #0xa + bl MIi_CpuClear16 + mov ip, #1 + ldr r0, _022120FC ; =0x02240AFC + mov r4, ip + ldr r3, [r0] + mov r5, ip + mov r0, ip + mov r1, ip + mov r2, ip +_02211FB0: + sub lr, ip, #1 + add lr, r3, lr, lsl #2 + add lr, lr, #0x1000 + ldr lr, [lr, #0x4e8] + cmp lr, #0xb + addls pc, pc, lr, lsl #2 + b _02212048 +_02211FCC: ; jump table + b _02212048 ; case 0 + b _02212048 ; case 1 + b _02211FFC ; case 2 + b _02212048 ; case 3 + b _0221201C ; case 4 + b _0221200C ; case 5 + b _02212048 ; case 6 + b _02212048 ; case 7 + b _0221202C ; case 8 + b _02212048 ; case 9 + b _02212048 ; case 10 + b _0221203C ; case 11 +_02211FFC: + ldrh lr, [sp] + orr lr, lr, r2, lsl ip + strh lr, [sp] + b _02212048 +_0221200C: + ldrh lr, [sp, #2] + orr lr, lr, r1, lsl ip + strh lr, [sp, #2] + b _02212048 +_0221201C: + ldrh lr, [sp, #4] + orr lr, lr, r0, lsl ip + strh lr, [sp, #4] + b _02212048 +_0221202C: + ldrh lr, [sp, #6] + orr lr, lr, r5, lsl ip + strh lr, [sp, #6] + b _02212048 +_0221203C: + ldrh lr, [sp, #8] + orr lr, lr, r4, lsl ip + strh lr, [sp, #8] +_02212048: + add ip, ip, #1 + mov ip, ip, lsl #0x10 + mov ip, ip, lsr #0x10 + cmp ip, #0xf + bls _02211FB0 + ldrh r1, [sp, #6] + cmp r1, #0 + beq _02212074 + mov r0, #5 + bl MOD13_02212614 + b _022120D4 +_02212074: + ldrh r1, [sp] + cmp r1, #0 + beq _0221208C + mov r0, #1 + bl MOD13_02212614 + b _022120D4 +_0221208C: + ldrh r1, [sp, #8] + cmp r1, #0 + beq _022120A4 + mov r0, #6 + bl MOD13_02212614 + b _022120D4 +_022120A4: + ldrh r1, [sp, #4] + cmp r1, #0 + beq _022120BC + mov r0, #2 + bl MOD13_02212614 + b _022120D4 +_022120BC: + ldrh r0, [sp, #2] + cmp r0, #0 + beq _022120D0 + bl MOD13_02212464 + b _022120D4 +_022120D0: + bl MOD13_02212104 +_022120D4: + cmp r0, #0x15 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, lr} + bxne lr + ldr r1, _02212100 ; =0x0000FFFF + mov r0, #0 + bl MOD13_02212614 + add sp, sp, #0xc + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_022120FC: .word 0x02240AFC +_02212100: .word 0x0000FFFF + + arm_func_start MOD13_02212104 +MOD13_02212104: ; 0x02212104 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + ldr r5, _022123B0 ; =0x02240AFC + ldr r0, [r5] + add r0, r0, #0x1000 + ldrb r0, [r0, #0x524] + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r4, _022123B4 ; =0x000005D4 + mov r1, #0 +_02212138: + ldr r0, [r5] + add r3, r0, #0x1000 + ldrb r0, [r3, #0x525] + add r0, r0, #1 + mov r2, r0, lsr #0x1f + rsb r0, r2, r0, lsl #28 + add r0, r2, r0, ror #28 + strb r0, [r3, #0x525] + ldr r2, [r5] + add r0, r2, #0x1000 + ldrb r0, [r0, #0x525] + mla r3, r0, r4, r2 + add r2, r3, #0x1000 + ldrb r2, [r2, #0xd52] + cmp r2, #0 + beq _02212188 + add r2, r3, #0x1d00 + ldrh r2, [r2, #0x4c] + cmp r2, #0 + bne _02212198 +_02212188: + add r1, r1, #1 + and r1, r1, #0xff + cmp r1, #0x10 + blo _02212138 +_02212198: + cmp r1, #0x10 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + bl MOD13_02211EF4 + ldr r0, _022123B0 ; =0x02240AFC + ldr r1, _022123B4 ; =0x000005D4 + ldr r6, [r0] + ldr r2, _022123B8 ; =0x00001D2C + add r0, r6, #0x1000 + ldrb r0, [r0, #0x525] + ldr r3, _022123BC ; =0x00001788 + add r4, r6, r2 + mul r5, r0, r1 + add r0, r6, r5 + add r0, r0, #0x1d00 + ldrh r2, [r0, #0x48] + add r3, r6, r3 + add r0, sp, #8 + add r1, r4, r5 + add r3, r3, r5 + bl MOD13_02213558 + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r0, _022123B0 ; =0x02240AFC + mov r2, #4 + ldr r1, [r0] + strb r2, [sp] + add r2, r1, #0x1000 + ldrb r4, [r2, #0x525] + ldr r3, _022123B4 ; =0x000005D4 + add r0, sp, #0 + strh r4, [sp, #2] + ldrb r4, [r2, #0x525] + mla r2, r4, r3, r1 + add r2, r2, #0x1d00 + ldrh r2, [r2, #0x48] + strh r2, [sp, #4] + bl MOD13_022171AC + ldr r1, _022123B0 ; =0x02240AFC + ldr r4, _022123B4 ; =0x000005D4 + ldr r5, [r1] + ldrb r1, [sp, #0x14] + add r2, r5, #0x1000 + ldrb r2, [r2, #0x525] + ldr r6, [sp, #0x10] + ldr r3, [sp, #0xc] + mla r5, r2, r4, r5 + add r2, r5, r1, lsl #2 + add r4, r5, #0x1000 + add r2, r2, #0x1000 + ldr r5, [r4, #0xd58] + ldr r2, [r2, #0xd2c] + ldr r1, [r5, r1, lsl #2] + sub r2, r6, r2 + add r7, r2, r1 + ldr r6, [r4, #0xd54] + mov r2, r0 + mov r0, r6 + mov r1, r7 + bl MOD13_02216A68 + cmp r0, #0 + bne _02212378 + ldr r1, _022123B0 ; =0x02240AFC + ldr r0, _022123C0 ; =0x00007CE0 + ldr r1, [r1] + add r5, r1, r0 + mov r0, r5 + bl MOD13_02216D78 + cmp r0, #0 + bne _02212368 + ldr r0, [r6] + cmp r0, #0 + subne r0, r0, #1 + strne r0, [r6] + bne _02212368 + add lr, r6, #0x30 + mov r4, #0 + mov ip, r4 + mov r3, lr +_022122E8: + add r0, lr, ip, lsl #4 + ldr r0, [r0, #0xc] + mov r2, ip, lsl #4 + cmp r0, #2 + bne _02212318 + cmp r4, #0 + beq _02212314 + ldr r1, [r4] + ldr r0, [lr, r2] + cmp r1, r0 + bls _02212318 +_02212314: + mov r4, r3 +_02212318: + add ip, ip, #1 + cmp ip, #4 + add r3, r3, #0x10 + blt _022122E8 + cmp r4, #0 + bne _02212334 + bl OS_Terminate +_02212334: + mov r0, #2 + str r0, [r6] + mov r0, #1 + str r0, [r4, #0xc] + bic r0, r7, #0x1f + str r0, [r4] + str r4, [r5, #0x10] + ldr r1, _022123C4 ; =MOD13_022123C8 + mov r0, r5 + mov r2, #0 + mov r3, #4 + str r6, [r5, #0x14] + bl MOD13_02216BE8 +_02212368: + add sp, sp, #0x1c + mov r0, #0x15 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02212378: + ldr r0, _022123B0 ; =0x02240AFC + ldr r4, [sp, #0xc] + ldr r2, [r0] + ldr r1, _022123B4 ; =0x000005D4 + add r0, r2, #0x1000 + ldrb r3, [r0, #0x525] + add r0, r4, #6 + mla r1, r3, r1, r2 + add r1, r1, #0x1d00 + ldrh r1, [r1, #0x4c] + bl MOD13_022141E8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_022123B0: .word 0x02240AFC +_022123B4: .word 0x000005D4 +_022123B8: .word 0x00001D2C +_022123BC: .word 0x00001788 +_022123C0: .word 0x00007CE0 +_022123C4: .word MOD13_022123C8 + + arm_func_start MOD13_022123C8 +MOD13_022123C8: ; 0x022123C8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + ldr r5, [r0, #0x14] + ldr r4, [r0, #0x10] + add r0, sp, #4 + bl FS_InitFile + ldr r1, [r5, #0x14] + add r0, r5, #0x10 + ldr r5, [r4] + bl FS_FindArchive + mvn r1, #0 + str r1, [sp] + ldr r2, [r4, #4] + mov r1, r0 + add r3, r5, r2 + add r0, sp, #4 + mov r2, r5 + bl FS_OpenFileDirect + cmp r0, #0 + beq _02212440 + ldr r1, [r4, #8] + ldr r2, [r4, #4] + add r0, sp, #4 + bl FS_ReadFile + ldr r1, [r4, #4] + cmp r1, r0 + moveq r0, #2 + streq r0, [r4, #0xc] + add r0, sp, #4 + bl FS_CloseFile +_02212440: + ldr r0, [r4, #0xc] + cmp r0, #2 + movne r0, #0 + strne r0, [r4] + movne r0, #2 + strne r0, [r4, #0xc] + add sp, sp, #0x4c + ldmia sp!, {r4, r5, lr} + bx lr + + arm_func_start MOD13_02212464 +MOD13_02212464: ; 0x02212464 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x1c + mov r4, #0 + add r0, sp, #6 + mov r1, r4 + mov r2, #0x10 + mvn r5, #0 + bl MI_CpuFill8 + ldr r1, _02212604 ; =0x02240AFC + mov r0, #1 + ldr r1, [r1] + add ip, sp, #6 +_02212494: + sub r3, r0, #1 + add r2, r1, r3, lsl #2 + add r2, r2, #0x1000 + ldr r2, [r2, #0x4e8] + cmp r2, #5 + bne _022124C4 + add r2, r1, r3 + add r2, r2, #0x1500 + ldrsb r3, [r2, #0x26] + ldrb r2, [ip, r3] + add r2, r2, #1 + strb r2, [ip, r3] +_022124C4: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #0xf + bls _02212494 + ldr r2, _02212608 ; =0x0223F780 + mov r0, #0 + ldrb r3, [r2] + add lr, sp, #6 + ldr ip, _0221260C ; =0x000005D4 +_022124EC: + add r2, r3, #1 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #28 + add r2, r3, r2, ror #28 + and r3, r2, #0xff + mla r2, r3, ip, r1 + add r2, r2, #0x1000 + ldrb r2, [r2, #0xd52] + cmp r2, #0 + beq _02212528 + ldrb r2, [lr, r3] + cmp r2, #0 + movne r0, r3, lsl #0x18 + movne r5, r0, asr #0x18 + bne _02212538 +_02212528: + add r0, r0, #1 + and r0, r0, #0xff + cmp r0, #0x10 + blo _022124EC +_02212538: + mvn r0, #0 + cmp r5, r0 + addeq sp, sp, #0x1c + moveq r0, #0x15 + ldmeqia sp!, {r4, r5, lr} + bxeq lr + ldr r2, _02212608 ; =0x0223F780 + mov r0, #1 + strb r5, [r2] + mov r3, r0 +_02212560: + sub ip, r0, #1 + add r2, r1, ip, lsl #2 + add r2, r2, #0x1000 + ldr r2, [r2, #0x4e8] + cmp r2, #5 + bne _02212594 + add r2, r1, ip + add r2, r2, #0x1500 + ldrsb r2, [r2, #0x26] + cmp r5, r2 + orreq r2, r4, r3, lsl r0 + moveq r2, r2, lsl #0x10 + moveq r4, r2, lsr #0x10 +_02212594: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #0xf + bls _02212560 + mov r2, #3 + add r0, sp, #0 + strb r2, [sp] + strh r5, [sp, #2] + bl MOD13_022171AC + movs r1, r0 + beq _022125E4 + ldr r2, _02212604 ; =0x02240AFC + ldr r0, _02212610 ; =0x00001788 + ldr r3, [r2] + ldr r2, _0221260C ; =0x000005D4 + add r0, r3, r0 + mla r0, r5, r2, r0 + mov r2, #0xe4 + bl MI_CpuCopy8 +_022125E4: + ldr r0, _02212604 ; =0x02240AFC + mov r1, r4 + ldr r2, [r0] + mov r0, #0xea + bl MOD13_022141E8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02212604: .word 0x02240AFC +_02212608: .word 0x0223F780 +_0221260C: .word 0x000005D4 +_02212610: .word 0x00001788 + + arm_func_start MOD13_02212614 +MOD13_02212614: ; 0x02212614 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _02212654 ; =0x02240AFC + mov r4, r1 + ldr r1, [r2] + strb r0, [sp] + add r0, sp, #0 + bl MOD13_022171AC + ldr r0, _02212654 ; =0x02240AFC + mov r1, r4 + ldr r2, [r0] + mov r0, #6 + bl MOD13_022141E8 + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02212654: .word 0x02240AFC + + arm_func_start MOD13_02212658 +MOD13_02212658: ; 0x02212658 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, #0 + ldr r2, _02212700 ; =0x02240AFC + mov r3, r6 + ldr r1, _02212704 ; =0x000005D4 +_02212670: + ldr r0, [r2] + mla r5, r6, r1, r0 + add r0, r5, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + addne r0, r5, #0x1d00 + strneh r3, [r0, #0x4a] + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0x10 + blo _02212670 + ldr r0, _02212708 ; =0x02240A40 + mov r1, #0 + str r1, [r0] + mov r6, #1 + ldr r5, _0221270C ; =0x0000FFFF +_022126B4: + mov r0, r4 + mov r1, r6 + bl WM_ReadMPData + cmp r0, #0 + beq _022126E4 + ldrh r1, [r0] + cmp r1, r5 + beq _022126E4 + cmp r1, #0 + beq _022126E4 + mov r1, r6 + bl MOD13_02212710 +_022126E4: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0xf + bls _022126B4 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02212700: .word 0x02240AFC +_02212704: .word 0x000005D4 +_02212708: .word 0x02240A40 +_0221270C: .word 0x0000FFFF + + arm_func_start MOD13_02212710 +MOD13_02212710: ; 0x02212710 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x38 + movs r7, r1 + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r7, #0xf + addhi sp, sp, #0x38 + ldmhiia sp!, {r4, r5, r6, r7, r8, lr} + bxhi lr + add r1, sp, #0 + mov r2, r7 + add r0, r0, #0xa + bl MOD13_02217070 + ldr r3, _02212C14 ; =0x02240AFC + ldrb r8, [sp] + ldr r2, [r3] + sub r4, r7, #1 + add r1, r2, r4, lsl #2 + add r1, r1, #0x1000 + ldr r6, [r1, #0x4e8] + mov r5, r0 + cmp r8, #0xb + addls pc, pc, r8, lsl #2 + b _02212C08 +_02212774: ; jump table + b _02212C08 ; case 0 + b _02212C08 ; case 1 + b _02212C08 ; case 2 + b _02212C08 ; case 3 + b _02212C08 ; case 4 + b _02212C08 ; case 5 + b _02212C08 ; case 6 + b _022127A4 ; case 7 + b _02212A30 ; case 8 + b _02212AEC ; case 9 + b _02212B68 ; case 10 + b _02212C08 ; case 11 +_022127A4: + cmp r6, #2 + bne _02212848 + cmp r5, #0 + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + add r1, sp, #0x14 + mov r2, #0x1d + bl MI_CpuCopy8 + ldr r3, _02212C14 ; =0x02240AFC + mov r0, r4 + ldr r1, [r3] + ldr r2, [sp, #0x14] + add r1, r1, r0, lsl #2 + add r1, r1, #0x1000 + str r2, [r1, #0x4a8] + ldr r1, [r3] + mov r2, #0x16 + add r1, r1, r0, lsl #1 + mul r8, r0, r2 + ldrh ip, [sp, #0x2e] + add r1, r1, #0x1400 + add r0, sp, #0x18 + strh ip, [r1, #0x8a] + ldr r1, [r3] + add r1, r1, #0x1340 + add r1, r1, r8 + bl MI_CpuCopy8 + ldr r0, _02212C14 ; =0x02240AFC + and r1, r7, #0xff + ldr r0, [r0] + and r2, r1, #0xf + add ip, r0, #0x1340 + ldrb r3, [ip, r8] + mov r0, r7 + mov r1, #0xa + bic r3, r3, #0xf0 + orr r2, r3, r2, lsl #4 + strb r2, [ip, r8] + add r2, sp, #0x18 + bl MOD13_02213124 +_02212848: + cmp r6, #0xa + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + ldrb r8, [r5, #0x1c] + mov r2, #0 + cmp r8, #0x10 + bhs _022128A4 + ldr r0, _02212C14 ; =0x02240AFC + ldr r1, _02212C18 ; =0x000005D4 + ldr r0, [r0] + mla r6, r8, r1, r0 + add r1, r6, #0x1000 + ldrb r3, [r1, #0xd52] + cmp r3, #0 + beq _022128A4 + add r3, r0, r4, lsl #2 + ldr r1, [r1, #0xd40] + add r3, r3, #0x1000 + ldr r5, [r3, #0x4a8] + ldr r3, [r1, #0x14] + cmp r5, r3 + beq _022128C0 +_022128A4: + ldr r0, _02212C14 ; =0x02240AFC + mov r1, #4 + ldr r0, [r0] + add r0, r0, r4, lsl #1 + add r0, r0, #0x1700 + strh r1, [r0, #0x54] + b _02212924 +_022128C0: + add r3, r6, #0x1d00 + ldrh r6, [r3, #0x4e] + mov ip, r2 + mov r5, #1 +_022128D0: + mov r3, r5, lsl ip + ands r3, r3, r6 + add r3, ip, #1 + addne r2, r2, #1 + and ip, r3, #0xff + andne r2, r2, #0xff + cmp ip, #0x10 + blo _022128D0 + ldrb r1, [r1, #0x18] + cmp r2, r1 + blo _02212924 + add r1, r0, r4, lsl #1 + add r3, r1, #0x1700 + mov r2, #0 + mov r0, r7 + mov r1, #0xb + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212924: + ldr r3, _02212C14 ; =0x02240AFC + ldr r2, [r3] + add r0, r2, r4, lsl #1 + add r4, r0, #0x1700 + ldrh r0, [r4, #0x54] + cmp r0, #3 + beq _02212954 + cmp r0, #4 + beq _02212A10 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212954: + add r0, r2, #0x1500 + mov r1, #1 + ldrh r0, [r0, #0x36] + mov r6, r1, lsl r7 + ands r0, r0, r6 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, #0x1000 + ldrb r2, [r0, #0x535] + ldr r1, _02212C18 ; =0x000005D4 + sub r5, r7, #1 + add r2, r2, #1 + strb r2, [r0, #0x535] + ldr r0, [r3] + mul r4, r8, r1 + add r1, r0, #0x1500 + ldrh ip, [r1, #0x36] + mov r0, r7 + mov r2, #0 + orr r7, ip, r6 + strh r7, [r1, #0x36] + ldr r7, [r3] + mov r1, #5 + add r7, r7, r5 + add r7, r7, #0x1000 + strb r8, [r7, #0x526] + ldr r7, [r3] + add r7, r7, r4 + add r7, r7, #0x1d00 + ldrh r8, [r7, #0x4e] + orr r8, r8, r6 + strh r8, [r7, #0x4e] + ldr r7, [r3] + add r4, r7, r4 + add r4, r4, #0x1d00 + ldrh r7, [r4, #0x50] + orr r6, r7, r6 + strh r6, [r4, #0x50] + ldr r3, [r3] + add r3, r3, r5, lsl #1 + add r3, r3, #0x1700 + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A10: + mov r2, #0 + mov r0, r7 + mov r1, #4 + strh r2, [r4, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A30: + cmp r6, #5 + bne _02212A54 + mov r0, r7 + mov r1, #0xe + mov r2, #0 + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212A54: + cmp r6, #0xe + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4, lsl #1 + add r0, r0, #0x1700 + ldrh r0, [r0, #0x54] + mov r5, r4, lsl #1 + cmp r0, #2 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r1, [r0, #0x526] + ldr r0, _02212C18 ; =0x000005D4 + mov r6, #1 + mul r4, r1, r0 + add r0, r2, r4 + add r1, r0, #0x1d00 + ldrh r8, [r1, #0x4c] + mov r2, #0 + mov r0, r7 + orr r6, r8, r6, lsl r7 + strh r6, [r1, #0x4c] + ldr r6, [r3] + mov r1, #6 + add r4, r6, r4 + add r4, r4, #0x1d00 + strh r2, [r4, #0x48] + ldr r3, [r3] + add r3, r3, r5 + add r3, r3, #0x1700 + strh r2, [r3, #0x54] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212AEC: + cmp r6, #6 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r5, [r0, #0x526] + cmp r5, #0xff + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, _02212C18 ; =0x000005D4 + ldrh r1, [sp, #2] + mul r4, r5, r0 + add r0, r2, r4 + add r0, r0, #0x1d00 + ldrh r0, [r0, #0x4a] + bl MOD13_02211EE4 + ldr r1, _02212C14 ; =0x02240AFC + ldr r2, _02212C1C ; =0x02240A40 + ldr r1, [r1] + mov r3, #1 + add r1, r1, r4 + add r1, r1, #0x1d00 + strh r0, [r1, #0x4a] + ldr r0, [r2] + add sp, sp, #0x38 + orr r0, r0, r3, lsl r5 + str r0, [r2] + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212B68: + cmp r6, #6 + bne _02212BC8 + add r0, r2, r4 + add r0, r0, #0x1000 + ldrb r3, [r0, #0x526] + cmp r3, #0xff + addeq sp, sp, #0x38 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, _02212C18 ; =0x000005D4 + mov r1, #1 + mla r0, r3, r0, r2 + add r3, r0, #0x1d00 + ldrh r2, [r3, #0x4c] + mvn r0, r1, lsl r7 + and r4, r2, r0 + mov r0, r7 + mov r1, #7 + mov r2, #0 + strh r4, [r3, #0x4c] + bl MOD13_02213124 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02212BC8: + cmp r6, #7 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r2, r4, lsl #1 + add r3, r0, #0x1700 + ldrh r0, [r3, #0x54] + cmp r0, #5 + addne sp, sp, #0x38 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + mov r2, #0 + mov r0, r7 + mov r1, #8 + strh r2, [r3, #0x54] + bl MOD13_02213124 +_02212C08: + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02212C14: .word 0x02240AFC +_02212C18: .word 0x000005D4 +_02212C1C: .word 0x02240A40 + + arm_func_start MOD13_02212C20 +MOD13_02212C20: ; 0x02212C20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, r0 + mov r4, r1 + cmp r6, #0x19 + bgt _02212C84 + cmp r6, #0x19 + bge _02212ECC + cmp r6, #0x11 + bgt _02212C78 + cmp r6, #0x11 + bge _02213084 + cmp r6, #3 + bgt _02213084 + cmp r6, #0 + blt _02213084 + cmp r6, #0 + beq _02212CC0 + cmp r6, #1 + beq _02212CE4 + cmp r6, #3 + beq _02212EC0 + b _02213084 +_02212C78: + cmp r6, #0x15 + beq _02212CAC + b _02213084 +_02212C84: + cmp r6, #0xff + bgt _02212CA0 + cmp r6, #0xff + bge _02212F70 + cmp r6, #0x1c + beq _02212ED4 + b _02213084 +_02212CA0: + cmp r6, #0x100 + beq _02212FE0 + b _02213084 +_02212CAC: + mov r2, r4 + mov r0, #0 + mov r1, #1 + bl MOD13_02213124 + b _02213084 +_02212CC0: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02213084 + cmp r0, #0x10 + bhs _02213084 + mov r2, r4 + mov r1, #2 + bl MOD13_02213124 + b _02213084 +_02212CE4: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02213084 + cmp r0, #0x10 + bhs _02213084 + ldr r2, _022130D8 ; =0x02240AFC + sub r0, r0, #1 + ldr r3, [r2] + mov r1, #0 + add r0, r3, r0, lsl #1 + add r0, r0, #0x1400 + strh r1, [r0, #0x8a] + ldrh r3, [r4, #0x10] + ldr r5, [r2] + ldr r0, _022130DC ; =0x000014A8 + sub r2, r3, #1 + add r0, r5, r0 + add r0, r0, r2, lsl #2 + mov r2, #4 + bl MI_CpuFill8 + ldr r0, _022130D8 ; =0x02240AFC + ldrh r1, [r4, #0x10] + ldr r0, [r0] + mov r2, #0x16 + add r0, r0, #0x1340 + sub r1, r1, #1 + mla r0, r1, r2, r0 + mov r1, #0 + bl MI_CpuFill8 + ldrh r0, [r4, #0x10] + bl MOD13_02217234 + ldrh r1, [r4, #0x10] + ldr r0, _022130D8 ; =0x02240AFC + mov r3, #0 + ldr r2, [r0] + sub r1, r1, #1 + add r1, r2, r1, lsl #1 + add r1, r1, #0x1700 + strh r3, [r1, #0x54] + ldrh r8, [r4, #0x10] + ldr r5, [r0] + mvn r1, #0 + sub r7, r8, #1 + add r2, r5, r7 + add r2, r2, #0x1500 + ldrsb r3, [r2, #0x26] + cmp r3, r1 + beq _02212E0C + ldr r2, _022130E0 ; =0x000005D4 + and r3, r3, #0xff + mul r2, r3, r2 + add r3, r5, r2 + add sb, r3, #0x1d00 + mov r5, #1 + ldrh sl, [sb, #0x4e] + mvn r3, r5, lsl r8 + and sl, sl, r3 + strh sl, [sb, #0x4e] + ldr sb, [r0] + add sb, sb, r2 + add sb, sb, #0x1d00 + ldrh sl, [sb, #0x50] + orr r5, sl, r5, lsl r8 + strh r5, [sb, #0x50] + ldr r5, [r0] + add r5, r5, r7 + add r5, r5, #0x1000 + strb r1, [r5, #0x526] + ldr r0, [r0] + add r0, r0, r2 + add r0, r0, #0x1d00 + ldrh r1, [r0, #0x4c] + and r1, r1, r3 + strh r1, [r0, #0x4c] +_02212E0C: + ldr r1, _022130D8 ; =0x02240AFC + ldrh r2, [r4, #0x10] + ldr r7, [r1] + mov r3, #1 + add r0, r7, #0x1500 + ldrh r5, [r0, #0x36] + mov r0, r3, lsl r2 + ands r0, r5, r0 + beq _02212E5C + add r0, r7, #0x1000 + ldrb r2, [r0, #0x535] + sub r2, r2, #1 + strb r2, [r0, #0x535] + ldr r0, [r1] + ldrh r1, [r4, #0x10] + add r0, r0, #0x1500 + ldrh r2, [r0, #0x36] + mvn r1, r3, lsl r1 + and r1, r2, r1 + strh r1, [r0, #0x36] +_02212E5C: + ldrh r0, [r4, #0x10] + ldr r1, _022130D8 ; =0x02240AFC + ldr r2, [r1] + sub r1, r0, #1 + add r1, r2, r1, lsl #2 + add r1, r1, #0x1000 + ldr r1, [r1, #0x4e8] + cmp r1, #8 + bne _02212E8C + mov r1, #9 + mov r2, #0 + bl MOD13_02213124 +_02212E8C: + ldrh r0, [r4, #0x10] + mov r2, r4 + mov r1, #3 + bl MOD13_02213124 + ldrh r1, [r4, #0x10] + ldr r0, _022130D8 ; =0x02240AFC + mov r3, #0 + ldr r2, [r0] + sub r0, r1, #1 + add r0, r2, r0, lsl #2 + add r0, r0, #0x1000 + str r3, [r0, #0x4e8] + b _02213084 +_02212EC0: + mov r0, r4 + bl MOD13_02212658 + b _02213084 +_02212ECC: + bl MOD13_02211F78 + b _02213084 +_02212ED4: + mov r5, #0 + ldr sb, _022130D8 ; =0x02240AFC + ldr r7, _022130E4 ; =0x0000186C + ldr r8, _022130E0 ; =0x000005D4 + mov sl, r5 +_02212EE8: + mul r4, r5, r8 + ldr r1, [sb] + add r2, r1, r4 + add r0, r2, #0x1000 + ldrb r0, [r0, #0xd52] + cmp r0, #0 + beq _02212F38 + add r0, r2, #0x1d00 + ldrh r3, [r0, #0x50] + cmp r3, #0 + beq _02212F38 + ldrh r2, [r0, #0x4e] + add r0, r1, r7 + add r0, r0, r4 + add r1, r1, #0x1340 + bl MOD13_022148D4 + ldr r0, [sb] + add r0, r0, r4 + add r0, r0, #0x1d00 + strh sl, [r0, #0x50] +_02212F38: + add r0, r5, #1 + and r5, r0, #0xff + cmp r5, #0x10 + blo _02212EE8 + bl MOD13_02214BF4 + mov r5, r0 + bl MOD13_02214BE0 + mov r4, r0 + bl MOD13_02214B80 + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl MOD13_02214768 + b _02213084 +_02212F70: + ldrh r0, [r4, #2] + cmp r0, #0xf + addls pc, pc, r0, lsl #2 + b _02212FD0 +_02212F80: ; jump table + b _02212FD0 ; case 0 + b _02212FC0 ; case 1 + b _02212FD0 ; case 2 + b _02212FD0 ; case 3 + b _02212FC0 ; case 4 + b _02212FC0 ; case 5 + b _02212FC0 ; case 6 + b _02212FD0 ; case 7 + b _02212FC0 ; case 8 + b _02212FC0 ; case 9 + b _02212FD0 ; case 10 + b _02212FD0 ; case 11 + b _02212FD0 ; case 12 + b _02212FD0 ; case 13 + b _02212FD0 ; case 14 + b _02212FD0 ; case 15 +_02212FC0: + mov r0, #0 + mov r1, #9 + bl MOD13_02211EA4 + b _02213084 +_02212FD0: + mov r0, #0 + mov r1, #8 + bl MOD13_02211EA4 + b _02213084 +_02212FE0: + ldrh r0, [r4] + cmp r0, #0x1d + addls pc, pc, r0, lsl #2 + b _02213078 +_02212FF0: ; jump table + b _02213068 ; case 0 + b _02213078 ; case 1 + b _02213078 ; case 2 + b _02213078 ; case 3 + b _02213078 ; case 4 + b _02213078 ; case 5 + b _02213078 ; case 6 + b _02213068 ; case 7 + b _02213068 ; case 8 + b _02213078 ; case 9 + b _02213078 ; case 10 + b _02213078 ; case 11 + b _02213078 ; case 12 + b _02213068 ; case 13 + b _02213068 ; case 14 + b _02213068 ; case 15 + b _02213078 ; case 16 + b _02213068 ; case 17 + b _02213068 ; case 18 + b _02213078 ; case 19 + b _02213078 ; case 20 + b _02213068 ; case 21 + b _02213078 ; case 22 + b _02213078 ; case 23 + b _02213078 ; case 24 + b _02213068 ; case 25 + b _02213078 ; case 26 + b _02213078 ; case 27 + b _02213078 ; case 28 + b _02213068 ; case 29 +_02213068: + mov r0, #0 + mov r1, #9 + bl MOD13_02211EA4 + b _02213084 +_02213078: + mov r0, #0 + mov r1, #8 + bl MOD13_02211EA4 +_02213084: + cmp r6, #0x11 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxne lr + ldr r1, _022130D8 ; =0x02240AFC + mov r0, #0 + ldr r1, [r1] + mov r2, #0x7d00 + add r3, r1, #0x1000 + ldr r4, [r3, #0x4e4] + bl MIi_CpuClearFast + ldr r1, _022130D8 ; =0x02240AFC + mov r0, #0 + str r0, [r1] + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + mov r2, r0 + mov r1, #0xc + blx r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_022130D8: .word 0x02240AFC +_022130DC: .word 0x000014A8 +_022130E0: .word 0x000005D4 +_022130E4: .word 0x0000186C + + arm_func_start MOD13_022130E8 +MOD13_022130E8: ; 0x022130E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _02213120 ; =0x02240AFC + ldr r3, [r3] + add r3, r3, #0x1000 + ldr r3, [r3, #0x4e4] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + blx r3 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02213120: .word 0x02240AFC + + arm_func_start MOD13_02213124 +MOD13_02213124: ; 0x02213124 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213158 + ldr r0, _02213170 ; =0x02240AFC + sub r1, r6, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x1000 + str r5, [r0, #0x4e8] +_02213158: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_022130E8 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02213170: .word 0x02240AFC + + arm_func_start MOD13_02213174 +MOD13_02213174: ; 0x02213174 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r1 + mov r7, r0 + bl OS_DisableInterrupts + mov r4, r0 + cmp r5, #3 + addls pc, pc, r5, lsl #2 + b _022131D8 +_02213198: ; jump table + b _022131A8 ; case 0 + b _022131B4 ; case 1 + b _022131C0 ; case 2 + b _022131CC ; case 3 +_022131A8: + mov r5, #0xa + mov r6, #4 + b _022131F0 +_022131B4: + mov r5, #0xa + mov r6, #3 + b _022131F0 +_022131C0: + mov r5, #0xe + mov r6, #2 + b _022131F0 +_022131CC: + mov r5, #7 + mov r6, #5 + b _022131F0 +_022131D8: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022131F0: + ldr r0, _0221326C ; =0x02240AFC + ldr r0, [r0] + cmp r0, #0 + beq _02213254 + mov r0, r7 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213254 + ldr r0, _0221326C ; =0x02240AFC + sub r2, r7, #1 + ldr r1, [r0] + add r0, r1, r2, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r5, r0 + bne _02213254 + add r0, r1, r2, lsl #1 + add r1, r0, #0x1700 + mov r0, r4 + strh r6, [r1, #0x54] + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213254: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221326C: .word 0x02240AFC + + arm_func_start MOD13_02213270 +MOD13_02213270: ; 0x02213270 + stmdb sp!, {r4, lr} + ldr r1, _022132C8 ; =0x02240AFC + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + beq _022132BC + bl MOD13_02211EC8 + cmp r0, #0 + beq _022132BC + ldr r0, _022132C8 ; =0x02240AFC + sub r1, r4, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r4, lr} + bxeq lr +_022132BC: + mov r0, #0 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_022132C8: .word 0x02240AFC + + arm_func_start MOD13_022132CC +MOD13_022132CC: ; 0x022132CC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _02213360 ; =0x02240AFC + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + beq _02213348 + mov r0, r5 + bl MOD13_02211EC8 + cmp r0, #0 + beq _02213348 + ldr r0, _02213360 ; =0x02240AFC + sub r3, r5, #1 + ldr ip, [r0] + ldr r1, _02213364 ; =0x00001772 + add r0, ip, #0x1340 + mov r2, #0x16 + mla r0, r3, r2, r0 + add r1, ip, r1 + bl MI_CpuCopy8 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r1, _02213360 ; =0x02240AFC + ldr r0, _02213364 ; =0x00001772 + ldr r1, [r1] + add sp, sp, #4 + add r0, r1, r0 + ldmia sp!, {r4, r5, lr} + bx lr +_02213348: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02213360: .word 0x02240AFC +_02213364: .word 0x00001772 + + arm_func_start MOD13_02213368 +MOD13_02213368: ; 0x02213368 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02213390 ; =0x02240AFC + ldr r1, [r1] + add r1, r1, #0x1000 + str r4, [r1, #0x4e4] + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02213390: .word 0x02240AFC + + arm_func_start MOD13_02213394 +MOD13_02213394: ; 0x02213394 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _02213498 ; =0x0223C420 + ldr r3, [r3, r0, lsl #2] + cmp r3, #0 + beq _022133BC + cmp r3, #1 + beq _022133CC + cmp r3, #2 + bne _02213478 +_022133BC: + bl MOD13_022134A8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_022133CC: + cmp r1, #0x2000000 + blo _02213444 + ldr r0, _0221349C ; =0x023FE800 + cmp r1, r0 + bhs _02213444 + cmp r1, #0x2300000 + add r1, r1, r2 + bhs _02213400 + cmp r1, #0x2300000 + addhi sp, sp, #4 + movhi r0, #0 + ldmhiia sp!, {lr} + bxhi lr +_02213400: + cmp r1, #0x2300000 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {lr} + bxls lr + ldr r0, _0221349C ; =0x023FE800 + cmp r1, r0 + bhs _02213434 + cmp r2, #0x40000 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {lr} + bxls lr +_02213434: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {lr} + bx lr +_02213444: + ldr r0, _022134A0 ; =0x037F8000 + cmp r1, r0 + blo _02213488 + ldr r0, _022134A4 ; =0x0380F000 + cmp r1, r0 + bhs _02213488 + add r1, r1, r2 + cmp r1, r0 + movls r0, #1 + add sp, sp, #4 + movhi r0, #0 + ldmia sp!, {lr} + bx lr +_02213478: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {lr} + bx lr +_02213488: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02213498: .word 0x0223C420 +_0221349C: .word 0x023FE800 +_022134A0: .word 0x037F8000 +_022134A4: .word 0x0380F000 + + arm_func_start MOD13_022134A8 +MOD13_022134A8: ; 0x022134A8 + ldr r3, _0221354C ; =0x0223C420 + ldr r0, [r3, r0, lsl #2] + cmp r0, #0 + beq _022134EC + cmp r0, #1 + beq _02213508 + cmp r0, #2 + bne _0221353C + ldr r0, _02213550 ; =0x027FFE00 + cmp r1, r0 + blo _02213544 + ldr r0, _02213554 ; =0x027FFF60 + add r1, r1, r2 + cmp r1, r0 + bhi _02213544 + mov r0, #1 + bx lr +_022134EC: + cmp r1, #0x2000000 + blo _02213544 + add r0, r1, r2 + cmp r0, #0x22c0000 + bhi _02213544 + mov r0, #1 + bx lr +_02213508: + cmp r1, #0x22c0000 + blo _02213520 + add r0, r1, r2 + cmp r0, #0x2300000 + movls r0, #1 + bxls lr +_02213520: + cmp r1, #0x2000000 + blo _02213544 + add r0, r1, r2 + cmp r0, #0x2300000 + bhi _02213544 + mov r0, #1 + bx lr +_0221353C: + mov r0, #0 + bx lr +_02213544: + mov r0, #0 + bx lr + .align 2, 0 +_0221354C: .word 0x0223C420 +_02213550: .word 0x027FFE00 +_02213554: .word 0x027FFF60 + + arm_func_start MOD13_02213558 +MOD13_02213558: ; 0x02213558 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldrh r4, [r1, #0x12] + cmp r2, r4 + addhs sp, sp, #4 + movhs r0, #0 + ldmhsia sp!, {r4, r5, lr} + bxhs lr + mov ip, #2 +_0221357C: + add r4, r1, ip, lsl #1 + ldrh r4, [r4, #0xc] + cmp r2, r4 + bhs _0221359C + sub r4, ip, #1 + mov ip, r4, lsl #0x18 + movs ip, ip, asr #0x18 + bpl _0221357C +_0221359C: + cmp ip, #0 + addlt sp, sp, #4 + movlt r0, #0 + ldmltia sp!, {r4, r5, lr} + bxlt lr + ldr r4, _02213628 ; =0x02240AFC + add r5, r1, ip, lsl #1 + ldr lr, [r4] + ldrh r5, [r5, #0xc] + add lr, lr, #0x1000 + ldr lr, [lr, #0x318] + sub r5, r2, r5 + mul r2, r5, lr + add r3, r3, #0xc + add r5, r3, ip, lsl #4 + ldr r3, [r5, #8] + sub r3, r3, r2 + str r3, [r0, #4] + ldr r3, [r4] + ldr r4, [r0, #4] + add r3, r3, #0x1000 + ldr r3, [r3, #0x318] + cmp r4, r3 + strhi r3, [r0, #4] + ldr r1, [r1, ip, lsl #2] + add r1, r2, r1 + str r1, [r0, #8] + ldr r1, [r5] + add r1, r2, r1 + str r1, [r0] + strb ip, [r0, #0xc] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02213628: .word 0x02240AFC + + arm_func_start MOD13_0221362C +MOD13_0221362C: ; 0x0221362C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, r0 + add r4, r5, #0xc + cmp r1, #0 + mov r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + mov r2, r0 +_0221364C: + str r0, [r5, r2, lsl #2] + add r3, r1, r2, lsl #4 + add r2, r2, #1 + ldr r3, [r3, #0x14] + and r2, r2, #0xff + cmp r2, #3 + add r0, r0, r3 + blo _0221364C + mov r8, #0 + strh r8, [r4] + ldr r6, _02213704 ; =0x02240AFC + add r7, r1, #0xc +_0221367C: + ldr r0, [r6] + add sl, r7, r8, lsl #4 + add r0, r0, #0x1000 + ldr r1, [r0, #0x318] + ldr sb, [sl, #8] + add r0, sb, r1 + sub r0, r0, #1 + bl _u32_div_f + mov r1, r8, lsl #1 + ldrh r3, [r4, r1] + mov r2, r0, lsl #0x10 + ldr r1, [sl, #4] + add r2, r3, r2, lsr #16 + mov r3, r2, lsl #0x10 + mov r2, sb + mov r0, r8 + mov sb, r3, lsr #0x10 + bl MOD13_02213394 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bxeq lr + cmp r8, #2 + addlo r0, r8, #1 + movlo r0, r0, lsl #1 + strloh sb, [r4, r0] + add r0, r8, #1 + and r8, r0, #0xff + strhsh sb, [r5, #0x12] + cmp r8, #3 + blo _0221367C + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_02213704: .word 0x02240AFC + + arm_func_start MOD13_02213708 +MOD13_02213708: ; 0x02213708 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, [r1] + mov r7, r2 + mov r6, r3 + cmp r1, #0 + beq _02213740 + cmp r1, #1 + beq _022137A4 + cmp r1, #2 + beq _02213880 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213740: + ldr r2, [r0, #0x28] + add r3, r0, #0x28 + cmp r2, #0x2000000 + blo _02213794 + cmp r2, #0x22c0000 + bhs _02213794 + ldr r1, [r3, #4] + add r0, r2, r1 + cmp r0, #0x22c0000 + bhi _02213794 + str r1, [r7, #8] + ldr r0, [r3] + add sp, sp, #4 + str r0, [r7, #4] + ldr r0, [r7, #4] + str r0, [r7] + ldr r0, [r7, #0xc] + bic r0, r0, #1 + str r0, [r7, #0xc] + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213794: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022137A4: + add r4, r0, #0x38 + ldr r2, [r0, #0x38] + ldr r1, [r4, #4] + mov ip, #0 + mov r5, ip + cmp r2, #0x2000000 + add r3, r2, r1 + blo _022137F4 + ldr r0, _022138B0 ; =0x023FE800 + cmp r2, r0 + bhs _022137F4 + cmp r3, #0x2300000 + bls _02213820 + cmp r3, r0 + bhs _022137EC + cmp r1, #0x40000 + movls r5, #1 + bls _02213820 +_022137EC: + mov ip, #1 + b _02213820 +_022137F4: + ldr r0, _022138B4 ; =0x037F8000 + cmp r2, r0 + blo _0221381C + ldr r0, _022138B8 ; =0x0380F000 + cmp r2, r0 + bhs _0221381C + cmp r3, r0 + movls r5, #1 + movhi ip, #1 + b _02213820 +_0221381C: + mov ip, #1 +_02213820: + cmp ip, #1 + bne _0221382C + bl OS_Terminate +_0221382C: + ldr r0, [r4, #4] + cmp r5, #0 + str r0, [r7, #8] + ldr r0, [r4] + str r0, [r7, #4] + ldreq r0, [r7, #4] + streq r0, [r7] + beq _02213864 + ldr r0, [r6] + str r0, [r7] + ldr r1, [r6] + ldr r0, [r7, #8] + add r0, r1, r0 + str r0, [r6] +_02213864: + ldr r0, [r7, #0xc] + add sp, sp, #4 + bic r0, r0, #1 + orr r0, r0, #1 + str r0, [r7, #0xc] + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_02213880: + mov r1, #0x160 + ldr r0, _022138BC ; =0x027FFE00 + str r1, [r7, #8] + str r0, [r7, #4] + ldr r0, [r7, #4] + str r0, [r7] + ldr r0, [r7, #0xc] + bic r0, r0, #1 + str r0, [r7, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_022138B0: .word 0x023FE800 +_022138B4: .word 0x037F8000 +_022138B8: .word 0x0380F000 +_022138BC: .word 0x027FFE00 + + arm_func_start MOD13_022138C0 +MOD13_022138C0: ; 0x022138C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r2, #0x22c0000 + mov r5, r1 + str r2, [sp] + mov r6, r0 + ldr r0, [r5, #0x24] + ldr r4, _02213940 ; =0x0223C420 + str r0, [r6] + ldr r0, [r5, #0x34] + add r8, r5, #0x160 + str r0, [r6, #4] + add sl, r6, #0xc + mov sb, #0 + add r7, sp, #0 +_022138FC: + mov r0, r5 + mov r1, r4 + mov r2, sl + mov r3, r7 + bl MOD13_02213708 + add sb, sb, #1 + cmp sb, #3 + add sl, sl, #0x10 + add r4, r4, #4 + blt _022138FC + mov r0, r8 + add r1, r6, #0x3c + mov r2, #0x88 + bl MI_CpuCopy8 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bx lr + .align 2, 0 +_02213940: .word 0x0223C420 + + arm_func_start MOD13_02213944 +MOD13_02213944: ; 0x02213944 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + mov r6, #0xff + bl OS_DisableInterrupts + mov r5, r0 + bl MOD13_02214B60 + cmp r0, #0 + bne _02213984 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213984: + ldr r0, _02213BFC ; =0x02240AFC + ldr r0, [r0] + add r1, r0, #0x1000 + ldrb r1, [r1, #0x524] + add r1, r1, #1 + cmp r1, #0x10 + ble _022139B8 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_022139B8: + ldr r1, _02213C00 ; =0x000005D4 + mov r4, #0 +_022139C0: + mla r2, r4, r1, r0 + add r2, r2, #0x1000 + ldr r3, [r2, #0xd40] + cmp r3, sb + bne _022139EC + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_022139EC: + ldrb r2, [r2, #0xd52] + cmp r2, #0 + moveq r6, r4 + beq _02213A0C + add r2, r4, #1 + and r4, r2, #0xff + cmp r4, #0x10 + blo _022139C0 +_02213A0C: + cmp r4, #0x10 + bne _02213A2C + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213A2C: + ldr r1, _02213C00 ; =0x000005D4 + ldr r2, _02213BFC ; =0x02240AFC + mul r4, r6, r1 + add r0, r0, r4 + add r0, r0, #0x1000 + str sb, [r0, #0xd40] + ldr r2, [r2] + ldr r0, _02213C04 ; =0x00001788 + mov r1, r8 + add r0, r2, r0 + add r7, r0, r4 + mov r0, r7 + bl MOD13_022138C0 + add r0, sb, #0x1c + add r1, r7, #0xc4 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C08 ; =0x00001D2C + ldr r2, [r1] + mov r1, r7 + add r0, r2, r0 + add r0, r0, r4 + bl MOD13_0221362C + cmp r0, #0 + bne _02213AAC + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr +_02213AAC: + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C0C ; =0x0000186C + ldr r2, [r1] + mov r1, sb + add r0, r2, r0 + add r0, r0, r4 + add r2, r2, #0x1300 + bl MOD13_02214A0C + ldr r2, _02213BFC ; =0x02240AFC + ldr r1, _02213C0C ; =0x0000186C + ldr r0, [r2] + add r0, r0, r4 + add r0, r0, #0x1000 + strb r6, [r0, #0xd21] + ldr r0, [r2] + add r0, r0, r1 + add r0, r0, r4 + bl MOD13_02214868 + ldr r0, _02213C10 ; =0x02240A44 + ldr r1, _02213BFC ; =0x02240AFC + ldrb r7, [r0] + ldr r3, [r1] + mov r2, #1 + add r6, r7, #1 + add r3, r3, r4 + strb r6, [r0] + add r0, r3, #0x1000 + strb r7, [r0, #0xd1f] + ldr r0, [r1] + add r3, r8, #0x1e8 + add r0, r0, r4 + add r0, r0, #0x1d00 + strh r2, [r0, #0x4e] + ldr r0, [r1] + add r2, r8, #0x258 + add r0, r0, r4 + add r0, r0, #0x1000 + str r8, [r0, #0xd44] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + str r3, [r0, #0xd54] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + str r2, [r0, #0xd58] + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x1000 + ldr r0, [r0, #0xd54] + ldr r0, [r0, #0x6c] + cmp r0, #0 + beq _02213BB8 + bl MOD13_02216DA4 + cmp r0, #0 + bne _02213BB8 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C14 ; =0x00007CE0 + ldr r1, [r1] + add r0, r1, r0 + bl MOD13_02216D90 + ldr r1, _02213BFC ; =0x02240AFC + ldr r0, _02213C18 ; =0x000074E0 + ldr r2, [r1] + mov r1, #0x800 + add r0, r2, r0 + bl MOD13_02216DC0 +_02213BB8: + ldr r2, _02213BFC ; =0x02240AFC + mov r3, #1 + ldr r1, [r2] + mov r0, r5 + add r1, r1, r4 + add r1, r1, #0x1000 + strb r3, [r1, #0xd52] + ldr r1, [r2] + add r1, r1, #0x1000 + ldrb r2, [r1, #0x524] + add r2, r2, #1 + strb r2, [r1, #0x524] + bl OS_RestoreInterrupts + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_02213BFC: .word 0x02240AFC +_02213C00: .word 0x000005D4 +_02213C04: .word 0x00001788 +_02213C08: .word 0x00001D2C +_02213C0C: .word 0x0000186C +_02213C10: .word 0x02240A44 +_02213C14: .word 0x00007CE0 +_02213C18: .word 0x000074E0 + + arm_func_start MOD13_02213C1C +MOD13_02213C1C: ; 0x02213C1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov lr, r1 + ldr ip, [r0] + ldr r1, [r0, #0xc] + cmp lr, #0x4000 + movlo lr, #0x4000 + cmp r2, #0x8000 + movhi r2, #0x8000 + cmp lr, ip + add r1, ip, r1 + movlo lr, ip + cmp r2, r1 + movhi r2, r1 + cmp lr, r2 + addhs sp, sp, #4 + ldmhsia sp!, {lr} + bxhs lr + cmp r3, #0 + beq _02213C8C + ldr r0, [r0, #8] + sub r2, r2, lr + add r0, r0, lr + mov r1, #0 + bl MI_CpuFill8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr +_02213C8C: + ldr r3, [r0, #4] + ldr r1, [r0, #8] + add r0, r3, lr + add r1, r1, lr + sub r2, r2, lr + bl MI_CpuCopy8 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + + arm_func_start MOD13_02213CB0 +MOD13_02213CB0: ; 0x02213CB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x6c + str r2, [sp, #4] + cmp r2, #0x164 + mov r2, #0 + mov sl, r0 + mov sb, r1 + str r2, [sp, #8] + blo _022140F4 + ldr r8, [sp, #4] + mov r7, sb + str r2, [sp, #0xc] + mov r6, r2 + mov r5, r2 + cmp sl, #0 + add r7, r7, #0x160 + sub r8, r8, #0x160 + beq _02213D24 + ldr r4, [sl, #0x2c] + ldr r3, [sl, #0x24] + mov r2, #0x160 + sub fp, r4, r3 + bl FS_ReadFile + cmp r0, #0x160 + ldr r4, [sb, #0x80] + movlt r8, r5 + cmp r4, #0 + moveq r4, #0x1000000 + b _02213D9C +_02213D24: + ldr r0, _02214104 ; =0x027FFE00 + mov r1, #1 + ldr r4, [r0, #0x80] + add r0, sp, #0x20 + cmp r4, #0 + moveq r4, #0x1000000 + str r1, [sp, #0xc] + bl FS_InitFile + ldr r0, _02214108 ; =0x0223F788 + mov r1, #3 + bl FS_FindArchive + mov r1, r0 + mvn r0, #0 + str r0, [sp] + add r0, sp, #0x20 + mov r2, #0 + add r3, r4, #0x88 + bl FS_OpenFileDirect + ldr r2, [sp, #0x4c] + ldr r1, [sp, #0x44] + ldr r0, _02214104 ; =0x027FFE00 + sub fp, r2, r1 + mov r1, sb + mov r2, #0x160 + add sl, sp, #0x20 + bl MI_CpuCopy8 + ldr r1, [sb, #0x60] + ldr r0, _0221410C ; =0x00406000 + orr r0, r1, r0 + str r0, [sb, #0x60] +_02213D9C: + cmp r8, #0x88 + movlo r8, #0 + blo _02213DD0 + mov r0, sl + add r1, fp, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + mov r1, r7 + mov r2, #0x88 + bl FS_ReadFile + add r7, r7, #0x88 + sub r8, r8, #0x88 +_02213DD0: + cmp r8, #0x70 + blo _02213E40 + mov r0, r7 + mov r6, r7 + bl MOD13_02216B80 + add r7, r7, #0x70 + sub r8, r8, #0x70 + mov r0, #3 + str r0, [sp] + mov r0, r6 + mov r1, #0 + mov r2, #0x160 + mov r3, sb + bl MOD13_02216B0C + ldr r0, [sl, #8] + mov r4, #0 + b _02213E18 +_02213E14: + add r4, r4, #1 +_02213E18: + cmp r4, #3 + bge _02213E2C + ldrsb r1, [r0, r4] + cmp r1, #0 + bne _02213E14 +_02213E2C: + mov r2, r4 + add r1, r6, #0x10 + bl MI_CpuCopy8 + str r4, [r6, #0x14] + b _02213E44 +_02213E40: + mov r8, #0 +_02213E44: + cmp r8, #0x10 + movlo r8, #0 + blo _02213E8C + mov r0, #0 + str r0, [r7] + ldr r0, [sl, #0x24] + ldr r1, [sb, #0x20] + add r0, fp, r0 + add r0, r1, r0 + str r0, [r7, #4] + ldr r0, [sl, #0x24] + ldr r1, [sb, #0x30] + add r0, fp, r0 + add r0, r1, r0 + mov r5, r7 + str r0, [r7, #8] + add r7, r7, #0x10 + sub r8, r8, #0x10 +_02213E8C: + ldr r1, [sb, #0x2c] + ldr r0, [sb, #0x3c] + add r0, r1, r0 + cmp r8, r0 + blo _02213F38 + ldr r4, [sl, #0x24] + ldr r1, [r5, #4] + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + ldr r2, [sb, #0x2c] + mov r0, sl + mov r1, r7 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [sb, #0x2c] + mov r0, r6 + mov r3, r7 + bl MOD13_02216B0C + ldr r1, [sb, #0x2c] + mov r0, sl + add r7, r7, r1 + ldr r1, [r5, #8] + mov r2, #0 + sub r1, r1, r4 + bl FS_SeekFile + ldr r2, [sb, #0x3c] + mov r0, sl + mov r1, r7 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + ldr r1, [r5, #8] + ldr r2, [sb, #0x3c] + mov r3, r7 + mov r0, r6 + bl MOD13_02216B0C + mov r0, #1 + str r0, [sp, #8] + b _0221400C +_02213F38: + cmp r8, #0xcc00 + blo _0221400C + ldr r4, [sl, #0x24] + ldr r5, [r5, #4] + mov r0, sl + sub r1, r5, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + mov r1, r7 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #3 + str r0, [sp] + mov r0, r6 + mov r1, r5 + mov r2, #0x4400 + mov r3, r7 + bl MOD13_02216B0C + add r1, r5, #0x4400 + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + add r1, r7, #0x4400 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #2 + str r0, [sp] + mov r0, r6 + add r1, r5, #0x4400 + mov r2, #0x4400 + add r3, r7, #0x4400 + bl MOD13_02216B0C + add r1, r5, #0x8800 + mov r0, sl + sub r1, r1, r4 + mov r2, #0 + bl FS_SeekFile + mov r0, sl + add r1, r7, #0x8800 + mov r2, #0x4400 + bl FS_ReadFile + mov r0, #2 + str r0, [sp] + add r1, r5, #0x8800 + add r3, r7, #0x8800 + mov r0, r6 + mov r2, #0x4400 + bl MOD13_02216B0C + mov r0, #1 + str r0, [sp, #8] +_0221400C: + mov r0, sl + mov r1, fp + mov r2, #0 + bl FS_SeekFile + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _022140DC + add r0, sp, #0x20 + bl FS_CloseFile + ldr r0, [sp, #8] + cmp r0, #0 + beq _022140DC + ldr r1, [sb, #0x20] + ldr r0, _02214110 ; =0x0223F784 + str r1, [sp, #0x10] + ldr r2, [sb, #0x28] + ldr r1, [sb, #0x20] + ldr r4, [r0] + sub r0, r2, r1 + str r0, [sp, #0x14] + ldr r2, [r6, #0x48] + ldr r1, [sb, #0x20] + add r0, sp, #0x10 + sub r1, r2, r1 + str r1, [sp, #0x18] + ldr r1, [sp, #4] + mov r2, #0x8000 + str r1, [sp, #0x1c] + mov r1, #0x4000 + mov r3, #1 + bl MOD13_02213C1C + ldr r0, [r4, #4] + cmp r0, #0 + beq _022140C4 + add r7, sp, #0x10 + mov r5, #0 +_0221409C: + ldr r1, [r4] + ldr r2, [r4, #4] + mov r0, r7 + mov r3, r5 + add r2, r1, r2 + bl MOD13_02213C1C + add r4, r4, #8 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0221409C +_022140C4: + ldr r1, [sb, #0x28] + ldr r2, _02214114 ; =0x02000A74 + ldr r3, [r6, #0x48] + ldr r0, _02214118 ; =0xE12FFF1E + sub r1, r2, r1 + str r0, [r3, r1] +_022140DC: + ldr r0, [sp, #8] + cmp r0, #0 + beq _022140F4 + ldr r1, [sp, #4] + mov r0, sb + bl DC_FlushRange +_022140F4: + ldr r0, [sp, #8] + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + .align 2, 0 +_02214104: .word 0x027FFE00 +_02214108: .word 0x0223F788 +_0221410C: .word 0x00406000 +_02214110: .word 0x0223F784 +_02214114: .word 0x02000A74 +_02214118: .word 0xE12FFF1E + + arm_func_start MOD13_0221411C +MOD13_0221411C: ; 0x0221411C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x64 + mov r6, #0 + movs r7, r0 + mov r5, r6 + beq _02214168 + ldr ip, [r7, #0x2c] + ldr r3, [r7, #0x24] + add r1, sp, #0 + mov r2, #0x60 + sub r4, ip, r3 + bl FS_ReadFile + cmp r0, #0x60 + mov r0, r7 + mov r1, r4 + mov r2, #0 + addhs r6, sp, #0 + bl FS_SeekFile + b _0221416C +_02214168: + ldr r6, _0221419C ; =0x027FFE00 +_0221416C: + cmp r6, #0 + beq _0221418C + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + add r1, r1, #0x268 + add r5, r1, r0 + cmp r5, #0x10000 + movlo r5, #0x10000 +_0221418C: + mov r0, r5 + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221419C: .word 0x027FFE00 + + arm_func_start MOD13_022141A0 +MOD13_022141A0: ; 0x022141A0 + mov r2, r1, asr #1 + cmp r2, #0 + mov r3, #0 + ble _022141C4 +_022141B0: + ldrh r1, [r0], #2 + sub r2, r2, #1 + cmp r2, #0 + add r3, r3, r1 + bgt _022141B0 +_022141C4: + ldr r0, _022141E4 ; =0x0000FFFF + and r1, r3, r0 + add r1, r1, r3, lsr #16 + add r1, r1, r1, lsr #16 + eor r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + .align 2, 0 +_022141E4: .word 0x0000FFFF + + arm_func_start MOD13_022141E8 +MOD13_022141E8: ; 0x022141E8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r4, r2 + add r2, r6, #0x1f + mov r5, r1 + mov r0, r4 + bic r1, r2, #0x1f + bl DC_FlushRange + bl DC_WaitWriteBufferEmpty + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl MOD13_02214C08 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start MOD13_02214224 +MOD13_02214224: ; 0x02214224 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r3, _022144AC ; =0x02240A50 + str r0, [sp, #8] + ldr r0, [r3, #4] + ldrb r3, [r3, #0xe] + ldrb r0, [r0, #0x4b4] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + cmp r3, r0 + beq _02214254 + bl MOD13_022144C8 +_02214254: + ldr r3, _022144B0 ; =0x02240A80 + ldr r1, _022144AC ; =0x02240A50 + ldrb r2, [r3, #4] + ldr r0, [r1, #4] + ldrb r5, [r1, #0x11] + bic r2, r2, #3 + orr r2, r2, #2 + strb r2, [r3, #4] + ldrb r4, [r0, #0x4b3] + ldrb r2, [r1, #0xe] + ldrb r7, [r3, #4] + strb r4, [r3, #5] + strb r2, [r3, #6] + ldr r4, [r0, #0x4b8] + ldr r2, _022144B4 ; =0x02240A48 + str r4, [r3] + ldrb r6, [r0, #0x4b5] + add r4, r5, #1 + bic r7, r7, #0xfc + and r6, r6, #0x3f + orr r6, r7, r6, lsl #2 + strb r6, [r3, #4] + strb r4, [r1, #0x11] + strb r5, [r3, #7] + ldrb r4, [r0, #0x358] + add r1, r0, #0x300 + ldr r2, [r2] + strb r4, [r3, #0xa] + ldrh r4, [r1, #0x5a] + cmp r2, #0 + strh r4, [r3, #0xc] + ldrh r1, [r1, #0x5c] + strh r1, [r3, #0xe] + bne _022142F4 + ldr r1, _022144B8 ; =0x02240A4C + ldr r1, [r1] + cmp r1, #0 + beq _022142F4 + ldr r0, [r0, #0x4b8] + blx r1 +_022142F4: + ldr r0, _022144AC ; =0x02240A50 + ldr r1, _022144B0 ; =0x02240A80 + ldr r2, [r0, #4] + mov r3, #0 +_02214304: + ldrb r0, [r2, #0x4a8] + add r3, r3, #1 + cmp r3, #8 + strb r0, [r1, #0x68] + add r2, r2, #1 + add r1, r1, #1 + blt _02214304 + ldr r1, _022144BC ; =0x02240A90 + mov r0, #0 + mov r2, #0x58 + bl MIi_CpuClear16 + ldr r0, _022144AC ; =0x02240A50 + mov sl, #0 + ldr r1, [r0, #4] + ldr sb, _022144BC ; =0x02240A90 + add r0, r1, #0x400 + add r1, r1, #0x300 + ldrh r2, [r0, #0xb0] + ldrh r0, [r1, #0x5a] + mov r5, sl + mov r8, sl + eor r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + mov fp, #0x16 + mov r4, #2 +_0221436C: + mov r6, r4, lsl r5 + ands r0, r7, r6 + beq _022143C0 + ldr r0, _022144AC ; =0x02240A50 + mov r1, sb + ldr r2, [r0, #4] + ldr r0, _022144C0 ; =0x0000035E + add r0, r2, r0 + add r0, r0, r8 + mov r2, fp + bl MIi_CpuCopy16 + ldr r0, _022144AC ; =0x02240A50 + add sl, sl, #1 + ldr r0, [r0, #4] + add sb, sb, #0x16 + add r0, r0, #0x400 + ldrh r1, [r0, #0xb0] + cmp sl, #4 + orr r1, r1, r6 + strh r1, [r0, #0xb0] + beq _022143D0 +_022143C0: + add r5, r5, #1 + cmp r5, #0xf + add r8, r8, #0x16 + blt _0221436C +_022143D0: + cmp sl, #4 + bhs _022143F0 + mov r0, #0x16 + mul r1, sl, r0 + ldr r2, _022144BC ; =0x02240A90 + ldrb r0, [r2, r1] + bic r0, r0, #0xf0 + strb r0, [r2, r1] +_022143F0: + ldr r2, _022144B0 ; =0x02240A80 + mov r3, #0 + ldr r0, _022144C4 ; =0x02240A88 + mov r1, #0x68 + strh r3, [r2, #8] + bl MOD13_022141A0 + ldr r2, _022144AC ; =0x02240A50 + ldr r1, _022144B0 ; =0x02240A80 + ldr r3, [r2, #4] + strh r0, [r1, #8] + add r0, r3, #0x400 + add r1, r3, #0x300 + ldrh r3, [r0, #0xb0] + ldrh r0, [r1, #0x5a] + ldr r1, _022144B0 ; =0x02240A80 + cmp r3, r0 + moveq r0, #1 + streqb r0, [r2, #0xc] + ldr r0, [sp, #0x10] + ldr r3, [sp, #8] + orr r2, r0, #3 + ldr r0, [sp, #0xc] + and r4, r2, #0xff + str r0, [sp] + mov r0, #0 + mov r2, #0x70 + str r4, [sp, #4] + bl WM_SetGameInfo + ldr r0, _022144B4 ; =0x02240A48 + ldr r0, [r0] + cmp r0, #1 + addne sp, sp, #0x14 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bxne lr + ldr r0, _022144B8 ; =0x02240A4C + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bxeq lr + ldr r0, _022144AC ; =0x02240A50 + ldr r0, [r0, #4] + ldr r0, [r0, #0x4b8] + blx r1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + .align 2, 0 +_022144AC: .word 0x02240A50 +_022144B0: .word 0x02240A80 +_022144B4: .word 0x02240A48 +_022144B8: .word 0x02240A4C +_022144BC: .word 0x02240A90 +_022144C0: .word 0x0000035E +_022144C4: .word 0x02240A88 + + arm_func_start MOD13_022144C8 +MOD13_022144C8: ; 0x022144C8 + ldr r1, _022144F4 ; =0x02240A50 + mov r3, #1 + ldr r0, [r1, #4] + mov r2, #5 + add r0, r0, #0x400 + strh r3, [r0, #0xb0] + ldr r0, [r1, #4] + ldrb r0, [r0, #0x4b4] + strb r0, [r1, #0xe] + strb r2, [r1, #0xc] + bx lr + .align 2, 0 +_022144F4: .word 0x02240A50 + + arm_func_start MOD13_022144F8 +MOD13_022144F8: ; 0x022144F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r3, _02214660 ; =0x02240A50 + mov r6, r0 + ldr r0, [r3, #4] + ldr r3, [r3, #8] + add r7, r0, #0x358 + add r0, r3, #0x62 + cmp r0, r7 + mov r5, r1 + ldrls r0, _02214664 ; =0x02240A80 + movls r1, #0x62 + mov r4, r2 + strlsb r1, [r0, #0xc] + bls _02214558 + ldr r0, _02214664 ; =0x02240A80 + sub r1, r7, r3 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0xc] + ldr r1, _02214668 ; =0x02240A8E + mov r0, #0 + add r1, r1, r2 + rsb r2, r2, #0x62 + bl MIi_CpuClear16 +_02214558: + ldr r0, _02214664 ; =0x02240A80 + ldr r1, _02214660 ; =0x02240A50 + ldrb r2, [r0, #0xc] + ldr r0, [r1, #8] + ldr r1, _02214668 ; =0x02240A8E + bl MIi_CpuCopy16 + ldr r3, _02214660 ; =0x02240A50 + ldr r2, _02214664 ; =0x02240A80 + ldrb r8, [r3, #0xf] + ldrb r1, [r3, #0x10] + ldrb r7, [r2, #4] + strb r8, [r2, #0xa] + ldr r0, [r3, #4] + strb r1, [r2, #0xb] + ldrb r1, [r0, #0x4b2] + bic r7, r7, #3 + ldrb r8, [r3, #0xe] + and r1, r1, #3 + orr r1, r7, r1 + strb r1, [r2, #4] + ldrb ip, [r0, #0x4b3] + ldrb r1, [r2, #4] + ldrb r7, [r3, #0x11] + strb ip, [r2, #5] + strb r8, [r2, #6] + ldr r8, [r0, #0x4b8] + bic r1, r1, #0xfc + str r8, [r2] + ldrb r0, [r0, #0x4b5] + add lr, r7, #1 + mov ip, #0 + and r0, r0, #0x3f + orr r8, r1, r0, lsl #2 + ldr r0, _0221466C ; =0x02240A88 + mov r1, #0x68 + strb r8, [r2, #4] + strb lr, [r3, #0x11] + strb r7, [r2, #7] + strh ip, [r2, #8] + bl MOD13_022141A0 + ldr r1, _02214660 ; =0x02240A50 + ldr r2, _02214664 ; =0x02240A80 + ldrb ip, [r1, #0xf] + strh r0, [r2, #8] + ldrb r3, [r1, #0x10] + add r0, ip, #1 + strb r0, [r1, #0xf] + ldrb r0, [r1, #0xf] + mov r2, #0x70 + cmp r0, r3 + ldrlo r0, [r1, #8] + mov r3, r6 + addlo r0, r0, #0x62 + strlo r0, [r1, #8] + movhs r0, #4 + strhsb r0, [r1, #0xc] + orr r0, r4, #3 + and r4, r0, #0xff + str r5, [sp] + ldr r1, _02214664 ; =0x02240A80 + mov r0, #0 + str r4, [sp, #4] + bl WM_SetGameInfo + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02214660: .word 0x02240A50 +_02214664: .word 0x02240A80 +_02214668: .word 0x02240A8E +_0221466C: .word 0x02240A88 + + arm_func_start MOD13_02214670 +MOD13_02214670: ; 0x02214670 + ldr r0, _022146B8 ; =0x02240A50 + ldrb r1, [r0, #0xc] + cmp r1, #2 + bxne lr + ldr r2, [r0, #4] + ldrb r1, [r2, #0x4b2] + cmp r1, #0 + moveq r1, #9 + streqb r1, [r0, #0x10] + streq r2, [r0, #8] + addne r1, r2, #0x220 + movne r2, #4 + strne r1, [r0, #8] + strneb r2, [r0, #0x10] + ldr r0, _022146B8 ; =0x02240A50 + mov r1, #3 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_022146B8: .word 0x02240A50 + + arm_func_start MOD13_022146BC +MOD13_022146BC: ; 0x022146BC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02214760 ; =0x02240A50 + ldr r1, [r0] + cmp r1, #0 + bne _02214710 + bl MOD13_02214BF4 + mov r4, r0 + bl MOD13_02214BE0 + str r0, [sp] + mov ip, #8 + ldr r1, _02214764 ; =0x02240A80 + mov r3, r4 + mov r0, #0 + mov r2, #0x70 + str ip, [sp, #4] + bl WM_SetGameInfo + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, lr} + bx lr +_02214710: + ldr r0, [r0, #4] + cmp r0, #0 + beq _0221472C + ldr r0, [r0, #0x4bc] + cmp r0, #0 + beq _0221472C + mov r1, r0 +_0221472C: + ldr r0, _02214760 ; =0x02240A50 + str r1, [r0, #4] + bl MOD13_02214810 + ldr r1, _02214760 ; =0x02240A50 + mov r2, #2 + ldr r3, [r1, #4] + mov r0, #1 + ldrb r3, [r3, #0x4b4] + strb r3, [r1, #0xe] + strb r2, [r1, #0xc] + add sp, sp, #8 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02214760: .word 0x02240A50 +_02214764: .word 0x02240A80 + + arm_func_start MOD13_02214768 +MOD13_02214768: ; 0x02214768 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + ldr r4, _0221480C ; =0x02240A50 +_02214780: + ldrb r0, [r4, #0xc] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02214780 +_02214790: ; jump table + b _022147AC ; case 0 + b _022147AC ; case 1 + b _022147C4 ; case 2 + b _022147CC ; case 3 + b _022147E8 ; case 4 + b _022147F0 ; case 5 + b _02214780 ; case 6 +_022147AC: + bl MOD13_022146BC + cmp r0, #0 + bne _02214780 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022147C4: + bl MOD13_02214670 + b _02214780 +_022147CC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_022144F8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_022147E8: + bl MOD13_022144C8 + b _02214780 +_022147F0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_02214224 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_0221480C: .word 0x02240A50 + + arm_func_start MOD13_02214810 +MOD13_02214810: ; 0x02214810 + ldr r0, _02214830 ; =0x02240A50 + mov r1, #0 + strb r1, [r0, #0xd] + strb r1, [r0, #0xe] + strb r1, [r0, #0xf] + strb r1, [r0, #0x10] + strb r1, [r0, #0x11] + bx lr + .align 2, 0 +_02214830: .word 0x02240A50 + + arm_func_start MOD13_02214834 +MOD13_02214834: ; 0x02214834 + ldr r1, _0221485C ; =0x02240A50 + mov r3, #0 + ldr r0, _02214860 ; =0x02240A4C + mov r2, #1 + ldr ip, _02214864 ; =MOD13_02214810 + str r3, [r1] + str r3, [r1, #4] + strb r2, [r1, #0xc] + str r3, [r0] + bx ip + .align 2, 0 +_0221485C: .word 0x02240A50 +_02214860: .word 0x02240A4C +_02214864: .word MOD13_02214810 + + arm_func_start MOD13_02214868 +MOD13_02214868: ; 0x02214868 + ldr r1, _022148A8 ; =0x02240A50 + ldr r2, [r1] + cmp r2, #0 + streq r0, [r1] + beq _0221489C + ldr r1, [r2, #0x4bc] + cmp r1, #0 + beq _02214898 +_02214888: + mov r2, r1 + ldr r1, [r1, #0x4bc] + cmp r1, #0 + bne _02214888 +_02214898: + str r0, [r2, #0x4bc] +_0221489C: + mov r1, #0 + str r1, [r0, #0x4bc] + bx lr + .align 2, 0 +_022148A8: .word 0x02240A50 + + arm_func_start MOD13_022148AC +MOD13_022148AC: ; 0x022148AC + ldrh r1, [r0], #2 + mov r2, #0 + cmp r1, #0 + beq _022148CC +_022148BC: + ldrh r1, [r0], #2 + add r2, r2, #1 + cmp r1, #0 + bne _022148BC +_022148CC: + mov r0, r2 + bx lr + + arm_func_start MOD13_022148D4 +MOD13_022148D4: ; 0x022148D4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r4, _02214950 ; =0x0000035E + mov r6, r0 + mov r5, r2 + mov r0, r1 + ldr r2, _02214954 ; =0x0000014A + add r1, r6, r4 + mov r4, r3 + mov r7, #1 + bl MIi_CpuCopy16 + mov r2, #0 + mov r1, #2 +_02214908: + mov r0, r1, lsl r2 + ands r0, r5, r0 + addne r0, r7, #1 + add r2, r2, #1 + andne r7, r0, #0xff + cmp r2, #0xf + blt _02214908 + strb r7, [r6, #0x358] + orr r1, r5, #1 + add r0, r6, #0x300 + strh r1, [r0, #0x5a] + strh r4, [r0, #0x5c] + ldrb r0, [r6, #0x4b4] + add r0, r0, #1 + strb r0, [r6, #0x4b4] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02214950: .word 0x0000035E +_02214954: .word 0x0000014A + + arm_func_start MOD13_02214958 +MOD13_02214958: ; 0x02214958 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + cmp r2, #0 + movne r4, #0x200 + moveq r4, #0x20 + mov r6, r0 + mov r5, r1 + cmp r2, #0 + addne r5, r5, #0x20 + cmp r6, #0 + addeq sp, sp, #0x48 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + bxeq lr + add r0, sp, #0 + bl FS_InitFile + add r0, sp, #0 + mov r1, r6 + bl FS_OpenFile + cmp r0, #0 + addeq sp, sp, #0x48 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + bxeq lr + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x24] + sub r0, r1, r0 + cmp r4, r0 + beq _022149E4 + add r0, sp, #0 + bl FS_CloseFile + add sp, sp, #0x48 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_022149E4: + add r0, sp, #0 + mov r1, r5 + mov r2, r4 + bl FS_ReadFile + add r0, sp, #0 + bl FS_CloseFile + mov r0, #1 + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, lr} + bx lr + + arm_func_start MOD13_02214A0C +MOD13_02214A0C: ; 0x02214A0C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r1, r6 + mov r0, #0 + mov r2, #0x4c0 + bl MIi_CpuClear16 + mov r0, #0 + strb r0, [r6, #0x4b2] + ldr r0, [r5, #0xc] + mov r1, r6 + mov r2, #1 + bl MOD13_02214958 + cmp r0, #0 + moveq r7, #1 + ldr r0, [r5, #0x10] + mov r1, r6 + mov r2, #0 + movne r7, #0 + bl MOD13_02214958 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + orrs r0, r7, r0 + beq _02214A90 + mov r3, #1 + mov r1, r6 + mov r0, #0 + mov r2, #0x220 + strb r3, [r6, #0x4b2] + bl MIi_CpuClearFast +_02214A90: + ldr r0, [r5, #0x14] + cmp r4, #0 + str r0, [r6, #0x4b8] + beq _02214AB0 + mov r0, r4 + add r1, r6, #0x220 + mov r2, #0x16 + bl MIi_CpuCopy16 +_02214AB0: + ldrb r0, [r5, #0x18] + strb r0, [r6, #0x236] + ldr r0, [r5, #4] + bl MOD13_022148AC + mov r2, r0, lsl #0x11 + ldr r0, [r5, #4] + add r1, r6, #0x238 + mov r2, r2, lsr #0x10 + bl MIi_CpuCopy16 + ldr r0, [r5, #8] + add r1, r6, #0x298 + mov r2, #0xc0 + bl MIi_CpuCopy16 + mov r1, #1 + strb r1, [r6, #0x358] + add r0, r6, #0x300 + strh r1, [r0, #0x5a] + add r0, r6, #0x400 + strh r1, [r0, #0xb0] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + + arm_func_start MOD13_02214B08 +MOD13_02214B08: ; 0x02214B08 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #2 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + ldr r2, _02214B5C ; =0x02240AF8 + strh r0, [sp] + ldr r0, [r2] + strh r1, [sp, #2] + ldr r2, [r0, #0x51c] + add r1, sp, #0 + mov r0, #0xff + blx r2 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02214B5C: .word 0x02240AF8 + + arm_func_start MOD13_02214B60 +MOD13_02214B60: ; 0x02214B60 + ldr r0, _02214B7C ; =0x02240AF8 + ldr r0, [r0] + ldrb r0, [r0, #0x50d] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02214B7C: .word 0x02240AF8 + + arm_func_start MOD13_02214B80 +MOD13_02214B80: ; 0x02214B80 + ldr r0, _02214BDC ; =0x02240AF8 + ldr r1, [r0] + ldrh r0, [r1, #0x12] + cmp r0, #0 + ldrh r0, [r1, #0xe] + movne r2, #2 + moveq r2, #0 + cmp r0, #0 + movne r3, #1 + ldrh r0, [r1, #0x14] + moveq r3, #0 + cmp r0, #0 + movne ip, #4 + ldrh r0, [r1, #0x16] + moveq ip, #0 + cmp r0, #0 + movne r1, #8 + orr r0, r3, r2 + moveq r1, #0 + orr r0, ip, r0 + orr r0, r1, r0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02214BDC: .word 0x02240AF8 + + arm_func_start MOD13_02214BE0 +MOD13_02214BE0: ; 0x02214BE0 + ldr r0, _02214BF0 ; =0x02240AF8 + ldr r0, [r0] + ldrh r0, [r0, #0xc] + bx lr + .align 2, 0 +_02214BF0: .word 0x02240AF8 + + arm_func_start MOD13_02214BF4 +MOD13_02214BF4: ; 0x02214BF4 + ldr r0, _02214C04 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_02214C04: .word 0x02240AF8 + + arm_func_start MOD13_02214C08 +MOD13_02214C08: ; 0x02214C08 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr ip, _02214D04 ; =0x02240AF8 + mov r3, r1, lsl #0x10 + ldr r5, [ip] + mov ip, r2, lsl #0x10 + add lr, r5, #0x500 + ldrh r4, [lr, #0x28] + mov r1, r0 + mov r2, r3, lsr #0x10 + cmp r4, #0 + mov r4, ip, lsr #0x10 + beq _02214C48 + ldrh r0, [lr, #0x26] + cmp r0, #1 + bne _02214C58 +_02214C48: + add sp, sp, #4 + mov r0, #1 + ldmia sp!, {r4, r5, lr} + bx lr +_02214C58: + ldrh r0, [lr, #0x24] + cmp r0, #1 + beq _02214C70 + cmp r0, #2 + beq _02214CBC + b _02214CF4 +_02214C70: + ldrh r0, [lr, #0x2c] + cmp r0, #0 + moveq r0, #0x3e8 + movne r0, #0 + mov r3, r0, lsl #0x10 + str r4, [sp] + ldr r0, [r5, #0x508] + mov r3, r3, lsr #0x10 + bl MOD13_02214D0C + cmp r0, #2 + ldreq r1, _02214D04 ; =0x02240AF8 + moveq r2, #1 + ldreq r1, [r1] + add sp, sp, #4 + streqb r2, [r1, #0x50c] + cmp r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, lr} + bx lr +_02214CBC: + ldr r0, _02214D08 ; =MOD13_02215724 + mov r3, #0 + str r4, [sp] + bl MOD13_02214D0C + cmp r0, #2 + ldreq r1, _02214D04 ; =0x02240AF8 + moveq r2, #1 + ldreq r1, [r1] + add sp, sp, #4 + streqb r2, [r1, #0x50c] + cmp r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, lr} + bx lr +_02214CF4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02214D04: .word 0x02240AF8 +_02214D08: .word MOD13_02215724 + + arm_func_start MOD13_02214D0C +MOD13_02214D0C: ; 0x02214D0C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldrh r4, [sp, #0x18] + mov r3, r2 + mov r2, r1 + str r4, [sp] + mov r4, #1 + str r4, [sp, #4] + mov r4, #3 + mov r1, #0 + str r4, [sp, #8] + bl WM_SetMPDataToPortEx + mov r4, r0 + mov r1, r4 + mov r0, #0xf + bl MOD13_02214B08 + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start MOD13_02214D5C +MOD13_02214D5C: ; 0x02214D5C + ldr r1, _02214D68 ; =0x02240B00 + strh r0, [r1, #6] + bx lr + .align 2, 0 +_02214D68: .word 0x02240B00 + + arm_func_start MOD13_02214D6C +MOD13_02214D6C: ; 0x02214D6C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + ldr r0, _02214F08 ; =MOD13_02216098 + mov r1, r5 + bl WM_Disconnect + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + cmp r5, #0x10 + addhs sp, sp, #4 + ldmhsia sp!, {r4, r5, r6, r7, lr} + bxhs lr + ldr r2, _02214F0C ; =0x02240AFC + sub r4, r5, #1 + ldr r0, [r2] + mov r1, #0 + add r0, r0, r4, lsl #1 + add r0, r0, #0x1400 + strh r1, [r0, #0x8a] + ldr r3, [r2] + ldr r0, _02214F10 ; =0x000014A8 + mov r2, #4 + add r0, r3, r0 + add r0, r0, r4, lsl #2 + bl MI_CpuFill8 + ldr r0, _02214F0C ; =0x02240AFC + mov r2, #0x16 + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x1340 + mla r0, r4, r2, r0 + bl MI_CpuFill8 + mov r0, r5 + bl MOD13_02217234 + ldr lr, _02214F0C ; =0x02240AFC + mov r2, #0 + ldr r1, [lr] + mvn r0, #0 + add r1, r1, r4, lsl #1 + add r1, r1, #0x1700 + strh r2, [r1, #0x54] + ldr r3, [lr] + add r1, r3, r4 + add r1, r1, #0x1500 + ldrsb r2, [r1, #0x26] + cmp r2, r0 + beq _02214E9C + ldr r1, _02214F14 ; =0x000005D4 + and r2, r2, #0xff + mul r1, r2, r1 + add r2, r3, r1 + add ip, r2, #0x1d00 + mov r3, #1 + ldrh r6, [ip, #0x4e] + mvn r2, r3, lsl r5 + and r6, r6, r2 + strh r6, [ip, #0x4e] + ldr r7, [lr] + mov r6, r4 + add r7, r7, r1 + add ip, r7, #0x1d00 + ldrh r7, [ip, #0x50] + orr r3, r7, r3, lsl r5 + strh r3, [ip, #0x50] + ldr r3, [lr] + add r3, r3, r6 + add r3, r3, #0x1000 + strb r0, [r3, #0x526] + ldr r0, [lr] + add r0, r0, r1 + add r0, r0, #0x1d00 + ldrh r1, [r0, #0x4c] + and r1, r1, r2 + strh r1, [r0, #0x4c] +_02214E9C: + ldr r1, _02214F0C ; =0x02240AFC + mov r0, #1 + ldr r2, [r1] + mov r5, r0, lsl r5 + add r0, r2, #0x1500 + ldrh r0, [r0, #0x36] + ands r0, r0, r5 + beq _02214EE4 + add r0, r2, #0x1000 + ldrb r3, [r0, #0x535] + mvn r2, r5 + sub r3, r3, #1 + strb r3, [r0, #0x535] + ldr r0, [r1] + add r0, r0, #0x1500 + ldrh r1, [r0, #0x36] + and r1, r1, r2 + strh r1, [r0, #0x36] +_02214EE4: + ldr r0, _02214F0C ; =0x02240AFC + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + add r0, r0, #0x1000 + str r1, [r0, #0x4e8] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02214F08: .word MOD13_02216098 +_02214F0C: .word 0x02240AFC +_02214F10: .word 0x000014A8 +_02214F14: .word 0x000005D4 + + arm_func_start MOD13_02214F18 +MOD13_02214F18: ; 0x02214F18 + stmdb sp!, {r4, lr} + bl OS_DisableInterrupts + ldr r1, _02214F54 ; =0x02240AFC + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _02214F40 + bl OS_Terminate +_02214F40: + bl MOD13_02214F58 + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02214F54: .word 0x02240AFC + + arm_func_start MOD13_02214F58 +MOD13_02214F58: ; 0x02214F58 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, #1 + bl OS_DisableInterrupts + ldr r1, _02214FD8 ; =0x02240AF8 + mov r4, r0 + ldr r2, [r1] + add r0, r2, #0x500 + ldrh r0, [r0, #0x26] + cmp r0, #0 + bne _02214FC0 + mov r0, #0 + str r0, [r2, #0x5e4] + ldr r0, [r1] + mov r1, r5 + add r0, r0, #0x500 + strh r1, [r0, #0x26] + bl MOD13_02216DA4 + cmp r0, #0 + beq _02214FB8 + ldr r0, _02214FDC ; =MOD13_02214FE0 + bl MOD13_02216B94 + mov r5, #0 + b _02214FC0 +_02214FB8: + bl MOD13_02214FEC + mov r5, r0 +_02214FC0: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02214FD8: .word 0x02240AF8 +_02214FDC: .word MOD13_02214FE0 + + arm_func_start MOD13_02214FE0 +MOD13_02214FE0: ; 0x02214FE0 + ldr ip, _02214FE8 ; =MOD13_02214FEC + bx ip + .align 2, 0 +_02214FE8: .word MOD13_02214FEC + + arm_func_start MOD13_02214FEC +MOD13_02214FEC: ; 0x02214FEC + stmdb sp!, {r4, lr} + ldr r0, _02215024 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_Reset + mov r4, r0 + mov r1, r4 + mov r0, #1 + bl MOD13_02214B08 + cmp r4, #2 + moveq r4, #0 + mov r0, r4 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_02215024: .word 0x02240AF8 + + arm_func_start MOD13_02215028 +MOD13_02215028: ; 0x02215028 + ldr r1, _02215044 ; =0x02240AFC + ldr ip, _02215048 ; =MOD13_0221504C + ldr r1, [r1] + mov r2, #1 + add r1, r1, #0x1000 + str r2, [r1, #0x320] + bx ip + .align 2, 0 +_02215044: .word 0x02240AFC +_02215048: .word MOD13_0221504C + + arm_func_start MOD13_0221504C +MOD13_0221504C: ; 0x0221504C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02215234 ; =0x02240AF8 + ldr r2, _02215238 ; =0x02240AFC + ldr r3, [r1] + ldr r1, _0221523C ; =0x00007D1F + strh r4, [r3, #0x32] + ldr r3, [r2] + ldr r2, _02215240 ; =0x02240AF4 + add r1, r3, r1 + bic r1, r1, #0x1f + mov r4, r0 + str r1, [r2] + add r0, r3, #0x1000 + ldr r5, [r0, #0x4e4] + ldr r2, _02215244 ; =0x000069C0 + add r1, r3, #0x1340 + mov r0, #0 + bl MIi_CpuClear16 + mov r0, r5 + bl MOD13_02213368 + ldr r1, _02215234 ; =0x02240AF8 + ldr r0, _02215238 ; =0x02240AFC + ldr r3, [r1] + ldr r2, [r0] + add r0, r3, #0x500 + ldrh r3, [r0] + add r0, r2, #0x1000 + sub r2, r3, #6 + str r2, [r0, #0x318] + ldr r0, [r1] + add r0, r0, #0x500 + ldrh r0, [r0, #2] + bl MOD13_022172A0 + ldr r1, _02215238 ; =0x02240AFC + ldr r0, _02215248 ; =0x00001538 + ldr r1, [r1] + add r0, r1, r0 + bl MOD13_02217280 + mov r5, #0 + ldr r2, _02215238 ; =0x02240AFC + mov r0, r5 + mvn r3, #0 +_02215100: + ldr r1, [r2] + add r1, r1, r5, lsl #2 + add r1, r1, #0x1000 + str r0, [r1, #0x4e8] + ldr r1, [r2] + add r1, r1, r5 + add r1, r1, #0x1000 + add r5, r5, #1 + strb r3, [r1, #0x526] + cmp r5, #0xf + blt _02215100 + ldr r1, [r2] + ldr r3, _0221524C ; =0x00001788 + add r1, r1, #0x1000 + strb r0, [r1, #0x524] + ldr r1, [r2] + ldr r2, _02215250 ; =0x00005D40 + add r1, r1, r3 + bl MIi_CpuClear16 + ldr r1, _02215238 ; =0x02240AFC + ldr r0, _02215254 ; =0x00001754 + ldr r2, [r1] + mov r1, #0 + add r0, r2, r0 + mov r2, #0x1e + bl MI_CpuFill8 + ldr r2, _02215234 ; =0x02240AF8 + mov r3, #1 + ldr r0, [r2] + ldr r1, _02215258 ; =MOD13_02212C20 + add r0, r0, #0x500 + strh r3, [r0, #0x24] + ldr r0, [r2] + ldr r3, _0221525C ; =MOD13_02216098 + str r1, [r0, #0x51c] + ldr r0, [r2] + mov r1, #0xf + str r3, [r0, #0x508] + ldr r3, [r2] + add r0, r3, #0x500 + ldrh r0, [r0] + strh r0, [r3, #0x34] + ldr r0, [r2] + ldrh r3, [r0, #0x34] + add r0, r0, #0x500 + add r3, r3, #0x23 + bic r3, r3, #0x1f + strh r3, [r0, #0x18] + ldr r3, [r2] + add r0, r3, #0x500 + ldrh r0, [r0, #2] + strh r0, [r3, #0x36] + ldr r0, [r2] + ldrh r2, [r0, #0x36] + add r0, r0, #0x500 + add r2, r2, #0xe + mul r1, r2, r1 + add r1, r1, #0x29 + bic r1, r1, #0x1f + mov r1, r1, lsl #1 + strh r1, [r0, #0x1a] + bl MOD13_02214834 + bl MOD13_02215260 + mov r5, r0 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0xf + mov r1, #1 + bl PXI_IsCallbackReady + ldr r1, _02215238 ; =0x02240AFC + ldr r1, [r1] + add r1, r1, #0x7000 + str r0, [r1, #0x4c8] + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02215234: .word 0x02240AF8 +_02215238: .word 0x02240AFC +_0221523C: .word 0x00007D1F +_02215240: .word 0x02240AF4 +_02215244: .word 0x000069C0 +_02215248: .word 0x00001538 +_0221524C: .word 0x00001788 +_02215250: .word 0x00005D40 +_02215254: .word 0x00001754 +_02215258: .word MOD13_02212C20 +_0221525C: .word MOD13_02216098 + + arm_func_start MOD13_02215260 +MOD13_02215260: ; 0x02215260 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02215350 ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + mov r0, #0xa + add r1, r1, #0x500 + strh r3, [r1, #0x28] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x2a] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x26] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x48] + bl MOD13_02214D5C + ldr r0, _02215354 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _02215320 + ldr r6, _02215358 ; =0x02240AF4 + ldr r5, _02215350 ; =0x02240AF8 + ldr r4, _0221535C ; =0x02240AF0 +_022152C8: + ldr r1, [r5] + ldrh r2, [r4] + ldr r0, [r6] + ldr r1, [r1, #0x508] + bl WM_Initialize + cmp r0, #4 + beq _022152C8 + cmp r0, #2 + movne r0, #8 + ldmneia sp!, {r4, r5, r6, lr} + bxne lr + ldr r0, _02215350 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_SetIndCallback + ldr r0, _02215350 ; =0x02240AF8 + mov r2, #1 + ldr r1, [r0] + mov r0, #0 + strb r2, [r1, #0x50d] + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02215320: + ldr r0, _02215350 ; =0x02240AF8 + ldr r0, [r0] + ldr r0, [r0, #0x508] + bl WM_SetIndCallback + ldr r0, _02215350 ; =0x02240AF8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x50d] + bl MOD13_02216910 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02215350: .word 0x02240AF8 +_02215354: .word 0x02240AFC +_02215358: .word 0x02240AF4 +_0221535C: .word 0x02240AF0 + + arm_func_start MOD13_02215360 +MOD13_02215360: ; 0x02215360 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + ldr r1, _02215400 ; =0x02240AF8 + mov r6, r0 + ldr r1, [r1] + ldrb r1, [r1, #0x50d] + cmp r1, #0 + beq _02215398 + bl OS_RestoreInterrupts + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02215398: + mov r0, r5 + mov r2, r4 + mov r1, #8 + bl MOD13_02215404 + cmp r0, #0 + bne _022153C4 + mov r0, r6 + bl OS_RestoreInterrupts + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_022153C4: + ldr r2, _02215400 ; =0x02240AF8 + mov r0, r6 + ldr r1, [r2] + mov r3, #8 + strh r4, [r1, #0x10] + ldr r1, [r2] + add r1, r1, #0x500 + strh r5, [r1] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #2] + bl OS_RestoreInterrupts + mov r0, #1 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02215400: .word 0x02240AF8 + + arm_func_start MOD13_02215404 +MOD13_02215404: ; 0x02215404 + ldr r3, _02215468 ; =0x000001FE + cmp r0, r3 + bhi _02215418 + cmp r0, #0xe4 + bhs _02215420 +_02215418: + mov r0, #0 + bx lr +_02215420: + cmp r1, #0x10 + bhi _02215430 + cmp r1, #8 + bhs _02215438 +_02215430: + mov r0, #0 + bx lr +_02215438: + add r1, r1, #0x20 + mov r3, r1, lsl #2 + ldr r1, _0221546C ; =0x0000014A + add r0, r0, #0x26 + add r1, r1, r0, lsl #2 + add r0, r3, #0x70 + mla r1, r2, r0, r1 + ldr r0, _02215470 ; =0x000015E0 + cmp r1, r0 + movlt r0, #1 + movge r0, #0 + bx lr + .align 2, 0 +_02215468: .word 0x000001FE +_0221546C: .word 0x0000014A +_02215470: .word 0x000015E0 + + arm_func_start MOD13_02215474 +MOD13_02215474: ; 0x02215474 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r4, _0221567C ; =0x02240AFC + mov sb, r1 + ldr r1, [r4] + mov r8, r2 + mov r7, r3 + cmp r1, #0 + beq _022154B4 + add r1, r1, #0x1300 + ldrh r1, [r1, #0x16] + cmp r1, #0 + addne sp, sp, #4 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, lr} + bxne lr +_022154B4: + add r1, r0, #0x1f + ldr r0, _02215680 ; =0x00001E1F + bic r6, r1, #0x1f + add r0, r6, r0 + cmp r7, #0x10000 + bic r5, r0, #0x1f + bne _022154D8 + bl WM_GetNextTgid + mov r7, r0 +_022154D8: + bl OS_DisableInterrupts + ldr ip, _02215684 ; =0x02240AF8 + ldr r3, _0221567C ; =0x02240AFC + mov r4, r0 + ldr r1, [sp, #0x20] + ldr r0, _02215688 ; =0x02240AF0 + ldr r2, _0221568C ; =0x0000FFFF + strh r1, [r0] + ldr r0, _02215690 ; =0x0223F798 + ldr r1, _02215694 ; =0x0223F78C + strh r2, [r0] + mov r2, #5 + ldr r0, _02215698 ; =0x0223F790 + strh r2, [r1] + mov r2, #0x28 + ldr r1, _0221569C ; =0x0223F794 + strh r2, [r0] + ldr r0, _022156A0 ; =0x0223F7A0 + strh r2, [r1] + mov r2, #1 + mov r1, r6 + str r2, [r0] + mov r0, #0 + mov r2, #0x1e00 + str r6, [ip] + str r5, [r3] + bl MIi_CpuClear32 + mov r1, r5 + mov r0, #0 + mov r2, #0x1340 + bl MIi_CpuClear16 + ldrb r0, [sb, #1] + add r1, r6, #0x530 + mov r2, #0 + cmp r0, #0 + ble _02215584 +_02215568: + add r0, sb, r2, lsl #1 + ldrh r0, [r0, #2] + add r2, r2, #1 + strh r0, [r1], #2 + ldrb r0, [sb, #1] + cmp r2, r0 + blt _02215568 +_02215584: + ldr r0, _022156A4 ; =0x00000538 + mov r3, #0 + add ip, r6, r0 + ldr r0, _022156A8 ; =0x0223F79C +_02215594: + ldr r2, [r0] + ldrh r1, [r2] + cmp r1, #0 + beq _022155C0 + add r1, r2, #2 + str r1, [r0] + ldrh r1, [r2] + add r3, r3, #1 + cmp r3, #0x10 + strh r1, [ip], #2 + blt _02215594 +_022155C0: + mov r0, sb + add r1, r5, #0x1300 + mov r2, #0x16 + bl MI_CpuCopy8 + ldrb r0, [sb, #1] + mov r2, #0 + cmp r0, #0xa + addlo r0, r5, r0, lsl #1 + addlo r0, r0, #0x1300 + movlo r1, #0 + strloh r1, [r0, #2] + add r0, r6, #0x500 + mov r1, #0x100 + strh r1, [r0] + mov r1, #8 + strh r1, [r0, #2] + strh r2, [r0, #0x18] + strh r2, [r0, #0x1a] + mov r1, #1 + strh r1, [r0, #0x2c] + add r0, r5, #0x400 + str r0, [r6, #0x504] + strh r2, [r6, #0xe] + strh r2, [r6, #0x12] + strh r1, [r6, #0x16] + strh r2, [r6, #0x14] + str r8, [r6, #8] + strh r7, [r6, #0xc] + bl MOD13_022156AC + add r0, r0, #0xc8 + strh r0, [r6, #0x18] + mov r0, #0xf + strh r0, [r6, #0x10] + mov r3, #0 + strb r3, [r6, #0x50c] + strb r3, [r6, #0x50d] + add r1, r5, #0x1300 + mov r2, #1 + strh r2, [r1, #0x16] + add r1, r5, #0x1000 + mov r0, r4 + str r3, [r1, #0x31c] + bl OS_RestoreInterrupts + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_0221567C: .word 0x02240AFC +_02215680: .word 0x00001E1F +_02215684: .word 0x02240AF8 +_02215688: .word 0x02240AF0 +_0221568C: .word 0x0000FFFF +_02215690: .word 0x0223F798 +_02215694: .word 0x0223F78C +_02215698: .word 0x0223F790 +_0221569C: .word 0x0223F794 +_022156A0: .word 0x0223F7A0 +_022156A4: .word 0x00000538 +_022156A8: .word 0x0223F79C + + arm_func_start MOD13_022156AC +MOD13_022156AC: ; 0x022156AC + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + bl OS_GetMacAddress + mov r2, #0 + add r1, sp, #0 + mov r3, r2 +_022156C8: + ldrb r0, [r1] + add r2, r2, #1 + cmp r2, #6 + add r3, r3, r0 + add r1, r1, #1 + blt _022156C8 + ldr r1, _02215718 ; =0x027FFC3C + mov r0, #7 + ldr r2, [r1] + ldr r1, _0221571C ; =0xCCCCCCCD + add r2, r3, r2 + mul r3, r2, r0 + umull r1, r0, r3, r1 + ldr r2, _02215720 ; =0x00000014 + mov r0, r0, lsr #4 + umull r0, r1, r2, r0 + sub r0, r3, r0 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02215718: .word 0x027FFC3C +_0221571C: .word 0xCCCCCCCD +_02215720: .word 0x00000014 + + arm_func_start MOD13_02215724 +MOD13_02215724: ; 0x02215724 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r6, r0 + ldrh r0, [r6] + ldr r1, _02215F98 ; =0x02240AF8 + cmp r0, #0x1d + ldr r5, [r1] + bgt _022157B0 + cmp r0, #0x1d + bge _02215838 + cmp r0, #0x15 + addls pc, pc, r0, lsl #2 + b _02215F7C +_02215758: ; jump table + b _022157BC ; case 0 + b _02215E4C ; case 1 + b _02215EB8 ; case 2 + b _02215F7C ; case 3 + b _02215F7C ; case 4 + b _02215F7C ; case 5 + b _02215F7C ; case 6 + b _02215F7C ; case 7 + b _02215F7C ; case 8 + b _02215F7C ; case 9 + b _022158DC ; case 10 + b _02215B64 ; case 11 + b _02215BBC ; case 12 + b _02215F7C ; case 13 + b _02215D54 ; case 14 + b _02215DDC ; case 15 + b _02215F7C ; case 16 + b _02215F7C ; case 17 + b _02215F7C ; case 18 + b _02215F7C ; case 19 + b _02215F7C ; case 20 + b _02215F20 ; case 21 +_022157B0: + cmp r0, #0x80 + beq _02215F50 + b _02215F7C +_022157BC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _022157E4 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_022157E4: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x15 + blx r2 + ldr r0, _02215F9C ; =0x0223F794 + ldr r1, _02215FA0 ; =0x0223F798 + ldrh r3, [r0] + ldr r2, _02215FA4 ; =0x0223F790 + ldr r0, _02215FA8 ; =0x0223F78C + str r3, [sp] + ldrh r3, [r0] + ldrh r1, [r1] + ldrh r2, [r2] + ldr r0, _02215FAC ; =MOD13_02215724 + bl WM_SetLifeTime + mov r1, r0 + mov r0, #0x1d + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215838: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215860 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215860: + ldr r0, _02215FB0 ; =0x02240B00 + add r2, r5, #0x440 + ldrh r1, [r0, #4] + str r2, [r0] + mov r2, #1 + cmp r1, #0 + moveq r1, #1 + streqh r1, [r0, #4] + ldr r0, _02215FB0 ; =0x02240B00 + ldrh r1, [r0, #6] + cmp r1, #0 + moveq r1, #0xc8 + streqh r1, [r0, #6] + ldr r1, _02215FB0 ; =0x02240B00 + mov r0, #0xff + strb r0, [r1, #8] + strb r0, [r1, #9] + strb r0, [r1, #0xa] + strb r0, [r1, #0xb] + strb r0, [r1, #0xc] + strb r0, [r1, #0xd] + str r2, [r5, #0x5e4] + ldr r0, _02215FAC ; =MOD13_02215724 + str r2, [r5, #0x5e8] + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_022158DC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215904 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215904: + ldrh r0, [r6, #8] + cmp r0, #3 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r0, #4 + beq _02215AE0 + cmp r0, #5 + bne _02215B48 + add r0, r5, #0x500 + ldrh r0, [r0, #0xe0] + add r3, r5, #0x600 + mov r4, #0 + cmp r0, #0 + ble _02215A18 + ldrb r1, [r6, #0xa] + mov r2, r3 +_02215948: + ldrb r7, [r2, #0xca] + cmp r1, r7 + bne _02215A08 + ldrb r8, [r6, #0xb] + ldrb r7, [r2, #0xcb] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xc] + ldrb r7, [r2, #0xcc] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xd] + ldrb r7, [r2, #0xcd] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xe] + ldrb r7, [r2, #0xce] + cmp r8, r7 + bne _02215A08 + ldrb r8, [r6, #0xf] + ldrb r7, [r2, #0xcf] + cmp r8, r7 + bne _02215A08 + mov r0, #0x180 + mul r7, r4, r0 + add r0, r3, r7 + ldrh r1, [r6, #0x36] + add r8, r6, #0x38 + add lr, r0, #0xf8 + strh r1, [r0, #0xf6] + mov ip, #8 +_022159C4: + ldmia r8!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022159C4 + add r0, r5, #0x600 + add r7, r0, r7 + mov r0, r7 + mov r1, #0xc0 + bl DC_InvalidateRange + ldr r0, _02215FB4 ; =0x02240AF0 + mov r2, r7 + ldrh r0, [r0] + add r1, r5, #0x440 + mov r3, #0xc0 + bl MI_DmaCopy16 + str r4, [r5, #0x5ec] + b _02215A78 +_02215A08: + add r4, r4, #1 + cmp r4, r0 + add r2, r2, #0x180 + blt _02215948 +_02215A18: + cmp r4, #0x10 + bge _02215A78 + mov r0, #0x180 + mul r7, r4, r0 + add r1, r3, r7 + mov r0, r6 + add ip, r4, #1 + add r3, r5, #0x500 + add r1, r1, #0xc0 + mov r2, #0xb8 + strh ip, [r3, #0xe0] + bl MIi_CpuCopy16 + add r0, r5, #0x600 + add r7, r0, r7 + mov r0, r7 + mov r1, #0xc0 + bl DC_InvalidateRange + ldr r0, _02215FB4 ; =0x02240AF0 + mov r2, r7 + ldrh r0, [r0] + add r1, r5, #0x440 + mov r3, #0xc0 + bl MI_DmaCopy16 + str r4, [r5, #0x5ec] +_02215A78: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #4 + blx r2 + ldr r0, [r5, #0x5e4] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, [r5, #0x5e8] + cmp r0, #0 + beq _02215ABC + ldr r0, _02215FB0 ; =0x02240B00 + bl MOD13_022169EC + cmp r0, #0 + bne _02215ABC + bl MOD13_02214F58 +_02215ABC: + ldr r0, _02215FAC ; =MOD13_02215724 + ldr r1, _02215FB0 ; =0x02240B00 + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215AE0: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #5 + blx r2 + ldr r0, [r5, #0x5e4] + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r0, [r5, #0x5e8] + cmp r0, #0 + beq _02215B24 + ldr r0, _02215FB0 ; =0x02240B00 + bl MOD13_022169EC + cmp r0, #0 + bne _02215B24 + bl MOD13_02214F58 +_02215B24: + ldr r0, _02215FAC ; =MOD13_02215724 + ldr r1, _02215FB0 ; =0x02240B00 + bl WM_StartScan + mov r1, r0 + mov r0, #0xa + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B48: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B64: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215B8C + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215B8C: + mov r2, #0 + str r2, [sp] + ldr r1, [r5, #0x520] + ldr r0, _02215FAC ; =MOD13_02215724 + mov r3, #1 + bl WM_StartConnectEx + mov r1, r0 + mov r0, #0xc + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215BBC: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215BF0 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0xe0] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0xb + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215BF0: + ldrh r0, [r6, #8] + cmp r0, #9 + bgt _02215C20 + cmp r0, #6 + blt _02215D38 + cmp r0, #6 + beq _02215C34 + cmp r0, #7 + beq _02215C54 + cmp r0, #9 + beq _02215D0C + b _02215D38 +_02215C20: + cmp r0, #0x1a + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + b _02215D38 +_02215C34: + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x2a] + mov r1, #1 + strh r1, [r0, #0x28] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215C54: + ldrh r2, [r6, #0xa] + add r0, r5, #0x500 + mov r1, r6 + strh r2, [r0, #0xe2] + ldr r2, [r5, #0x51c] + mov r0, #6 + blx r2 + ldr r1, _02215FB8 ; =MOD13_02215FC0 + add r3, r5, #0x500 + mov r0, #1 + mov r2, #0 + strh r0, [r3, #0x2a] + bl WM_SetPortCallback + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, r5, r6, r7, r8, lr} + bxne lr + add r0, r5, #0x500 + ldrh r0, [r0, #0x2c] + add r1, r5, #0x500 + ldrh r2, [r1, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r2, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldrh r2, [r1, #0x1a] + ldr r1, [r5, #0x504] + ldr r0, _02215FAC ; =MOD13_02215724 + add r3, r5, #0x40 + bl WM_StartMPEx + mov r1, r0 + mov r0, #0xe + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D0C: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0xa + blx r2 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x2a] + strh r1, [r0, #0x28] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D38: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215D54: + ldrh r0, [r6, #4] + cmp r0, #0xa + beq _02215D84 + cmp r0, #0xc + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + cmp r0, #0xd + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + b _02215DC0 +_02215D84: + add r0, r5, #0x500 + mov r1, #1 + strh r1, [r0, #0x28] + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215DC0: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215DDC: + mov r0, #0 + strb r0, [r5, #0x50c] + ldrh r0, [r6, #2] + cmp r0, #0 + bne _02215E04 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #8 + blx r2 + b _02215E30 +_02215E04: + cmp r0, #9 + bne _02215E20 + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x29 + blx r2 + b _02215E30 +_02215E20: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x12 + blx r2 +_02215E30: + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215E4C: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215E80 + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x26] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215E80: + add r0, r5, #0x500 + mov r2, #0 + strh r2, [r0, #0x2a] + ldr r1, [r1] + ldr r0, _02215FAC ; =MOD13_02215724 + add r1, r1, #0x500 + strh r2, [r1, #0x28] + bl WM_End + mov r1, r0 + mov r0, #2 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215EB8: + ldrh r0, [r6, #2] + cmp r0, #0 + beq _02215EEC + add r0, r5, #0x500 + mov r1, #0 + strh r1, [r0, #0x26] + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215EEC: + mov r2, #0 + ldr r0, _02215FBC ; =0x02240AFC + strb r2, [r5, #0x50d] + ldr r0, [r0] + mov r1, r6 + add r0, r0, #0x1300 + strh r2, [r0, #0x16] + ldr r2, [r5, #0x51c] + mov r0, #0x11 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F20: + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, r5, r6, r7, r8, lr} + bxeq lr + ldr r2, [r5, #0x51c] + mov r0, #0x19 + mov r1, #0 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F50: + ldrh r0, [r6, #4] + cmp r0, #0x16 + beq _02215F6C + add sp, sp, #0x20 + cmp r0, #0x17 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F6C: + bl OS_Terminate + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr +_02215F7C: + ldr r2, [r5, #0x51c] + mov r1, r6 + mov r0, #0x100 + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, lr} + bx lr + .align 2, 0 +_02215F98: .word 0x02240AF8 +_02215F9C: .word 0x0223F794 +_02215FA0: .word 0x0223F798 +_02215FA4: .word 0x0223F790 +_02215FA8: .word 0x0223F78C +_02215FAC: .word MOD13_02215724 +_02215FB0: .word 0x02240B00 +_02215FB4: .word 0x02240AF0 +_02215FB8: .word MOD13_02215FC0 +_02215FBC: .word 0x02240AFC + + arm_func_start MOD13_02215FC0 +MOD13_02215FC0: ; 0x02215FC0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, r0 + ldrh r0, [r1, #2] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {lr} + bxne lr + ldrh r0, [r1, #4] + cmp r0, #0x15 + bgt _02216034 + cmp r0, #0x15 + bge _02216074 + cmp r0, #9 + addgt sp, sp, #4 + ldmgtia sp!, {lr} + bxgt lr + cmp r0, #7 + addlt sp, sp, #4 + ldmltia sp!, {lr} + bxlt lr + cmp r0, #7 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + add sp, sp, #4 + cmp r0, #9 + ldmia sp!, {lr} + bx lr +_02216034: + cmp r0, #0x1a + addgt sp, sp, #4 + ldmgtia sp!, {lr} + bxgt lr + cmp r0, #0x19 + addlt sp, sp, #4 + ldmltia sp!, {lr} + bxlt lr + cmp r0, #0x19 + addeq sp, sp, #4 + ldmeqia sp!, {lr} + bxeq lr + add sp, sp, #4 + cmp r0, #0x1a + ldmia sp!, {lr} + bx lr +_02216074: + ldr r2, _02216094 ; =0x02240AF8 + mov r0, #9 + ldr r2, [r2] + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02216094: .word 0x02240AF8 + + arm_func_start MOD13_02216098 +MOD13_02216098: ; 0x02216098 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r0 + ldrh r0, [r4] + cmp r0, #0x19 + bgt _02216104 + cmp r0, #0x19 + bge _022161F8 + cmp r0, #0xf + addls pc, pc, r0, lsl #2 + b _022168D8 +_022160C4: ; jump table + b _02216124 ; case 0 + b _02216694 ; case 1 + b _02216744 ; case 2 + b _022168D8 ; case 3 + b _022168D8 ; case 4 + b _022168D8 ; case 5 + b _022168D8 ; case 6 + b _022161BC ; case 7 + b _02216250 ; case 8 + b _022168D8 ; case 9 + b _022168D8 ; case 10 + b _022168D8 ; case 11 + b _022168D8 ; case 12 + b _022167C4 ; case 13 + b _022164E0 ; case 14 + b _02216584 ; case 15 +_02216104: + cmp r0, #0x1d + bgt _02216118 + cmp r0, #0x1d + beq _02216164 + b _022168D8 +_02216118: + cmp r0, #0x80 + beq _02216804 + b _022168D8 +_02216124: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216154 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216154: + bl MOD13_02216910 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216164: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216194 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216194: + ldr r1, _022168FC ; =0x02240AF8 + ldr r0, _02216900 ; =MOD13_02216098 + ldr r1, [r1] + bl WM_SetParentParameter + mov r1, r0 + mov r0, #7 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022161BC: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x15 + ldr r2, [r2, #0x51c] + blx r2 + ldr r0, _02216900 ; =MOD13_02216098 + mov r1, #1 + bl WM_SetBeaconIndication + mov r1, r0 + mov r0, #0x19 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022161F8: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216228 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216228: + ldr r1, _02216904 ; =0x0223F7A0 + ldr r0, _02216900 ; =MOD13_02216098 + ldr r1, [r1] + bl FUN_020D9564 + mov r1, r0 + mov r0, #8 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216250: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216280 + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216280: + ldrh r0, [r4, #8] + cmp r0, #7 + bgt _022162B8 + cmp r0, #7 + bge _0221630C + cmp r0, #2 + bgt _022164BC + cmp r0, #0 + blt _022164BC + cmp r0, #0 + beq _022162E0 + cmp r0, #2 + beq _02216480 + b _022164BC +_022162B8: + cmp r0, #9 + bgt _022162CC + cmp r0, #9 + beq _02216440 + b _022164BC +_022162CC: + cmp r0, #0x1a + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + b _022164BC +_022162E0: + ldr r1, _022168FC ; =0x02240AF8 + mov r2, #0 + ldr r0, [r1] + add sp, sp, #0x20 + add r0, r0, #0x500 + strh r2, [r0, #0x2a] + ldr r0, [r1] + add r0, r0, #0x500 + strh r2, [r0, #0x28] + ldmia sp!, {r4, lr} + bx lr +_0221630C: + ldr r2, _022168FC ; =0x02240AF8 + ldr r0, [r2] + add r0, r0, #0x500 + ldrh r1, [r0, #0x26] + cmp r1, #1 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldrh lr, [r0, #0x2a] + ldrh r3, [r4, #0x10] + mov ip, #1 + mov r1, r4 + orr r3, lr, ip, lsl r3 + strh r3, [r0, #0x2a] + ldr r2, [r2] + mov r0, #0 + ldr r2, [r2, #0x51c] + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + ldr r0, [r1] + add r0, r0, #0x500 + ldrh r0, [r0, #0x28] + cmp r0, #0 + bne _02216408 + ldr r0, _02216908 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r2, [r0, #0x31c] + cmp r2, #0 + bne _02216408 + mov r2, #1 + str r2, [r0, #0x31c] + ldr r0, [r1] + ldr r1, _022168FC ; =0x02240AF8 + add r0, r0, #0x500 + ldrh r0, [r0, #0x2c] + ldr ip, [r1] + mov r1, #1 + cmp r0, #0 + movne r2, #0 + mov r0, r2, lsl #0x10 + mov r3, r0, lsr #0x10 + add r0, ip, #0x500 + ldrh r4, [r0, #0x18] + mov r2, #0 + str r4, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldrh r2, [r0, #0x1a] + ldr r1, [ip, #0x504] + ldr r0, _02216900 ; =MOD13_02216098 + add r3, ip, #0x40 + bl WM_StartMPEx + mov r1, r0 + mov r0, #0xe + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216408: + bl MOD13_02216984 + cmp r0, #0 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216440: + ldr r2, _022168FC ; =0x02240AF8 + ldrh r3, [r4, #0x10] + ldr r1, [r2] + mov r0, #1 + add r1, r1, #0x500 + ldrh ip, [r1, #0x2a] + mvn r3, r0, lsl r3 + and r3, ip, r3 + strh r3, [r1, #0x2a] + ldr r2, [r2] + mov r1, r4 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216480: + ldr r0, _022168FC ; =0x02240AF8 + ldr r1, [r0] + add r0, r1, #0x500 + ldrh r0, [r0, #0x26] + cmp r0, #1 + addeq sp, sp, #0x20 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r2, [r1, #0x51c] + mov r1, r4 + mov r0, #0x1c + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022164BC: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022164E0: + ldr r0, _02216908 ; =0x02240AFC + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1000 + str r1, [r0, #0x31c] + ldrh r0, [r4, #4] + cmp r0, #0xa + beq _0221650C + cmp r0, #0xb + beq _0221653C + b _02216560 +_0221650C: + ldr r3, _022168FC ; =0x02240AF8 + mov r4, #1 + ldr r2, [r3] + mov r0, #0x19 + add r2, r2, #0x500 + strh r4, [r2, #0x28] + ldr r2, [r3] + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221653C: + ldr r0, _022168FC ; =0x02240AF8 + ldr r1, [r4, #8] + ldr r2, [r0] + mov r0, #3 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216560: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216584: + ldr r0, _02216908 ; =0x02240AFC + ldr r1, [r0] + add r0, r1, #0x7000 + ldr r0, [r0, #0x4c8] + cmp r0, #0 + beq _022165E0 + mov r3, #0 + mov r2, r3 +_022165A4: + add r0, r1, r2, lsl #2 + add r0, r0, #0x1000 + ldr r0, [r0, #0x4e8] + cmp r0, #0 + beq _022165C4 + add r3, r3, #1 + cmp r3, #2 + bhs _022165D0 +_022165C4: + add r2, r2, #1 + cmp r2, #0xf + blo _022165A4 +_022165D0: + cmp r3, #1 + bne _022165E0 + ldr r0, _0221690C ; =0x000032C8 + bl OS_SpinWait +_022165E0: + ldr r0, _022168FC ; =0x02240AF8 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x50c] + ldrh r1, [r4, #2] + cmp r1, #0 + bne _02216634 + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #2 + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216634: + cmp r1, #0xa + bne _0221665C + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #0x2a + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221665C: + ldr r0, [r0] + mov r1, r4 + ldr r2, [r0, #0x51c] + mov r0, #0x13 + blx r2 + ldr r1, _022168FC ; =0x02240AF8 + mov r0, #0x19 + ldr r2, [r1] + mov r1, #0 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216694: + ldr r0, _02216908 ; =0x02240AFC + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x320] + cmp r0, #0 + bne _0221672C + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022166EC + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r0, [r2] + mov r1, r4 + add r0, r0, #0x500 + strh r3, [r0, #0x26] + ldr r2, [r2] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022166EC: + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + ldr r0, _02216900 ; =MOD13_02216098 + add r1, r1, #0x500 + strh r3, [r1, #0x2a] + ldr r1, [r2] + add r1, r1, #0x500 + strh r3, [r1, #0x28] + bl WM_End + mov r1, r0 + mov r0, #2 + bl MOD13_02214B08 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221672C: + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl WM_SetPortCallback + mov r0, #0 + bl WM_SetIndCallback +_02216744: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _02216784 + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r0, [r2] + mov r1, r4 + add r0, r0, #0x500 + strh r3, [r0, #0x26] + ldr r2, [r2] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216784: + ldr r2, _022168FC ; =0x02240AF8 + mov r3, #0 + ldr r1, [r2] + ldr r0, _02216908 ; =0x02240AFC + strb r3, [r1, #0x50d] + ldr r0, [r0] + mov r1, r4 + add r0, r0, #0x1300 + strh r3, [r0, #0x16] + ldr r2, [r2] + mov r0, #0x11 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022167C4: + ldrh r0, [r4, #2] + cmp r0, #0 + addne sp, sp, #0x20 + ldmneia sp!, {r4, lr} + bxne lr + ldr r0, _022168FC ; =0x02240AF8 + ldrh r1, [r4, #0xa] + ldr r0, [r0] + add sp, sp, #0x20 + add r0, r0, #0x500 + ldrh r2, [r0, #0x2a] + mvn r1, r1 + and r1, r2, r1 + strh r1, [r0, #0x2a] + ldmia sp!, {r4, lr} + bx lr +_02216804: + ldrh r0, [r4, #4] + sub r0, r0, #0x10 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _022168F0 +_02216818: ; jump table + b _02216838 ; case 0 + b _0221685C ; case 1 + b _02216880 ; case 2 + b _022168A4 ; case 3 + b _022168F0 ; case 4 + b _022168F0 ; case 5 + b _022168C8 ; case 6 + b _022168F0 ; case 7 +_02216838: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x1d + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_0221685C: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x1f + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_02216880: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x20 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168A4: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x21 + ldr r2, [r2, #0x51c] + blx r2 + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168C8: + bl OS_Terminate + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr +_022168D8: + ldr r0, _022168FC ; =0x02240AF8 + mov r1, r4 + ldr r2, [r0] + mov r0, #0x100 + ldr r2, [r2, #0x51c] + blx r2 +_022168F0: + add sp, sp, #0x20 + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_022168FC: .word 0x02240AF8 +_02216900: .word MOD13_02216098 +_02216904: .word 0x0223F7A0 +_02216908: .word 0x02240AFC +_0221690C: .word 0x000032C8 + + arm_func_start MOD13_02216910 +MOD13_02216910: ; 0x02216910 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02216970 ; =MOD13_02216098 + bl WM_SetIndCallback + mov r1, r0 + mov r0, #0x80 + bl MOD13_02214B08 + ldr r0, _02216974 ; =0x0223F794 + ldr r1, _02216978 ; =0x0223F798 + ldrh r3, [r0] + ldr r2, _0221697C ; =0x0223F790 + ldr r0, _02216980 ; =0x0223F78C + str r3, [sp] + ldrh r1, [r1] + ldrh r2, [r2] + ldrh r3, [r0] + ldr r0, _02216970 ; =MOD13_02216098 + bl WM_SetLifeTime + mov r1, r0 + mov r0, #0x1d + bl MOD13_02214B08 + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_02216970: .word MOD13_02216098 +_02216974: .word 0x0223F794 +_02216978: .word 0x0223F798 +_0221697C: .word 0x0223F790 +_02216980: .word 0x0223F78C + + arm_func_start MOD13_02216984 +MOD13_02216984: ; 0x02216984 + ldr r1, _022169E8 ; =0x02240AF8 + mov r0, #0 + ldr r2, [r1] + mov ip, r0 + add r1, r2, #0x500 + ldrh r1, [r1, #0x28] + mov r3, r0 + cmp r1, #1 + bne _022169B4 + ldrb r1, [r2, #0x50c] + cmp r1, #0 + moveq r3, #1 +_022169B4: + cmp r3, #0 + beq _022169CC + add r1, r2, #0x500 + ldrh r1, [r1, #0x26] + cmp r1, #0 + moveq ip, #1 +_022169CC: + cmp ip, #0 + bxeq lr + add r1, r2, #0x500 + ldrh r1, [r1, #0x2a] + cmp r1, #0 + movne r0, #1 + bx lr + .align 2, 0 +_022169E8: .word 0x02240AF8 + + arm_func_start MOD13_022169EC +MOD13_022169EC: ; 0x022169EC + stmdb sp!, {r4, lr} + mov r4, r0 + bl WM_GetAllowedChannel + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, lr} + bxeq lr + ldrh r3, [r4, #4] + mov ip, #0 + mov lr, r3 + mov r2, #1 +_02216A18: + sub r1, lr, #1 + mov r1, r2, lsl r1 + ands r1, r0, r1 + beq _02216A34 + cmp r3, lr + strneh lr, [r4, #4] + bne _02216A5C +_02216A34: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + cmp lr, #0x10 + mov ip, r1, lsr #0x10 + moveq r1, r2 + addne r1, lr, #1 + mov r1, r1, lsl #0x10 + cmp ip, #0x10 + mov lr, r1, lsr #0x10 + blo _02216A18 +_02216A5C: + mov r0, #1 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start MOD13_02216A68 +MOD13_02216A68: ; 0x02216A68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + mov r5, #0 + bl OS_DisableInterrupts + add r2, sb, #0x30 + add r1, sb, #0x70 + mov r4, r0 + cmp r2, r1 + bhs _02216AF4 +_02216A9C: + ldr r0, [r2, #0xc] + cmp r0, #2 + blo _02216AE8 + ldr r0, [r2] + subs r0, r8, r0 + bmi _02216AE8 + ldr r3, [r2, #4] + add ip, r0, r6 + cmp ip, r3 + bhi _02216AE8 + ldr r3, [r2, #8] + mov r1, r7 + mov r2, r6 + add r0, r3, r0 + bl MI_CpuCopy8 + mov r0, #0 + str r0, [sb] + mov r5, #1 + b _02216AF4 +_02216AE8: + add r2, r2, #0x10 + cmp r2, r1 + blo _02216A9C +_02216AF4: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216B0C +MOD13_02216B0C: ; 0x02216B0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + bl OS_DisableInterrupts + mov r6, r0 + add r5, r4, #0x30 + add r4, r4, #0x70 +_02216B34: + cmp r5, r4 + blo _02216B40 + bl OS_Terminate +_02216B40: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02216B64 + str sb, [r5] + str r8, [r5, #4] + ldr r0, [sp, #0x20] + str r7, [r5, #8] + str r0, [r5, #0xc] + b _02216B6C +_02216B64: + add r5, r5, #0x10 + b _02216B34 +_02216B6C: + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216B80 +MOD13_02216B80: ; 0x02216B80 + ldr ip, _02216B90 ; =0x020CE34C + mov r1, #0 + mov r2, #0x70 + bx ip + .align 2, 0 +_02216B90: .word 0x020CE34C + + arm_func_start MOD13_02216B94 +MOD13_02216B94: ; 0x02216B94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl MOD13_02216DA4 + cmp r0, #0 + beq _02216BD0 + ldr r0, _02216BE4 ; =0x02240B20 + mov r1, #0 + ldr r0, [r0] + mov r2, r5 + mov r3, r1 + add r0, r0, #0xc4 + bl MOD13_02216BE8 +_02216BD0: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, lr} + bx lr + .align 2, 0 +_02216BE4: .word 0x02240B20 + + arm_func_start MOD13_02216BE8 +MOD13_02216BE8: ; 0x02216BE8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r4, _02216D74 ; =0x02240B20 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + ldr r5, [r4] + bl MOD13_02216DA4 + cmp r0, #0 + bne _02216C18 + bl OS_Terminate +_02216C18: + ldr r0, [sb, #4] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + beq _02216C2C + bl OS_Terminate +_02216C2C: + cmp r6, #0x1f + bls _02216C78 + mov r0, r5 + bl OS_GetThreadPriority + cmp r6, #0x20 + bne _02216C54 + cmp r0, #0 + subne r6, r0, #1 + moveq r6, #0 + b _02216C78 +_02216C54: + cmp r6, #0x21 + bne _02216C6C + cmp r0, #0x1f + addlo r6, r0, #1 + movhs r6, #0x1f + b _02216C78 +_02216C6C: + cmp r6, #0x22 + moveq r6, r0 + movne r6, #0x1f +_02216C78: + bl OS_DisableInterrupts + ldr r2, [sb, #4] + bic r1, r6, #0x80000000 + bic r2, r2, #1 + orr r2, r2, #1 + str r2, [sb, #4] + ldr r2, [sb, #4] + mov r4, r0 + and r0, r2, #1 + orr r0, r0, r1, lsl #1 + str r0, [sb, #4] + str r8, [sb, #8] + str r7, [sb, #0xc] + ldr r0, [r5, #0xc0] + cmp r0, #0 + bne _02216CDC + add r0, r5, #0xc4 + cmp sb, r0 + ldreq r0, _02216D74 ; =0x02240B20 + moveq r1, #0 + streq r1, [r0] + mov r0, r5 + str sb, [r5, #0xc0] + bl OS_WakeupThreadDirect + b _02216D60 +_02216CDC: + add r0, r5, #0xc4 + cmp sb, r0 + ldr r2, [r5, #0xc0] + bne _02216D1C + ldr r0, [r2] + cmp r0, #0 + beq _02216D08 +_02216CF8: + mov r2, r0 + ldr r0, [r0] + cmp r0, #0 + bne _02216CF8 +_02216D08: + ldr r0, _02216D74 ; =0x02240B20 + str sb, [r2] + mov r1, #0 + str r1, [r0] + b _02216D60 +_02216D1C: + ldr r0, [r2, #4] + mov r0, r0, lsr #1 + cmp r0, r6 + bls _02216D3C + str sb, [r5, #0xc0] + str r2, [sb] + b _02216D60 +_02216D38: + mov r2, r1 +_02216D3C: + ldr r1, [r2] + cmp r1, #0 + beq _02216D58 + ldr r0, [r1, #4] + mov r0, r0, lsr #1 + cmp r0, r6 + bls _02216D38 +_02216D58: + str r1, [sb] + str sb, [r2] +_02216D60: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + .align 2, 0 +_02216D74: .word 0x02240B20 + + arm_func_start MOD13_02216D78 +MOD13_02216D78: ; 0x02216D78 + ldr r0, [r0, #4] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + movne r0, #1 + moveq r0, #0 + bx lr + + arm_func_start MOD13_02216D90 +MOD13_02216D90: ; 0x02216D90 + ldr ip, _02216DA0 ; =0x020CE34C + mov r1, #0 + mov r2, #0x20 + bx ip + .align 2, 0 +_02216DA0: .word 0x020CE34C + + arm_func_start MOD13_02216DA4 +MOD13_02216DA4: ; 0x02216DA4 + ldr r0, _02216DBC ; =0x02240B20 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02216DBC: .word 0x02240B20 + + arm_func_start MOD13_02216DC0 +MOD13_02216DC0: ; 0x02216DC0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r6, r1 + bl OS_DisableInterrupts + ldr r1, _02216E40 ; =0x02240B20 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + bne _02216E2C + add r0, r5, #0xc4 + str r5, [r1] + bl MOD13_02216D90 + sub r0, r6, #0xe4 + mov lr, #0 + str lr, [r5, #0xc0] + bic ip, r0, #3 + add r3, r5, #0xe4 + str ip, [sp] + ldr r1, _02216E44 ; =MOD13_02216E48 + mov r0, r5 + mov r2, r5 + add r3, r3, ip + str lr, [sp, #4] + bl OS_CreateThread + mov r0, r5 + bl OS_WakeupThreadDirect +_02216E2C: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_02216E40: .word 0x02240B20 +_02216E44: .word MOD13_02216E48 + + arm_func_start MOD13_02216E48 +MOD13_02216E48: ; 0x02216E48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, r0 + add sb, r8, #0xc4 + mov r4, #0 +_02216E5C: + bl OS_DisableInterrupts + ldr r1, [r8, #0xc0] + mov r5, r0 + cmp r1, #0 + bne _02216E90 +_02216E70: + mov r0, r8 + mov r1, r4 + bl OS_SetThreadPriority + mov r0, r4 + bl OS_SleepThread + ldr r0, [r8, #0xc0] + cmp r0, #0 + beq _02216E70 +_02216E90: + ldr r7, [r8, #0xc0] + ldr r1, [r8, #0xc0] + mov r0, r8 + ldr r1, [r1] + str r1, [r8, #0xc0] + ldr r1, [r7, #4] + mov r1, r1, lsr #1 + bl OS_SetThreadPriority + mov r0, r5 + bl OS_RestoreInterrupts + ldr r1, [r7, #8] + cmp r1, #0 + beq _02216ECC + mov r0, r7 + blx r1 +_02216ECC: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + ldr r5, [r7, #0xc] + bl OS_GetThreadPriority + ldr r1, [r8, #0xc0] + cmp r1, #0 + moveq r1, r4 + beq _02216F0C + ldr r1, [r8, #0xc0] + ldr r1, [r1, #4] + cmp r0, r1, lsr #1 + ldrlo r1, [r8, #0xc0] + ldrlo r1, [r1, #4] + movlo r1, r1, lsr #1 + movhs r1, r0 +_02216F0C: + cmp r1, r0 + beq _02216F1C + mov r0, r8 + bl OS_SetThreadPriority +_02216F1C: + str r4, [r7] + ldr r0, [r7, #4] + cmp r5, #0 + bic r0, r0, #1 + str r0, [r7, #4] + beq _02216F3C + mov r0, r7 + blx r5 +_02216F3C: + cmp r7, sb + beq _02216F50 + mov r0, r6 + bl OS_RestoreInterrupts + b _02216E5C +_02216F50: + bl OS_ExitThread + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} + bx lr + + arm_func_start MOD13_02216F60 +MOD13_02216F60: ; 0x02216F60 + ldr r1, _02216FB8 ; =0x02240B28 + mov ip, #0 + ldr r2, [r1, #4] + cmp r2, #0 + ble _02216FB0 + ldr r1, _02216FBC ; =0x02240B24 + sub r0, r0, #1 + ldr r1, [r1] + add r0, r1, r0, lsl #2 + ldr r3, [r0, #0x1e0] + mov r1, #1 +_02216F8C: + mov r0, r1, lsl ip + ands r0, r0, r3 + moveq r0, #0 + bxeq lr + add r0, ip, #1 + mov r0, r0, lsl #0x10 + mov ip, r0, lsr #0x10 + cmp ip, r2 + blt _02216F8C +_02216FB0: + mov r0, #1 + bx lr + .align 2, 0 +_02216FB8: .word 0x02240B28 +_02216FBC: .word 0x02240B24 + + arm_func_start MOD13_02216FC0 +MOD13_02216FC0: ; 0x02216FC0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r2, _02217068 ; =0x02240B24 + mov r7, r1 + ldr r3, [r2] + cmp r3, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, lr} + bxeq lr + ldr r1, _0221706C ; =0x02240B28 + ldrb r4, [r0, #2] + ldr r2, [r1, #4] + cmp r4, r2 + addgt sp, sp, #4 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, lr} + bxgt lr + sub r6, r7, #1 + ldr r2, [r1] + add r1, r3, r6, lsl #5 + mla r1, r4, r2, r1 + add r0, r0, #3 + mov r5, r6, lsl #5 + bl MI_CpuCopy8 + ldr r0, _02217068 ; =0x02240B24 + mov r1, #1 + ldr r2, [r0] + mov r0, r7 + add r3, r2, #0x1e0 + ldr r2, [r3, r6, lsl #2] + orr r1, r2, r1, lsl r4 + str r1, [r3, r6, lsl #2] + bl MOD13_02216F60 + cmp r0, #0 + ldrne r0, _02217068 ; =0x02240B24 + ldrne r0, [r0] + addne r0, r0, r5 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr + .align 2, 0 +_02217068: .word 0x02240B24 +_0221706C: .word 0x02240B28 + + arm_func_start MOD13_02217070 +MOD13_02217070: ; 0x02217070 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldrb r0, [r6] + mov r5, r1 + mov r4, r2 + strb r0, [r5] + ldrb r0, [r5] + cmp r0, #7 + beq _022170A8 + cmp r0, #8 + beq _02217114 + cmp r0, #9 + beq _02217140 + b _0221718C +_022170A8: + mov r0, r4 + bl MOD13_02216F60 + cmp r0, #0 + ldrne r0, _022171A4 ; =0x02240B24 + subne r1, r4, #1 + ldrne r0, [r0] + addne r0, r0, r1, lsl #5 + ldmneia sp!, {r4, r5, r6, lr} + bxne lr + ldrb r1, [r6, #1] + ldr r0, _022171A8 ; =0x02240B28 + strb r1, [r5, #2] + ldrb r2, [r5, #2] + ldr r1, [r0, #4] + cmp r2, r1 + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, lr} + bxgt lr + ldr r2, [r0] + add r0, r6, #2 + add r1, r5, #3 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r4 + bl MOD13_02216FC0 + mov r4, r0 + b _02217198 +_02217114: + ldrb r0, [r6, #1] + add r4, r6, #3 + and r0, r0, #0xff + strh r0, [r5, #2] + ldrb r0, [r6, #2] + ldrh r1, [r5, #2] + mov r0, r0, lsl #8 + and r0, r0, #0xff00 + orr r0, r1, r0 + strh r0, [r5, #2] + b _02217198 +_02217140: + ldrb r0, [r6, #1] + add r4, r6, #3 + ldr r1, _022171A8 ; =0x02240B28 + and r0, r0, #0xff + strh r0, [r5, #2] + ldrb r2, [r6, #2] + ldrh r3, [r5, #2] + mov r0, r4 + mov r2, r2, lsl #8 + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r5, #2] + ldr r2, [r1] + add r1, r5, #4 + bl MI_CpuCopy8 + ldr r0, _022171A8 ; =0x02240B28 + ldr r0, [r0] + add r4, r4, r0 + b _02217198 +_0221718C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + bx lr +_02217198: + mov r0, r4 + ldmia sp!, {r4, r5, r6, lr} + bx lr + .align 2, 0 +_022171A4: .word 0x02240B24 +_022171A8: .word 0x02240B28 + + arm_func_start MOD13_022171AC +MOD13_022171AC: ; 0x022171AC + ldrb r3, [r0] + mov r2, r1 + add r2, r2, #1 + strb r3, [r1] + ldrb r1, [r0] + cmp r1, #6 + addls pc, pc, r1, lsl #2 + b _02217224 +_022171CC: ; jump table + b _02217224 ; case 0 + b _0221722C ; case 1 + b _0221722C ; case 2 + b _0221722C ; case 3 + b _022171E8 ; case 4 + b _0221722C ; case 5 + b _0221722C ; case 6 +_022171E8: + ldrh r3, [r0, #2] + add r1, r2, #3 + strb r3, [r2] + ldrh r3, [r0, #2] + and r3, r3, #0xff00 + mov r3, r3, asr #8 + strb r3, [r2, #1] + ldrh r3, [r0, #4] + strb r3, [r2, #2] + ldrh r0, [r0, #4] + add r2, r2, #4 + and r0, r0, #0xff00 + mov r0, r0, asr #8 + strb r0, [r1] + b _0221722C +_02217224: + mov r0, #0 + bx lr +_0221722C: + mov r0, r2 + bx lr + + arm_func_start MOD13_02217234 +MOD13_02217234: ; 0x02217234 + stmdb sp!, {r4, lr} + ldr r1, _0221727C ; =0x02240B24 + ldr r1, [r1] + cmp r1, #0 + ldmeqia sp!, {r4, lr} + bxeq lr + sub r4, r0, #1 + add r0, r1, r4, lsl #5 + mov r1, #0 + mov r2, #0x1e + bl MI_CpuFill8 + ldr r0, _0221727C ; =0x02240B24 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x1e0] + ldmia sp!, {r4, lr} + bx lr + .align 2, 0 +_0221727C: .word 0x02240B24 + + arm_func_start MOD13_02217280 +MOD13_02217280: ; 0x02217280 + ldr r3, _02217298 ; =0x02240B24 + ldr ip, _0221729C ; =0x020CE34C + mov r1, #0 + mov r2, #0x21c + str r0, [r3] + bx ip + .align 2, 0 +_02217298: .word 0x02240B24 +_0221729C: .word 0x020CE34C + + arm_func_start MOD13_022172A0 +MOD13_022172A0: ; 0x022172A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022172D8 ; =0x02240B28 + sub r1, r0, #2 + mov r0, #0x1e + str r1, [r2] + bl _s32_div_f + ldr r1, _022172D8 ; =0x02240B28 + mov r2, #0x1e + str r0, [r1, #4] + str r2, [r1, #8] + add sp, sp, #4 + ldmia sp!, {lr} + bx lr + .align 2, 0 +_022172D8: .word 0x02240B28 diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s new file mode 100644 index 00000000..028a3b7c --- /dev/null +++ b/arm9/modules/13/asm/module_13_arm2.s @@ -0,0 +1,35373 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD13_0221E560 +MOD13_0221E560: ; 0x0221E560 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _0221E640 ; =0x02242FE4 + mov r1, #0x28 + ldr r0, [r0] + ldrb r0, [r0, #9] + add r0, r0, #1 + bl FX_ModS32 + ldr r2, _0221E640 ; =0x02242FE4 + mov r1, #5 + ldr r3, [r2] + strb r0, [r3, #9] + ldr r0, [r2] + ldrb r0, [r0, #9] + bl FX_DivS32 + ldr r2, _0221E640 ; =0x02242FE4 + add r1, r0, #0x47 + ldr r2, [r2] + mov r0, #0 + ldr r2, [r2, #4] + bl MOD13_02239E8C + ldr r3, _0221E640 ; =0x02242FE4 + ldr lr, _0221E644 ; =0x0223EC6C + ldr r0, [r3] + ldr r2, _0221E648 ; =0x0223EC70 + ldr r5, [r0, #4] + ldr r1, _0221E64C ; =0xFE00FF00 + ldrh r4, [r5, #4] + ldr r0, _0221E650 ; =0x000001FF + bic r4, r4, #0xc00 + orr r4, r4, #0x400 + strh r4, [r5, #4] + ldr r4, [r3] + ldrb r5, [r4, #8] + ldr ip, [r4, #4] + ldr r4, [ip] + ldrb lr, [lr, r5] + bic r4, r4, #0xc00 + str r4, [ip] + ldrh r4, [ip, #4] + bic r4, r4, #0xf000 + orr r4, r4, lr, lsl #12 + strh r4, [ip, #4] + ldr r4, [r3] + ldrh r3, [r2, #2] + ldr r4, [r4, #4] + ldrh lr, [r2] + ldr ip, [r4] + and r2, r3, #0xff + and r1, ip, r1 + and r3, lr, r0 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221E640: .word 0x02242FE4 +_0221E644: .word 0x0223EC6C +_0221E648: .word 0x0223EC70 +_0221E64C: .word 0xFE00FF00 +_0221E650: .word 0x000001FF + + arm_func_start MOD13_0221E654 +MOD13_0221E654: ; 0x0221E654 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0221E690 ; =0x02242FE4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r0, _0221E690 ; =0x02242FE4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + ldr r0, _0221E690 ; =0x02242FE4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221E690: .word 0x02242FE4 + + arm_func_start MOD13_0221E694 +MOD13_0221E694: ; 0x0221E694 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r4, r0 + mov r0, #0xc + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0221E774 ; =0x02242FE4 + mov r1, #0x47 + str r0, [r2] + strb r4, [r0, #8] + mov r0, #0 + bl MOD13_02239E54 + ldr r7, _0221E774 ; =0x02242FE4 + ldr r8, _0221E778 ; =0x0223EC6C + ldr r1, [r7] + ldr r6, _0221E77C ; =0x0223EC70 + str r0, [r1, #4] + ldr r0, [r7] + ldr lr, _0221E780 ; =0x000001FF + ldr r3, [r0, #4] + ldr r5, _0221E784 ; =0xFE00FF00 + ldrh r2, [r3, #4] + mov r0, #1 + ldr r1, _0221E788 ; =MOD13_0221E560 + bic r2, r2, #0xc00 + orr r2, r2, #0x400 + strh r2, [r3, #4] + ldr r3, [r7] + mov r2, #0 + ldr ip, [r3, #4] + mov r3, #0x78 + ldr sb, [ip] + bic sb, sb, #0xc00 + str sb, [ip] + ldrb r4, [r8, r4] + ldrh r8, [ip, #4] + bic r8, r8, #0xf000 + orr r4, r8, r4, lsl #12 + strh r4, [ip, #4] + ldr r4, [r7] + ldrh r7, [r6] + ldr ip, [r4, #4] + ldrh r4, [r6, #2] + and r7, r7, lr + ldr r6, [ip] + and r4, r4, #0xff + and r5, r6, r5 + orr r4, r5, r4 + orr r4, r4, r7, lsl #16 + str r4, [ip] + bl MOD13_0223C1C4 + ldr r1, _0221E774 ; =0x02242FE4 + ldr r1, [r1] + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0221E774: .word 0x02242FE4 +_0221E778: .word 0x0223EC6C +_0221E77C: .word 0x0223EC70 +_0221E780: .word 0x000001FF +_0221E784: .word 0xFE00FF00 +_0221E788: .word MOD13_0221E560 + + arm_func_start MOD13_0221E78C +MOD13_0221E78C: ; 0x0221E78C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + ldr r4, _0221E888 ; =0x02242FE8 + str r0, [sp] + ldr r1, [r4] + ldrh r0, [r1, #0x14] + add r0, r0, #1 + strh r0, [r1, #0x14] + ldr r1, [r4] + ldrh r0, [r1, #0x14] + cmp r0, #0x10 + addlo sp, sp, #4 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r1, [r1, #0x17] + ldr r0, _0221E88C ; =0x0223EC7C + mov sb, #0 + ldrb sl, [r0, r1] + cmp sl, #0 + ble _0221E838 + mov r7, sb + mov fp, sb + mvn r6, #0 + mov r5, #1 +_0221E7E8: + ldr r0, [r4] + ldr r2, _0221E890 ; =0x0223EC8C + ldrb r3, [r0, #0x17] + ldr r0, [r0, sb, lsl #2] + mov r1, r7 + add r2, r2, r3, lsl #1 + ldrb r8, [sb, r2] + bl MOD13_02239ADC + mov r2, r0 + mov r1, r8 + mov r0, fp + bl MOD13_02239E8C + ldr r0, [r4] + mov r1, r6 + ldr r0, [r0, sb, lsl #2] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, sl + blt _0221E7E8 +_0221E838: + ldr r0, _0221E894 ; =0x0223EC74 + ldrh r0, [r0, #2] + bl MOD13_0221EBD8 + ldr r1, _0221E888 ; =0x02242FE8 + mov r0, #0 + ldr r2, [r1] + mvn r3, #0 + strh r0, [r2, #0x14] + ldr r2, [r1] + strb r3, [r2, #0x16] + ldr r2, [r1] + ldr r1, [r2, #0x10] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp] + str r0, [r2, #0x10] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221E888: .word 0x02242FE8 +_0221E88C: .word 0x0223EC7C +_0221E890: .word 0x0223EC8C +_0221E894: .word 0x0223EC74 + + arm_func_start MOD13_0221E898 +MOD13_0221E898: ; 0x0221E898 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _0221E910 ; =0x02242FE8 + ldr r0, [r0] + ldr r1, [r0, #0x10] + cmp r1, #0 + beq _0221E8C8 + mov r0, #0 + bl MOD13_0223C110 +_0221E8C8: + ldr r4, _0221E910 ; =0x02242FE8 + mov r5, #0 +_0221E8D0: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + beq _0221E8E4 + bl MOD13_02239AE8 +_0221E8E4: + add r5, r5, #1 + cmp r5, #2 + blt _0221E8D0 + ldr r0, _0221E910 ; =0x02242FE8 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_02239AE8 + ldr r0, _0221E910 ; =0x02242FE8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221E910: .word 0x02242FE8 + + arm_func_start MOD13_0221E914 +MOD13_0221E914: ; 0x0221E914 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221E970 ; =0x02242FE8 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + add r0, r0, #4 + str r0, [sp, #4] + bl MOD13_0221EBD8 + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221E974 ; =MOD13_0221E898 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221E970: .word 0x02242FE8 +_0221E974: .word MOD13_0221E898 + + arm_func_start MOD13_0221E978 +MOD13_0221E978: ; 0x0221E978 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r8, _0221EAE8 ; =0x02242FE8 + ldr r1, _0221EAEC ; =0x0223EC7C + ldr r3, [r8] + ldrb r2, [r3, #0x17] + ldrb r0, [r3, #0x18] + ldrb r7, [r1, r2] + cmp r0, #0 + bne _0221EAD0 + ldrsb r1, [r3, #0x16] + mvn r0, #0 + cmp r1, r0 + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r7, #0 + mov r6, #0 + ble _0221EAD0 + ldr r5, _0221EAF0 ; =0x0223EC84 + ldr r4, _0221EAF4 ; =0x0223EC9C + ldr sl, _0221EAF8 ; =0x0223EC78 + add sb, sp, #0 +_0221E9D0: + ldr r0, [r8] + mov r1, sl + ldrb r0, [r0, #0x17] + mov r2, sb + add r0, r4, r0, lsl #1 + ldrb r0, [r6, r0] + add r0, r5, r0, lsl #2 + bl MOD13_0223AB74 + mov r0, sb + bl MOD13_0223B2B4 + cmp r0, #0 + beq _0221EAC4 + ldr r0, _0221EAE8 ; =0x02242FE8 + ldr r3, [r0] + ldr r0, [r3, #0x10] + cmp r0, #0 + bne _0221EAD0 + ldrb r2, [r3, #0x17] + ldr r1, _0221EAFC ; =0x0223EC8C + ldr r0, [r3, r6, lsl #2] + add r1, r1, r2, lsl #1 + ldrb r2, [r6, r1] + mov r1, #0 + add r4, r2, #1 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _0221EAE8 ; =0x02242FE8 + ldr r1, _0221EAF4 ; =0x0223EC9C + ldr r0, [r0] + ldr r2, _0221EAF0 ; =0x0223EC84 + ldrb r4, [r0, #0x17] + ldr r3, _0221EB00 ; =0x0223EC86 + ldr r0, [r0, r6, lsl #2] + add r1, r1, r4, lsl #1 + ldrb r4, [r6, r1] + mvn r1, #0 + mov r4, r4, lsl #2 + ldrh r2, [r2, r4] + ldrh r3, [r3, r4] + bl MOD13_02239888 + ldr r0, _0221EAE8 ; =0x02242FE8 + mvn r1, #0 + ldr r0, [r0] + mov r2, #1 + ldr r0, [r0, r6, lsl #2] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _0221EB04 ; =MOD13_0221E78C + mov r2, r0 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r1, _0221EAE8 ; =0x02242FE8 + add sp, sp, #8 + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + strb r6, [r0, #0x16] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0221EAC4: + add r6, r6, #1 + cmp r6, r7 + blt _0221E9D0 +_0221EAD0: + ldr r0, _0221EAE8 ; =0x02242FE8 + mvn r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x16] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EAE8: .word 0x02242FE8 +_0221EAEC: .word 0x0223EC7C +_0221EAF0: .word 0x0223EC84 +_0221EAF4: .word 0x0223EC9C +_0221EAF8: .word 0x0223EC78 +_0221EAFC: .word 0x0223EC8C +_0221EB00: .word 0x0223EC86 +_0221EB04: .word MOD13_0221E78C + + arm_func_start MOD13_0221EB08 +MOD13_0221EB08: ; 0x0221EB08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0221EB5C ; =0x02242FE8 + mvn r3, #0 + ldr r2, [r1] + strb r3, [r2, #0x16] + ldr r3, [r1] + ldrh r2, [r3, #0x14] + add r2, r2, #1 + strh r2, [r3, #0x14] + ldr r3, [r1] + ldrh r1, [r3, #0x14] + cmp r1, #4 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r1, _0221EB60 ; =MOD13_0221E978 + mov r2, #0 + strh r2, [r3, #0x14] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EB5C: .word 0x02242FE8 +_0221EB60: .word MOD13_0221E978 + + arm_func_start MOD13_0221EB64 +MOD13_0221EB64: ; 0x0221EB64 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221EBCC ; =0x02242FE8 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + sub r0, r0, #4 + str r0, [sp, #4] + bl MOD13_0221EBD8 + ldr r0, _0221EBD0 ; =0x0223EC74 + ldr r1, [sp, #4] + ldrh r0, [r0, #2] + cmp r1, r0 + addgt sp, sp, #8 + ldmgtia sp!, {r4, pc} + bl MOD13_0221EBD8 + ldr r1, _0221EBD4 ; =MOD13_0221EB08 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221EBCC: .word 0x02242FE8 +_0221EBD0: .word 0x0223EC74 +_0221EBD4: .word MOD13_0221EB08 + + arm_func_start MOD13_0221EBD8 +MOD13_0221EBD8: ; 0x0221EBD8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r2, _0221EC70 ; =0x02242FE8 + ldr r3, _0221EC74 ; =0x0223EC7C + ldr r6, [r2] + ldr r2, _0221EC78 ; =0x0223EC84 + ldrb r4, [r6, #0x17] + ldrh r2, [r2, #2] + ldr r1, _0221EC7C ; =0x0223EC74 + ldrb r8, [r3, r4] + mov r3, r0 + add r5, r3, r2 + ldrh r4, [r1, #2] + ldrh r2, [r1] + ldr r0, [r6, #8] + mvn r1, #0 + sub r7, r5, r4 + bl MOD13_02239888 + mov r6, #0 + cmp r8, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr sb, _0221EC70 ; =0x02242FE8 + ldr r4, _0221EC80 ; =0x0223EC9C + ldr sl, _0221EC78 ; =0x0223EC84 + mvn r5, #0 +_0221EC38: + ldr r0, [sb] + mov r1, r5 + ldrb r2, [r0, #0x17] + ldr r0, [r0, r6, lsl #2] + mov r3, r7 + add r2, r4, r2, lsl #1 + ldrb r2, [r6, r2] + mov r2, r2, lsl #2 + ldrh r2, [sl, r2] + bl MOD13_02239888 + add r6, r6, #1 + cmp r6, r8 + blt _0221EC38 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EC70: .word 0x02242FE8 +_0221EC74: .word 0x0223EC7C +_0221EC78: .word 0x0223EC84 +_0221EC7C: .word 0x0223EC74 +_0221EC80: .word 0x0223EC9C + + arm_func_start MOD13_0221EC84 +MOD13_0221EC84: ; 0x0221EC84 + ldr r0, _0221EC98 ; =0x02242FE8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_0221EC98: .word 0x02242FE8 + + arm_func_start MOD13_0221EC9C +MOD13_0221EC9C: ; 0x0221EC9C + ldr r0, _0221ECB0 ; =0x02242FE8 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_0221ECB0: .word 0x02242FE8 + + arm_func_start MOD13_0221ECB4 +MOD13_0221ECB4: ; 0x0221ECB4 + ldr r0, _0221ECDC ; =0x02242FE8 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + bxeq lr + ldrb r0, [r0, #0x19] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0221ECDC: .word 0x02242FE8 + + arm_func_start MOD13_0221ECE0 +MOD13_0221ECE0: ; 0x0221ECE0 + ldr r1, _0221ECF0 ; =0x02242FE8 + ldr r1, [r1] + strb r0, [r1, #0x16] + bx lr + .align 2, 0 +_0221ECF0: .word 0x02242FE8 + + arm_func_start MOD13_0221ECF4 +MOD13_0221ECF4: ; 0x0221ECF4 + ldr r2, _0221ED10 ; =0x02242FE8 + mvn r1, #0 + ldr r3, [r2] + ldrsb r2, [r3, #0x16] + cmp r2, r1 + streqb r0, [r3, #0x16] + bx lr + .align 2, 0 +_0221ED10: .word 0x02242FE8 + + arm_func_start MOD13_0221ED14 +MOD13_0221ED14: ; 0x0221ED14 + ldr r0, _0221ED24 ; =0x02242FE8 + ldr r0, [r0] + ldrsb r0, [r0, #0x16] + bx lr + .align 2, 0 +_0221ED24: .word 0x02242FE8 + + arm_func_start MOD13_0221ED28 +MOD13_0221ED28: ; 0x0221ED28 + ldr r0, _0221ED4C ; =0x02242FE8 + mov r3, #1 + ldr r2, [r0] + ldr ip, _0221ED50 ; =MOD13_0223C130 + strb r3, [r2, #0x19] + ldr r0, [r0] + ldr r1, _0221ED54 ; =MOD13_0221E914 + ldr r0, [r0, #0xc] + bx ip + .align 2, 0 +_0221ED4C: .word 0x02242FE8 +_0221ED50: .word MOD13_0223C130 +_0221ED54: .word MOD13_0221E914 + + arm_func_start MOD13_0221ED58 +MOD13_0221ED58: ; 0x0221ED58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r2, _0221EE44 ; =0x0223EC7C + mov r4, r0 + mov r0, #0x1c + mov r1, #4 + ldrb r8, [r2, r4] + bl MOD13_0223AFE0 + ldr sb, _0221EE48 ; =0x02242FE8 + mvn r1, #1 + str r0, [sb] + strb r1, [r0, #0x16] + ldr r0, [sb] + cmp r8, #0 + strb r4, [r0, #0x17] + mov r7, #0 + ble _0221EDE8 + ldr r0, _0221EE4C ; =0x0223EC8C + add r6, r0, r4, lsl #1 + mov r5, r7 + mov r4, #1 + mvn sl, #0 +_0221EDAC: + ldrb r1, [r6] + mov r0, r5 + mov r2, r4 + bl MOD13_02239E0C + ldr r2, [sb] + mov r1, sl + str r0, [r2, r7, lsl #2] + ldr r0, [sb] + mov r2, r4 + ldr r0, [r0, r7, lsl #2] + bl MOD13_02239814 + add r7, r7, #1 + cmp r7, r8 + add r6, r6, #1 + blt _0221EDAC +_0221EDE8: + mov r1, #1 + mov r2, r1 + mov r0, #0 + bl MOD13_02239E0C + ldr r3, _0221EE48 ; =0x02242FE8 + mvn r1, #0 + ldr r4, [r3] + mov r2, #1 + str r0, [r4, #8] + ldr r0, [r3] + ldr r0, [r0, #8] + bl MOD13_02239814 + mov r0, #0xc0 + bl MOD13_0221EBD8 + mov r0, #0 + ldr r1, _0221EE50 ; =MOD13_0221EB64 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0221EE48 ; =0x02242FE8 + ldr r1, [r1] + str r0, [r1, #0xc] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0221EE44: .word 0x0223EC7C +_0221EE48: .word 0x02242FE8 +_0221EE4C: .word 0x0223EC8C +_0221EE50: .word MOD13_0221EB64 + + arm_func_start MOD13_0221EE54 +MOD13_0221EE54: ; 0x0221EE54 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0221EE94 ; =0x02242FEC + ldrb r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {pc} + mov r0, #1 + bl MOD13_0223A65C + ldr r0, _0221EE94 ; =0x02242FEC + mov r1, #0 + strb r1, [r0] + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EE94: .word 0x02242FEC + + arm_func_start MOD13_0221EE98 +MOD13_0221EE98: ; 0x0221EE98 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + ldr r3, _0221EF58 ; =0x02242FEC + mov r7, r0 + ldrb r0, [r3] + mov r6, r1 + mov r5, r2 + cmp r0, #0 + addne sp, sp, #0x14 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0221EF5C ; =0x0223F934 + ldr r1, _0221EF60 ; =0x020C91C4 + bl MOD13_0221F174 + ldr r3, _0221EF64 ; =0x01920000 + ldr r2, _0221EF68 ; =0x04001010 + mov r0, #1 + mov r1, #0 + str r3, [r2] + bl MOD13_0223A7F0 + ldr r1, _0221EF6C ; =0x0224307C + mov r4, r0 + ldr r0, [r1] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl MOD13_0222352C + mov r5, r0 + bl MOD13_0221EF88 + ldr r3, _0221EF70 ; =0x0223ECAC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + mov r0, r4 + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl MOD13_0223A4F0 + mov r0, r4 + bl MOD13_0223A410 + mov r0, #1 + ldr r1, _0221EF58 ; =0x02242FEC + strb r0, [r1] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0221EF58: .word 0x02242FEC +_0221EF5C: .word 0x0223F934 +_0221EF60: .word 0x020C91C4 +_0221EF64: .word 0x01920000 +_0221EF68: .word 0x04001010 +_0221EF6C: .word 0x0224307C +_0221EF70: .word 0x0223ECAC + + arm_func_start MOD13_0221EF74 +MOD13_0221EF74: ; 0x0221EF74 + ldr r0, _0221EF84 ; =0x02242FEC + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_0221EF84: .word 0x02242FEC + + arm_func_start MOD13_0221EF88 +MOD13_0221EF88: ; 0x0221EF88 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02222F34 + ldr r1, _0221EFA4 ; =0x0223ECCC + ldr r0, [r1, r0, lsl #2] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221EFA4: .word 0x0223ECCC + + arm_func_start MOD13_0221EFA8 +MOD13_0221EFA8: ; 0x0221EFA8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r0 + mov r0, #0 + mov r6, r1 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r1, _0221F05C ; =0x0224307C + mov r4, r0 + ldr r0, [r1] + mov r1, r6 + bl MOD13_02223568 + mov r6, r0 + bl MOD13_0221EF88 + ldr r3, _0221F060 ; =0x0223ECC4 + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, r4 + bl MOD13_0223A4F0 + bl MOD13_02222F34 + mov r6, r0 + bl MOD13_02222F34 + ldr r1, _0221F064 ; =0x00000209 + mov r3, r0, lsl #2 + str r1, [sp] + ldr r1, _0221F068 ; =0x0223ECE4 + ldr r2, _0221F06C ; =0x0223ECE6 + str r5, [sp, #4] + mov ip, r6, lsl #2 + ldrh r2, [r2, r3] + ldrh r1, [r1, ip] + mov r0, r4 + mov r3, #2 + bl MOD13_0223A634 + mov r0, r4 + bl MOD13_0223A410 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0221F05C: .word 0x0224307C +_0221F060: .word 0x0223ECC4 +_0221F064: .word 0x00000209 +_0221F068: .word 0x0223ECE4 +_0221F06C: .word 0x0223ECE6 + + arm_func_start MOD13_0221F070 +MOD13_0221F070: ; 0x0221F070 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r1, _0221F0E4 ; =0x0224307C + mov r5, r0 + ldr r0, [r1] + mov r1, r4 + bl MOD13_02223568 + mov r4, r0 + bl MOD13_0221EF88 + ldr r3, _0221F0E8 ; =0x0223ECBC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + mov r0, r5 + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl MOD13_0223A4F0 + mov r0, r5 + bl MOD13_0223A410 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221F0E4: .word 0x0224307C +_0221F0E8: .word 0x0223ECBC + + arm_func_start MOD13_0221F0EC +MOD13_0221F0EC: ; 0x0221F0EC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F80 + ldr r0, [sp] + cmp r0, #1 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD13_0221ED58 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0221F124 +MOD13_0221F124: ; 0x0221F124 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F80 + ldr r0, [sp] + cmp r0, #1 + bne _0221F158 + mov r0, r4 + bl MOD13_02234DC0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0221F158: + cmp r0, #2 + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl MOD13_02234820 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0221F174 +MOD13_0221F174: ; 0x0221F174 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r1 + bl MOD13_0221F1BC + add r1, sp, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, [sp] + mov r4, r0 + bl DC_FlushRange + ldr r2, [sp] + mov r0, r4 + mov r1, #0 + blx r5 + mov r0, r4 + bl MOD13_0223939C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_0221F1BC +MOD13_0221F1BC: ; 0x0221F1BC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0221F214 ; =0x02242FF0 + mov r1, r4 + mov r2, #0x3f + bl strncpy + ldrb r0, [r4, #5] + cmp r0, #0x78 + ldreq r0, _0221F214 ; =0x02242FF0 + ldmeqia sp!, {r4, pc} + bl MOD13_02222F34 + ldrb r1, [r4, #5] + cmp r1, #0x79 + bne _0221F200 + cmp r0, #0 + ldrne r0, _0221F214 ; =0x02242FF0 + ldmneia sp!, {r4, pc} +_0221F200: + ldr r1, _0221F218 ; =0x0223ECB4 + ldrb r1, [r1, r0] + ldr r0, _0221F214 ; =0x02242FF0 + strb r1, [r0, #5] + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F214: .word 0x02242FF0 +_0221F218: .word 0x0223ECB4 + + arm_func_start MOD13_0221F21C +MOD13_0221F21C: ; 0x0221F21C + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + ldr r4, _0221F258 ; =0x02243030 + mov r5, r6 +_0221F22C: + ldr r0, [r4] + ldr r0, [r0, r6, lsl #2] + cmp r0, #0 + beq _0221F248 + bl MOD13_02239AE8 + ldr r0, [r4] + str r5, [r0, r6, lsl #2] +_0221F248: + add r6, r6, #1 + cmp r6, #4 + blt _0221F22C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0221F258: .word 0x02243030 + + arm_func_start MOD13_0221F25C +MOD13_0221F25C: ; 0x0221F25C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov fp, r1 + str r2, [sp] + str r3, [sp, #4] + mov sb, #6 + bl MOD13_0221F21C + mov r8, #0 + ldr r4, _0221F344 ; =0x02243030 + mov r7, r8 + mov r6, #1 + mvn r5, #0 +_0221F290: + mov r0, r7 + mov r1, sb + mov r2, r6 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r5 + str r0, [r2, r8, lsl #2] + ldr r0, [r4] + mov r2, r6 + ldr r0, [r0, r8, lsl #2] + bl MOD13_02239814 + add r8, r8, #1 + cmp r8, #4 + add sb, sb, #1 + blt _0221F290 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp] + ldr r0, [r0] + mov r2, sl + ldr r0, [r0] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp] + ldr r0, [r0] + mov r2, fp + ldr r0, [r0, #4] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp, #4] + ldr r0, [r0] + mov r2, sl + ldr r0, [r0, #8] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F344 ; =0x02243030 + ldr r3, [sp, #4] + ldr r0, [r0] + mov r2, fp + ldr r0, [r0, #0xc] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221F344: .word 0x02243030 + + arm_func_start MOD13_0221F348 +MOD13_0221F348: ; 0x0221F348 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r4, r0 + mov fp, r1 + str r2, [sp] + mov sl, r3 + bl MOD13_0221F21C + ldr r0, _0221F3FC ; =0x0223ECFC + mov sb, #0 + add r8, r0, r4, lsl #1 + ldr r4, _0221F400 ; =0x02243030 + mov r7, sb + mov r6, #1 + mvn r5, #0 +_0221F380: + ldrb r1, [r8] + mov r0, r7 + mov r2, r6 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r5 + str r0, [r2, sb, lsl #2] + ldr r0, [r4] + mov r2, r6 + ldr r0, [r0, sb, lsl #2] + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, #2 + add r8, r8, #1 + blt _0221F380 + ldr r0, _0221F400 ; =0x02243030 + mov r2, fp + ldr r0, [r0] + mov r3, sl + ldr r0, [r0] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0221F400 ; =0x02243030 + ldr r2, [sp] + ldr r0, [r0] + mov r3, sl + ldr r0, [r0, #4] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0221F3FC: .word 0x0223ECFC +_0221F400: .word 0x02243030 + + arm_func_start MOD13_0221F404 +MOD13_0221F404: ; 0x0221F404 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221F21C + ldr r0, _0221F420 ; =0x02243030 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F420: .word 0x02243030 + + arm_func_start MOD13_0221F424 +MOD13_0221F424: ; 0x0221F424 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x10 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0221F448 ; =0x02243030 + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F448: .word 0x02243030 + + arm_func_start MOD13_0221F44C +MOD13_0221F44C: ; 0x0221F44C + stmdb sp!, {r4, lr} + ldr r1, _0221F488 ; =0x02243034 + mov r4, r0 + ldr r0, [r1] + mov r1, #0xc0 + bl DC_FlushRange + ldr r0, _0221F488 ; =0x02243034 + mov r1, #0 + ldr r0, [r0] + mov r2, #0xc0 + bl GX_LoadBG1Scr + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F488: .word 0x02243034 + + arm_func_start MOD13_0221F48C +MOD13_0221F48C: ; 0x0221F48C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + add r0, r0, #2 + bl MOD13_0221F4CC + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0221F4AC +MOD13_0221F4AC: ; 0x0221F4AC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + add r0, r0, #5 + bl MOD13_0221F4CC + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0221F4CC +MOD13_0221F4CC: ; 0x0221F4CC + stmdb sp!, {r4, lr} + ldr r1, _0221F51C ; =0x0223FB18 + ldr r0, [r1, r0, lsl #2] + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0221F520 ; =0x02243034 + mov r4, r0 + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopyFast + mov r0, r4 + bl MOD13_0223939C + mov r0, #1 + ldr r1, _0221F524 ; =MOD13_0221F44C + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F51C: .word 0x0223FB18 +_0221F520: .word 0x02243034 +_0221F524: .word MOD13_0221F44C + + arm_func_start MOD13_0221F528 +MOD13_0221F528: ; 0x0221F528 + ldr ip, _0221F534 ; =MOD13_0223AF90 + ldr r0, _0221F538 ; =0x02243034 + bx ip + .align 2, 0 +_0221F534: .word MOD13_0223AF90 +_0221F538: .word 0x02243034 + + arm_func_start MOD13_0221F53C +MOD13_0221F53C: ; 0x0221F53C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xc0 + mov r1, #4 + bl MOD13_0223B004 + ldr r2, _0221F5B0 ; =0x02243034 + ldr r1, _0221F5B4 ; =0x020C8E1C + str r0, [r2] + ldr r0, _0221F5B8 ; =0x0223FB68 + bl MOD13_0221F174 + bl MOD13_02222F1C + cmp r0, #0 + beq _0221F580 + cmp r0, #1 + beq _0221F598 + add sp, sp, #4 + ldmia sp!, {pc} +_0221F580: + ldr r0, _0221F5BC ; =0x0223FB18 + ldr r1, _0221F5C0 ; =0x020C915C + ldr r0, [r0] + bl MOD13_0221F174 + add sp, sp, #4 + ldmia sp!, {pc} +_0221F598: + ldr r0, _0221F5BC ; =0x0223FB18 + ldr r1, _0221F5C0 ; =0x020C915C + ldr r0, [r0, #4] + bl MOD13_0221F174 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F5B0: .word 0x02243034 +_0221F5B4: .word 0x020C8E1C +_0221F5B8: .word 0x0223FB68 +_0221F5BC: .word 0x0223FB18 +_0221F5C0: .word 0x020C915C + + arm_func_start MOD13_0221F5C4 +MOD13_0221F5C4: ; 0x0221F5C4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _0221F67C ; =0x04000208 + mov r4, #0 + ldrh r5, [r0] + strh r4, [r0] + bl WM_GetAllowedChannel + cmp r0, #0x8000 + beq _0221F5F0 + bl WM_GetLinkLevel + mov r4, r0 +_0221F5F0: + ldr r2, _0221F67C ; =0x04000208 + ldr r1, _0221F680 ; =0x02243038 + ldrh r0, [r2] + ldr r3, _0221F684 ; =0x0223ED08 + mov r0, #0 + strh r5, [r2] + ldr r2, [r1] + ldrsb r1, [r2, #8] + ldr r2, [r2] + add r1, r3, r1, lsl #2 + ldrb r1, [r4, r1] + bl MOD13_02239E8C + ldr r0, _0221F688 ; =0x0223ED04 + ldr r2, _0221F680 ; =0x02243038 + ldrh r3, [r0, #2] + ldr r1, [r2] + ldrh ip, [r0] + ldr lr, [r1] + ldr r0, _0221F68C ; =0x000001FF + ldr r4, [lr] + ldr r1, _0221F690 ; =0xFE00FF00 + and r3, r3, #0xff + and r1, r4, r1 + and r4, ip, r0 + orr r0, r1, r3 + orr r0, r0, r4, lsl #16 + str r0, [lr] + ldr r0, [r2] + ldr r1, [r0] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0x800 + strh r0, [r1, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0221F67C: .word 0x04000208 +_0221F680: .word 0x02243038 +_0221F684: .word 0x0223ED08 +_0221F688: .word 0x0223ED04 +_0221F68C: .word 0x000001FF +_0221F690: .word 0xFE00FF00 + + arm_func_start MOD13_0221F694 +MOD13_0221F694: ; 0x0221F694 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0221F6DC ; =0x02243038 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, [r0, #4] + mov r0, #0 + bl MOD13_0223C104 + ldr r0, _0221F6DC ; =0x02243038 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223B974 + ldr r0, _0221F6DC ; =0x02243038 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221F6DC: .word 0x02243038 + + arm_func_start MOD13_0221F6E0 +MOD13_0221F6E0: ; 0x0221F6E0 + stmdb sp!, {r4, lr} + ldr r1, _0221F7A0 ; =0x02243038 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #0xc + mov r1, #4 + bl MOD13_0223B004 + ldr r1, _0221F7A0 ; =0x02243038 + ldr r2, _0221F7A4 ; =0x0223ED08 + str r0, [r1] + strb r4, [r0, #8] + ldrb r1, [r2, r4, lsl #2] + mov r0, #0 + bl MOD13_02239E54 + ldr r3, _0221F7A0 ; =0x02243038 + ldr r2, _0221F7A8 ; =0x0223ED04 + ldr r4, [r3] + ldr r1, _0221F7AC ; =0xFE00FF00 + str r0, [r4] + ldr r4, [r3] + ldrh r0, [r2, #2] + ldr r4, [r4] + ldrh lr, [r2] + ldr ip, [r4] + and r2, r0, #0xff + and r1, ip, r1 + ldr r0, _0221F7B0 ; =0x000001FF + orr r1, r1, r2 + and r0, lr, r0 + orr r0, r1, r0, lsl #16 + str r0, [r4] + ldr r1, [r3] + mov r0, #0 + ldr lr, [r1] + ldr r1, _0221F7B4 ; =MOD13_0221F5C4 + ldrh ip, [lr, #4] + mov r2, r0 + mov r3, #0x78 + bic ip, ip, #0xc00 + orr ip, ip, #0x800 + strh ip, [lr, #4] + bl MOD13_0223C1C4 + ldr r1, _0221F7A0 ; =0x02243038 + ldr r1, [r1] + str r0, [r1, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F7A0: .word 0x02243038 +_0221F7A4: .word 0x0223ED08 +_0221F7A8: .word 0x0223ED04 +_0221F7AC: .word 0xFE00FF00 +_0221F7B0: .word 0x000001FF +_0221F7B4: .word MOD13_0221F5C4 + + arm_func_start MOD13_0221F7B8 +MOD13_0221F7B8: ; 0x0221F7B8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + mov r7, #0 + ldr r8, _0221F894 ; =0x0224303C + mov r5, r7 +_0221F7D4: + mov r6, r5 + mov r4, r7, lsl #4 +_0221F7DC: + ldr r0, [r8] + add r0, r4, r0 + ldr r0, [r0, r6, lsl #2] + bl MOD13_0223A978 + cmp r7, #0 + bne _0221F804 + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r0, [r0, #0x104] + bl MOD13_02239AE8 +_0221F804: + add r6, r6, #1 + cmp r6, #4 + blt _0221F7DC + add r7, r7, #1 + cmp r7, #3 + blt _0221F7D4 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F824: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xfc] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #2 + blt _0221F824 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F848: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xec] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #4 + blt _0221F848 + ldr r4, _0221F894 ; =0x0224303C + mov r5, #0 +_0221F86C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x30] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #0x2f + blt _0221F86C + ldr r0, _0221F894 ; =0x0224303C + bl MOD13_0223AF90 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0221F894: .word 0x0224303C + + arm_func_start MOD13_0221F898 +MOD13_0221F898: ; 0x0221F898 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221F908 ; =0x0224303C + ldr r2, _0221F90C ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x30] + mov r1, #0 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221F910 ; =MOD13_0221F7B8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F908: .word 0x0224303C +_0221F90C: .word 0x01FF0000 +_0221F910: .word MOD13_0221F7B8 + + arm_func_start MOD13_0221F914 +MOD13_0221F914: ; 0x0221F914 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221F984 ; =0x0224303C + ldr r2, _0221F988 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x60] + mov r1, #1 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221F98C ; =MOD13_0221F898 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221F984: .word 0x0224303C +_0221F988: .word 0x01FF0000 +_0221F98C: .word MOD13_0221F898 + + arm_func_start MOD13_0221F990 +MOD13_0221F990: ; 0x0221F990 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FA00 ; =0x0224303C + ldr r2, _0221FA04 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0x90] + mov r1, #2 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FA08 ; =MOD13_0221F914 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FA00: .word 0x0224303C +_0221FA04: .word 0x01FF0000 +_0221FA08: .word MOD13_0221F914 + + arm_func_start MOD13_0221FA0C +MOD13_0221FA0C: ; 0x0221FA0C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FA7C ; =0x0224303C + ldr r2, _0221FA80 ; =0x01FF0000 + ldr ip, [r1] + mov r4, r0 + ldr r3, [ip, #0xc0] + mov r1, #3 + ldr r0, [r3] + and r0, r0, r2 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [r3] + and r0, r0, #0xff + str r0, [sp, #4] + add r2, r0, #0xc + str r2, [sp, #4] + ldrb r0, [ip, #0x11d] + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FA84 ; =MOD13_0221F990 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FA7C: .word 0x0224303C +_0221FA80: .word 0x01FF0000 +_0221FA84: .word MOD13_0221F990 + + arm_func_start MOD13_0221FA88 +MOD13_0221FA88: ; 0x0221FA88 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0221FB08 ; =0x0224303C + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0xfc] + bl MOD13_02239ADC + ldr r3, [r0] + ldr r1, _0221FB0C ; =0x01FF0000 + ldr r2, _0221FB08 ; =0x0224303C + and r1, r3, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r0] + ldr r0, [r2] + and r1, r1, #0xff + str r1, [sp, #4] + add r2, r1, #0xc + str r2, [sp, #4] + ldrb r0, [r0, #0x11d] + mov r1, #4 + bl MOD13_022201DC + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0221FB10 ; =MOD13_0221FA0C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0221FB08: .word 0x0224303C +_0221FB0C: .word 0x01FF0000 +_0221FB10: .word MOD13_0221FA0C + + arm_func_start MOD13_0221FB14 +MOD13_0221FB14: ; 0x0221FB14 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0221FF90 ; =0x0224303C + ldr r3, _0221FF94 ; =0x0223EF08 + ldr ip, [r2] + add r1, ip, #0x100 + ldrsb lr, [r1, #0x21] + add r1, r3, lr, lsl #2 + ldrsb r1, [r0, r1] + strb r1, [ip, #0x121] + ldr r1, [r2] + add r2, r1, #0x100 + ldrsb r2, [r2, #0x21] + cmp r2, #0x2e + bne _0221FB5C + cmp r0, #3 + streqb lr, [r1, #0x120] + beq _0221FF7C +_0221FB5C: + cmp r2, #0x33 + bne _0221FB7C + cmp r0, #1 + beq _0221FB74 + cmp r0, #3 + bne _0221FB7C +_0221FB74: + strb lr, [r1, #0x120] + b _0221FF7C +_0221FB7C: + cmp r2, #0x34 + bne _0221FBA0 + cmp r0, #1 + beq _0221FB94 + cmp r0, #3 + bne _0221FBA0 +_0221FB94: + cmp lr, #0x2e + strneb lr, [r1, #0x120] + b _0221FF7C +_0221FBA0: + mvn r0, #0 + cmp r2, r0 + bne _0221FBDC + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + beq _0221FBC4 + cmp r0, #0x32 + bne _0221FBD0 +_0221FBC4: + mov r0, #0x23 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FBD0: + mov r0, #0x22 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FBDC: + mvn r0, #1 + cmp r2, r0 + bne _0221FCA4 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x26 + bgt _0221FC38 + cmp r0, #0x26 + bge _0221FC74 + cmp r0, #5 + bgt _0221FC2C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FC98 +_0221FC14: ; jump table + b _0221FC5C ; case 0 + b _0221FC68 ; case 1 + b _0221FC98 ; case 2 + b _0221FC74 ; case 3 + b _0221FC80 ; case 4 + b _0221FC8C ; case 5 +_0221FC2C: + cmp r0, #0x24 + beq _0221FC68 + b _0221FC98 +_0221FC38: + cmp r0, #0x28 + bgt _0221FC54 + cmp r0, #0x28 + bge _0221FC8C + cmp r0, #0x27 + beq _0221FC80 + b _0221FC98 +_0221FC54: + cmp r0, #0x31 + bne _0221FC98 +_0221FC5C: + mov r0, #0x31 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC68: + mov r0, #0x24 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC74: + mov r0, #0x26 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC80: + mov r0, #0x27 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC8C: + mov r0, #0x28 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FC98: + mov r0, #0x25 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FCA4: + mvn r0, #2 + cmp r2, r0 + bne _0221FDA8 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + bgt _0221FD18 + cmp r0, #0x23 + bge _0221FD90 + cmp r0, #0xb + bgt _0221FD0C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FD9C +_0221FCDC: ; jump table + b _0221FD9C ; case 0 + b _0221FD9C ; case 1 + b _0221FD9C ; case 2 + b _0221FD9C ; case 3 + b _0221FD9C ; case 4 + b _0221FD9C ; case 5 + b _0221FD60 ; case 6 + b _0221FD6C ; case 7 + b _0221FD9C ; case 8 + b _0221FD78 ; case 9 + b _0221FD84 ; case 10 + b _0221FD90 ; case 11 +_0221FD0C: + cmp r0, #0x22 + beq _0221FD90 + b _0221FD9C +_0221FD18: + cmp r0, #0x2a + bgt _0221FD34 + cmp r0, #0x2a + bge _0221FD6C + cmp r0, #0x29 + beq _0221FD60 + b _0221FD9C +_0221FD34: + cmp r0, #0x32 + bgt _0221FD9C + cmp r0, #0x2c + blt _0221FD9C + cmp r0, #0x2c + beq _0221FD78 + cmp r0, #0x2d + beq _0221FD84 + cmp r0, #0x32 + beq _0221FD90 + b _0221FD9C +_0221FD60: + mov r0, #0x29 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD6C: + mov r0, #0x2a + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD78: + mov r0, #0x2c + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD84: + mov r0, #0x2d + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD90: + mov r0, #0x2e + strb r0, [r1, #0x121] + b _0221FF7C +_0221FD9C: + mov r0, #0x2b + strb r0, [r1, #0x121] + b _0221FF7C +_0221FDA8: + mvn r0, #3 + cmp r2, r0 + bne _0221FE70 + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x26 + bgt _0221FE04 + cmp r0, #0x26 + bge _0221FE40 + cmp r0, #5 + bgt _0221FDF8 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FE64 +_0221FDE0: ; jump table + b _0221FE28 ; case 0 + b _0221FE34 ; case 1 + b _0221FE64 ; case 2 + b _0221FE40 ; case 3 + b _0221FE4C ; case 4 + b _0221FE58 ; case 5 +_0221FDF8: + cmp r0, #0x24 + beq _0221FE34 + b _0221FE64 +_0221FE04: + cmp r0, #0x28 + bgt _0221FE20 + cmp r0, #0x28 + bge _0221FE58 + cmp r0, #0x27 + beq _0221FE4C + b _0221FE64 +_0221FE20: + cmp r0, #0x31 + bne _0221FE64 +_0221FE28: + mov r0, #0 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE34: + mov r0, #1 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE40: + mov r0, #3 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE4C: + mov r0, #4 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE58: + mov r0, #5 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE64: + mov r0, #2 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FE70: + mvn r0, #4 + cmp r2, r0 + bne _0221FF7C + add r0, r1, #0x100 + ldrsb r0, [r0, #0x20] + cmp r0, #0x23 + bgt _0221FEE4 + cmp r0, #0x23 + bge _0221FF68 + cmp r0, #0xb + bgt _0221FED8 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0221FF74 +_0221FEA8: ; jump table + b _0221FF74 ; case 0 + b _0221FF74 ; case 1 + b _0221FF74 ; case 2 + b _0221FF74 ; case 3 + b _0221FF74 ; case 4 + b _0221FF74 ; case 5 + b _0221FF2C ; case 6 + b _0221FF38 ; case 7 + b _0221FF74 ; case 8 + b _0221FF44 ; case 9 + b _0221FF50 ; case 10 + b _0221FF5C ; case 11 +_0221FED8: + cmp r0, #0x22 + beq _0221FF5C + b _0221FF74 +_0221FEE4: + cmp r0, #0x2a + bgt _0221FF00 + cmp r0, #0x2a + bge _0221FF38 + cmp r0, #0x29 + beq _0221FF2C + b _0221FF74 +_0221FF00: + cmp r0, #0x32 + bgt _0221FF74 + cmp r0, #0x2c + blt _0221FF74 + cmp r0, #0x2c + beq _0221FF44 + cmp r0, #0x2d + beq _0221FF50 + cmp r0, #0x32 + beq _0221FF68 + b _0221FF74 +_0221FF2C: + mov r0, #6 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF38: + mov r0, #7 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF44: + mov r0, #9 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF50: + mov r0, #0xa + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF5C: + mov r0, #0xb + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF68: + mov r0, #0x32 + strb r0, [r1, #0x121] + b _0221FF7C +_0221FF74: + mov r0, #8 + strb r0, [r1, #0x121] +_0221FF7C: + bl MOD13_0221FF98 + mov r0, #8 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0221FF90: .word 0x0224303C +_0221FF94: .word 0x0223EF08 + + arm_func_start MOD13_0221FF98 +MOD13_0221FF98: ; 0x0221FF98 + stmdb sp!, {r4, lr} + ldr r0, _02220068 ; =0x0224303C + ldr r1, [r0] + add r0, r1, #0x100 + ldrsb r0, [r0, #0x21] + sub r0, r0, #0x2f + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0221FFFC +_0221FFBC: ; jump table + b _0221FFD4 ; case 0 + b _0221FFDC ; case 1 + b _0221FFE4 ; case 2 + b _0221FFEC ; case 3 + b _0221FFF4 ; case 4 + b _0221FFF4 ; case 5 +_0221FFD4: + mov r4, #0x42 + b _02220000 +_0221FFDC: + mov r4, #0x41 + b _02220000 +_0221FFE4: + mov r4, #0x43 + b _02220000 +_0221FFEC: + mov r4, #0x41 + b _02220000 +_0221FFF4: + mov r4, #0x45 + b _02220000 +_0221FFFC: + mov r4, #0x40 +_02220000: + ldr r0, [r1, #0x114] + mov r1, #0 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _02220068 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x114] + bl MOD13_02239814 + ldr r0, _02220068 ; =0x0224303C + ldr r2, _0222006C ; =0x0223EE34 + ldr r3, [r0] + mvn r1, #0 + add r0, r3, #0x100 + ldrsb ip, [r0, #0x21] + ldr r0, [r3, #0x114] + ldr r3, _02220070 ; =0x0223EE36 + mov ip, ip, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220068: .word 0x0224303C +_0222006C: .word 0x0223EE34 +_02220070: .word 0x0223EE36 + + arm_func_start MOD13_02220074 +MOD13_02220074: ; 0x02220074 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + cmp r0, #0x2f + bge _022200CC + ldr r2, _02220144 ; =0x0224303C + ldr r3, _02220148 ; =0x0223ED10 + ldr r2, [r2] + add sp, sp, #4 + add r0, r2, r0, lsl #2 + ldr ip, [r0, #0x30] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r2, [ip, #4] + ldrb r0, [r3, r1] + bic r1, r2, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_022200CC: + sub r3, r0, #0x2f + cmp r3, #4 + bge _02220114 + ldr r0, _02220144 ; =0x0224303C + ldr r2, _02220148 ; =0x0223ED10 + ldr r0, [r0] + add sp, sp, #4 + add r0, r0, r3, lsl #2 + ldr ip, [r0, #0xec] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r3, [ip, #4] + ldrb r0, [r2, r1] + bic r1, r3, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02220114: + ldr r2, _02220144 ; =0x0224303C + ldr r3, _0222014C ; =0x0223ED14 + ldr r2, [r2] + sub r0, r0, #0x33 + add r0, r2, r0, lsl #2 + ldrb r3, [r3, r1] + ldr r0, [r0, #0xfc] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220144: .word 0x0224303C +_02220148: .word 0x0223ED10 +_0222014C: .word 0x0223ED14 + + arm_func_start MOD13_02220150 +MOD13_02220150: ; 0x02220150 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r1, _022201D4 ; =0x0224303C + mov r6, #0 + ldr r1, [r1] + mov r8, r0 + mov r5, r6 + mov r7, r6 + mov r4, r6 + strb r8, [r1, #0x11d] + ldr sb, _022201D8 ; =0x0223ED78 +_0222017C: + add r0, sb, r4, lsl #2 + ldrh r2, [r0, #2] + mov r0, r8 + mov r1, r7 + bl MOD13_022201DC + add r7, r7, #1 + cmp r7, #4 + add r4, r4, #0xc + blt _0222017C + cmp r8, #2 + moveq r6, #1 + beq _022201B4 + cmp r8, #1 + moveq r5, #1 +_022201B4: + mov r1, r6 + mov r0, #0x2f + bl MOD13_02220074 + mov r1, r5 + mov r0, #0x30 + bl MOD13_02220074 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022201D4: .word 0x0224303C +_022201D8: .word 0x0223ED78 + + arm_func_start MOD13_022201DC +MOD13_022201DC: ; 0x022201DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r4, _02220460 ; =0x0223ED38 + ldr lr, _02220464 ; =0x0223ED40 + ldrb r5, [r4, #4] + ldrb sb, [r4] + ldrb r8, [r4, #1] + strb r5, [sp, #0xc] + mov r5, r1 + mov r1, #0xc + mul r1, r5, r1 + ldrb r7, [r4, #2] + ldrb r6, [r4, #3] + strb sb, [sp, #8] + str r1, [sp, #4] + ldrb ip, [lr] + ldrb sl, [lr, #1] + ldrb r4, [lr, #2] + ldrb fp, [lr, #3] + ldrb sb, [lr, #4] + ldr r3, _02220468 ; =0x0223ED30 + strb r8, [sp, #9] + strb r7, [sp, #0xa] + strb r6, [sp, #0xb] + add r1, sp, #8 + ldrb lr, [r3] + ldrb r8, [r3, #1] + ldrb r7, [r3, #2] + ldrb r6, [r3, #3] + ldrb r3, [r3, #4] + ldrb r1, [r1, r5] + strb sl, [sp, #0xe] + strb r4, [sp, #0xf] + strb sb, [sp, #0x11] + strb ip, [sp, #0xd] + mov r4, r2 + ldr sl, [sp, #4] + strb fp, [sp, #0x10] + strb lr, [sp, #0x12] + strb r8, [sp, #0x13] + strb r7, [sp, #0x14] + strb r6, [sp, #0x15] + strb r3, [sp, #0x16] + cmp r1, #0 + mov sb, #0 + ble _0222030C + add r1, sp, #8 + ldr r2, _0222046C ; =0x0224303C + ldr r3, _02220470 ; =0x0223ED78 + ldr fp, _02220474 ; =0xFE00FF00 + and r8, r4, #0xff + add r7, r1, r5 +_022202AC: + ldr r1, [r2] + mov r6, sl, lsl #2 + add r1, r1, sl, lsl #2 + ldr lr, [r1, #0x30] + ldr r1, _02220478 ; =0xC1FFFCFF + ldr ip, [lr] + add sb, sb, #1 + and r1, ip, r1 + str r1, [lr] + ldr r1, [r2] + ldrh ip, [r3, r6] + add r1, r1, sl, lsl #2 + ldr r6, [r1, #0x30] + ldr r1, _0222047C ; =0x000001FF + add sl, sl, #1 + and r1, ip, r1 + ldr ip, [r6] + and ip, ip, fp + orr ip, ip, r8 + orr r1, ip, r1, lsl #16 + str r1, [r6] + ldrb r1, [r7] + cmp sb, r1 + blt _022202AC +_0222030C: + cmp r5, #4 + bge _0222034C + ldr r1, _0222046C ; =0x0224303C + mov r2, #2 + ldr r6, [r1] + ldr r1, [sp, #4] + str r2, [sp] + add r0, r6, r0, lsl #4 + ldr r3, _02220470 ; =0x0223ED78 + mov r1, r1, lsl #2 + add r2, r6, r5, lsl #2 + ldrh r1, [r3, r1] + ldr r3, [r2, #0x104] + ldr r0, [r0, r5, lsl #2] + mov r2, r4 + bl MOD13_0223A440 +_0222034C: + add r0, r5, #3 + mov r1, #4 + bl FX_ModS32 + add r8, sp, #0xd + ldrb r1, [r8, r5] + mov r2, #0 + cmp r1, #0 + ble _022203E0 + ldr r3, _02220480 ; =0x0223ED58 + mov r1, r0, lsl #2 + ldrh r3, [r3, r1] + ldr r0, _0222047C ; =0x000001FF + and r7, r4, #0xff + and r0, r3, r0 + mov r6, r0, lsl #0x10 + add r3, r8, r5 + ldr sl, _0222046C ; =0x0224303C + ldr r8, _02220478 ; =0xC1FFFCFF + ldr sb, _02220474 ; =0xFE00FF00 +_02220398: + ldr r0, [sl] + add r2, r2, #1 + add r0, r1, r0 + ldr fp, [r0, #0xec] + ldr r0, [fp] + and r0, r0, r8 + str r0, [fp] + ldr r0, [sl] + add r0, r1, r0 + ldr r0, [r0, #0xec] + ldr fp, [r0] + and fp, fp, sb + orr fp, fp, r7 + orr fp, r6, fp + str fp, [r0] + ldrb r0, [r3] + cmp r2, r0 + blt _02220398 +_022203E0: + add r1, sp, #0x12 + ldrb r0, [r1, r5] + mov r8, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r1, r5 + ldr sl, _0222046C ; =0x0224303C + ldr r5, _02220484 ; =0x0223ED50 + mov r6, r8 + mvn r7, #0 +_0222040C: + ldr r0, [sl] + mov r1, r7 + add r0, r0, r8, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r6 + mov r3, r6 + bl MOD13_02239A1C + ldr r0, [sl] + mov r1, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrh r2, [r5, r1] + ldr r0, [r0, #0xfc] + mov r1, r7 + mov r3, r4 + bl MOD13_02239888 + ldrb r0, [sb] + add r8, r8, #1 + cmp r8, r0 + blt _0222040C + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02220460: .word 0x0223ED38 +_02220464: .word 0x0223ED40 +_02220468: .word 0x0223ED30 +_0222046C: .word 0x0224303C +_02220470: .word 0x0223ED78 +_02220474: .word 0xFE00FF00 +_02220478: .word 0xC1FFFCFF +_0222047C: .word 0x000001FF +_02220480: .word 0x0223ED58 +_02220484: .word 0x0223ED50 + + arm_func_start MOD13_02220488 +MOD13_02220488: ; 0x02220488 + stmdb sp!, {r4, lr} + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204A4 + mov r0, #0 + bl MOD13_0221FB14 +_022204A4: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204BC + mov r0, #1 + bl MOD13_0221FB14 +_022204BC: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204D4 + mov r0, #2 + bl MOD13_0221FB14 +_022204D4: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022204EC + mov r0, #3 + bl MOD13_0221FB14 +_022204EC: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02220604 + ldr r2, _022206A4 ; =0x0224303C + ldr r0, [r2] + add r1, r0, #0x100 + ldrsb r4, [r1, #0x21] + cmp r4, #0x2f + bge _0222055C + ldrb r1, [r0, #0x124] + cmp r1, #0 + bne _0222052C + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_0222052C: + ldrb r3, [r0, #0x11d] + ldr r1, _022206A8 ; =0x0223FB7C + ldr r1, [r1, r3, lsl #2] + ldrb r1, [r1, r4] + strb r1, [r0, #0x11c] + ldr r0, [r2] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + ldmneia sp!, {r4, pc} + mov r0, #0 + bl MOD13_02220150 + ldmia sp!, {r4, pc} +_0222055C: + sub r1, r4, #0x2f + cmp r1, #4 + bge _022205F4 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _022205C4 +_02220574: ; jump table + b _02220584 ; case 0 + b _0222058C ; case 1 + b _02220594 ; case 2 + b _022205AC ; case 3 +_02220584: + bl MOD13_02220944 + ldmia sp!, {r4, pc} +_0222058C: + bl MOD13_0222090C + ldmia sp!, {r4, pc} +_02220594: + ldrb r1, [r0, #0x124] + cmp r1, #0 + bne _022205C4 + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_022205AC: + ldrb r1, [r0, #0x123] + cmp r1, #0 + bne _022205C4 + mov r0, #9 + bl MOD13_0223424C + ldmia sp!, {r4, pc} +_022205C4: + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _022205D8 + mov r0, #0 + bl MOD13_02220150 +_022205D8: + ldr r1, _022206AC ; =0x0223ED48 + sub r2, r4, #0x2f + ldr r0, _022206A4 ; =0x0224303C + ldrb r1, [r1, r2] + ldr r0, [r0] + strb r1, [r0, #0x11c] + ldmia sp!, {r4, pc} +_022205F4: + ldr r1, _022206B0 ; =0x0223ED1C + sub r2, r4, #0x33 + ldrb r1, [r1, r2] + strb r1, [r0, #0x11c] +_02220604: + mov r0, #2 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222065C + ldr r0, _022206A4 ; =0x0224303C + ldr r1, [r0] + ldrb r0, [r1, #0x123] + cmp r0, #0 + bne _02220650 + ldrb r0, [r1, #0x125] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022206A4 ; =0x0224303C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x125] + ldmia sp!, {r4, pc} +_02220650: + mov r0, #0x80 + strb r0, [r1, #0x11c] + b _02220678 +_0222065C: + mov r0, #2 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _022206A4 ; =0x0224303C + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x125] +_02220678: + mov r0, #0x400 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222068C + bl MOD13_02220944 +_0222068C: + mov r0, #0x800 + bl MOD13_0223B3D4 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_0222090C + ldmia sp!, {r4, pc} + .align 2, 0 +_022206A4: .word 0x0224303C +_022206A8: .word 0x0223FB7C +_022206AC: .word 0x0223ED48 +_022206B0: .word 0x0223ED1C + + arm_func_start MOD13_022206B4 +MOD13_022206B4: ; 0x022206B4 + stmdb sp!, {r4, lr} + ldr r1, _02220704 ; =0x0224303C + mov r4, r0 + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1f] + cmp r4, r1 + ldmeqia sp!, {r4, pc} + mov r1, #1 + bl MOD13_02220074 + ldr r0, _02220704 ; =0x0224303C + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1f] + bl MOD13_02220074 + ldr r0, _02220704 ; =0x0224303C + ldr r0, [r0] + strb r4, [r0, #0x11f] + ldmia sp!, {r4, pc} + .align 2, 0 +_02220704: .word 0x0224303C + + arm_func_start MOD13_02220708 +MOD13_02220708: ; 0x02220708 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _022208EC ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _022208CC + ldr r7, _022208F0 ; =0x0223ED78 + mov r4, #0 + ldr r6, _022208F4 ; =0x0223ED2C + add r5, sp, #0 +_02220730: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B320 + cmp r0, #0 + beq _02220774 + ldr r0, _022208F8 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r4 + bne _022208CC + mov r0, r4 + bl MOD13_022206B4 + b _022208D4 +_02220774: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _02220730 + ldr r7, _022208FC ; =0x0223ED70 + ldr r6, _02220900 ; =0x0223ED60 + mov r5, #2 + add r4, sp, #0 +_02220794: + mov r0, r6 + mov r1, r7 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _02220854 + ldr r1, _022208F8 ; =0x0224303C + add r0, r5, #0x2f + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1e] + cmp r1, r0 + bne _022208CC + bl MOD13_022206B4 + cmp r5, #3 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _022208F8 ; =0x0224303C + ldr r2, [r0] + ldrb r1, [r2, #0x122] + add r1, r1, #1 + strb r1, [r2, #0x122] + ldr r2, [r0] + ldrb r1, [r2, #0x122] + cmp r1, #0x28 + addlo sp, sp, #0xc + ldmloia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r2, #0x123] + cmp r1, #0 + bne _02220834 + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022208F8 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220834: + mov r1, #0x80 + strb r1, [r2, #0x11c] + ldr r1, [r0] + add sp, sp, #0xc + ldrb r0, [r1, #0x122] + sub r0, r0, #7 + strb r0, [r1, #0x122] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220854: + add r5, r5, #1 + cmp r5, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220794 + ldr r7, _02220904 ; =0x0223ED50 + mov r6, #0 + ldr r5, _02220908 ; =0x0223ED28 + add r4, sp, #0 +_02220878: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _022208BC + ldr r1, _022208F8 ; =0x0224303C + add r0, r6, #0x33 + ldr r1, [r1] + add r1, r1, #0x100 + ldrsb r1, [r1, #0x1e] + cmp r1, r0 + bne _022208CC + bl MOD13_022206B4 + b _022208D4 +_022208BC: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02220878 +_022208CC: + mvn r0, #0 + bl MOD13_022206B4 +_022208D4: + ldr r0, _022208F8 ; =0x0224303C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x122] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022208EC: .word 0x0223F75C +_022208F0: .word 0x0223ED78 +_022208F4: .word 0x0223ED2C +_022208F8: .word 0x0224303C +_022208FC: .word 0x0223ED70 +_02220900: .word 0x0223ED60 +_02220904: .word 0x0223ED50 +_02220908: .word 0x0223ED28 + + arm_func_start MOD13_0222090C +MOD13_0222090C: ; 0x0222090C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02220940 ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_02220150 + mov r0, #1 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220940: .word 0x0224303C + + arm_func_start MOD13_02220944 +MOD13_02220944: ; 0x02220944 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02220978 ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + cmp r0, #2 + moveq r0, #0 + movne r0, #2 + bl MOD13_02220150 + mov r0, #1 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02220978: .word 0x0224303C + + arm_func_start MOD13_0222097C +MOD13_0222097C: ; 0x0222097C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _02220C28 ; =0x0224303C + ldr r0, _02220C2C ; =0x0223F75C + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x11c] + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r7, _02220C30 ; =0x0223ED78 + mov r4, #0 + ldr r6, _02220C34 ; =0x0223ED2C + add r5, sp, #0 +_022209B8: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220A38 + ldr r1, _02220C28 ; =0x0224303C + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r4 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldrb r2, [r3, #0x11d] + ldr r0, _02220C38 ; =0x0223FB7C + ldr r0, [r0, r2, lsl #2] + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _02220A20 + mov r0, #0 + bl MOD13_02220150 +_02220A20: + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + strb r4, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220A38: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _022209B8 + ldr r7, _02220C3C ; =0x0223ED70 + ldr r6, _02220C40 ; =0x0223ED60 + mov r4, #2 + add r5, sp, #0 +_02220A58: + mov r0, r6 + mov r1, r7 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220AD8 + ldr r1, _02220C28 ; =0x0224303C + add r2, r4, #0x2f + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C44 ; =0x0223ED48 + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + ldrb r0, [r0, #0x11d] + cmp r0, #1 + bne _02220ABC + mov r0, #0 + bl MOD13_02220150 +_02220ABC: + ldr r0, _02220C28 ; =0x0224303C + add r1, r4, #0x2f + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220AD8: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220A58 + ldr r7, _02220C48 ; =0x0223ED50 + mov r4, #0 + ldr r6, _02220C4C ; =0x0223ED28 + add r5, sp, #0 +_02220AFC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220B5C + ldr r1, _02220C28 ; =0x0224303C + add r2, r4, #0x33 + ldr r3, [r1] + add r0, r3, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C50 ; =0x0223ED1C + ldrb r0, [r0, r4] + strb r0, [r3, #0x11c] + ldr r0, [r1] + strb r2, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220B5C: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _02220AFC + ldr r0, _02220C54 ; =0x0223ED58 + ldr r1, _02220C58 ; =0x0223ED68 + add r2, sp, #0 + bl MOD13_0223AB74 + add r0, sp, #0 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02220BC8 + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, #0x2f + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD13_02220944 + ldr r0, _02220C28 ; =0x0224303C + mov r1, #0x2f + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220BC8: + ldr r0, _02220C5C ; =0x0223ED5C + ldr r1, _02220C60 ; =0x0223ED6C + add r2, sp, #0 + bl MOD13_0223AB74 + add r0, sp, #0 + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220C28 ; =0x0224303C + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0x1e] + cmp r0, #0x30 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + bl MOD13_0222090C + ldr r0, _02220C28 ; =0x0224303C + mov r1, #0x30 + ldr r0, [r0] + strb r1, [r0, #0x121] + bl MOD13_0221FF98 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02220C28: .word 0x0224303C +_02220C2C: .word 0x0223F75C +_02220C30: .word 0x0223ED78 +_02220C34: .word 0x0223ED2C +_02220C38: .word 0x0223FB7C +_02220C3C: .word 0x0223ED70 +_02220C40: .word 0x0223ED60 +_02220C44: .word 0x0223ED48 +_02220C48: .word 0x0223ED50 +_02220C4C: .word 0x0223ED28 +_02220C50: .word 0x0223ED1C +_02220C54: .word 0x0223ED58 +_02220C58: .word 0x0223ED68 +_02220C5C: .word 0x0223ED5C +_02220C60: .word 0x0223ED6C + + arm_func_start MOD13_02220C64 +MOD13_02220C64: ; 0x02220C64 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _02220E28 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _02220E2C ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + ldr r7, _02220E30 ; =0x0223ED78 + strb r1, [r0, #0x11e] + mov r4, #0 + ldr r6, _02220E34 ; =0x0223ED2C + add r5, sp, #0 +_02220CA0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220D00 + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x124] + cmp r0, #0 + bne _02220CE4 + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220CE4: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add sp, sp, #0xc + ldr r0, [r0] + strb r4, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220D00: + add r4, r4, #1 + cmp r4, #0x2f + add r7, r7, #4 + blt _02220CA0 + ldr r7, _02220E38 ; =0x0223ED68 + ldr r6, _02220E3C ; =0x0223ED58 + mov r4, #0 + add r5, sp, #0 +_02220D20: + mov r0, r6 + mov r1, r7 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220DAC + cmp r4, #3 + bne _02220D5C + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x123] + cmp r0, #0 + beq _02220D78 +_02220D5C: + cmp r4, #2 + bne _02220D88 + ldr r0, _02220E2C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x124] + cmp r0, #0 + bne _02220D88 +_02220D78: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02220D88: + ldr r0, _02220E40 ; =0x0223FB94 + ldr r0, [r0, r4, lsl #2] + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add r1, r4, #0x2f + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220DAC: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #4 + add r6, r6, #4 + blt _02220D20 + ldr r7, _02220E44 ; =0x0223ED50 + mov r6, #0 + ldr r5, _02220E48 ; =0x0223ED28 + add r4, sp, #0 +_02220DD0: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02220E10 + mov r0, #0 + bl MOD13_0223424C + ldr r0, _02220E2C ; =0x0224303C + add r1, r6, #0x33 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x11e] + ldmia sp!, {r4, r5, r6, r7, pc} +_02220E10: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02220DD0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02220E28: .word 0x0223F75C +_02220E2C: .word 0x0224303C +_02220E30: .word 0x0223ED78 +_02220E34: .word 0x0223ED2C +_02220E38: .word 0x0223ED68 +_02220E3C: .word 0x0223ED58 +_02220E40: .word 0x0223FB94 +_02220E44: .word 0x0223ED50 +_02220E48: .word 0x0223ED28 + + arm_func_start MOD13_02220E4C +MOD13_02220E4C: ; 0x02220E4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02220C64 + bl MOD13_0222097C + bl MOD13_02220708 + bl MOD13_02220488 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02220EFC ; =0x0224303C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xfc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, _02220F00 ; =0x0223ED50 + ldr r2, [sp, #4] + ldrh r1, [r0, #2] + sub r2, r2, #0xc + str r2, [sp, #4] + cmp r2, r1 + ble _02220ECC + ldr r0, _02220EFC ; =0x0224303C + mov r1, #4 + ldr r0, [r0] + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02220ECC: + ldr r0, _02220EFC ; =0x0224303C + mov r2, r1 + ldr r0, [r0] + mov r1, #4 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + bl MOD13_0221FF98 + ldr r1, _02220F04 ; =MOD13_02220E4C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220EFC: .word 0x0224303C +_02220F00: .word 0x0223ED50 +_02220F04: .word MOD13_02220E4C + + arm_func_start MOD13_02220F08 +MOD13_02220F08: ; 0x02220F08 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02220FA8 ; =0x0224303C + ldr r2, _02220FAC ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02220FB0 ; =0x01FF0000 + ldr ip, [lr, #0xc0] + ldrh r3, [r2, #0x92] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _02220F6C + ldrb r0, [lr, #0x11d] + mov r1, #3 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02220F6C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #3 + bl MOD13_022201DC + ldr r0, _02220FA8 ; =0x0224303C + mov r1, #4 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02220FB4 ; =0x02220E6C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02220FA8: .word 0x0224303C +_02220FAC: .word 0x0223ED78 +_02220FB0: .word 0x01FF0000 +_02220FB4: .word 0x02220E6C + + arm_func_start MOD13_02220FB8 +MOD13_02220FB8: ; 0x02220FB8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221058 ; =0x0224303C + ldr r2, _0222105C ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02221060 ; =0x01FF0000 + ldr ip, [lr, #0x90] + ldrh r3, [r2, #0x62] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _0222101C + ldrb r0, [lr, #0x11d] + mov r1, #2 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222101C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #2 + bl MOD13_022201DC + ldr r0, _02221058 ; =0x0224303C + mov r1, #3 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02221064 ; =MOD13_02220F08 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221058: .word 0x0224303C +_0222105C: .word 0x0223ED78 +_02221060: .word 0x01FF0000 +_02221064: .word MOD13_02220F08 + + arm_func_start MOD13_02221068 +MOD13_02221068: ; 0x02221068 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221108 ; =0x0224303C + ldr r2, _0222110C ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _02221110 ; =0x01FF0000 + ldr ip, [lr, #0x60] + ldrh r3, [r2, #0x32] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _022210CC + ldrb r0, [lr, #0x11d] + mov r1, #1 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022210CC: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #1 + bl MOD13_022201DC + ldr r0, _02221108 ; =0x0224303C + mov r1, #2 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _02221114 ; =MOD13_02220FB8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221108: .word 0x0224303C +_0222110C: .word 0x0223ED78 +_02221110: .word 0x01FF0000 +_02221114: .word MOD13_02220FB8 + + arm_func_start MOD13_02221118 +MOD13_02221118: ; 0x02221118 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022211B8 ; =0x0224303C + ldr r2, _022211BC ; =0x0223ED78 + ldr lr, [r1] + ldr r1, _022211C0 ; =0x01FF0000 + ldr ip, [lr, #0x30] + ldrh r3, [r2, #2] + ldr r2, [ip] + mov r4, r0 + and r0, r2, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r2, r0, #0xc + str r0, [sp, #4] + str r2, [sp, #4] + cmp r2, r3 + ble _0222117C + ldrb r0, [lr, #0x11d] + mov r1, #0 + bl MOD13_022201DC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222117C: + ldrb r0, [lr, #0x11d] + mov r2, r3 + mov r1, #0 + bl MOD13_022201DC + ldr r0, _022211B8 ; =0x0224303C + mov r1, #1 + ldr r0, [r0] + mov r2, #0xc0 + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + ldr r1, _022211C4 ; =MOD13_02221068 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022211B8: .word 0x0224303C +_022211BC: .word 0x0223ED78 +_022211C0: .word 0x01FF0000 +_022211C4: .word MOD13_02221068 + + arm_func_start MOD13_022211C8 +MOD13_022211C8: ; 0x022211C8 + ldr r0, _022211E0 ; =0x0224303C + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022211E0: .word 0x0224303C + + arm_func_start MOD13_022211E4 +MOD13_022211E4: ; 0x022211E4 + ldr r1, _022211F4 ; =0x0224303C + ldr r1, [r1] + strb r0, [r1, #0x124] + bx lr + .align 2, 0 +_022211F4: .word 0x0224303C + + arm_func_start MOD13_022211F8 +MOD13_022211F8: ; 0x022211F8 + ldr r1, _02221208 ; =0x0224303C + ldr r1, [r1] + strb r0, [r1, #0x123] + bx lr + .align 2, 0 +_02221208: .word 0x0224303C + + arm_func_start MOD13_0222120C +MOD13_0222120C: ; 0x0222120C + ldr r0, _0222121C ; =0x0224303C + ldr r0, [r0] + ldrb r0, [r0, #0x11c] + bx lr + .align 2, 0 +_0222121C: .word 0x0224303C + + arm_func_start MOD13_02221220 +MOD13_02221220: ; 0x02221220 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02221254 ; =0x0224303C + ldr r0, [r0] + ldr r0, [r0, #0x114] + bl MOD13_02239AE8 + ldr r0, _02221254 ; =0x0224303C + ldr r1, _02221258 ; =MOD13_0221FA88 + ldr r0, [r0] + ldr r0, [r0, #0x118] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221254: .word 0x0224303C +_02221258: .word MOD13_0221FA88 + + arm_func_start MOD13_0222125C +MOD13_0222125C: ; 0x0222125C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + add r2, sp, #0x34 + mov r1, #0 + strh r1, [r2] + strh r1, [r2, #2] + strh r1, [r2, #4] + strh r1, [r2, #6] + ldr r0, _022215EC ; =0x0223ED2C + mov r1, #4 + ldrh r3, [r0] + ldrh r2, [r0, #2] + mov r0, #0x128 + strh r3, [sp, #0x38] + strh r2, [sp, #0x3a] + bl MOD13_0223AFE0 + ldr r8, _022215F0 ; =0x0224303C + mov r6, #0 + mov r1, #0xff + str r0, [r8] + strb r1, [r0, #0x11c] + ldr r0, [r8] + mov r1, #1 + strb r6, [r0, #0x121] + ldr r0, [r8] + ldr r7, _022215F4 ; =0xC1FFFCFF + strb r1, [r0, #0x123] + ldr r0, [r8] + mov r5, r6 + strb r1, [r0, #0x124] + mov r4, #0x34 +_022212D8: + mov r0, r5 + mov r1, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r1, r1, r6, lsl #2 + str r0, [r1, #0x30] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x30] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x30] + add r6, r6, #1 + ldrh r0, [r1, #4] + cmp r6, #0x2f + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _022212D8 + ldr r6, _022215F8 ; =0x0223ED20 + mov r5, #0 + ldr r8, _022215F0 ; =0x0224303C + mov r4, r5 + ldr r7, _022215F4 ; =0xC1FFFCFF +_02221348: + ldrb r1, [r6] + mov r0, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r6, r6, #1 + add r1, r1, r5, lsl #2 + str r0, [r1, #0xec] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0xec] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0xec] + add r5, r5, #1 + ldrh r0, [r1, #4] + cmp r5, #4 + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _02221348 + ldr sl, _022215FC ; =0x0223ED18 + mov sb, #0 + ldr r4, _022215F0 ; =0x0224303C + mov fp, sb + str sb, [sp, #0x1c] + mov r8, #1 + mvn r7, #0 + mov r6, #0x200 + mov r5, #3 +_022213CC: + ldrb r1, [sl] + mov r0, fp + mov r2, r8 + bl MOD13_02239E0C + ldr r2, [r4] + ldr r3, [sp, #0x1c] + add r2, r2, sb, lsl #2 + str r0, [r2, #0xfc] + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r6 + bl MOD13_02239A1C + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0xfc] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + add sl, sl, #1 + cmp sb, #2 + blt _022213CC + ldr r1, _02221600 ; =0x0223ED24 + mov r7, #0 + ldrh r0, [r1, #2] + ldr fp, _02221604 ; =0x0223FB88 + ldr r4, _022215F0 ; =0x0224303C + str r0, [sp, #0x10] + ldrh r0, [r1] + strh r7, [sp, #0x42] + str r7, [sp, #0x2c] + str r0, [sp, #0x14] + mov r0, #1 + str r7, [sp, #0x24] + str r7, [sp, #0x28] + str r7, [sp, #0x20] + mov r6, #2 + mov r5, #0x480 + str r0, [sp, #0x30] +_02221470: + ldr sb, [sp, #0x20] + mov r0, sb + str r0, [sp, #0x18] +_0222147C: + add r0, sp, #0x3c + str r0, [sp] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r3, r0 + bl MOD13_0223A9A4 + ldr r1, [r4] + ldr sl, [sp, #0x18] + add r1, r1, r7, lsl #4 + str r0, [r1, sb, lsl #2] + ldr r0, [sp, #0x28] + strh r0, [sp, #0x34] + mov r8, r0 +_022214B8: + ldr r1, [fp, r7, lsl #2] + mov r0, sl, lsl #1 + ldrh r2, [r1, r0] + ldrh r1, [sp, #0x3a] + mov r0, r7, lsl #4 + strh r2, [sp, #0x40] + str r1, [sp] + str r6, [sp, #4] + add r2, r0, sb, lsl #2 + str r5, [sp, #8] + add r0, sp, #0x40 + str r0, [sp, #0xc] + ldr r0, [r4] + ldrh r1, [sp, #0x34] + ldr r0, [r0, r2] + ldrh r2, [sp, #0x36] + ldrh r3, [sp, #0x38] + bl MOD13_0223A4F0 + ldrh r0, [sp, #0x34] + add r8, r8, #1 + cmp r8, #0xc + add r0, r0, #0x12 + add sl, sl, #1 + strh r0, [sp, #0x34] + blt _022214B8 + cmp r7, #0 + bne _02221540 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x30] + bl MOD13_02239B74 + ldr r1, [r4] + add r1, r1, sb, lsl #2 + str r0, [r1, #0x104] +_02221540: + ldr r0, [sp, #0x18] + add sb, sb, #1 + add r0, r0, #0xc + str r0, [sp, #0x18] + cmp sb, #4 + blt _0222147C + add r7, r7, #1 + cmp r7, #3 + blt _02221470 + mov r0, #0 + mov r1, #0x40 + mov r2, #1 + bl MOD13_02239E0C + ldr r3, _022215F0 ; =0x0224303C + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x200 + str r0, [r4, #0x114] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0, #0x114] + bl MOD13_02239A1C + ldr r0, _022215F0 ; =0x0224303C + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x114] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02221608 ; =MOD13_02221118 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r3, _022215F0 ; =0x0224303C + mov r1, #0 + ldr r4, [r3] + mov r2, #0xc0 + str r0, [r4, #0x118] + ldr r0, [r3] + ldrb r0, [r0, #0x11d] + bl MOD13_022201DC + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022215EC: .word 0x0223ED2C +_022215F0: .word 0x0224303C +_022215F4: .word 0xC1FFFCFF +_022215F8: .word 0x0223ED20 +_022215FC: .word 0x0223ED18 +_02221600: .word 0x0223ED24 +_02221604: .word 0x0223FB88 +_02221608: .word MOD13_02221118 + + arm_func_start MOD13_0222160C +MOD13_0222160C: ; 0x0222160C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + mov r5, #0 + ldr r4, _022216CC ; =0x02243040 +_02221628: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x48] + bl MOD13_02239AE8 + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD13_0223A978 + add r5, r5, #1 + cmp r5, #4 + blt _02221628 + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_02221658: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x40] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #2 + blt _02221658 + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_0222167C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x38] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #2 + blt _0222167C + ldr r4, _022216CC ; =0x02243040 + mov r5, #0 +_022216A0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #0xa + blt _022216A0 + ldr r0, _022216CC ; =0x02243040 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022216CC: .word 0x02243040 + + arm_func_start MOD13_022216D0 +MOD13_022216D0: ; 0x022216D0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222173C ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _02221740 ; =0x01FF0000 + ldr r3, [r0, #0x10] + mov r0, #0 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _02221744 ; =MOD13_0222160C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222173C: .word 0x02243040 +_02221740: .word 0x01FF0000 +_02221744: .word MOD13_0222160C + + arm_func_start MOD13_02221748 +MOD13_02221748: ; 0x02221748 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022217B4 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022217B8 ; =0x01FF0000 + ldr r3, [r0, #0x1c] + mov r0, #1 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _022217BC ; =MOD13_022216D0 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022217B4: .word 0x02243040 +_022217B8: .word 0x01FF0000 +_022217BC: .word MOD13_022216D0 + + arm_func_start MOD13_022217C0 +MOD13_022217C0: ; 0x022217C0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222182C ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _02221830 ; =0x01FF0000 + ldr r3, [r0, #0x28] + mov r0, #2 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _02221834 ; =MOD13_02221748 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222182C: .word 0x02243040 +_02221830: .word 0x01FF0000 +_02221834: .word MOD13_02221748 + + arm_func_start MOD13_02221838 +MOD13_02221838: ; 0x02221838 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022218A4 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + ldr r1, _022218A8 ; =0x01FF0000 + ldr r3, [r0, #0x34] + mov r0, #3 + ldr r2, [r3] + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r3] + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _022218AC ; =MOD13_022217C0 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022218A4: .word 0x02243040 +_022218A8: .word 0x01FF0000 +_022218AC: .word MOD13_022217C0 + + arm_func_start MOD13_022218B0 +MOD13_022218B0: ; 0x022218B0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02221924 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0x40] + bl MOD13_02239ADC + ldr r2, [r0] + ldr r1, _02221928 ; =0x01FF0000 + and r1, r2, r1 + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [r0] + mov r0, #4 + and r1, r1, #0xff + str r1, [sp, #4] + add r1, r1, #0xc + str r1, [sp, #4] + bl MOD13_02221B6C + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r1, _0222192C ; =MOD13_02221838 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221924: .word 0x02243040 +_02221928: .word 0x01FF0000 +_0222192C: .word MOD13_02221838 + + arm_func_start MOD13_02221930 +MOD13_02221930: ; 0x02221930 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022219FC ; =0x02243040 + ldr r2, _02221A00 ; =0x0223F0BC + ldr r3, [r1] + ldrsb ip, [r3, #0x63] + add r2, r2, ip, lsl #2 + ldrsb r2, [r0, r2] + strb r2, [r3, #0x63] + ldr r1, [r1] + ldrsb r2, [r1, #0x63] + cmp r2, #0xd + bne _0222197C + cmp r0, #1 + beq _02221974 + cmp r0, #3 + bne _0222197C +_02221974: + strb ip, [r1, #0x64] + b _022219E8 +_0222197C: + mvn r0, #0 + cmp r2, r0 + bne _022219B4 + ldrsb r0, [r1, #0x64] + cmp r0, #1 + beq _0222199C + cmp r0, #0xa + bne _022219A8 +_0222199C: + mov r0, #0xa + strb r0, [r1, #0x63] + b _022219E8 +_022219A8: + mov r0, #0xb + strb r0, [r1, #0x63] + b _022219E8 +_022219B4: + mvn r0, #1 + cmp r2, r0 + bne _022219E8 + ldrsb r0, [r1, #0x64] + cmp r0, #1 + beq _022219D4 + cmp r0, #0xa + bne _022219E0 +_022219D4: + mov r0, #1 + strb r0, [r1, #0x63] + b _022219E8 +_022219E0: + mov r0, #2 + strb r0, [r1, #0x63] +_022219E8: + bl MOD13_02221A04 + mov r0, #8 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022219FC: .word 0x02243040 +_02221A00: .word 0x0223F0BC + + arm_func_start MOD13_02221A04 +MOD13_02221A04: ; 0x02221A04 + stmdb sp!, {r4, lr} + ldr r0, _02221A84 ; =0x02243040 + ldr r1, [r0] + ldrsb r0, [r1, #0x63] + cmp r0, #0xb + movle r4, #0x44 + ldr r0, [r1, #0x58] + movgt r4, #0x45 + mov r1, #0 + bl MOD13_02239ADC + mov r2, r0 + mov r1, r4 + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _02221A84 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x58] + bl MOD13_02239814 + ldr r0, _02221A84 ; =0x02243040 + ldr r2, _02221A88 ; =0x0223F084 + ldr r0, [r0] + ldr r3, _02221A8C ; =0x0223F086 + ldrsb ip, [r0, #0x63] + ldr r0, [r0, #0x58] + mvn r1, #0 + mov ip, ip, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldmia sp!, {r4, pc} + .align 2, 0 +_02221A84: .word 0x02243040 +_02221A88: .word 0x0223F084 +_02221A8C: .word 0x0223F086 + + arm_func_start MOD13_02221A90 +MOD13_02221A90: ; 0x02221A90 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #0 + addlt sp, sp, #4 + ldmltia sp!, {pc} + cmp r0, #0xa + bge _02221AE8 + ldr r2, _02221B60 ; =0x02243040 + ldr r3, _02221B64 ; =0x0223EFE8 + ldr r2, [r2] + add sp, sp, #4 + add r0, r2, r0, lsl #2 + ldr ip, [r0, #0x10] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r2, [ip, #4] + ldrb r0, [r3, r1] + bic r1, r2, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02221AE8: + sub r3, r0, #0xa + cmp r3, #2 + bge _02221B30 + ldr r0, _02221B60 ; =0x02243040 + ldr r2, _02221B64 ; =0x0223EFE8 + ldr r0, [r0] + add sp, sp, #4 + add r0, r0, r3, lsl #2 + ldr ip, [r0, #0x38] + ldr r0, [ip] + bic r0, r0, #0xc00 + str r0, [ip] + ldrh r3, [ip, #4] + ldrb r0, [r2, r1] + bic r1, r3, #0xf000 + orr r0, r1, r0, lsl #12 + strh r0, [ip, #4] + ldmia sp!, {pc} +_02221B30: + ldr r2, _02221B60 ; =0x02243040 + ldr r3, _02221B68 ; =0x0223EFDC + ldr r2, [r2] + sub r0, r0, #0xc + add r0, r2, r0, lsl #2 + ldrb r3, [r3, r1] + ldr r0, [r0, #0x40] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221B60: .word 0x02243040 +_02221B64: .word 0x0223EFE8 +_02221B68: .word 0x0223EFDC + + arm_func_start MOD13_02221B6C +MOD13_02221B6C: ; 0x02221B6C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r3, _02221DD8 ; =0x0223F00C + ldr sb, _02221DDC ; =0x0223F014 + ldrb r5, [r3, #3] + ldrb r8, [r3] + ldrb r7, [r3, #1] + strb r5, [sp, #0xb] + mov r5, r0 + mov r0, #3 + mul r0, r5, r0 + ldrb r6, [r3, #2] + ldrb ip, [r3, #4] + ldr r2, _02221DE0 ; =0x0223F004 + strb r8, [sp, #8] + strb r7, [sp, #9] + strb r6, [sp, #0xa] + strb ip, [sp, #0xc] + ldrb r4, [sb] + ldrb r3, [sb, #1] + ldrb fp, [sb, #2] + ldrb sl, [sb, #3] + ldrb sb, [sb, #4] + ldrb lr, [r2] + ldrb r8, [r2, #1] + ldrb r7, [r2, #2] + ldrb r6, [r2, #3] + ldrb r2, [r2, #4] + strb r4, [sp, #0xd] + add ip, sp, #8 + str r0, [sp, #4] + ldrb r0, [ip, r5] + strb r3, [sp, #0xe] + strb r2, [sp, #0x16] + mov r4, r1 + ldr r3, [sp, #4] + strb fp, [sp, #0xf] + strb sl, [sp, #0x10] + strb sb, [sp, #0x11] + strb lr, [sp, #0x12] + strb r8, [sp, #0x13] + strb r7, [sp, #0x14] + strb r6, [sp, #0x15] + cmp r0, #0 + mov r2, #0 + ble _02221C98 + and r1, r4, #0xff + add r0, ip, r5 + ldr r6, _02221DE4 ; =0x02243040 + ldr r7, _02221DE8 ; =0x0223F05C + ldr fp, _02221DEC ; =0xC1FFFCFF + ldr ip, _02221DF0 ; =0x000001FF + ldr lr, _02221DF4 ; =0xFE00FF00 +_02221C40: + ldr r8, [r6] + mov sb, r3, lsl #2 + add r8, r8, r3, lsl #2 + ldr r8, [r8, #0x10] + add r2, r2, #1 + ldr sl, [r8] + and sl, sl, fp + str sl, [r8] + ldrh r8, [r7, sb] + ldr sb, [r6] + add sb, sb, r3, lsl #2 + ldr sb, [sb, #0x10] + and r8, r8, ip + ldr sl, [sb] + add r3, r3, #1 + and sl, sl, lr + orr sl, sl, r1 + orr r8, sl, r8, lsl #16 + str r8, [sb] + ldrb r8, [r0] + cmp r2, r8 + blt _02221C40 +_02221C98: + cmp r5, #4 + bge _02221CD4 + ldr r0, _02221DE4 ; =0x02243040 + mov r2, #2 + ldr r3, [r0] + ldr r0, [sp, #4] + str r2, [sp] + ldr r1, _02221DE8 ; =0x0223F05C + mov r0, r0, lsl #2 + ldrh r1, [r1, r0] + add r2, r3, r5, lsl #2 + ldr r0, [r3, r5, lsl #2] + ldr r3, [r2, #0x48] + mov r2, r4 + bl MOD13_0223A440 +_02221CD4: + add r3, sp, #0xd + ldrb r1, [r3, r5] + mov r0, #0 + cmp r1, #0 + ble _02221D58 + and r2, r4, #0xff + add r1, r3, r5 + ldr r8, _02221DE4 ; =0x02243040 + ldr sb, _02221DF8 ; =0x0223F024 + ldr r3, _02221DEC ; =0xC1FFFCFF + ldr r6, _02221DF0 ; =0x000001FF + ldr r7, _02221DF4 ; =0xFE00FF00 +_02221D04: + ldr sl, [r8] + mov fp, r0, lsl #2 + add sl, sl, r0, lsl #2 + ldr sl, [sl, #0x38] + ldr ip, [sl] + and ip, ip, r3 + str ip, [sl] + ldr ip, [r8] + ldrh sl, [sb, fp] + add fp, ip, r0, lsl #2 + ldr fp, [fp, #0x38] + and sl, sl, r6 + ldr ip, [fp] + add r0, r0, #1 + and ip, ip, r7 + orr ip, ip, r2 + orr sl, ip, sl, lsl #16 + str sl, [fp] + ldrb sl, [r1] + cmp r0, sl + blt _02221D04 +_02221D58: + add r1, sp, #0x12 + ldrb r0, [r1, r5] + mov r8, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, r1, r5 + ldr sl, _02221DE4 ; =0x02243040 + ldr r5, _02221DFC ; =0x0223F02C + mov r6, r8 + mvn r7, #0 +_02221D84: + ldr r0, [sl] + mov r1, r7 + add r0, r0, r8, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r6 + mov r3, r6 + bl MOD13_02239A1C + ldr r0, [sl] + mov r1, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrh r2, [r5, r1] + ldr r0, [r0, #0x40] + mov r1, r7 + mov r3, r4 + bl MOD13_02239888 + ldrb r0, [sb] + add r8, r8, #1 + cmp r8, r0 + blt _02221D84 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02221DD8: .word 0x0223F00C +_02221DDC: .word 0x0223F014 +_02221DE0: .word 0x0223F004 +_02221DE4: .word 0x02243040 +_02221DE8: .word 0x0223F05C +_02221DEC: .word 0xC1FFFCFF +_02221DF0: .word 0x000001FF +_02221DF4: .word 0xFE00FF00 +_02221DF8: .word 0x0223F024 +_02221DFC: .word 0x0223F02C + + arm_func_start MOD13_02221E00 +MOD13_02221E00: ; 0x02221E00 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E20 + mov r0, #0 + bl MOD13_02221930 +_02221E20: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E38 + mov r0, #1 + bl MOD13_02221930 +_02221E38: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E50 + mov r0, #2 + bl MOD13_02221930 +_02221E50: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221E68 + mov r0, #3 + bl MOD13_02221930 +_02221E68: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02221F28 + ldr r0, _02221FB0 ; =0x02243040 + ldr r0, [r0] + ldrsb r2, [r0, #0x63] + cmp r2, #0xa + bge _02221EB8 + ldrb r1, [r0, #0x67] + cmp r1, #0 + ldrne r1, _02221FB4 ; =0x0223F034 + addne sp, sp, #4 + ldrneb r1, [r1, r2] + strneb r1, [r0, #0x60] + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} +_02221EB8: + sub r1, r2, #0xa + cmp r1, #2 + bge _02221F18 + cmp r1, #0 + bne _02221ED8 + ldrb r1, [r0, #0x66] + cmp r1, #0 + beq _02221EF0 +_02221ED8: + sub r1, r2, #0xa + cmp r1, #1 + bne _02221F00 + ldrb r1, [r0, #0x68] + cmp r1, #0 + bne _02221F00 +_02221EF0: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #4 + ldmia sp!, {pc} +_02221F00: + ldr r1, _02221FB8 ; =0x0223EFF0 + sub r2, r2, #0xa + ldrb r1, [r1, r2] + add sp, sp, #4 + strb r1, [r0, #0x60] + ldmia sp!, {pc} +_02221F18: + ldr r1, _02221FBC ; =0x0223EFEC + sub r2, r2, #0xc + ldrb r1, [r1, r2] + strb r1, [r0, #0x60] +_02221F28: + mov r0, #2 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02221F8C + ldr r0, _02221FB0 ; =0x02243040 + ldr r1, [r0] + ldrb r0, [r1, #0x66] + cmp r0, #0 + bne _02221F7C + ldrb r0, [r1, #0x69] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02221FB0 ; =0x02243040 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x69] + ldmia sp!, {pc} +_02221F7C: + mov r0, #0x10 + strb r0, [r1, #0x60] + add sp, sp, #4 + ldmia sp!, {pc} +_02221F8C: + mov r0, #2 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02221FB0 ; =0x02243040 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x69] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02221FB0: .word 0x02243040 +_02221FB4: .word 0x0223F034 +_02221FB8: .word 0x0223EFF0 +_02221FBC: .word 0x0223EFEC + + arm_func_start MOD13_02221FC0 +MOD13_02221FC0: ; 0x02221FC0 + stmdb sp!, {r4, lr} + ldr r1, _02222008 ; =0x02243040 + mov r4, r0 + ldr r1, [r1] + ldrsb r1, [r1, #0x62] + cmp r4, r1 + ldmeqia sp!, {r4, pc} + mov r1, #1 + bl MOD13_02221A90 + ldr r0, _02222008 ; =0x02243040 + mov r1, #0 + ldr r0, [r0] + ldrsb r0, [r0, #0x62] + bl MOD13_02221A90 + ldr r0, _02222008 ; =0x02243040 + ldr r0, [r0] + strb r4, [r0, #0x62] + ldmia sp!, {r4, pc} + .align 2, 0 +_02222008: .word 0x02243040 + + arm_func_start MOD13_0222200C +MOD13_0222200C: ; 0x0222200C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _022221DC ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _022221BC + ldr r6, _022221E0 ; =0x0223F05C + mov r7, #0 + ldr r5, _022221E4 ; =0x0223EFF4 + add r4, sp, #0 +_02222034: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _02222074 + ldr r0, _022221E8 ; =0x02243040 + ldr r0, [r0] + ldrsb r0, [r0, #0x61] + cmp r0, r7 + bne _022221BC + mov r0, r7 + bl MOD13_02221FC0 + b _022221C4 +_02222074: + add r7, r7, #1 + cmp r7, #0xa + add r6, r6, #4 + blt _02222034 + ldr r7, _022221EC ; =0x0223F024 + mov r6, #0 + ldr r5, _022221F0 ; =0x0223EFFC + add r4, sp, #0 +_02222094: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _0222214C + ldr r1, _022221E8 ; =0x02243040 + add r0, r6, #0xa + ldr r1, [r1] + ldrsb r1, [r1, #0x61] + cmp r1, r0 + bne _022221BC + bl MOD13_02221FC0 + cmp r6, #0 + bne _022221C4 + ldr r0, _022221E8 ; =0x02243040 + ldr r2, [r0] + ldrb r1, [r2, #0x65] + add r1, r1, #1 + strb r1, [r2, #0x65] + ldr r2, [r0] + ldrb r1, [r2, #0x65] + cmp r1, #0x28 + addlo sp, sp, #0xc + ldmloia sp!, {r4, r5, r6, r7, pc} + ldrb r1, [r2, #0x66] + cmp r1, #0 + bne _0222212C + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022221E8 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_0222212C: + mov r1, #0x10 + strb r1, [r2, #0x60] + ldr r1, [r0] + add sp, sp, #0xc + ldrb r0, [r1, #0x65] + sub r0, r0, #7 + strb r0, [r1, #0x65] + ldmia sp!, {r4, r5, r6, r7, pc} +_0222214C: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02222094 + ldr r7, _022221F4 ; =0x0223F02C + mov r6, #0 + ldr r5, _022221F8 ; =0x0223F000 + add r4, sp, #0 +_0222216C: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + beq _022221AC + ldr r1, _022221E8 ; =0x02243040 + add r0, r6, #0xc + ldr r1, [r1] + ldrsb r1, [r1, #0x61] + cmp r1, r0 + bne _022221BC + bl MOD13_02221FC0 + b _022221C4 +_022221AC: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _0222216C +_022221BC: + mvn r0, #0 + bl MOD13_02221FC0 +_022221C4: + ldr r0, _022221E8 ; =0x02243040 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x65] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022221DC: .word 0x0223F75C +_022221E0: .word 0x0223F05C +_022221E4: .word 0x0223EFF4 +_022221E8: .word 0x02243040 +_022221EC: .word 0x0223F024 +_022221F0: .word 0x0223EFFC +_022221F4: .word 0x0223F02C +_022221F8: .word 0x0223F000 + + arm_func_start MOD13_022221FC +MOD13_022221FC: ; 0x022221FC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r1, _022223A0 ; =0x02243040 + ldr r0, _022223A4 ; =0x0223F75C + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x60] + bl MOD13_0223B1DC + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r7, _022223A8 ; =0x0223F05C + mov r4, #0 + ldr r6, _022223AC ; =0x0223EFF4 + add r5, sp, #0 +_02222238: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02222290 + ldr r0, _022223A0 ; =0x02243040 + ldr r2, [r0] + ldrsb r1, [r2, #0x61] + cmp r1, r4 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223B0 ; =0x0223F034 + ldrb r1, [r1, r4] + strb r1, [r2, #0x60] + ldr r0, [r0] + strb r4, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02222290: + add r4, r4, #1 + cmp r4, #0xa + add r7, r7, #4 + blt _02222238 + ldr r7, _022223B4 ; =0x0223F024 + mov r4, #0 + ldr r6, _022223B8 ; =0x0223EFFC + add r5, sp, #0 +_022222B0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _0222230C + ldr r0, _022223A0 ; =0x02243040 + add r2, r4, #0xa + ldr r3, [r0] + ldrsb r1, [r3, #0x61] + cmp r1, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223BC ; =0x0223EFF0 + ldrb r1, [r1, r4] + strb r1, [r3, #0x60] + ldr r0, [r0] + strb r2, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0222230C: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _022222B0 + ldr r7, _022223C0 ; =0x0223F02C + mov r4, #0 + ldr r6, _022223C4 ; =0x0223F000 + add r5, sp, #0 +_0222232C: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02222388 + ldr r0, _022223A0 ; =0x02243040 + add r2, r4, #0xc + ldr r3, [r0] + ldrsb r1, [r3, #0x61] + cmp r1, r2 + addne sp, sp, #0xc + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r1, _022223C8 ; =0x0223EFEC + ldrb r1, [r1, r4] + strb r1, [r3, #0x60] + ldr r0, [r0] + strb r2, [r0, #0x63] + bl MOD13_02221A04 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_02222388: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _0222232C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022223A0: .word 0x02243040 +_022223A4: .word 0x0223F75C +_022223A8: .word 0x0223F05C +_022223AC: .word 0x0223EFF4 +_022223B0: .word 0x0223F034 +_022223B4: .word 0x0223F024 +_022223B8: .word 0x0223EFFC +_022223BC: .word 0x0223EFF0 +_022223C0: .word 0x0223F02C +_022223C4: .word 0x0223F000 +_022223C8: .word 0x0223EFEC + + arm_func_start MOD13_022223CC +MOD13_022223CC: ; 0x022223CC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r0, _02222588 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0222258C ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + ldr r7, _02222590 ; =0x0223F05C + strb r1, [r0, #0x61] + mov r4, #0 + ldr r6, _02222594 ; =0x0223EFF4 + add r5, sp, #0 +_02222408: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222468 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x67] + cmp r0, #0 + bne _0222244C + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_0222244C: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add sp, sp, #0xc + ldr r0, [r0] + strb r4, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222468: + add r4, r4, #1 + cmp r4, #0xa + add r7, r7, #4 + blt _02222408 + ldr r7, _02222598 ; =0x0223F024 + mov r4, #0 + ldr r6, _0222259C ; =0x0223EFFC + add r5, sp, #0 +_02222488: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl MOD13_0223AB74 + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222510 + cmp r4, #0 + bne _022224C4 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x66] + cmp r0, #0 + beq _022224E0 +_022224C4: + cmp r4, #1 + bne _022224F0 + ldr r0, _0222258C ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x68] + cmp r0, #0 + bne _022224F0 +_022224E0: + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} +_022224F0: + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add r1, r4, #0xa + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222510: + add r4, r4, #1 + cmp r4, #2 + add r7, r7, #4 + blt _02222488 + ldr r7, _022225A0 ; =0x0223F02C + mov r6, #0 + ldr r5, _022225A4 ; =0x0223F000 + add r4, sp, #0 +_02222530: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl MOD13_0223AB74 + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02222570 + mov r0, #0 + bl MOD13_0223424C + ldr r0, _0222258C ; =0x02243040 + add r1, r6, #0xc + ldr r0, [r0] + add sp, sp, #0xc + strb r1, [r0, #0x61] + ldmia sp!, {r4, r5, r6, r7, pc} +_02222570: + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #4 + blt _02222530 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02222588: .word 0x0223F75C +_0222258C: .word 0x02243040 +_02222590: .word 0x0223F05C +_02222594: .word 0x0223EFF4 +_02222598: .word 0x0223F024 +_0222259C: .word 0x0223EFFC +_022225A0: .word 0x0223F02C +_022225A4: .word 0x0223F000 + + arm_func_start MOD13_022225A8 +MOD13_022225A8: ; 0x022225A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022223CC + bl MOD13_022221FC + bl MOD13_0222200C + bl MOD13_02221E00 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222640 ; =0x02243040 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x40] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, _02222644 ; =0x0223F02C + ldr r1, [sp, #4] + ldrh r0, [r0, #2] + sub r1, r1, #0xc + str r1, [sp, #4] + cmp r1, r0 + ble _0222261C + mov r0, #4 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222261C: + mov r1, r0 + mov r0, #4 + bl MOD13_02221B6C + bl MOD13_02221A04 + ldr r1, _02222648 ; =MOD13_022225A8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222640: .word 0x02243040 +_02222644: .word 0x0223F02C +_02222648: .word MOD13_022225A8 + + arm_func_start MOD13_0222264C +MOD13_0222264C: ; 0x0222264C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022226D8 ; =0x02243040 + ldr r2, _022226DC ; =0x0223F05C + ldr r3, [r1] + ldr r1, _022226E0 ; =0x01FF0000 + ldr ip, [r3, #0x34] + ldrh r2, [r2, #0x26] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _022226AC + mov r0, #3 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022226AC: + mov r1, r2 + mov r0, #3 + bl MOD13_02221B6C + mov r0, #4 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _022226E4 ; =0x022225C8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022226D8: .word 0x02243040 +_022226DC: .word 0x0223F05C +_022226E0: .word 0x01FF0000 +_022226E4: .word 0x022225C8 + + arm_func_start MOD13_022226E8 +MOD13_022226E8: ; 0x022226E8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222774 ; =0x02243040 + ldr r2, _02222778 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _0222277C ; =0x01FF0000 + ldr ip, [r3, #0x28] + ldrh r2, [r2, #0x1a] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _02222748 + mov r0, #2 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02222748: + mov r1, r2 + mov r0, #2 + bl MOD13_02221B6C + mov r0, #3 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _02222780 ; =MOD13_0222264C + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222774: .word 0x02243040 +_02222778: .word 0x0223F05C +_0222277C: .word 0x01FF0000 +_02222780: .word MOD13_0222264C + + arm_func_start MOD13_02222784 +MOD13_02222784: ; 0x02222784 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02222810 ; =0x02243040 + ldr r2, _02222814 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _02222818 ; =0x01FF0000 + ldr ip, [r3, #0x1c] + ldrh r2, [r2, #0xe] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _022227E4 + mov r0, #1 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022227E4: + mov r1, r2 + mov r0, #1 + bl MOD13_02221B6C + mov r0, #2 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _0222281C ; =MOD13_022226E8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222810: .word 0x02243040 +_02222814: .word 0x0223F05C +_02222818: .word 0x01FF0000 +_0222281C: .word MOD13_022226E8 + + arm_func_start MOD13_02222820 +MOD13_02222820: ; 0x02222820 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022228AC ; =0x02243040 + ldr r2, _022228B0 ; =0x0223F05C + ldr r3, [r1] + ldr r1, _022228B4 ; =0x01FF0000 + ldr ip, [r3, #0x10] + ldrh r2, [r2, #2] + ldr r3, [ip] + mov r4, r0 + and r0, r3, r1 + mov r0, r0, lsr #0x10 + str r0, [sp] + ldr r0, [ip] + and r0, r0, #0xff + sub r1, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #4] + cmp r1, r2 + ble _02222880 + mov r0, #0 + bl MOD13_02221B6C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02222880: + mov r1, r2 + mov r0, #0 + bl MOD13_02221B6C + mov r0, #1 + mov r1, #0xc0 + bl MOD13_02221B6C + ldr r1, _022228B8 ; =MOD13_02222784 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022228AC: .word 0x02243040 +_022228B0: .word 0x0223F05C +_022228B4: .word 0x01FF0000 +_022228B8: .word MOD13_02222784 + + arm_func_start MOD13_022228BC +MOD13_022228BC: ; 0x022228BC + ldr r0, _022228D4 ; =0x02243040 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_022228D4: .word 0x02243040 + + arm_func_start MOD13_022228D8 +MOD13_022228D8: ; 0x022228D8 + ldr r1, _022228E8 ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x68] + bx lr + .align 2, 0 +_022228E8: .word 0x02243040 + + arm_func_start MOD13_022228EC +MOD13_022228EC: ; 0x022228EC + ldr r1, _022228FC ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x67] + bx lr + .align 2, 0 +_022228FC: .word 0x02243040 + + arm_func_start MOD13_02222900 +MOD13_02222900: ; 0x02222900 + ldr r1, _02222910 ; =0x02243040 + ldr r1, [r1] + strb r0, [r1, #0x66] + bx lr + .align 2, 0 +_02222910: .word 0x02243040 + + arm_func_start MOD13_02222914 +MOD13_02222914: ; 0x02222914 + ldr r0, _02222924 ; =0x02243040 + ldr r0, [r0] + ldrb r0, [r0, #0x60] + bx lr + .align 2, 0 +_02222924: .word 0x02243040 + + arm_func_start MOD13_02222928 +MOD13_02222928: ; 0x02222928 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222295C ; =0x02243040 + ldr r0, [r0] + ldr r0, [r0, #0x58] + bl MOD13_02239AE8 + ldr r0, _0222295C ; =0x02243040 + ldr r1, _02222960 ; =MOD13_022218B0 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222295C: .word 0x02243040 +_02222960: .word MOD13_022218B0 + + arm_func_start MOD13_02222964 +MOD13_02222964: ; 0x02222964 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3c + ldr r1, _02222CCC ; =0x0223F01C + ldr r0, _02222CD0 ; =0x0223EFF4 + ldrh r2, [r1, #4] + ldrh r4, [r1, #6] + ldrh r6, [r1] + ldrh r5, [r1, #2] + ldrh r3, [r0] + strh r2, [sp, #0x30] + ldrh r2, [r0, #2] + strh r4, [sp, #0x32] + mov r0, #0x6c + mov r1, #4 + strh r6, [sp, #0x2c] + strh r5, [sp, #0x2e] + strh r3, [sp, #0x30] + strh r2, [sp, #0x32] + bl MOD13_0223AFE0 + ldr r8, _02222CD4 ; =0x02243040 + mov r1, #0x1f + str r0, [r8] + strb r1, [r0, #0x60] + ldr r0, [r8] + mov r6, #0 + strb r6, [r0, #0x63] + ldr r0, [r8] + mov r1, #1 + strb r1, [r0, #0x66] + ldr r0, [r8] + strb r1, [r0, #0x67] + ldr r0, [r8] + strb r1, [r0, #0x68] + mov r5, r6 + mov r4, #0x36 + ldr r7, _02222CD8 ; =0xC1FFFCFF +_022229F4: + mov r0, r5 + mov r1, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r1, r1, r6, lsl #2 + str r0, [r1, #0x10] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x10] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r6, lsl #2 + ldr r1, [r0, #0x10] + add r6, r6, #1 + ldrh r0, [r1, #4] + cmp r6, #0xa + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _022229F4 + ldr r6, _02222CDC ; =0x0223EFE0 + mov r5, #0 + ldr r8, _02222CD4 ; =0x02243040 + mov r4, r5 + ldr r7, _02222CD8 ; =0xC1FFFCFF +_02222A64: + ldrb r1, [r6] + mov r0, r4 + bl MOD13_02239E54 + ldr r1, [r8] + add r6, r6, #1 + add r1, r1, r5, lsl #2 + str r0, [r1, #0x38] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x38] + ldr r0, [r1] + and r0, r0, r7 + orr r0, r0, #0x200 + str r0, [r1] + ldr r0, [r8] + add r0, r0, r5, lsl #2 + ldr r1, [r0, #0x38] + add r5, r5, #1 + ldrh r0, [r1, #4] + cmp r5, #2 + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + blt _02222A64 + ldr sl, _02222CE0 ; =0x0223EFE4 + mov sb, #0 + ldr r4, _02222CD4 ; =0x02243040 + mov fp, sb + str sb, [sp, #0x1c] + mov r8, #1 + mvn r7, #0 + mov r6, #0x200 + mov r5, #3 +_02222AE8: + ldrb r1, [sl] + mov r0, fp + mov r2, r8 + bl MOD13_02239E0C + ldr r2, [r4] + ldr r3, [sp, #0x1c] + add r2, r2, sb, lsl #2 + str r0, [r2, #0x40] + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r6 + bl MOD13_02239A1C + ldr r0, [r4] + mov r1, r7 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x40] + mov r2, r5 + bl MOD13_02239814 + add sb, sb, #1 + add sl, sl, #1 + cmp sb, #2 + blt _02222AE8 + ldr r1, _02222CE4 ; =0x0223EFF8 + mov r8, #0 + ldrh r0, [r1, #2] + ldr r7, _02222CE8 ; =0x0223F040 + ldr r4, _02222CD4 ; =0x02243040 + str r0, [sp, #0x14] + ldrh r0, [r1] + str r8, [sp, #0x10] + strh r8, [sp, #0x3a] + str r0, [sp, #0x18] + add fp, sp, #0x38 + str r8, [sp, #0x28] + str r8, [sp, #0x20] + str r8, [sp, #0x24] + mov r6, #2 + mov r5, #0x480 +_02222B88: + add r0, sp, #0x34 + str r0, [sp] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x14] + mov r1, r0 + str r1, [sp, #4] + ldr r1, [sp, #0x18] + mov r3, r0 + bl MOD13_0223A9A4 + ldr r1, [r4] + ldr sl, [sp, #0x10] + str r0, [r1, r8, lsl #2] + ldr r0, [sp, #0x24] + strh r0, [sp, #0x2c] + mov sb, r0 +_02222BC4: + mov r0, sl, lsl #1 + ldrh r1, [r7, r0] + ldrh r0, [sp, #0x32] + strh r1, [sp, #0x38] + str r0, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + str fp, [sp, #0xc] + ldr r0, [r4] + ldrh r1, [sp, #0x2c] + ldr r0, [r0, r8, lsl #2] + ldrh r2, [sp, #0x2e] + ldrh r3, [sp, #0x30] + bl MOD13_0223A4F0 + add sb, sb, #1 + cmp sb, #3 + add sl, sl, #1 + ldrh r0, [sp, #0x2c] + add r0, r0, #0x20 + strh r0, [sp, #0x2c] + blt _02222BC4 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x34] + mov r2, r0 + bl MOD13_02239B74 + ldr r1, [sp, #0x10] + ldr r2, [r4] + add r1, r1, #3 + str r1, [sp, #0x10] + add r1, r2, r8, lsl #2 + add r8, r8, #1 + str r0, [r1, #0x48] + cmp r8, #4 + blt _02222B88 + mov r0, #0 + mov r1, #0x44 + mov r2, #1 + bl MOD13_02239E0C + ldr r3, _02222CD4 ; =0x02243040 + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x200 + str r0, [r4, #0x58] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0, #0x58] + bl MOD13_02239A1C + ldr r0, _02222CD4 ; =0x02243040 + mvn r1, #0 + ldr r0, [r0] + mov r2, #2 + ldr r0, [r0, #0x58] + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02222CEC ; =MOD13_02222820 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r2, _02222CD4 ; =0x02243040 + mov r1, #0xc0 + ldr r2, [r2] + str r0, [r2, #0x5c] + mov r0, #0 + bl MOD13_02221B6C + add sp, sp, #0x3c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02222CCC: .word 0x0223F01C +_02222CD0: .word 0x0223EFF4 +_02222CD4: .word 0x02243040 +_02222CD8: .word 0xC1FFFCFF +_02222CDC: .word 0x0223EFE0 +_02222CE0: .word 0x0223EFE4 +_02222CE4: .word 0x0223EFF8 +_02222CE8: .word 0x0223F040 +_02222CEC: .word MOD13_02222820 + + arm_func_start MOD13_02222CF0 +MOD13_02222CF0: ; 0x02222CF0 + ldr ip, _02222CF8 ; =MOD13_0223AF48 + bx ip + .align 2, 0 +_02222CF8: .word MOD13_0223AF48 + + arm_func_start MOD13_02222CFC +MOD13_02222CFC: ; 0x02222CFC + ldr ip, _02222D08 ; =MOD13_0223B004 + mov r1, #0x20 + bx ip + .align 2, 0 +_02222D08: .word MOD13_0223B004 + + arm_func_start MOD13_02222D0C +MOD13_02222D0C: ; 0x02222D0C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02222D74 ; =0x02243048 + ldr r0, [r0] + blx MOD13_02219798 + cmp r0, #0 + ldreq r1, _02222D78 ; =0x02243044 + moveq r0, #1 + streqb r0, [r1] + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02222D74 ; =0x02243048 + ldr r0, [r0] + ldrb r0, [r0, #0x116] + cmp r0, #1 + beq _02222D5C + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #2 + bhi _02222D68 +_02222D5C: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02222D68: + mov r0, #2 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02222D74: .word 0x02243048 +_02222D78: .word 0x02243044 + + arm_func_start MOD13_02222D7C +MOD13_02222D7C: ; 0x02222D7C + stmdb sp!, {r4, lr} + mov r4, r0 + blx MOD13_02219C9C + cmp r4, #0 + beq _02222DC0 + ldr r0, _02222DCC ; =0x02243048 + ldr r1, [r0] + ldrb r0, [r1, #0x116] + cmp r0, #0 + bne _02222DC0 + ldr r0, _02222DD0 ; =0x02243044 + ldrb r0, [r0] + cmp r0, #1 + bne _02222DC0 + ldr r0, _02222DD4 ; =0x00000117 + add r0, r1, r0 + bl MOD13_0223390C +_02222DC0: + ldr r0, _02222DCC ; =0x02243048 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_02222DCC: .word 0x02243048 +_02222DD0: .word 0x02243044 +_02222DD4: .word 0x00000117 + + arm_func_start MOD13_02222DD8 +MOD13_02222DD8: ; 0x02222DD8 + stmdb sp!, {lr} + sub sp, sp, #0x104 + mov r0, #0x26c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _02222ED4 ; =0x02243048 + ldr r3, _02222ED8 ; =0x02243044 + str r0, [r1] + mov r0, #0 + add r1, sp, #0 + mov r2, #0x104 + strb r0, [r3] + bl MIi_CpuClear16 + mov r3, #0x50 + mov r2, #0xc + ldr r0, _02222EDC ; =0x0223F0F4 + add r1, sp, #4 + strb r3, [sp] + strh r2, [sp, #2] + bl MI_CpuCopy8 + ldr r0, _02222ED4 ; =0x02243048 + mov r2, #3 + ldr r1, [r0] + add ip, sp, #0 + strh r2, [r1] + ldr lr, [r0] + mov r2, #0x41 + add r3, lr, #2 +_02222E48: + ldrh r1, [ip], #2 + ldrh r0, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + strh r0, [r3], #2 + bne _02222E48 + ldr r1, _02222ED4 ; =0x02243048 + add r0, lr, #0x100 + mov r3, #1 + strh r3, [r0, #6] + ldr r0, [r1] + mvn r2, #0 + add r0, r0, #0x100 + strh r2, [r0, #8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r3, [r0, #0xa] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xc] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xe] + ldr r0, [r1] + add r0, r0, #0x110 + bl OS_GetMacAddress + ldr r0, _02222EE0 ; =MOD13_02222CFC + ldr r1, _02222EE4 ; =MOD13_02222CF0 + blx MOD13_02219D58 + cmp r0, #0 + addeq sp, sp, #0x104 + ldmeqia sp!, {pc} + bl OS_Terminate + add sp, sp, #0x104 + ldmia sp!, {pc} + .align 2, 0 +_02222ED4: .word 0x02243048 +_02222ED8: .word 0x02243044 +_02222EDC: .word 0x0223F0F4 +_02222EE0: .word MOD13_02222CFC +_02222EE4: .word MOD13_02222CF0 + + arm_func_start MOD13_02222EE8 +MOD13_02222EE8: ; 0x02222EE8 + ldr r0, _02222EF8 ; =0x02243050 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02222EF8: .word 0x02243050 + + arm_func_start MOD13_02222EFC +MOD13_02222EFC: ; 0x02222EFC + ldr r1, _02222F18 ; =0x02243058 + ldr r1, [r1] + mov r1, r1, lsr #4 + ands r0, r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02222F18: .word 0x02243058 + + arm_func_start MOD13_02222F1C +MOD13_02222F1C: ; 0x02222F1C + ldr r0, _02222F30 ; =0x02243058 + ldr r0, [r0] + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1c + bx lr + .align 2, 0 +_02222F30: .word 0x02243058 + + arm_func_start MOD13_02222F34 +MOD13_02222F34: ; 0x02222F34 + ldr r0, _02222F40 ; =0x0224304C + ldrb r0, [r0] + bx lr + .align 2, 0 +_02222F40: .word 0x0224304C + + arm_func_start MOD13_02222F44 +MOD13_02222F44: ; 0x02222F44 + cmp r0, #0 + ldrne r2, _02222F68 ; =0x02243060 + ldrne r2, [r2, #8] + strne r2, [r0] + cmp r1, #0 + ldrne r0, _02222F68 ; =0x02243060 + ldrne r0, [r0, #0xc] + strne r0, [r1] + bx lr + .align 2, 0 +_02222F68: .word 0x02243060 + + arm_func_start MOD13_02222F6C +MOD13_02222F6C: ; 0x02222F6C + ldr r2, _02222F7C ; =0x02243060 + str r0, [r2, #8] + str r1, [r2, #0xc] + bx lr + .align 2, 0 +_02222F7C: .word 0x02243060 + + arm_func_start MOD13_02222F80 +MOD13_02222F80: ; 0x02222F80 + cmp r0, #0 + ldrne r2, _02222FA4 ; =0x02243060 + ldrne r2, [r2] + strne r2, [r0] + cmp r1, #0 + ldrne r0, _02222FA4 ; =0x02243060 + ldrne r0, [r0, #4] + strne r0, [r1] + bx lr + .align 2, 0 +_02222FA4: .word 0x02243060 + + arm_func_start MOD13_02222FA8 +MOD13_02222FA8: ; 0x02222FA8 + ldr r2, _02222FB8 ; =0x02243060 + str r0, [r2] + str r1, [r2, #4] + bx lr + .align 2, 0 +_02222FB8: .word 0x02243060 + + arm_func_start MOD13_02222FBC +MOD13_02222FBC: ; 0x02222FBC + ldr r1, _02222FC8 ; =0x0224305C + str r0, [r1] + bx lr + .align 2, 0 +_02222FC8: .word 0x0224305C + + arm_func_start MOD13_02222FCC +MOD13_02222FCC: ; 0x02222FCC + stmdb sp!, {lr} + sub sp, sp, #4 + bl GX_DispOff + ldr r1, _02223020 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl MOD13_0223BDD0 + bl MOD13_0223B6C0 + bl MOD13_0223B7A0 + bl MOD13_02234270 + bl MOD13_02239CE8 + bl MOD13_0223BA04 + bl MOD13_0223AA80 + bl MOD13_0223A3AC + bl MOD13_022395A0 + bl MOD13_0223C2A8 + bl MOD13_0223B050 + bl MOD13_0223BEA8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223020: .word 0x04001000 + + arm_func_start MOD13_02223024 +MOD13_02223024: ; 0x02223024 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #0 + bl GX_VBlankIntr + mov r0, #1 + bl GX_SetBankForBG + mov r0, #2 + bl GX_SetBankForOBJ + mov r1, #0 + mov r2, r1 + mov r0, #1 + bl GX_SetGraphicsMode + mov r3, #0x4000000 + ldr r1, [r3] + ldr r0, _022232DC ; =0x0400006C + bic r1, r1, #0x1f00 + str r1, [r3] + ldr r2, [r3] + mov r1, #0 + bic r2, r2, #0xe000 + str r2, [r3] + bl GXx_SetMasterBrightness_ + mov r3, #0x4000000 + ldr r2, [r3] + ldr r0, _022232E0 ; =0xFFCFFFEF + ldr r1, _022232E4 ; =0x00200010 + and r0, r2, r0 + orr r0, r0, r1 + str r0, [r3] + ldr r3, _022232E8 ; =0x04000008 + ldr r2, _022232EC ; =0x0400000A + ldrh r0, [r3] + ldr r1, _022232F0 ; =0x0400000C + ldr r5, _022232F4 ; =0x0400000E + bic r0, r0, #0x40 + strh r0, [r3] + ldrh r0, [r2] + mov ip, #0 + ldr r4, _022232F8 ; =0x04000010 + bic r0, r0, #0x40 + strh r0, [r2] + ldrh r0, [r1] + ldr r3, _022232FC ; =0x04000014 + ldr r2, _02223300 ; =0x04000018 + bic r0, r0, #0x40 + strh r0, [r1] + ldrh lr, [r5] + ldr r1, _02223304 ; =0x0400001C + ldr r0, _02223308 ; =0x04000050 + bic lr, lr, #0x40 + strh lr, [r5] + str ip, [r4] + str ip, [r3] + str ip, [r2] + str ip, [r1] + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + mov r0, #0x80 + bl GX_SetBankForSubBG + mov r0, #0x100 + bl GX_SetBankForSubOBJ + mov r0, #0 + bl GXS_SetGraphicsMode + ldr r1, _0222330C ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x1f00 + str r0, [r1] + ldr r0, [r1] + bic r0, r0, #0xe000 + str r0, [r1] + ldr r0, _02223310 ; =0x0400106C + mov r1, #0 + bl GXx_SetMasterBrightness_ + ldr r3, _0222330C ; =0x04001000 + ldr r0, _022232E0 ; =0xFFCFFFEF + ldr r1, [r3] + ldr r2, _02223314 ; =0x04001008 + and r0, r1, r0 + orr r0, r0, #0x10 + str r0, [r3] + ldrh r0, [r2] + ldr r1, _02223318 ; =0x0400100A + ldr r3, _0222331C ; =0x0400100C + bic r0, r0, #0x40 + strh r0, [r2] + ldrh r0, [r1] + ldr r4, _02223320 ; =0x0400100E + ldr r2, _02223324 ; =0x04001010 + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r3] + mov ip, #0 + ldr r1, _02223328 ; =0x04001014 + bic r0, r0, #0x40 + strh r0, [r3] + ldrh lr, [r4] + ldr r0, _0222332C ; =0x04001018 + ldr r3, _02223330 ; =0x0400101C + bic lr, lr, #0x40 + strh lr, [r4] + str ip, [r2] + str ip, [r1] + str ip, [r0] + ldr r0, _02223334 ; =0x04001050 + mov r1, #0x3f + mov r2, #0x10 + str ip, [r3] + bl G2x_SetBlendBrightness_ + ldr r3, _022232E8 ; =0x04000008 + ldr r2, _022232EC ; =0x0400000A + ldrh r1, [r3] + ldr r0, _02223338 ; =0x00000D08 + ldr lr, _022232F0 ; =0x0400000C + and r1, r1, #0x43 + orr r1, r1, #0xc00 + strh r1, [r3] + ldrh r1, [r2] + mov ip, r5 + ldr r3, _02223314 ; =0x04001008 + and r1, r1, #0x43 + orr r0, r1, r0 + strh r0, [r2] + ldrh r0, [lr] + ldr r2, _02223318 ; =0x0400100A + ldr r1, _0222331C ; =0x0400100C + and r0, r0, #0x43 + orr r0, r0, #0xe10 + strh r0, [lr] + ldrh r0, [ip] + and r0, r0, #0x43 + orr r0, r0, #0xf10 + strh r0, [ip] + ldrh r0, [r3] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r3] + ldrh r0, [r2] + and r0, r0, #0x43 + orr r0, r0, #0xd00 + strh r0, [r2] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xe00 + strh r0, [r1] + mov r3, r4 + ldrh r0, [r3] + mov r2, #0x4000000 + ldr r1, _0222333C ; =0x04000304 + and r0, r0, #0x43 + orr r0, r0, #0xf00 + strh r0, [r3] + ldr r0, [r2] + bic r0, r0, #0x38000000 + str r0, [r2] + ldr r0, [r2] + bic r0, r0, #0x7000000 + str r0, [r2] + ldrh r0, [r1] + bic r0, r0, #0x8000 + strh r0, [r1] + bl MOD13_0223AAD0 + bl MOD13_0223BA84 + bl MOD13_0223BCE4 + bl MOD13_02239D38 + bl GX_DispOn + ldr r2, _0222330C ; =0x04001000 + mov r0, #1 + ldr r1, [r2] + orr r1, r1, #0x10000 + str r1, [r2] + bl GX_VBlankIntr + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022232DC: .word 0x0400006C +_022232E0: .word 0xFFCFFFEF +_022232E4: .word 0x00200010 +_022232E8: .word 0x04000008 +_022232EC: .word 0x0400000A +_022232F0: .word 0x0400000C +_022232F4: .word 0x0400000E +_022232F8: .word 0x04000010 +_022232FC: .word 0x04000014 +_02223300: .word 0x04000018 +_02223304: .word 0x0400001C +_02223308: .word 0x04000050 +_0222330C: .word 0x04001000 +_02223310: .word 0x0400106C +_02223314: .word 0x04001008 +_02223318: .word 0x0400100A +_0222331C: .word 0x0400100C +_02223320: .word 0x0400100E +_02223324: .word 0x04001010 +_02223328: .word 0x04001014 +_0222332C: .word 0x04001018 +_02223330: .word 0x0400101C +_02223334: .word 0x04001050 +_02223338: .word 0x00000D08 +_0222333C: .word 0x04000304 + + arm_func_start MOD13_02223340 +MOD13_02223340: ; 0x02223340 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02223404 ; =0x04000208 + mov r0, #0 + ldrh r1, [r2] + strh r0, [r2] + bl GX_DispOff + ldr r1, _02223408 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl OS_IsTickAvailable + cmp r0, #0 + bne _0222337C + bl OS_Terminate +_0222337C: + bl OS_IsAlarmAvailable + cmp r0, #0 + bne _0222338C + bl OS_Terminate +_0222338C: + mov r0, #0 + bl GX_VBlankIntr + bl FX_Init + mvn r0, #0 + bl FS_Init + bl TP_Init + bl RTC_Init + bl GX_DispOff + ldr r1, _02223408 ; =0x04001000 + ldr r0, [r1] + bic r0, r0, #0x10000 + str r0, [r1] + bl MOD13_0223BFE4 + ldr r0, _0222340C ; =0x02243054 + ldr r0, [r0] + bl MOD13_0223B07C + bl MOD13_0223B7E8 + bl MOD13_0223C2F4 + bl MOD13_0223962C + bl MOD13_0223B6F4 + bl MOD13_0223A3C0 + mov r0, #0x700 + mov r1, #0x20 + bl MOD13_0223B004 + str r0, [sp] + bl FUN_02096190 + add r0, sp, #0 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223404: .word 0x04000208 +_02223408: .word 0x04001000 +_0222340C: .word 0x02243054 + + arm_func_start MOD13_02223410 +MOD13_02223410: ; 0x02223410 + ldr r3, _0222348C ; =0x0224304C + ldr r2, _02223490 ; =0x02243058 + strb r0, [r3] + str r1, [r2] + cmp r0, #0 + blt _02223430 + cmp r0, #5 + ble _02223438 +_02223430: + mov r0, #0 + bx lr +_02223438: + mov r2, r1, lsl #0x1c + mov r2, r2, lsr #0x1c + cmp r2, #1 + movhi r0, #0 + bxhi lr + cmp r0, #0 + beq _02223464 + mov r1, r1, lsr #4 + ands r1, r1, #1 + movne r0, #0 + bxne lr +_02223464: + cmp r0, #0 + bne _02223484 + ldr r0, _02223490 ; =0x02243058 + ldr r0, [r0] + mov r0, r0, lsr #4 + ands r0, r0, #1 + moveq r0, #0 + bxeq lr +_02223484: + mov r0, #1 + bx lr + .align 2, 0 +_0222348C: .word 0x0224304C +_02223490: .word 0x02243058 + + arm_func_start MOD13_02223494 +MOD13_02223494: ; 0x02223494 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _0222351C ; =0x02243054 + str r0, [r3] + mov r0, r1 + mov r1, r2 + bl MOD13_02223410 + cmp r0, #0 + mvneq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _02223520 ; =0x02243050 + mov r1, #0 + strb r1, [r0] + bl MOD13_02223340 + bl MOD13_02223024 + bl MOD13_022342A0 + ldr r0, _02223524 ; =MOD13_02223E10 + bl MOD13_02222FBC + ldr r5, _02223528 ; =0x0224305C + ldr r4, _02223520 ; =0x02243050 + mov r6, #0 +_022234E4: + bl MOD13_0223B6A8 + ldr r0, [r5] + blx r0 + mov r0, r6 + bl MOD13_0223C1E0 + bl MOD13_0223B0BC + bl MOD13_0223BDE0 + bl OS_WaitVBlankIntr + ldrb r0, [r4] + cmp r0, #0 + beq _022234E4 + bl MOD13_02222FCC + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222351C: .word 0x02243054 +_02223520: .word 0x02243050 +_02223524: .word MOD13_02223E10 +_02223528: .word 0x0224305C + + arm_func_start MOD13_0222352C +MOD13_0222352C: ; 0x0222352C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr ip, _02223564 ; =0x0000FFFF + ldr lr, [r0] + and r1, r1, ip + ldr ip, [r0, #4] + ldr r0, [lr, r1, lsl #2] + cmp r2, #0 + add r0, ip, r0 + addge r3, r3, #0x30 + movge r1, r2, lsl #1 + strgeh r3, [r0, r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223564: .word 0x0000FFFF + + arm_func_start MOD13_02223568 +MOD13_02223568: ; 0x02223568 + ldr r2, _02223584 ; =0x0000FFFF + ldr r3, [r0] + and r1, r1, r2 + ldr r2, [r0, #4] + ldr r0, [r3, r1, lsl #2] + add r0, r2, r0 + bx lr + .align 2, 0 +_02223584: .word 0x0000FFFF + + arm_func_start MOD13_02223588 +MOD13_02223588: ; 0x02223588 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #8] + bl MOD13_0223939C + ldr r0, _022235B0 ; =0x02243070 + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, #0x60] + bl MOD13_02239FD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022235B0: .word 0x02243070 + + arm_func_start MOD13_022235B4 +MOD13_022235B4: ; 0x022235B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02223614 ; =0x02243070 + mov r5, r0 + ldr r0, [r1] + ldr r0, [r0, #0x60] + bl MOD13_02239F78 + mov r4, r0 + add r1, sp, #0 + mov r0, r5 + mov r2, #4 + bl MOD13_022393D8 + str r0, [r4, #8] + ldr r1, [r4, #8] + mov r0, r4 + add r2, r1, #0x20 + add r1, r2, #0x10 + str r1, [r4] + ldr r1, [r2, #4] + add r1, r2, r1 + add r1, r1, #8 + str r1, [r4, #4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02223614: .word 0x02243070 + + arm_func_start MOD13_02223618 +MOD13_02223618: ; 0x02223618 + ldr ip, _02223624 ; =MOD13_0223AF90 + ldr r0, _02223628 ; =0x02243070 + bx ip + .align 2, 0 +_02223624: .word MOD13_0223AF90 +_02223628: .word 0x02243070 + + arm_func_start MOD13_0222362C +MOD13_0222362C: ; 0x0222362C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x64 + mov r1, #4 + bl MOD13_0223B004 + mov r1, r0 + ldr r3, _0222366C ; =0x02243070 + mov r0, #8 + mov r2, #0xc + str r1, [r3] + bl MOD13_0223A054 + ldr r1, _0222366C ; =0x02243070 + ldr r1, [r1] + str r0, [r1, #0x60] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222366C: .word 0x02243070 + + arm_func_start MOD13_02223670 +MOD13_02223670: ; 0x02223670 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl MOD13_02238BE0 + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldrb r1, [r0, #0x2a0] + cmp r1, #0 + beq _022236C4 + ldrb r1, [r0, #0x2a1] + cmp r1, #0 + bne _022236C4 + ldr r1, [r0, #0x298] + cmp r1, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #0 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022236C4: + add r0, sp, #0 + add r1, sp, #1 + bl MOD13_02238B98 + ldrb r0, [sp] + cmp r0, #0x1a + bgt _0222375C + cmp r0, #0x1a + bge _02223870 + cmp r0, #0x14 + bgt _0222374C + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0222390C +_022236F8: ; jump table + b _0222390C ; case 0 + b _0222390C ; case 1 + b _0222390C ; case 2 + b _0222390C ; case 3 + b _0222390C ; case 4 + b MOD13_02223784 ; case 5 + b _0222390C ; case 6 + b _0222390C ; case 7 + b _0222390C ; case 8 + b _0222390C ; case 9 + b _0222390C ; case 10 + b _0222390C ; case 11 + b MOD13_022238B4 ; case 12 + b MOD13_022237E8 ; case 13 + b _0222390C ; case 14 + b _0222390C ; case 15 + b _0222390C ; case 16 + b _0222390C ; case 17 + b _0222390C ; case 18 + b _0222390C ; case 19 + b _0222382C ; case 20 +_0222374C: + cmp r0, #0x17 + beq _0222382C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222375C: + cmp r0, #0x1d + bgt _02223774 + cmp r0, #0x1d + beq _02223870 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02223774: + cmp r0, #0x22 + beq _022238F8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_02223784 +MOD13_02223784: ; 0x02223784 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r1, _02223914 ; =0x02243074 + ldr r0, _02223918 ; =0x0001E280 + ldr r1, [r1] + add r4, r1, r0 + bl MOD13_02238B88 + mov r1, r4 + mov r2, #0x16 + bl MIi_CpuCopy16 + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #0 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022237E8 +MOD13_022237E8: ; 0x022237E8 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #1 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222382C: + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #3 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02223870: + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #4 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022238B4 +MOD13_022238B4: ; 0x022238B4 + ldrb r0, [sp, #1] + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, _02223914 ; =0x02243074 + ldr r0, [r0] + add r0, r0, #0x1e000 + ldr r1, [r0, #0x298] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0x2a0] + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + mov r0, #2 + blx r1 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022238F8: + mov r1, r4 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _02223914 ; =0x02243074 + bl MOD13_0223AF90 +_0222390C: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02223914: .word 0x02243074 +_02223918: .word 0x0001E280 + + arm_func_start MOD13_0222391C +MOD13_0222391C: ; 0x0222391C + ldr r1, _02223930 ; =0x02243074 + ldr r0, _02223934 ; =0x0001E280 + ldr r1, [r1] + add r0, r1, r0 + bx lr + .align 2, 0 +_02223930: .word 0x02243074 +_02223934: .word 0x0001E280 + + arm_func_start MOD13_02223938 +MOD13_02223938: ; 0x02223938 + ldr ip, _02223940 ; =MOD13_02238FFC + bx ip + .align 2, 0 +_02223940: .word MOD13_02238FFC + + arm_func_start MOD13_02223944 +MOD13_02223944: ; 0x02223944 + ldr r1, _02223958 ; =0x02243074 + ldr r1, [r1] + add r1, r1, #0x1e000 + str r0, [r1, #0x298] + bx lr + .align 2, 0 +_02223958: .word 0x02243074 + + arm_func_start MOD13_0222395C +MOD13_0222395C: ; 0x0222395C + ldr r0, _02223974 ; =0x02243074 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02223974: .word 0x02243074 + + arm_func_start MOD13_02223978 +MOD13_02223978: ; 0x02223978 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02239124 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022239B0 ; =0x02243074 + mov r1, r4 + ldr r0, [r0] + mov r3, #1 + add r2, r0, #0x1e000 + mov r0, #0 + strb r3, [r2, #0x2a1] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022239B0: .word 0x02243074 + + arm_func_start MOD13_022239B4 +MOD13_022239B4: ; 0x022239B4 + ldr ip, _022239CC ; =MOD13_0223C1C4 + mov r0, #0 + ldr r1, _022239D0 ; =MOD13_02223978 + mov r2, r0 + mov r3, #0x78 + bx ip + .align 2, 0 +_022239CC: .word MOD13_0223C1C4 +_022239D0: .word MOD13_02223978 + + arm_func_start MOD13_022239D4 +MOD13_022239D4: ; 0x022239D4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r0 + ldr r0, _02223AB0 ; =0x0001E2A4 + mov r1, #0x20 + bl MOD13_0223B004 + ldr r2, _02223AB4 ; =0x02243074 + add r1, r0, #0x1e000 + str r0, [r2] + str r4, [r1, #0x298] + ldr r0, [r2] + mov r4, #0 + add r0, r0, #0x1e000 + strb r4, [r0, #0x2a0] + ldr r0, [r2] + ldr lr, _02223AB8 ; =0x0223FDA4 + add r0, r0, #0x1e000 + strb r4, [r0, #0x2a1] + add ip, sp, #0 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2} + stmia ip, {r0, r1, r2} + ldr r0, _02223ABC ; =0x0224307C + mov r1, r4 + ldr r0, [r0] + bl MOD13_02223568 + ldr r1, _02223ABC ; =0x0224307C + str r0, [sp, #4] + ldr r0, [r1] + mov r1, #1 + bl MOD13_02223568 + str r0, [sp, #8] + bl MOD13_02222F34 + add r0, r0, #0x31 + strb r0, [sp, #0x18] + ldr r0, _02223AB4 ; =0x02243074 + add r1, sp, #0 + ldr r0, [r0] + bl MOD13_0223923C + bl MOD13_0223903C + cmp r0, #0 + bne _02223A84 + bl OS_Terminate +_02223A84: + mov r0, #0 + ldr r1, _02223AC0 ; =MOD13_02223670 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02223AB4 ; =0x02243074 + ldr r1, [r1] + add r1, r1, #0x1e000 + str r0, [r1, #0x29c] + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + .align 2, 0 +_02223AB0: .word 0x0001E2A4 +_02223AB4: .word 0x02243074 +_02223AB8: .word 0x0223FDA4 +_02223ABC: .word 0x0224307C +_02223AC0: .word MOD13_02223670 + + arm_func_start MOD13_02223AC4 +MOD13_02223AC4: ; 0x02223AC4 + ldr ip, _02223ACC ; =MOD13_0223AF48 + bx ip + .align 2, 0 +_02223ACC: .word MOD13_0223AF48 + + arm_func_start MOD13_02223AD0 +MOD13_02223AD0: ; 0x02223AD0 + ldr ip, _02223ADC ; =MOD13_0223B004 + mov r1, #0x20 + bx ip + .align 2, 0 +_02223ADC: .word MOD13_0223B004 + + arm_func_start MOD13_02223AE0 +MOD13_02223AE0: ; 0x02223AE0 + ldr r3, _02223AF4 ; =0x02243078 + ldmia r0, {r0, r1, r2} + ldr r3, [r3] + stmia r3, {r0, r1, r2} + bx lr + .align 2, 0 +_02223AF4: .word 0x02243078 + + arm_func_start MOD13_02223AF8 +MOD13_02223AF8: ; 0x02223AF8 + stmdb sp!, {lr} + sub sp, sp, #0xec + add r0, sp, #0 + blx MOD13_0221A794 + cmp r0, #1 + beq _02223B14 + bl OS_Terminate +_02223B14: + add r0, sp, #0 + bl MOD13_02233A24 + add sp, sp, #0xec + ldmia sp!, {pc} + + arm_func_start MOD13_02223B24 +MOD13_02223B24: ; 0x02223B24 + stmdb sp!, {lr} + sub sp, sp, #0xec + ldr r1, _02223BDC ; =0x02243078 + ldr r1, [r1] + ldr r1, [r1] + cmp r1, #7 + addls pc, pc, r1, lsl #2 + b _02223BD4 +_02223B44: ; jump table + b _02223B64 ; case 0 + b _02223B64 ; case 1 + b _02223B70 ; case 2 + b _02223B64 ; case 3 + b _02223B7C ; case 4 + b _02223B64 ; case 5 + b _02223B88 ; case 6 + b _02223BD0 ; case 7 +_02223B64: + add sp, sp, #0xec + mov r0, #0 + ldmia sp!, {pc} +_02223B70: + add sp, sp, #0xec + mov r0, #1 + ldmia sp!, {pc} +_02223B7C: + add sp, sp, #0xec + mov r0, #2 + ldmia sp!, {pc} +_02223B88: + add r0, sp, #0 + blx MOD13_0221A794 + cmp r0, #1 + beq _02223B9C + bl OS_Terminate +_02223B9C: + ldr r0, [sp, #0x20] + cmp r0, #0 + blt _02223BC4 + cmp r0, #3 + bgt _02223BC4 + ldr r0, [sp, #0x24] + cmp r0, #1 + addeq sp, sp, #0xec + moveq r0, #3 + ldmeqia sp!, {pc} +_02223BC4: + add sp, sp, #0xec + mov r0, #5 + ldmia sp!, {pc} +_02223BD0: + mov r0, #4 +_02223BD4: + add sp, sp, #0xec + ldmia sp!, {pc} + .align 2, 0 +_02223BDC: .word 0x02243078 + + arm_func_start MOD13_02223BE0 +MOD13_02223BE0: ; 0x02223BE0 + stmdb sp!, {lr} + sub sp, sp, #4 + blx MOD13_0221A7EC + cmp r0, #1 + beq _02223BF8 + bl OS_Terminate +_02223BF8: + ldr r0, _02223C08 ; =0x02243078 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223C08: .word 0x02243078 + + arm_func_start MOD13_02223C0C +MOD13_02223C0C: ; 0x02223C0C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r0, #0xc + mvn r1, #3 + bl MOD13_0223AFE0 + ldr r1, _02223C68 ; =0x02243078 + ldr ip, _02223C6C ; =MOD13_02223AC4 + str r0, [r1] + ldr r2, _02223C70 ; =MOD13_02223AE0 + ldr r3, _02223C74 ; =MOD13_02223AD0 + str ip, [sp] + mov ip, #0x800 + mov r0, #0xf + mov r1, #0x40 + str ip, [sp, #4] + blx MOD13_0221A8A4 + cmp r0, #1 + beq _02223C58 + bl OS_Terminate +_02223C58: + mov r0, #0xa + bl OS_Sleep + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02223C68: .word 0x02243078 +_02223C6C: .word MOD13_02223AC4 +_02223C70: .word MOD13_02223AE0 +_02223C74: .word MOD13_02223AD0 + + arm_func_start MOD13_02223C78 +MOD13_02223C78: ; 0x02223C78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + mov r1, r0 + bl MOD13_0223C0A0 + mov r0, #1 + mov r1, #0 + bl MOD13_0223C0A0 + mov r0, #1 + bl MOD13_02239F20 + mov r0, #0 + bl MOD13_02239F20 + bl MOD13_0221F528 + bl MOD13_0221F404 + ldr r0, _02223CF8 ; =0x0224307C + ldr r0, [r0] + bl MOD13_02223588 + bl MOD13_02223618 + bl MOD13_02234178 + bl MOD13_02222EE8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223CF8: .word 0x0224307C + + arm_func_start MOD13_02223CFC +MOD13_02223CFC: ; 0x02223CFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x14 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x14 + bl MOD13_0223A2A8 + ldr r0, _02223D3C ; =MOD13_02223C78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223D3C: .word MOD13_02223C78 + + arm_func_start MOD13_02223D40 +MOD13_02223D40: ; 0x02223D40 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222F1C + cmp r0, #0 + beq _02223D8C + cmp r0, #1 + beq _02223DA8 + add sp, sp, #4 + ldmia sp!, {pc} +_02223D8C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02223DC4 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02223DA8: + mov r0, #1 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02223DC8 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223DC4: .word MOD13_022245B4 +_02223DC8: .word MOD13_02230714 + + arm_func_start MOD13_02223DCC +MOD13_02223DCC: ; 0x02223DCC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r2, r0 + mov r1, #1 + mov r3, #0x14 + bl MOD13_0223A2A8 + mov r0, #2 + mov r2, r0 + mov r1, #0 + mov r3, #0x14 + bl MOD13_0223A2A8 + ldr r0, _02223E0C ; =MOD13_02223D40 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223E0C: .word MOD13_02223D40 + + arm_func_start MOD13_02223E10 +MOD13_02223E10: ; 0x02223E10 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223418C + bl MOD13_0222362C + bl MOD13_0221F424 + bl MOD13_0221F53C + bl MOD13_0221EF74 + bl MOD13_02222F34 + cmp r0, #1 + bne _02223E5C + mov r0, #2 + bl MOD13_02222EFC + cmp r0, #0 + beq _02223E5C + ldr r0, _02223F90 ; =0x0223FE38 + bl MOD13_022235B4 + ldr r1, _02223F94 ; =0x0224307C + str r0, [r1] + b _02223E74 +_02223E5C: + bl MOD13_02222F34 + ldr r1, _02223F98 ; =0x0223FE20 + ldr r0, [r1, r0, lsl #2] + bl MOD13_022235B4 + ldr r1, _02223F94 ; =0x0224307C + str r0, [r1] +_02223E74: + ldr r0, _02223F9C ; =0x0223FE48 + bl MOD13_0221F1BC + mov r1, r0 + mov r0, #1 + bl MOD13_02239F48 + ldr r0, _02223FA0 ; =0x0223FE5C + bl MOD13_0221F1BC + mov r1, r0 + mov r0, #0 + bl MOD13_02239F48 + ldr r0, _02223FA4 ; =0x0223FE70 + ldr r1, _02223FA8 ; =0x020C8DB4 + bl MOD13_0221F174 + ldr r0, _02223FAC ; =0x0223FE84 + ldr r1, _02223FB0 ; =0x020C94E8 + bl MOD13_0221F174 + ldr r0, _02223FB4 ; =0x0223FE98 + ldr r1, _02223FB8 ; =0x020C9294 + bl MOD13_0221F174 + ldr r0, _02223FBC ; =0x0223FEB0 + ldr r1, _02223FC0 ; =0x020C9418 + bl MOD13_0221F174 + ldr r0, _02223FC4 ; =0x0223FEC8 + ldr r1, _02223FC8 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02223FCC ; =0x0223FEE0 + ldr r1, _02223FD0 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02223FD4 ; =0x0223FEF8 + ldr r1, _02223FD8 ; =0x020C92F4 + bl MOD13_0221F174 + ldr r0, _02223FDC ; =0x0223FF10 + ldr r1, _02223FE0 ; =0x020C9480 + bl MOD13_0221F174 + bl MOD13_02222F1C + cmp r0, #0 + beq _02223F14 + cmp r0, #1 + beq _02223F24 + b _02223F30 +_02223F14: + ldr r0, _02223FE4 ; =0x0223FF28 + ldr r1, _02223FE8 ; =0x020C90F4 + bl MOD13_0221F174 + b _02223F30 +_02223F24: + ldr r0, _02223FEC ; =0x0223FF3C + ldr r1, _02223FE8 ; =0x020C90F4 + bl MOD13_0221F174 +_02223F30: + ldr ip, _02223FF0 ; =0x0400100A + ldr r3, _02223FF4 ; =0x0400000A + ldrh r2, [ip] + mov r0, #1 + mov r1, #2 + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [ip] + ldrh r2, [r3] + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [r3] + ldrh r2, [r3] + bic r2, r2, #3 + orr r2, r2, #3 + strh r2, [r3] + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #2 + bl MOD13_0223AEF4 + ldr r0, _02223FF8 ; =MOD13_02223DCC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02223F90: .word 0x0223FE38 +_02223F94: .word 0x0224307C +_02223F98: .word 0x0223FE20 +_02223F9C: .word 0x0223FE48 +_02223FA0: .word 0x0223FE5C +_02223FA4: .word 0x0223FE70 +_02223FA8: .word 0x020C8DB4 +_02223FAC: .word 0x0223FE84 +_02223FB0: .word 0x020C94E8 +_02223FB4: .word 0x0223FE98 +_02223FB8: .word 0x020C9294 +_02223FBC: .word 0x0223FEB0 +_02223FC0: .word 0x020C9418 +_02223FC4: .word 0x0223FEC8 +_02223FC8: .word 0x020C8D4C +_02223FCC: .word 0x0223FEE0 +_02223FD0: .word 0x020C9550 +_02223FD4: .word 0x0223FEF8 +_02223FD8: .word 0x020C92F4 +_02223FDC: .word 0x0223FF10 +_02223FE0: .word 0x020C9480 +_02223FE4: .word 0x0223FF28 +_02223FE8: .word 0x020C90F4 +_02223FEC: .word 0x0223FF3C +_02223FF0: .word 0x0400100A +_02223FF4: .word 0x0400000A +_02223FF8: .word MOD13_02223DCC + + arm_func_start MOD13_02223FFC +MOD13_02223FFC: ; 0x02223FFC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02224040 ; =0x0223F100 + ldr r0, _02224044 ; =0x02243080 + ldrb r3, [r1] + ldrb r2, [r1, #1] + ldrb r1, [r0] + add ip, sp, #0 + ldr r0, _02224048 ; =0x02243084 + strb r3, [sp] + strb r2, [sp, #1] + ldrb r1, [ip, r1] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224040: .word 0x0223F100 +_02224044: .word 0x02243080 +_02224048: .word 0x02243084 + + arm_func_start MOD13_0222404C +MOD13_0222404C: ; 0x0222404C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _022240BC ; =0x02243080 + mov r0, #8 + ldrb r2, [r1] + eor r2, r2, #1 + strb r2, [r1] + bl MOD13_0223424C + ldr r0, _022240BC ; =0x02243080 + ldr ip, _022240C0 ; =0x0223F114 + ldrb r0, [r0] + ldr r1, _022240C4 ; =0x0223F118 + ldr r2, _022240C8 ; =0x0223F116 + mov lr, r0, lsl #3 + ldr r3, _022240CC ; =0x0223F11A + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022240BC: .word 0x02243080 +_022240C0: .word 0x0223F114 +_022240C4: .word 0x0223F118 +_022240C8: .word 0x0223F116 +_022240CC: .word 0x0223F11A + + arm_func_start MOD13_022240D0 +MOD13_022240D0: ; 0x022240D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02224184 ; =0x02243084 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02224188 ; =0x02243080 + ldrb r0, [r0] + cmp r0, #0 + beq _0222414C + cmp r0, #1 + beq _02224168 + add sp, sp, #4 + ldmia sp!, {pc} +_0222414C: + mov r0, #1 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _0222418C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224168: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02224190 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224184: .word 0x02243084 +_02224188: .word 0x02243080 +_0222418C: .word MOD13_02230714 +_02224190: .word MOD13_022259A8 + + arm_func_start MOD13_02224194 +MOD13_02224194: ; 0x02224194 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022241E8 ; =MOD13_022240D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022241E8: .word MOD13_022240D0 + + arm_func_start MOD13_022241EC +MOD13_022241EC: ; 0x022241EC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224210 ; =MOD13_02224194 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224210: .word MOD13_02224194 + + arm_func_start MOD13_02224214 +MOD13_02224214: ; 0x02224214 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02224238 + cmp r0, #1 + beq _02224250 + add sp, sp, #4 + ldmia sp!, {pc} +_02224238: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222426C ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224250: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02223FFC + ldr r0, _02224270 ; =MOD13_022241EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222426C: .word MOD13_02223CFC +_02224270: .word MOD13_022241EC + + arm_func_start MOD13_02224274 +MOD13_02224274: ; 0x02224274 + bx lr + + arm_func_start MOD13_02224278 +MOD13_02224278: ; 0x02224278 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022243B0 ; =0x0223F104 + mov r5, #0 +_02224288: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _022242DC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _022243B4 ; =0x02243080 + ldr ip, _022243B8 ; =0x0223F114 + strb r5, [r0] + ldrb r0, [r0] + ldr r1, _022243BC ; =0x0223F118 + ldr r2, _022243C0 ; =0x0223F116 + mov lr, r0, lsl #3 + ldr r3, _022243C4 ; =0x0223F11A + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022242DC: + add r5, r5, #1 + cmp r5, #2 + add r4, r4, #8 + blo _02224288 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222430C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222430C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222432C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222432C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222434C + mov r0, #1 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222434C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222436C + mov r0, #3 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222436C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222438C + mov r0, #0 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222438C: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + bl MOD13_0222404C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022243B0: .word 0x0223F104 +_022243B4: .word 0x02243080 +_022243B8: .word 0x0223F114 +_022243BC: .word 0x0223F118 +_022243C0: .word 0x0223F116 +_022243C4: .word 0x0223F11A + + arm_func_start MOD13_022243C8 +MOD13_022243C8: ; 0x022243C8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224278 + bl MOD13_02224274 + bl MOD13_02224214 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224414 ; =MOD13_022243C8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224414: .word MOD13_022243C8 + + arm_func_start MOD13_02224418 +MOD13_02224418: ; 0x02224418 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02224460 ; =0x022243E4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224460: .word 0x022243E4 + + arm_func_start MOD13_02224464 +MOD13_02224464: ; 0x02224464 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022244BC ; =MOD13_02224418 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022244BC: .word MOD13_02224418 + + arm_func_start MOD13_022244C0 +MOD13_022244C0: ; 0x022244C0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _02224584 ; =0x0223F124 + add r3, sp, #0 + mov r2, #0xb +_022244D4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _022244D4 + ldr r0, _02224588 ; =0x0223FF50 + ldr r1, _0222458C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02224590 ; =0x0223FF68 + ldr r1, _02224594 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02224598 ; =0x0223FF80 + ldr r1, _0222459C ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022245A0 ; =0x02243084 + ldr ip, _022245A4 ; =0x04001008 + str r0, [r1] + ldrh r0, [ip] + ldr r3, _022245A8 ; =0x0400100A + ldr r2, _022245AC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + ldr r1, _022245B0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_02224584: .word 0x0223F124 +_02224588: .word 0x0223FF50 +_0222458C: .word 0x020C8D4C +_02224590: .word 0x0223FF68 +_02224594: .word 0x020C9550 +_02224598: .word 0x0223FF80 +_0222459C: .word 0x020C908C +_022245A0: .word 0x02243084 +_022245A4: .word 0x04001008 +_022245A8: .word 0x0400100A +_022245AC: .word 0x0400000A +_022245B0: .word 0x0400000C + + arm_func_start MOD13_022245B4 +MOD13_022245B4: ; 0x022245B4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022244C0 + mov r0, #0 + bl MOD13_0221F4CC + mov r0, #0x2e + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #4 + bl MOD13_02234384 + ldr r0, _02224620 ; =0x02243080 + ldr r3, _02224624 ; =0x0223F114 + ldrb r0, [r0] + ldr r1, _02224628 ; =0x0223F118 + ldr r2, _0222462C ; =0x0223F116 + mov ip, r0, lsl #3 + ldrh r0, [r3, ip] + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldr r3, _02224630 ; =0x0223F11A + ldrh r3, [r3, ip] + bl MOD13_0221F25C + ldr r0, _02224634 ; =MOD13_02224464 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224620: .word 0x02243080 +_02224624: .word 0x0223F114 +_02224628: .word 0x0223F118 +_0222462C: .word 0x0223F116 +_02224630: .word 0x0223F11A +_02224634: .word MOD13_02224464 + + arm_func_start MOD13_02224638 +MOD13_02224638: ; 0x02224638 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02224660 ; =MOD13_02224808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224660: .word MOD13_02224808 + + arm_func_start MOD13_02224664 +MOD13_02224664: ; 0x02224664 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _0222469C + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0xe + bl MOD13_0223424C + ldr r0, _022246B8 ; =0x02243088 + mov r1, #1 + strb r1, [r0] + b _022246A4 +_0222469C: + mov r0, #7 + bl MOD13_0223424C +_022246A4: + bl MOD13_02235EB0 + ldr r0, _022246BC ; =MOD13_02224638 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022246B8: .word 0x02243088 +_022246BC: .word MOD13_02224638 + + arm_func_start MOD13_022246C0 +MOD13_022246C0: ; 0x022246C0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224700 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02224700: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224738 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02224738: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222478C ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _02224770 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224790 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02224770: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224794 ; =MOD13_02224D5C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222478C: .word 0x02243088 +_02224790: .word MOD13_022259A8 +_02224794: .word MOD13_02224D5C + + arm_func_start MOD13_02224798 +MOD13_02224798: ; 0x02224798 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02224800 ; =0x02243088 + ldrb r0, [r0] + cmp r0, #0 + bne _022247DC + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022247DC: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02224804 ; =MOD13_022246C0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224800: .word 0x02243088 +_02224804: .word MOD13_022246C0 + + arm_func_start MOD13_02224808 +MOD13_02224808: ; 0x02224808 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222482C ; =MOD13_02224798 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222482C: .word MOD13_02224798 + + arm_func_start MOD13_02224830 +MOD13_02224830: ; 0x02224830 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02224854 + cmp r0, #1 + beq _0222486C + add sp, sp, #4 + ldmia sp!, {pc} +_02224854: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022248A0 ; =MOD13_02224808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222486C: + mov r0, #6 + bl MOD13_0223424C + mov r1, #0 + mov r0, #0x18 + mov r2, #1 + mvn r3, #0 + str r1, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022248A4 ; =MOD13_02224664 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022248A0: .word MOD13_02224808 +_022248A4: .word MOD13_02224664 + + arm_func_start MOD13_022248A8 +MOD13_022248A8: ; 0x022248A8 + bx lr + + arm_func_start MOD13_022248AC +MOD13_022248AC: ; 0x022248AC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022248CC + mov r0, #1 + bl MOD13_0221ECF4 +_022248CC: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022248AC + bl MOD13_022248A8 + bl MOD13_02224830 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222493C ; =0x022248F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222493C: .word 0x022248F0 + + arm_func_start MOD13_02224940 +MOD13_02224940: ; 0x02224940 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02224988 ; =0x0222490C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224988: .word 0x0222490C + + arm_func_start MOD13_0222498C +MOD13_0222498C: ; 0x0222498C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022249E4 ; =MOD13_02224940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022249E4: .word MOD13_02224940 + + arm_func_start MOD13_022249E8 +MOD13_022249E8: ; 0x022249E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224A68 ; =0x0223FF94 + ldr r1, _02224A6C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02224A70 ; =0x04001008 + ldr ip, _02224A74 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02224A78 ; =0x04000008 + ldr r2, _02224A7C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02224A80 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224A68: .word 0x0223FF94 +_02224A6C: .word 0x020C908C +_02224A70: .word 0x04001008 +_02224A74: .word 0x0400100A +_02224A78: .word 0x04000008 +_02224A7C: .word 0x0400000A +_02224A80: .word 0x0400000C + + arm_func_start MOD13_02224A84 +MOD13_02224A84: ; 0x02224A84 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224ACC ; =0x02243088 + mov r1, #0 + strb r1, [r0] + bl MOD13_022249E8 + mov r0, #0x12 + bl MOD13_0221F4CC + mov r0, #0x3b + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0x17 + bl MOD13_0221F070 + ldr r0, _02224AD0 ; =MOD13_0222498C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224ACC: .word 0x02243088 +_02224AD0: .word MOD13_0222498C + + arm_func_start MOD13_02224AD4 +MOD13_02224AD4: ; 0x02224AD4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0x1000000 + bl OS_SpinWait + bl PM_ForceToPowerOff + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + ldr r0, _02224B6C ; =MOD13_02224AD4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224B6C: .word MOD13_02224AD4 + + arm_func_start MOD13_02224B70 +MOD13_02224B70: ; 0x02224B70 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224B94 ; =0x02224B18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224B94: .word 0x02224B18 + + arm_func_start MOD13_02224B98 +MOD13_02224B98: ; 0x02224B98 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02224BC8 ; =MOD13_02224B70 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224BC8: .word MOD13_02224B70 + + arm_func_start MOD13_02224BCC +MOD13_02224BCC: ; 0x02224BCC + bx lr + + arm_func_start MOD13_02224BD0 +MOD13_02224BD0: ; 0x02224BD0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224BD0 + bl MOD13_02224BCC + bl MOD13_02224B98 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224C48 ; =0x02224BFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224C48: .word 0x02224BFC + + arm_func_start MOD13_02224C4C +MOD13_02224C4C: ; 0x02224C4C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #5 + bl MOD13_0221F0EC + ldr r0, _02224C80 ; =0x02224C18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224C80: .word 0x02224C18 + + arm_func_start MOD13_02224C84 +MOD13_02224C84: ; 0x02224C84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02224CBC ; =MOD13_02224C4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224CBC: .word MOD13_02224C4C + + arm_func_start MOD13_02224CC0 +MOD13_02224CC0: ; 0x02224CC0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02224D40 ; =0x0223FFA8 + ldr r1, _02224D44 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02224D48 ; =0x04001008 + ldr ip, _02224D4C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02224D50 ; =0x04000008 + ldr r2, _02224D54 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02224D58 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224D40: .word 0x0223FFA8 +_02224D44: .word 0x020C908C +_02224D48: .word 0x04001008 +_02224D4C: .word 0x0400100A +_02224D50: .word 0x04000008 +_02224D54: .word 0x0400000A +_02224D58: .word 0x0400000C + + arm_func_start MOD13_02224D5C +MOD13_02224D5C: ; 0x02224D5C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224CC0 + mov r0, #0x19 + bl MOD13_0221F070 + bl MOD13_02233808 + ldr r0, _02224D84 ; =MOD13_02224C84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224D84: .word MOD13_02224C84 + + arm_func_start MOD13_02224D88 +MOD13_02224D88: ; 0x02224D88 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02224E08 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E08: .word MOD13_022259A8 + + arm_func_start MOD13_02224E0C +MOD13_02224E0C: ; 0x02224E0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02224E64 ; =MOD13_02224D88 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E64: .word MOD13_02224D88 + + arm_func_start MOD13_02224E68 +MOD13_02224E68: ; 0x02224E68 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02224E8C ; =MOD13_02224E0C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224E8C: .word MOD13_02224E0C + + arm_func_start MOD13_02224E90 +MOD13_02224E90: ; 0x02224E90 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #7 + bl MOD13_0223424C + ldr r0, _02224EC0 ; =MOD13_02224E68 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224EC0: .word MOD13_02224E68 + + arm_func_start MOD13_02224EC4 +MOD13_02224EC4: ; 0x02224EC4 + bx lr + + arm_func_start MOD13_02224EC8 +MOD13_02224EC8: ; 0x02224EC8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02224EC8 + bl MOD13_02224EC4 + bl MOD13_02224E90 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02224F40 ; =0x02224EF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224F40: .word 0x02224EF4 + + arm_func_start MOD13_02224F44 +MOD13_02224F44: ; 0x02224F44 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_0221F0EC + ldr r0, _02224F8C ; =0x02224F10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224F8C: .word 0x02224F10 + + arm_func_start MOD13_02224F90 +MOD13_02224F90: ; 0x02224F90 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02224FE8 ; =MOD13_02224F44 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02224FE8: .word MOD13_02224F44 + + arm_func_start MOD13_02224FEC +MOD13_02224FEC: ; 0x02224FEC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x6c + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + mov fp, r0 + add r0, sp, #0x14 + bl OS_GetMacAddress + ldrb r1, [sp, #0x15] + ldr r2, _022251B8 ; =0x0223FFBC + add r0, sp, #0x40 + str r1, [sp] + ldrb r3, [sp, #0x16] + mov r1, #0x14 + str r3, [sp, #4] + ldrb r3, [sp, #0x17] + str r3, [sp, #8] + ldrb r3, [sp, #0x18] + str r3, [sp, #0xc] + ldrb r3, [sp, #0x19] + str r3, [sp, #0x10] + ldrb r3, [sp, #0x14] + bl swprintf + ldr r3, _022251BC ; =0x0223F13C + mov r2, #2 + ldrh r4, [r3, #6] + mov r1, #0x480 + add r0, sp, #0x40 + str r4, [sp] + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, fp + bl MOD13_0223A4F0 + add r0, sp, #0x1c + bl FUN_02095EC8 + ldr sb, [sp, #0x1c] + ldr sl, [sp, #0x20] + mov r3, #0 + cmp sl, r3 + cmpeq sb, r3 + beq _02225160 + mov r0, sb + mov r1, sl + mov r2, #0xa + bl _ull_mod + mov r1, #0x3e8 + umull r4, r1, r0, r1 + mov r0, sb + mov r1, sl + mov r3, #0 + mov r2, #0xa + str r4, [sp, #0x3c] + bl _ll_udiv + mov sb, r0 + mov sl, r1 + mov r8, #0 + ldr r7, _022251C0 ; =0x00002710 + add r5, sp, #0x30 + mov r6, r8 + mov r4, r8 +_022250EC: + mov r0, sb + mov r1, sl + mov r2, r7 + mov r3, r6 + bl _ull_mod + rsb r1, r8, #2 + str r0, [r5, r1, lsl #2] + mov r0, sb + mov r1, sl + mov r2, r7 + mov r3, r4 + bl _ll_udiv + mov sb, r0 + mov sl, r1 + add r8, r8, #1 + cmp r8, #3 + blt _022250EC + ldr r1, [sp, #0x34] + ldr r2, _022251C4 ; =0x0223FFF8 + str r1, [sp] + ldr r1, [sp, #0x38] + add r0, sp, #0x40 + str r1, [sp, #4] + ldr r3, [sp, #0x3c] + mov r1, #0x14 + str r3, [sp, #8] + ldr r3, [sp, #0x30] + bl swprintf + b _02225170 +_02225160: + ldr r2, _022251C8 ; =0x02240020 + add r0, sp, #0x40 + mov r1, #0x14 + bl swprintf +_02225170: + ldr r0, _022251CC ; =0x0223F144 + mov r3, #2 + ldrh r4, [r0, #6] + mov r2, #0x480 + add r1, sp, #0x40 + str r4, [sp] + str r3, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + ldrh r1, [r0] + ldrh r2, [r0, #2] + ldrh r3, [r0, #4] + mov r0, fp + bl MOD13_0223A4F0 + mov r0, fp + bl MOD13_0223A410 + add sp, sp, #0x6c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022251B8: .word 0x0223FFBC +_022251BC: .word 0x0223F13C +_022251C0: .word 0x00002710 +_022251C4: .word 0x0223FFF8 +_022251C8: .word 0x02240020 +_022251CC: .word 0x0223F144 + + arm_func_start MOD13_022251D0 +MOD13_022251D0: ; 0x022251D0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02225250 ; =0x02240048 + ldr r1, _02225254 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02225258 ; =0x04001008 + ldr ip, _0222525C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225260 ; =0x04000008 + ldr r2, _02225264 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225268 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225250: .word 0x02240048 +_02225254: .word 0x020C908C +_02225258: .word 0x04001008 +_0222525C: .word 0x0400100A +_02225260: .word 0x04000008 +_02225264: .word 0x0400000A +_02225268: .word 0x0400000C + + arm_func_start MOD13_0222526C +MOD13_0222526C: ; 0x0222526C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022251D0 + mov r0, #0x11 + bl MOD13_0221F4CC + mov r0, #0x3a + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + bl MOD13_02224FEC + ldr r0, _022252A4 ; =MOD13_02224F90 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022252A4: .word MOD13_02224F90 + + arm_func_start MOD13_022252A8 +MOD13_022252A8: ; 0x022252A8 + ldr r1, _022252CC ; =0x0224308C + ldr r0, _022252D0 ; =0x02243094 + ldrb r2, [r1] + ldr r1, _022252D4 ; =0x0223F14C + ldr ip, _022252D8 ; =MOD13_022327DC + ldrb r1, [r1, r2] + ldr r0, [r0] + mov r2, r1 + bx ip + .align 2, 0 +_022252CC: .word 0x0224308C +_022252D0: .word 0x02243094 +_022252D4: .word 0x0223F14C +_022252D8: .word MOD13_022327DC + + arm_func_start MOD13_022252DC +MOD13_022252DC: ; 0x022252DC + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + bne _0222530C + ldr r0, _02225368 ; =0x0224308C + mov r1, #3 + ldrb r0, [r0] + add r0, r0, #2 + bl FX_ModS32 + ldr r1, _02225368 ; =0x0224308C + strb r0, [r1] + b _02225328 +_0222530C: + ldr r0, _02225368 ; =0x0224308C + mov r1, #3 + ldrb r0, [r0] + add r0, r0, #1 + bl FX_ModS32 + ldr r1, _02225368 ; =0x0224308C + strb r0, [r1] +_02225328: + mov r0, #8 + bl MOD13_0223424C + ldr r0, _02225368 ; =0x0224308C + ldr ip, _0222536C ; =0x0223F19C + ldrb r0, [r0] + ldr r1, _02225370 ; =0x0223F1A0 + ldr r2, _02225374 ; =0x0223F19E + mov lr, r0, lsl #3 + ldr r3, _02225378 ; =0x0223F1A2 + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225368: .word 0x0224308C +_0222536C: .word 0x0223F19C +_02225370: .word 0x0223F1A0 +_02225374: .word 0x0223F19E +_02225378: .word 0x0223F1A2 + + arm_func_start MOD13_0222537C +MOD13_0222537C: ; 0x0222537C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _0222549C ; =0x02243098 + ldr r0, [r0] + bl MOD13_0223B974 + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _022254A0 ; =0x02243094 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _022254A4 ; =0x02243090 + ldrb r0, [r0] + cmp r0, #0 + bne _02225420 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _022254A8 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225420: + ldr r0, _022254AC ; =0x0224308C + ldrb r0, [r0] + cmp r0, #0 + beq _02225448 + cmp r0, #1 + beq _02225464 + cmp r0, #2 + beq _02225480 + add sp, sp, #4 + ldmia sp!, {pc} +_02225448: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B0 ; =MOD13_0222526C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225464: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B4 ; =MOD13_02224A84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225480: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022254B8 ; =MOD13_02226650 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222549C: .word 0x02243098 +_022254A0: .word 0x02243094 +_022254A4: .word 0x02243090 +_022254A8: .word MOD13_022245B4 +_022254AC: .word 0x0224308C +_022254B0: .word MOD13_0222526C +_022254B4: .word MOD13_02224A84 +_022254B8: .word MOD13_02226650 + + arm_func_start MOD13_022254BC +MOD13_022254BC: ; 0x022254BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02225524 ; =0x02243090 + ldrb r0, [r0] + cmp r0, #0 + beq _022254EC + bl MOD13_0221ED28 +_022254EC: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02225528 ; =MOD13_0222537C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225524: .word 0x02243090 +_02225528: .word MOD13_0222537C + + arm_func_start MOD13_0222552C +MOD13_0222552C: ; 0x0222552C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02225550 ; =MOD13_022254BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225550: .word MOD13_022254BC + + arm_func_start MOD13_02225554 +MOD13_02225554: ; 0x02225554 + stmdb sp!, {lr} + sub sp, sp, #0x14 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02225578 + cmp r0, #1 + beq _02225584 + add sp, sp, #0x14 + ldmia sp!, {pc} +_02225578: + mov r0, #7 + bl MOD13_0223424C + b _022255E4 +_02225584: + add r0, sp, #0 + bl FUN_02095EC8 + ldr r0, _022255F4 ; =0x0224308C + ldrb r0, [r0] + cmp r0, #0 + beq _022255CC + ldr r2, [sp] + ldr r1, [sp, #4] + mov r0, #0 + cmp r1, r0 + cmpeq r2, r0 + bne _022255CC + mov r0, #9 + bl MOD13_0223424C + mvn r0, #0 + bl MOD13_0221ECE0 + add sp, sp, #0x14 + ldmia sp!, {pc} +_022255CC: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_022252A8 + ldr r0, _022255F8 ; =0x02243090 + mov r1, #1 + strb r1, [r0] +_022255E4: + ldr r0, _022255FC ; =MOD13_0222552C + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022255F4: .word 0x0224308C +_022255F8: .word 0x02243090 +_022255FC: .word MOD13_0222552C + + arm_func_start MOD13_02225600 +MOD13_02225600: ; 0x02225600 + bx lr + + arm_func_start MOD13_02225604 +MOD13_02225604: ; 0x02225604 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022256FC ; =0x0223F184 + mov r5, #0 +_02225614: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02225668 + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _02225700 ; =0x0224308C + ldr ip, _02225704 ; =0x0223F19C + strb r5, [r0] + ldrb r0, [r0] + ldr r1, _02225708 ; =0x0223F1A0 + ldr r2, _0222570C ; =0x0223F19E + mov lr, r0, lsl #3 + ldr r3, _02225710 ; =0x0223F1A2 + ldrh r0, [ip, lr] + ldrh r1, [r1, lr] + ldrh r2, [r2, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02225668: + add r5, r5, #1 + cmp r5, #3 + add r4, r4, #8 + blo _02225614 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02225698 + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02225698: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022256B8 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022256B8: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022256D8 + mov r0, #1 + bl MOD13_022252DC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022256D8: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #3 + bl MOD13_022252DC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022256FC: .word 0x0223F184 +_02225700: .word 0x0224308C +_02225704: .word 0x0223F19C +_02225708: .word 0x0223F1A0 +_0222570C: .word 0x0223F19E +_02225710: .word 0x0223F1A2 + + arm_func_start MOD13_02225714 +MOD13_02225714: ; 0x02225714 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225604 + bl MOD13_02225600 + bl MOD13_02225554 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02225760 ; =MOD13_02225714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225760: .word MOD13_02225714 + + arm_func_start MOD13_02225764 +MOD13_02225764: ; 0x02225764 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _022257AC ; =0x02225730 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022257AC: .word 0x02225730 + + arm_func_start MOD13_022257B0 +MOD13_022257B0: ; 0x022257B0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _02225808 ; =MOD13_02225764 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225808: .word MOD13_02225764 + + arm_func_start MOD13_0222580C +MOD13_0222580C: ; 0x0222580C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x48 + ldr r4, _0222597C ; =0x0223F154 + add r3, sp, #0 + mov r2, #0xb +_02225820: + ldrb r1, [r4], #1 + ldrb r0, [r4], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02225820 + ldr r4, _02225980 ; =0x0223F16C + add r3, sp, #0x16 + mov r2, #0xb +_02225844: + ldrb r1, [r4], #1 + ldrb r0, [r4], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02225844 + ldrb r2, [r4] + ldr r0, _02225984 ; =0x0224005C + ldr r1, _02225988 ; =0x020C8D4C + strb r2, [r3] + bl MOD13_0221F174 + ldr r0, _0222598C ; =0x02240074 + ldr r1, _02225990 ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0x16 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02225994 ; =0x02243094 + str r0, [r1] + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + mov r5, r0 + add r0, sp, #0x30 + bl FUN_02095EC8 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + mov r6, #0 + cmp r0, r6 + cmpeq r1, r6 + bne _02225900 + add r8, r5, #0xc0 + add r7, r5, #0x40 + mov r4, #0x20 +_022258DC: + mov r0, r8 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r8, r8, #0x20 + add r7, r7, #0x20 + blt _022258DC +_02225900: + mov r0, r5 + mov r1, #0x200 + bl DC_FlushRange + mov r0, r5 + mov r1, #0 + mov r2, #0x200 + bl GX_LoadBGPltt + mov r0, r5 + bl MOD13_0223939C + ldr ip, _02225998 ; =0x04001008 + ldr r3, _0222599C ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022259A0 ; =0x0400000A + ldr r1, _022259A4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222597C: .word 0x0223F154 +_02225980: .word 0x0223F16C +_02225984: .word 0x0224005C +_02225988: .word 0x020C8D4C +_0222598C: .word 0x02240074 +_02225990: .word 0x020C908C +_02225994: .word 0x02243094 +_02225998: .word 0x04001008 +_0222599C: .word 0x0400100A +_022259A0: .word 0x0400000A +_022259A4: .word 0x0400000C + + arm_func_start MOD13_022259A8 +MOD13_022259A8: ; 0x022259A8 + stmdb sp!, {r4, lr} + ldr r0, _02225A70 ; =0x02243090 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222580C + mov r0, #0x10 + bl MOD13_0221F4CC + mov r0, #3 + bl MOD13_02234384 + mov r0, #0x39 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0 + mov r1, #0x5b + bl MOD13_02239E54 + ldr r3, _02225A74 ; =0x02243098 + ldr r1, _02225A78 ; =0x0223F150 + str r0, [r3] + ldrh ip, [r1] + ldrh r2, [r1, #2] + ldr r1, _02225A7C ; =0x000001FF + ldr lr, [r0] + and r4, ip, r1 + and ip, r2, #0xff + ldr r1, _02225A80 ; =0xFE00FF00 + ldr r2, _02225A84 ; =0x0224308C + and r1, lr, r1 + orr r1, r1, ip + orr r1, r1, r4, lsl #16 + str r1, [r0] + ldr lr, [r3] + ldr r0, _02225A88 ; =0x0223F19C + ldrh r3, [lr, #4] + ldr r1, _02225A8C ; =0x0223F1A0 + ldr ip, _02225A90 ; =0x0223F19E + bic r3, r3, #0xc00 + orr r3, r3, #0xc00 + strh r3, [lr, #4] + ldrb r2, [r2] + ldr r3, _02225A94 ; =0x0223F1A2 + mov lr, r2, lsl #3 + ldrh r0, [r0, lr] + ldrh r1, [r1, lr] + ldrh r2, [ip, lr] + ldrh r3, [r3, lr] + bl MOD13_0221F25C + ldr r0, _02225A98 ; =MOD13_022257B0 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_02225A70: .word 0x02243090 +_02225A74: .word 0x02243098 +_02225A78: .word 0x0223F150 +_02225A7C: .word 0x000001FF +_02225A80: .word 0xFE00FF00 +_02225A84: .word 0x0224308C +_02225A88: .word 0x0223F19C +_02225A8C: .word 0x0223F1A0 +_02225A90: .word 0x0223F19E +_02225A94: .word 0x0223F1A2 +_02225A98: .word MOD13_022257B0 + + arm_func_start MOD13_02225A9C +MOD13_02225A9C: ; 0x02225A9C + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #2 + bne _02225ACC + bl MOD13_02233808 + ldr r0, _02225B24 ; =0x0224309C + mov r1, #1 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x10 + bl MOD13_0223424C + b _02225B08 +_02225ACC: + cmp r0, #3 + bne _02225AF0 + ldr r0, _02225B24 ; =0x0224309C + mov r1, #2 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + b _02225B08 +_02225AF0: + ldr r0, _02225B24 ; =0x0224309C + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C +_02225B08: + mov r0, #0 + bl MOD13_02223944 + bl MOD13_022239B4 + ldr r0, _02225B28 ; =MOD13_02225BD8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225B24: .word 0x0224309C +_02225B28: .word MOD13_02225BD8 + + arm_func_start MOD13_02225B2C +MOD13_02225B2C: ; 0x02225B2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221F694 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02225BC8 ; =0x0224309C + ldrb r0, [r0] + cmp r0, #0 + bne _02225BA0 + ldr r0, _02225BCC ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225BA0: + cmp r0, #2 + bne _02225BB8 + ldr r0, _02225BD0 ; =MOD13_022268B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02225BB8: + ldr r0, _02225BD4 ; =MOD13_02225FE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225BC8: .word 0x0224309C +_02225BCC: .word MOD13_02226CB0 +_02225BD0: .word MOD13_022268B4 +_02225BD4: .word MOD13_02225FE4 + + arm_func_start MOD13_02225BD8 +MOD13_02225BD8: ; 0x02225BD8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02225C04 ; =MOD13_02225B2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C04: .word MOD13_02225B2C + + arm_func_start MOD13_02225C08 +MOD13_02225C08: ; 0x02225C08 + bx lr + + arm_func_start MOD13_02225C0C +MOD13_02225C0C: ; 0x02225C0C + bx lr + + arm_func_start MOD13_02225C10 +MOD13_02225C10: ; 0x02225C10 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225C0C + bl MOD13_02225C08 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02225C5C ; =MOD13_02225A9C + bl MOD13_02223944 + ldr r0, _02225C60 ; =MOD13_02225C10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C5C: .word MOD13_02225A9C +_02225C60: .word MOD13_02225C10 + + arm_func_start MOD13_02225C64 +MOD13_02225C64: ; 0x02225C64 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02225C9C ; =0x02225C28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225C9C: .word 0x02225C28 + + arm_func_start MOD13_02225CA0 +MOD13_02225CA0: ; 0x02225CA0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02225D20 ; =0x0224008C + ldr r1, _02225D24 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02225D28 ; =0x04001008 + ldr ip, _02225D2C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225D30 ; =0x04000008 + ldr r2, _02225D34 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225D38 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225D20: .word 0x0224008C +_02225D24: .word 0x020C908C +_02225D28: .word 0x04001008 +_02225D2C: .word 0x0400100A +_02225D30: .word 0x04000008 +_02225D34: .word 0x0400000A +_02225D38: .word 0x0400000C + + arm_func_start MOD13_02225D3C +MOD13_02225D3C: ; 0x02225D3C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225CA0 + mov r0, #0x1e + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #1 + bl MOD13_0221F6E0 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _02225D78 ; =MOD13_02225C64 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225D78: .word MOD13_02225C64 + + arm_func_start MOD13_02225D7C +MOD13_02225D7C: ; 0x02225D7C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0x1000000 + bl OS_SpinWait + bl PM_ForceToPowerOff + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #1 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x3f + mov r3, #0x40 + bl MOD13_0223A2A8 + ldr r0, _02225E14 ; =MOD13_02225D7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E14: .word MOD13_02225D7C + + arm_func_start MOD13_02225E18 +MOD13_02225E18: ; 0x02225E18 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02225E3C ; =0x02225DC0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E3C: .word 0x02225DC0 + + arm_func_start MOD13_02225E40 +MOD13_02225E40: ; 0x02225E40 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02225E70 ; =MOD13_02225E18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225E70: .word MOD13_02225E18 + + arm_func_start MOD13_02225E74 +MOD13_02225E74: ; 0x02225E74 + bx lr + + arm_func_start MOD13_02225E78 +MOD13_02225E78: ; 0x02225E78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225E78 + bl MOD13_02225E74 + bl MOD13_02225E40 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02225EF0 ; =0x02225EA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225EF0: .word 0x02225EA4 + + arm_func_start MOD13_02225EF4 +MOD13_02225EF4: ; 0x02225EF4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #5 + bl MOD13_0221F0EC + ldr r0, _02225F28 ; =0x02225EC0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225F28: .word 0x02225EC0 + + arm_func_start MOD13_02225F2C +MOD13_02225F2C: ; 0x02225F2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02225F64 ; =MOD13_02225EF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02225F64: .word MOD13_02225EF4 + + arm_func_start MOD13_02225F68 +MOD13_02225F68: ; 0x02225F68 + ldr r1, _02225FD0 ; =0x04001008 + ldr ip, _02225FD4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02225FD8 ; =0x04000008 + ldr r2, _02225FDC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02225FE0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + bx lr + .align 2, 0 +_02225FD0: .word 0x04001008 +_02225FD4: .word 0x0400100A +_02225FD8: .word 0x04000008 +_02225FDC: .word 0x0400000A +_02225FE0: .word 0x0400000C + + arm_func_start MOD13_02225FE4 +MOD13_02225FE4: ; 0x02225FE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02225F68 + mov r0, #0x1f + bl MOD13_0221F070 + ldr r0, _02226008 ; =MOD13_02225F2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226008: .word MOD13_02225F2C + + arm_func_start MOD13_0222600C +MOD13_0222600C: ; 0x0222600C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226068 ; =MOD13_022275A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226068: .word MOD13_022275A4 + + arm_func_start MOD13_0222606C +MOD13_0222606C: ; 0x0222606C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022260B0 ; =MOD13_0222600C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022260B0: .word MOD13_0222600C + + arm_func_start MOD13_022260B4 +MOD13_022260B4: ; 0x022260B4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022260D8 ; =MOD13_0222606C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022260D8: .word MOD13_0222606C + + arm_func_start MOD13_022260DC +MOD13_022260DC: ; 0x022260DC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222610C ; =MOD13_022260B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222610C: .word MOD13_022260B4 + + arm_func_start MOD13_02226110 +MOD13_02226110: ; 0x02226110 + bx lr + + arm_func_start MOD13_02226114 +MOD13_02226114: ; 0x02226114 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226114 + bl MOD13_02226110 + bl MOD13_022260DC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222618C ; =0x02226140 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222618C: .word 0x02226140 + + arm_func_start MOD13_02226190 +MOD13_02226190: ; 0x02226190 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #4 + bl MOD13_0221F0EC + ldr r0, _022261D8 ; =0x0222615C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022261D8: .word 0x0222615C + + arm_func_start MOD13_022261DC +MOD13_022261DC: ; 0x022261DC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02226214 ; =MOD13_02226190 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226214: .word MOD13_02226190 + + arm_func_start MOD13_02226218 +MOD13_02226218: ; 0x02226218 + ldr r1, _02226280 ; =0x04001008 + ldr ip, _02226284 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226288 ; =0x04000008 + ldr r2, _0222628C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02226290 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + bx lr + .align 2, 0 +_02226280: .word 0x04001008 +_02226284: .word 0x0400100A +_02226288: .word 0x04000008 +_0222628C: .word 0x0400000A +_02226290: .word 0x0400000C + + arm_func_start MOD13_02226294 +MOD13_02226294: ; 0x02226294 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226218 + mov r0, #0x1a + bl MOD13_0221F070 + ldr r0, _022262B8 ; =MOD13_022261DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022262B8: .word MOD13_022261DC + + arm_func_start MOD13_022262BC +MOD13_022262BC: ; 0x022262BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _022262FC + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_022262FC: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226334 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226334: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02226388 ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _0222636C + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222638C ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222636C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226390 ; =MOD13_02226294 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226388: .word 0x022430A0 +_0222638C: .word MOD13_022259A8 +_02226390: .word MOD13_02226294 + + arm_func_start MOD13_02226394 +MOD13_02226394: ; 0x02226394 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _022263FC ; =0x022430A0 + ldrb r0, [r0] + cmp r0, #0 + bne _022263D8 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022263D8: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226400 ; =MOD13_022262BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022263FC: .word 0x022430A0 +_02226400: .word MOD13_022262BC + + arm_func_start MOD13_02226404 +MOD13_02226404: ; 0x02226404 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02226428 ; =MOD13_02226394 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226428: .word MOD13_02226394 + + arm_func_start MOD13_0222642C +MOD13_0222642C: ; 0x0222642C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02226450 + cmp r0, #1 + beq _0222645C + add sp, sp, #4 + ldmia sp!, {pc} +_02226450: + mov r0, #7 + bl MOD13_0223424C + b _02226470 +_0222645C: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02226480 ; =0x022430A0 + mov r1, #1 + strb r1, [r0] +_02226470: + ldr r0, _02226484 ; =MOD13_02226404 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226480: .word 0x022430A0 +_02226484: .word MOD13_02226404 + + arm_func_start MOD13_02226488 +MOD13_02226488: ; 0x02226488 + bx lr + + arm_func_start MOD13_0222648C +MOD13_0222648C: ; 0x0222648C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022264AC + mov r0, #1 + bl MOD13_0221ECF4 +_022264AC: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222648C + bl MOD13_02226488 + bl MOD13_0222642C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222651C ; =0x022264D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222651C: .word 0x022264D0 + + arm_func_start MOD13_02226520 +MOD13_02226520: ; 0x02226520 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02226554 ; =0x022264EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226554: .word 0x022264EC + + arm_func_start MOD13_02226558 +MOD13_02226558: ; 0x02226558 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022265B0 ; =MOD13_02226520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022265B0: .word MOD13_02226520 + + arm_func_start MOD13_022265B4 +MOD13_022265B4: ; 0x022265B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226634 ; =0x022400A0 + ldr r1, _02226638 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222663C ; =0x04001008 + ldr ip, _02226640 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226644 ; =0x04000008 + ldr r2, _02226648 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222664C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226634: .word 0x022400A0 +_02226638: .word 0x020C908C +_0222663C: .word 0x04001008 +_02226640: .word 0x0400100A +_02226644: .word 0x04000008 +_02226648: .word 0x0400000A +_0222664C: .word 0x0400000C + + arm_func_start MOD13_02226650 +MOD13_02226650: ; 0x02226650 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226698 ; =0x022430A0 + mov r1, #0 + strb r1, [r0] + bl MOD13_022265B4 + mov r0, #0x13 + bl MOD13_0221F4CC + mov r0, #0x3c + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0x1b + bl MOD13_0221F070 + ldr r0, _0222669C ; =MOD13_02226558 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226698: .word 0x022430A0 +_0222669C: .word MOD13_02226558 + + arm_func_start MOD13_022266A0 +MOD13_022266A0: ; 0x022266A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022266D8 ; =0x022430A4 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _022266DC ; =MOD13_02226754 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022266D8: .word 0x022430A4 +_022266DC: .word MOD13_02226754 + + arm_func_start MOD13_022266E0 +MOD13_022266E0: ; 0x022266E0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226750 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226750: .word MOD13_022259A8 + + arm_func_start MOD13_02226754 +MOD13_02226754: ; 0x02226754 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226794 ; =MOD13_022266E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226794: .word MOD13_022266E0 + + arm_func_start MOD13_02226798 +MOD13_02226798: ; 0x02226798 + bx lr + + arm_func_start MOD13_0222679C +MOD13_0222679C: ; 0x0222679C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022266A0 + bl MOD13_02226798 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _022267F0 ; =MOD13_0222679C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022267F0: .word MOD13_0222679C + + arm_func_start MOD13_022267F4 +MOD13_022267F4: ; 0x022267F4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222682C ; =0x022267B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222682C: .word 0x022267B4 + + arm_func_start MOD13_02226830 +MOD13_02226830: ; 0x02226830 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222689C ; =0x022400B4 + ldr r1, _022268A0 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _022268A4 ; =0x04001008 + ldr r3, _022268A8 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022268AC ; =0x0400000A + ldr r1, _022268B0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222689C: .word 0x022400B4 +_022268A0: .word 0x020C908C +_022268A4: .word 0x04001008 +_022268A8: .word 0x0400100A +_022268AC: .word 0x0400000A +_022268B0: .word 0x0400000C + + arm_func_start MOD13_022268B4 +MOD13_022268B4: ; 0x022268B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022268E4 ; =0x022430A4 + mov r1, #0 + strb r1, [r0] + bl MOD13_02226830 + mov r0, #0x21 + bl MOD13_0221F070 + ldr r0, _022268E8 ; =MOD13_022267F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022268E4: .word 0x022430A4 +_022268E8: .word MOD13_022267F4 + + arm_func_start MOD13_022268EC +MOD13_022268EC: ; 0x022268EC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022269A8 ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _02226954 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226954: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022269A8 ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _0222698C + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022269AC ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222698C: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022269B0 ; =MOD13_022275A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022269A8: .word 0x022430AC +_022269AC: .word MOD13_022259A8 +_022269B0: .word MOD13_022275A4 + + arm_func_start MOD13_022269B4 +MOD13_022269B4: ; 0x022269B4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02226A1C ; =0x022430AC + ldrb r0, [r0] + cmp r0, #0 + bne _022269F8 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_022269F8: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226A20 ; =MOD13_022268EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226A1C: .word 0x022430AC +_02226A20: .word MOD13_022268EC + + arm_func_start MOD13_02226A24 +MOD13_02226A24: ; 0x02226A24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02226A48 ; =MOD13_022269B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226A48: .word MOD13_022269B4 + + arm_func_start MOD13_02226A4C +MOD13_02226A4C: ; 0x02226A4C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02226A84 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _02226AA8 ; =0x022430AC + mov r2, #1 + mov r0, #6 + strb r2, [r1] + bl MOD13_0223424C + b _02226A98 +_02226A84: + ldr r1, _02226AA8 ; =0x022430AC + mov r2, #0 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C +_02226A98: + ldr r0, _02226AAC ; =MOD13_02226A24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226AA8: .word 0x022430AC +_02226AAC: .word MOD13_02226A24 + + arm_func_start MOD13_02226AB0 +MOD13_02226AB0: ; 0x02226AB0 + bx lr + + arm_func_start MOD13_02226AB4 +MOD13_02226AB4: ; 0x02226AB4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02226AD4 + mov r0, #1 + bl MOD13_0221ECF4 +_02226AD4: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226AB4 + bl MOD13_02226AB0 + bl MOD13_02226A4C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02226B54 ; =0x02226AF8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226B54: .word 0x02226AF8 + + arm_func_start MOD13_02226B58 +MOD13_02226B58: ; 0x02226B58 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_0221F0EC + ldr r0, _02226BA0 ; =0x02226B14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226BA0: .word 0x02226B14 + + arm_func_start MOD13_02226BA4 +MOD13_02226BA4: ; 0x02226BA4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02226C0C ; =0x022430A8 + ldrb r0, [r0] + cmp r0, #0 + beq _02226BFC + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 +_02226BFC: + ldr r0, _02226C10 ; =MOD13_02226B58 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226C0C: .word 0x022430A8 +_02226C10: .word MOD13_02226B58 + + arm_func_start MOD13_02226C14 +MOD13_02226C14: ; 0x02226C14 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226C94 ; =0x022400C8 + ldr r1, _02226C98 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02226C9C ; =0x04001008 + ldr ip, _02226CA0 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02226CA4 ; =0x04000008 + ldr r2, _02226CA8 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02226CAC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226C94: .word 0x022400C8 +_02226C98: .word 0x020C908C +_02226C9C: .word 0x04001008 +_02226CA0: .word 0x0400100A +_02226CA4: .word 0x04000008 +_02226CA8: .word 0x0400000A +_02226CAC: .word 0x0400000C + + arm_func_start MOD13_02226CB0 +MOD13_02226CB0: ; 0x02226CB0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226C14 + mov r0, #0x20 + bl MOD13_0221F070 + mov r0, #0x3c + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + ldr r1, _02226CEC ; =0x022430A8 + strb r0, [r1] + ldr r0, _02226CF0 ; =MOD13_02226BA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226CEC: .word 0x022430A8 +_02226CF0: .word MOD13_02226BA4 + + arm_func_start MOD13_02226CF4 +MOD13_02226CF4: ; 0x02226CF4 + ldr r0, _02226D04 ; =0x022430B0 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02226D04: .word 0x022430B0 + + arm_func_start MOD13_02226D08 +MOD13_02226D08: ; 0x02226D08 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02226DDC ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D30 + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D40 +_02226D30: + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02226D40: + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226D74 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02226D74: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02226DDC ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + beq _02226DA0 + ldr r0, _02226DE4 ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02226DA0: + ldr r0, _02226DE0 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226DCC + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + ldr r0, _02226DE8 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02226DCC: + ldr r0, _02226DEC ; =MOD13_02225D3C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226DDC: .word 0x022430B0 +_02226DE0: .word 0x022430B4 +_02226DE4: .word MOD13_02226CB0 +_02226DE8: .word MOD13_022259A8 +_02226DEC: .word MOD13_02225D3C + + arm_func_start MOD13_02226DF0 +MOD13_02226DF0: ; 0x02226DF0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226E5C ; =0x022430B0 + ldrb r0, [r0] + cmp r0, #0 + bne _02226E48 + ldr r0, _02226E60 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #1 + bne _02226E48 + bl MOD13_02223938 + b _02226E4C +_02226E48: + bl MOD13_022239B4 +_02226E4C: + ldr r0, _02226E64 ; =MOD13_02226D08 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226E5C: .word 0x022430B0 +_02226E60: .word 0x022430B4 +_02226E64: .word MOD13_02226D08 + + arm_func_start MOD13_02226E68 +MOD13_02226E68: ; 0x02226E68 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02226EC8 ; =0x022430B4 + ldrb r0, [r0] + cmp r0, #0 + bne _02226EA4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02226EA4: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02226ECC ; =MOD13_02226DF0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226EC8: .word 0x022430B4 +_02226ECC: .word MOD13_02226DF0 + + arm_func_start MOD13_02226ED0 +MOD13_02226ED0: ; 0x02226ED0 + bx lr + + arm_func_start MOD13_02226ED4 +MOD13_02226ED4: ; 0x02226ED4 + bx lr + + arm_func_start MOD13_02226ED8 +MOD13_02226ED8: ; 0x02226ED8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02226ED4 + bl MOD13_02226ED0 + bl MOD13_02235E9C + cmp r0, #0 + beq _02226F04 + cmp r0, #1 + beq _02226F1C + add sp, sp, #4 + ldmia sp!, {pc} +_02226F04: + ldr r1, _02226F4C ; =0x022430B4 + mov r2, #0 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C + b _02226F30 +_02226F1C: + ldr r1, _02226F4C ; =0x022430B4 + mov r2, #1 + mov r0, #0xe + strb r2, [r1] + bl MOD13_0223424C +_02226F30: + mov r0, #0 + bl MOD13_02223944 + bl MOD13_02235EB0 + ldr r0, _02226F50 ; =MOD13_02226E68 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226F4C: .word 0x022430B4 +_02226F50: .word MOD13_02226E68 + + arm_func_start MOD13_02226F54 +MOD13_02226F54: ; 0x02226F54 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02226F80 ; =MOD13_02226ED8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226F80: .word MOD13_02226ED8 + + arm_func_start MOD13_02226F84 +MOD13_02226F84: ; 0x02226F84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r2, #0 + mov r0, #0x1d + mov r1, #4 + mvn r3, #0 + str r2, [sp] + bl MOD13_02235EFC + ldr r0, _02226FC8 ; =MOD13_02226F54 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02226FC8: .word MOD13_02226F54 + + arm_func_start MOD13_02226FCC +MOD13_02226FCC: ; 0x02226FCC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227004 ; =MOD13_02226F84 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227004: .word MOD13_02226F84 + + arm_func_start MOD13_02227008 +MOD13_02227008: ; 0x02227008 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227088 ; =0x022400DC + ldr r1, _0222708C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227090 ; =0x04001008 + ldr ip, _02227094 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227098 ; =0x04000008 + ldr r2, _0222709C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022270A0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227088: .word 0x022400DC +_0222708C: .word 0x020C908C +_02227090: .word 0x04001008 +_02227094: .word 0x0400100A +_02227098: .word 0x04000008 +_0222709C: .word 0x0400000A +_022270A0: .word 0x0400000C + + arm_func_start MOD13_022270A4 +MOD13_022270A4: ; 0x022270A4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x2c + bl MOD13_0222391C + mov r5, r0 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _02227160 ; =0x022430B4 + mov r3, #0 + ldr r1, _02227164 ; =0x022430B0 + mov r4, r0 + strb r3, [r2] + strb r3, [r1] + bl MOD13_02227008 + mov r0, #0 + add r1, sp, #0x10 + mov r2, #0x16 + bl MIi_CpuClear16 + ldrb r2, [r5, #1] + add r0, r5, #2 + add r1, sp, #0x10 + mov r2, r2, lsl #1 + bl MIi_CpuCopy16 + ldr r0, _02227168 ; =0x0223F1B4 + mov lr, #2 + ldrh r2, [r0, #2] + ldrh r5, [r0, #6] + ldrh r1, [r0] + mov ip, #0x480 + sub r5, r5, r2 + str r5, [sp] + str lr, [sp, #4] + add r3, sp, #0x10 + str ip, [sp, #8] + str r3, [sp, #0xc] + ldrh r3, [r0, #4] + mov r0, r4 + sub r3, r3, r1 + bl MOD13_0223A4F0 + mov r0, r4 + bl MOD13_0223A410 + ldr r0, _0222716C ; =MOD13_02226CF4 + bl MOD13_02223944 + ldr r0, _02227170 ; =MOD13_02226FCC + bl MOD13_02222FBC + add sp, sp, #0x2c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02227160: .word 0x022430B4 +_02227164: .word 0x022430B0 +_02227168: .word 0x0223F1B4 +_0222716C: .word MOD13_02226CF4 +_02227170: .word MOD13_02226FCC + + arm_func_start MOD13_02227174 +MOD13_02227174: ; 0x02227174 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_022341E8 + cmp r4, #0 + bne _022271A0 + ldr r1, _022271C8 ; =0x022430B8 + mov r2, #1 + mov r0, #0x10 + strb r2, [r1] + bl MOD13_0223424C + b _022271B4 +_022271A0: + ldr r1, _022271C8 ; =0x022430B8 + mov r2, #2 + mov r0, #0x12 + strb r2, [r1] + bl MOD13_0223424C +_022271B4: + mov r0, #0 + bl MOD13_02223944 + ldr r0, _022271CC ; =MOD13_02227384 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_022271C8: .word 0x022430B8 +_022271CC: .word MOD13_02227384 + + arm_func_start MOD13_022271D0 +MOD13_022271D0: ; 0x022271D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227210 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02227210: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227240 + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02227240: + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222726C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222726C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022272E4 ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _022272A4 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272E8 ; =MOD13_022259A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022272A4: + cmp r0, #2 + bne _022272C8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272EC ; =MOD13_02226CB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022272C8: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022272F0 ; =MOD13_022270A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022272E4: .word 0x022430B8 +_022272E8: .word MOD13_022259A8 +_022272EC: .word MOD13_02226CB0 +_022272F0: .word MOD13_022270A4 + + arm_func_start MOD13_022272F4 +MOD13_022272F4: ; 0x022272F4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222737C ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227330 + bl MOD13_0222395C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_02227330: + bl MOD13_0221ED28 + ldr r0, _0222737C ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _02227358 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02227358: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227380 ; =MOD13_022271D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222737C: .word 0x022430B8 +_02227380: .word MOD13_022271D0 + + arm_func_start MOD13_02227384 +MOD13_02227384: ; 0x02227384 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022273BC ; =0x022430B8 + ldrb r0, [r0] + cmp r0, #0 + bne _022273A0 + bl MOD13_022239B4 +_022273A0: + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022273C0 ; =MOD13_022272F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022273BC: .word 0x022430B8 +_022273C0: .word MOD13_022272F4 + + arm_func_start MOD13_022273C4 +MOD13_022273C4: ; 0x022273C4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022273F8 ; =MOD13_02227384 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022273F8: .word MOD13_02227384 + + arm_func_start MOD13_022273FC +MOD13_022273FC: ; 0x022273FC + bx lr + + arm_func_start MOD13_02227400 +MOD13_02227400: ; 0x02227400 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02227428 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_02227428: + bl MOD13_022275F8 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227400 + bl MOD13_022273FC + bl MOD13_022273C4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02227490 ; =0x02227448 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227490: .word 0x02227448 + + arm_func_start MOD13_02227494 +MOD13_02227494: ; 0x02227494 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _022274C8 ; =0x02227464 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022274C8: .word 0x02227464 + + arm_func_start MOD13_022274CC +MOD13_022274CC: ; 0x022274CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227504 ; =MOD13_02227494 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227504: .word MOD13_02227494 + + arm_func_start MOD13_02227508 +MOD13_02227508: ; 0x02227508 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227588 ; =0x022400F0 + ldr r1, _0222758C ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227590 ; =0x04001008 + ldr ip, _02227594 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227598 ; =0x04000008 + ldr r2, _0222759C ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022275A0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227588: .word 0x022400F0 +_0222758C: .word 0x020C908C +_02227590: .word 0x04001008 +_02227594: .word 0x0400100A +_02227598: .word 0x04000008 +_0222759C: .word 0x0400000A +_022275A0: .word 0x0400000C + + arm_func_start MOD13_022275A4 +MOD13_022275A4: ; 0x022275A4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022275EC ; =MOD13_02227174 + bl MOD13_022239D4 + ldr r0, _022275F0 ; =0x022430B8 + mov r1, #0 + strb r1, [r0] + bl MOD13_02227508 + mov r0, #0x1c + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _022275F4 ; =MOD13_022274CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022275EC: .word MOD13_02227174 +_022275F0: .word 0x022430B8 +_022275F4: .word MOD13_022274CC + + arm_func_start MOD13_022275F8 +MOD13_022275F8: ; 0x022275F8 + ldr r0, _02227614 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02227614: .word 0x027FFFA8 + + arm_func_start MOD13_02227618 +MOD13_02227618: ; 0x02227618 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r1, _02227648 ; =0x022430BC + mov r2, #0 + ldr r0, _0222764C ; =MOD13_02227894 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227648: .word 0x022430BC +_0222764C: .word MOD13_02227894 + + arm_func_start MOD13_02227650 +MOD13_02227650: ; 0x02227650 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227938 + bl MOD13_02227934 + bl MOD13_022278D8 + ldr r1, _0222769C ; =0x022430C0 + ldr r0, _022276A0 ; =0x00000438 + ldrh r2, [r1] + add r2, r2, #1 + strh r2, [r1] + ldrh r1, [r1] + cmp r1, r0 + addlo sp, sp, #4 + ldmloia sp!, {pc} + bl MOD13_022341E8 + ldr r0, _022276A4 ; =MOD13_02227894 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222769C: .word 0x022430C0 +_022276A0: .word 0x00000438 +_022276A4: .word MOD13_02227894 + + arm_func_start MOD13_022276A8 +MOD13_022276A8: ; 0x022276A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022276D0 ; =MOD13_02227894 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022276D0: .word MOD13_02227894 + + arm_func_start MOD13_022276D4 +MOD13_022276D4: ; 0x022276D4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02227708 ; =MOD13_022276A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227708: .word MOD13_022276A8 + + arm_func_start MOD13_0222770C +MOD13_0222770C: ; 0x0222770C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223B6A8 + mov r0, #0 + bl MOD13_0223C1E0 + bl MOD13_02227938 + bl MOD13_022278D8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _02227770 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02227770: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bl MOD13_02222D7C + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _022277C4 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_022277C4: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02227818 ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _022277FC + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222781C ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022277FC: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02227820 ; =MOD13_02227ED0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227818: .word 0x022430BC +_0222781C: .word MOD13_02230EC4 +_02227820: .word MOD13_02227ED0 + + arm_func_start MOD13_02227824 +MOD13_02227824: ; 0x02227824 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0222788C ; =0x022430BC + ldrb r0, [r0] + cmp r0, #0 + bne _02227868 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02227868: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227890 ; =0x02227730 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222788C: .word 0x022430BC +_02227890: .word 0x02227730 + + arm_func_start MOD13_02227894 +MOD13_02227894: ; 0x02227894 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + ldr r0, _022278D0 ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + beq _022278B8 + mov r0, #1 + bl MOD13_0223C104 +_022278B8: + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _022278D4 ; =MOD13_02227824 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022278D0: .word 0x022430C4 +_022278D4: .word MOD13_02227824 + + arm_func_start MOD13_022278D8 +MOD13_022278D8: ; 0x022278D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222792C ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #1 + bl MOD13_0223C110 + ldr r0, _0222792C ; =0x022430C4 + mov r1, #0 + str r1, [r0] + bl MOD13_0221EC84 + ldr r0, _02227930 ; =MOD13_02227618 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222792C: .word 0x022430C4 +_02227930: .word MOD13_02227618 + + arm_func_start MOD13_02227934 +MOD13_02227934: ; 0x02227934 + bx lr + + arm_func_start MOD13_02227938 +MOD13_02227938: ; 0x02227938 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02227960 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_02227960: + bl MOD13_02227CA0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227938 + bl MOD13_02227934 + bl MOD13_022278D8 + bl MOD13_02222D0C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + cmp r0, #1 + beq _022279BC + cmp r0, #2 + beq _022279FC + add sp, sp, #4 + ldmia sp!, {pc} +_022279BC: + ldr r0, _02227A68 ; =0x022430C4 + ldr r1, [r0] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r2, _02227A6C ; =0x022430BC + mov r0, #1 + strb r0, [r2] + bl MOD13_0223C104 + ldr r1, _02227A68 ; =0x022430C4 + mov r2, #0 + ldr r0, _02227A70 ; =MOD13_02227650 + str r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022279FC: + ldr r0, _02227A68 ; =0x022430C4 + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022341E8 + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xc + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #9 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r1, _02227A68 ; =0x022430C4 + mov r0, #1 + ldr r1, [r1] + bl MOD13_0223C104 + ldr r1, _02227A68 ; =0x022430C4 + mov r2, #0 + ldr r0, _02227A74 ; =MOD13_022276D4 + str r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227A68: .word 0x022430C4 +_02227A6C: .word 0x022430BC +_02227A70: .word MOD13_02227650 +_02227A74: .word MOD13_022276D4 + + arm_func_start MOD13_02227A78 +MOD13_02227A78: ; 0x02227A78 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02227AC0 ; =MOD13_0222770C + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02227AC4 ; =0x022430C4 + str r0, [r1] + ldr r0, _02227AC8 ; =0x02227980 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227AC0: .word MOD13_0222770C +_02227AC4: .word 0x022430C4 +_02227AC8: .word 0x02227980 + + arm_func_start MOD13_02227ACC +MOD13_02227ACC: ; 0x02227ACC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _02227B14 ; =MOD13_02227A78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227B14: .word MOD13_02227A78 + + arm_func_start MOD13_02227B18 +MOD13_02227B18: ; 0x02227B18 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227B70 ; =MOD13_02227ACC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227B70: .word MOD13_02227ACC + + arm_func_start MOD13_02227B74 +MOD13_02227B74: ; 0x02227B74 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227C0C ; =0x02240104 + ldr r1, _02227C10 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02227C14 ; =0x0224011C + ldr r1, _02227C18 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02227C1C ; =0x02240134 + ldr r1, _02227C20 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02227C24 ; =0x04001008 + ldr ip, _02227C28 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02227C2C ; =0x04000008 + ldr r2, _02227C30 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02227C34 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227C0C: .word 0x02240104 +_02227C10: .word 0x020C8D4C +_02227C14: .word 0x0224011C +_02227C18: .word 0x020C9550 +_02227C1C: .word 0x02240134 +_02227C20: .word 0x020C908C +_02227C24: .word 0x04001008 +_02227C28: .word 0x0400100A +_02227C2C: .word 0x04000008 +_02227C30: .word 0x0400000A +_02227C34: .word 0x0400000C + + arm_func_start MOD13_02227C38 +MOD13_02227C38: ; 0x02227C38 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227C98 ; =0x022430C0 + mov r1, #0 + strh r1, [r0] + bl MOD13_02227B74 + bl MOD13_0221F4AC + mov r0, #0x36 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x22 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_02222DD8 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _02227C9C ; =MOD13_02227B18 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227C98: .word 0x022430C0 +_02227C9C: .word MOD13_02227B18 + + arm_func_start MOD13_02227CA0 +MOD13_02227CA0: ; 0x02227CA0 + ldr r0, _02227CBC ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02227CBC: .word 0x027FFFA8 + + arm_func_start MOD13_02227CC0 +MOD13_02227CC0: ; 0x02227CC0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227CF8 ; =0x022430C8 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _02227CFC ; =MOD13_02227D80 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227CF8: .word 0x022430C8 +_02227CFC: .word MOD13_02227D80 + + arm_func_start MOD13_02227D00 +MOD13_02227D00: ; 0x02227D00 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02227D7C ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227D7C: .word MOD13_0223197C + + arm_func_start MOD13_02227D80 +MOD13_02227D80: ; 0x02227D80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02227DC0 ; =MOD13_02227D00 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227DC0: .word MOD13_02227D00 + + arm_func_start MOD13_02227DC4 +MOD13_02227DC4: ; 0x02227DC4 + bx lr + + arm_func_start MOD13_02227DC8 +MOD13_02227DC8: ; 0x02227DC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02227CC0 + bl MOD13_02227DC4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02227E0C ; =MOD13_02227DC8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227E0C: .word MOD13_02227DC8 + + arm_func_start MOD13_02227E10 +MOD13_02227E10: ; 0x02227E10 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02227E48 ; =0x02227DE0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227E48: .word 0x02227DE0 + + arm_func_start MOD13_02227E4C +MOD13_02227E4C: ; 0x02227E4C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227EB8 ; =0x02240148 + ldr r1, _02227EBC ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _02227EC0 ; =0x04001008 + ldr r3, _02227EC4 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _02227EC8 ; =0x0400000A + ldr r1, _02227ECC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227EB8: .word 0x02240148 +_02227EBC: .word 0x020C908C +_02227EC0: .word 0x04001008 +_02227EC4: .word 0x0400100A +_02227EC8: .word 0x0400000A +_02227ECC: .word 0x0400000C + + arm_func_start MOD13_02227ED0 +MOD13_02227ED0: ; 0x02227ED0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02227F0C ; =0x022430C8 + mov r1, #0 + strb r1, [r0] + bl MOD13_02227E4C + bl MOD13_0221F4AC + mov r0, #0x23 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _02227F10 ; =MOD13_02227E10 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F0C: .word 0x022430C8 +_02227F10: .word MOD13_02227E10 + + arm_func_start MOD13_02227F14 +MOD13_02227F14: ; 0x02227F14 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EC9C + bl MOD13_02232F2C + ldr r0, _02227F44 ; =MOD13_02229150 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F44: .word MOD13_02229150 + + arm_func_start MOD13_02227F48 +MOD13_02227F48: ; 0x02227F48 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02227F7C ; =MOD13_02227F14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227F7C: .word MOD13_02227F14 + + arm_func_start MOD13_02227F80 +MOD13_02227F80: ; 0x02227F80 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02227FB4 ; =0x0223F1BC + ldr r0, _02227FB8 ; =0x022430D4 + ldrb r1, [r1] + ldr r0, [r0] + strb r1, [sp] + ldrb r1, [sp] + ldr r0, [r0, #8] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02227FB4: .word 0x0223F1BC +_02227FB8: .word 0x022430D4 + + arm_func_start MOD13_02227FBC +MOD13_02227FBC: ; 0x02227FBC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222804C ; =0x022430D4 + ldr r0, _02228050 ; =0x022430D0 + ldr r2, [r1] + ldrh r1, [r0] + ldrh r0, [r2, #0x40] + cmp r1, r0 + beq _02227FEC + ldrb r0, [r2, #0x51] + cmp r0, #4 + bhi _0222801C +_02227FEC: + ldrb r0, [r2, #0x59] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222804C ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x59] + ldmia sp!, {pc} +_0222801C: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228054 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222804C ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222804C: .word 0x022430D4 +_02228050: .word 0x022430D0 +_02228054: .word MOD13_02228314 + + arm_func_start MOD13_02228058 +MOD13_02228058: ; 0x02228058 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022280D8 ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + bne _022280A8 + ldr r0, _022280DC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x59] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022280DC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x59] + ldmia sp!, {pc} +_022280A8: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _022280E0 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _022280DC ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022280D8: .word 0x022430D0 +_022280DC: .word 0x022430D4 +_022280E0: .word MOD13_022283B4 + + arm_func_start MOD13_022280E4 +MOD13_022280E4: ; 0x022280E4 + stmdb sp!, {r4, lr} + ldr r1, _02228238 ; =0x022430CC + mov r4, #1 + ldrb r2, [r1] + cmp r2, #4 + addls pc, pc, r2, lsl #2 + b _022281F0 +_02228100: ; jump table + b _02228114 ; case 0 + b _02228180 ; case 1 + b _02228180 ; case 2 + b _022281B0 ; case 3 + b _022281C8 ; case 4 +_02228114: + cmp r0, #1 + bne _02228160 + ldr r0, _0222823C ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + moveq r0, #4 + streqb r0, [r1] + beq _022281F0 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228240 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228244 ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, pc} +_02228160: + ldr r0, _02228244 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x51] + cmp r0, #1 + addhi r0, r2, #1 + strhib r0, [r1] + movls r4, #0 + b _022281F0 +_02228180: + cmp r0, #1 + subeq r0, r2, #1 + streqb r0, [r1] + beq _022281F0 + ldr r0, _02228244 ; =0x022430D4 + add r2, r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x51] + cmp r0, r2 + strgtb r2, [r1] + movle r4, #0 + b _022281F0 +_022281B0: + cmp r0, #1 + subeq r0, r2, #1 + streqb r0, [r1] + beq _022281F0 + bl MOD13_02227FBC + ldmia sp!, {r4, pc} +_022281C8: + cmp r0, #1 + moveq r4, #0 + beq _022281F0 + ldr r0, _0222823C ; =0x022430D0 + mov r2, #0 + strh r2, [r0] + strb r2, [r1] + bl MOD13_02228754 + mov r0, #0 + bl MOD13_02232F44 +_022281F0: + cmp r4, #0 + bne _02228228 + ldr r0, _02228244 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x59] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228244 ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x59] + ldmia sp!, {r4, pc} +_02228228: + mov r0, #8 + bl MOD13_0223424C + bl MOD13_02228248 + ldmia sp!, {r4, pc} + .align 2, 0 +_02228238: .word 0x022430CC +_0222823C: .word 0x022430D0 +_02228240: .word MOD13_022283B4 +_02228244: .word 0x022430D4 + + arm_func_start MOD13_02228248 +MOD13_02228248: ; 0x02228248 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222828C ; =0x022430CC + ldr r1, _02228290 ; =0x0223F224 + ldrb r2, [r0] + ldr r3, _02228294 ; =0x0223F226 + mov ip, r2, lsl #3 + cmp r2, #4 + ldr r2, _02228298 ; =0x0223F228 + movlo r0, #2 + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + movhs r0, #3 + bl MOD13_0221F348 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222828C: .word 0x022430CC +_02228290: .word 0x0223F224 +_02228294: .word 0x0223F226 +_02228298: .word 0x0223F228 + + arm_func_start MOD13_0222829C +MOD13_0222829C: ; 0x0222829C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228300 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x56] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02228304 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + ldr r1, _02228308 ; =0x01FF0000 + sub r2, r0, #0x32 + ldr r0, _0222830C ; =0x04000010 + and r2, r1, r2, lsl #16 + ldr r1, _02228310 ; =0x04000018 + str r2, [r0] + ldr r0, _02228300 ; =0x022430D4 + str r2, [r1] + ldr r0, [r0] + mov r1, #0 + strb r1, [r0, #0x56] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228300: .word 0x022430D4 +_02228304: .word 0x022430D0 +_02228308: .word 0x01FF0000 +_0222830C: .word 0x04000010 +_02228310: .word 0x04000018 + + arm_func_start MOD13_02228314 +MOD13_02228314: ; 0x02228314 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _022283AC ; =0x022430D0 + mov r1, #0x1c + ldrh r2, [r0] + add r2, r2, #4 + strh r2, [r0] + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #4 + blt _02228350 + bl MOD13_02228490 + ldmia sp!, {r4, pc} +_02228350: + ldr r1, _022283AC ; =0x022430D0 + ldrh r2, [r1] + sub r0, r2, r0 + strh r0, [r1] + bl MOD13_02228754 + ldr r1, _022283B0 ; =0x022430D4 + ldr r0, _022283AC ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_02228248 + ldr r0, _022283B0 ; =0x022430D4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022283AC: .word 0x022430D0 +_022283B0: .word 0x022430D4 + + arm_func_start MOD13_022283B4 +MOD13_022283B4: ; 0x022283B4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _02228488 ; =0x022430D0 + ldrh r1, [r0] + cmp r1, #4 + subhi r1, r1, #4 + strhih r1, [r0] + movls r1, #0 + strlsh r1, [r0] + ldr r0, _02228488 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + mov r5, r0 + cmp r5, #0x18 + bne _0222840C + bl MOD13_02228754 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222840C: + cmp r5, #0x18 + ble _0222842C + ldr r0, _02228488 ; =0x022430D0 + rsb r1, r5, #0x1c + ldrh r2, [r0] + mov r5, #0 + add r1, r2, r1 + strh r1, [r0] +_0222842C: + bl MOD13_02228490 + cmp r5, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222848C ; =0x022430D4 + ldr r0, _02228488 ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_02228248 + ldr r0, _0222848C ; =0x022430D4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02228488: .word 0x022430D0 +_0222848C: .word 0x022430D4 + + arm_func_start MOD13_02228490 +MOD13_02228490: ; 0x02228490 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02228544 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + ldr r1, _02228548 ; =0x022430D4 + rsb r2, r0, #0x36 + ldr r0, [r1] + ldrb r1, [r0, #0x51] + mov r0, #0 + cmp r1, #5 + movgt r1, #5 + cmp r1, #0 + ble _02228530 + ldr ip, _02228548 ; =0x022430D4 + ldr r3, _0222854C ; =0xFE00FF00 +_022284D0: + ldr r5, [ip] + sub r4, r2, #2 + add r5, r5, r0, lsl #2 + ldr r6, [r5, #0x10] + add lr, r2, #1 + ldr r5, [r6] + and r4, r4, #0xff + and r5, r5, r3 + orr r4, r5, r4 + orr r4, r4, #0xb30000 + str r4, [r6] + ldr r4, [ip] + and lr, lr, #0xff + add r4, r4, r0, lsl #2 + ldr r5, [r4, #0x24] + add r0, r0, #1 + ldr r4, [r5] + cmp r0, r1 + and r4, r4, r3 + orr r4, r4, lr + orr r4, r4, #0xd20000 + str r4, [r5] + add r2, r2, #0x1c + blt _022284D0 +_02228530: + ldr r0, _02228548 ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x56] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02228544: .word 0x022430D0 +_02228548: .word 0x022430D4 +_0222854C: .word 0xFE00FF00 + + arm_func_start MOD13_02228550 +MOD13_02228550: ; 0x02228550 + stmdb sp!, {r4, lr} + ldr r3, _022285D8 ; =0x022430D4 + ldr lr, [r3] + ldrb r2, [lr, #0x51] + cmp r0, r2 + ldmgeia sp!, {r4, pc} + mov r2, #0x2a + mul r2, r0, r2 + ldr r0, [lr] + add r4, lr, r1, lsl #2 + add r0, r0, r2 + ldrb ip, [r0, #0x28] + ldr r4, [r4, #0x10] + mov r0, #0x400 + add ip, lr, ip, lsl #1 + ldrh lr, [r4, #4] + rsb r0, r0, #0 + ldrh ip, [ip, #0x42] + and lr, lr, r0 + orr ip, lr, ip + strh ip, [r4, #4] + ldr lr, [r3] + ldr r3, [lr] + add ip, lr, r1, lsl #2 + add r1, r3, r2 + ldrh r1, [r1, #0x26] + ldr r3, [ip, #0x24] + add r1, lr, r1, lsl #1 + ldrh r2, [r3, #4] + ldrh r1, [r1, #0x48] + and r0, r2, r0 + orr r0, r0, r1 + strh r0, [r3, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022285D8: .word 0x022430D4 + + arm_func_start MOD13_022285DC +MOD13_022285DC: ; 0x022285DC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x34 + mov r7, r0 + mov r0, #0x2a + ldr r2, _02228750 ; =0x022430D4 + mul r4, r7, r0 + ldr r0, [r2] + mov r6, r1 + ldr r0, [r0] + mov r1, #0x20 + add r0, r0, r4 + bl MOD13_0223BDA4 + ldr r2, _02228750 ; =0x022430D4 + mov r1, #0x1c + mul r5, r6, r1 + ldr r2, [r2] + mov r6, r0 + ldrb r1, [r2, #0x51] + cmp r7, r1 + addge sp, sp, #0x34 + ldmgeia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0xc + cmp r6, #0x10 + mov r1, #0 + mov r2, #0x22 + addle r5, r5, #6 + bl MI_CpuFill8 + cmp r6, #0x10 + movle ip, r6 + movgt ip, #0x10 + cmp ip, #0 + mov r7, #0 + ble _0222868C + ldr r0, _02228750 ; =0x022430D4 + ldr r3, [r0] + add r0, sp, #0xc +_0222866C: + ldr r2, [r3] + mov r1, r7, lsl #1 + add r2, r4, r2 + ldrb r2, [r7, r2] + add r7, r7, #1 + cmp r7, ip + strh r2, [r0, r1] + blt _0222866C +_0222868C: + mov r1, #0xa + add r0, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _02228750 ; =0x022430D4 + mov r2, r5 + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0xc] + bl MOD13_0223A528 + cmp r6, #0x10 + addle sp, sp, #0x34 + ldmleia sp!, {r4, r5, r6, r7, pc} + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + sub r6, r6, #0x10 + cmp r6, #0 + mov r3, #0 + ble _02228718 + ldr r0, _02228750 ; =0x022430D4 + ldr r7, [r0] + add r0, sp, #0xc +_022286F4: + ldr r1, [r7] + add r2, r3, #0x10 + add r1, r4, r1 + ldrb r2, [r2, r1] + mov r1, r3, lsl #1 + add r3, r3, #1 + strh r2, [r0, r1] + cmp r3, r6 + blt _022286F4 +_02228718: + mov r1, #0xa + add r0, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _02228750 ; =0x022430D4 + add r2, r5, #0xc + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0xc] + bl MOD13_0223A528 + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02228750: .word 0x022430D4 + + arm_func_start MOD13_02228754 +MOD13_02228754: ; 0x02228754 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r0, _02228800 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _02228804 ; =0x022430D4 + mov r7, r0 + ldr r0, [r1] + mov r1, #0 + ldrb r6, [r0, #0x51] + ldr r0, [r0, #0xc] + bl MOD13_0223A4D8 + cmp r6, #5 + movgt r6, #5 + mov r5, r7 + cmp r6, #0 + mov r4, #0 + ble _022287BC +_022287A0: + mov r0, r5 + mov r1, r4 + bl MOD13_022285DC + add r4, r4, #1 + cmp r4, r6 + add r5, r5, #1 + blt _022287A0 +_022287BC: + cmp r6, #0 + mov r4, #0 + ble _022287E4 +_022287C8: + mov r0, r7 + mov r1, r4 + bl MOD13_02228550 + add r4, r4, #1 + cmp r4, r6 + add r7, r7, #1 + blt _022287C8 +_022287E4: + ldr r0, _02228804 ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_0223A410 + bl MOD13_02228490 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02228800: .word 0x022430D0 +_02228804: .word 0x022430D4 + + arm_func_start MOD13_02228808 +MOD13_02228808: ; 0x02228808 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02228A0C ; =0x022430D4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + bl MOD13_0223C104 + mov r5, #0 + ldr r4, _02228A0C ; =0x022430D4 +_02228864: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0222887C + bl MOD13_0223B974 +_0222887C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _02228894 + bl MOD13_0223B974 +_02228894: + add r5, r5, #1 + cmp r5, #5 + blt _02228864 + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_0223A688 + bl MOD13_02232F78 + bl MOD13_0221F21C + bl MOD13_0221EE54 + bl MOD13_022328E8 + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223939C + ldr r0, _02228A0C ; =0x022430D4 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AE98 + mov r2, #0 + ldr r1, _02228A10 ; =0x04000010 + ldr r0, _02228A14 ; =0x04000018 + str r2, [r1] + str r2, [r0] + ldr r0, _02228A0C ; =0x022430D4 + ldr r2, [r0] + ldrb r0, [r2, #0x54] + cmp r0, #0 + bne _02228948 + bl MOD13_02233570 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _02228A18 ; =MOD13_02230EC4 + bl MOD13_02222FBC + b _022289FC +_02228948: + ldr r0, _02228A1C ; =0x022430CC + ldrb r0, [r0] + cmp r0, #4 + bne _02228974 + bl MOD13_02233570 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02228A20 ; =MOD13_0222F8A0 + bl MOD13_02222FBC + b _022289FC +_02228974: + ldrb r1, [r2, #0x52] + ldr r2, [r2] + mov r0, #0x2a + mla r0, r1, r0, r2 + bl MOD13_02234104 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r1, _02228A0C ; =0x022430D4 + mov r0, #0x2a + ldr r2, [r1] + ldrb r1, [r2, #0x52] + ldr r2, [r2] + mla r0, r1, r0, r2 + ldrb r0, [r0, #0x28] + cmp r0, #0 + beq _022289DC + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #1 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _02228A24 ; =MOD13_0222A190 + bl MOD13_02222FBC + b _022289FC +_022289DC: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02228A28 ; =MOD13_0223197C + bl MOD13_02222FBC +_022289FC: + ldr r0, _02228A0C ; =0x022430D4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02228A0C: .word 0x022430D4 +_02228A10: .word 0x04000010 +_02228A14: .word 0x04000018 +_02228A18: .word MOD13_02230EC4 +_02228A1C: .word 0x022430CC +_02228A20: .word MOD13_0222F8A0 +_02228A24: .word MOD13_0222A190 +_02228A28: .word MOD13_0223197C + + arm_func_start MOD13_02228A2C +MOD13_02228A2C: ; 0x02228A2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02228AA0 ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x54] + cmp r0, #0 + beq _02228A64 + bl MOD13_0221ED28 + b _02228A68 +_02228A64: + bl MOD13_0221EC84 +_02228A68: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02228AA4 ; =MOD13_02228808 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228AA0: .word 0x022430D4 +_02228AA4: .word MOD13_02228808 + + arm_func_start MOD13_02228AA8 +MOD13_02228AA8: ; 0x02228AA8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02228ACC ; =MOD13_02228A2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228ACC: .word MOD13_02228A2C + + arm_func_start MOD13_02228AD0 +MOD13_02228AD0: ; 0x02228AD0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228BF8 ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x57] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED14 + cmp r0, #0 + beq _02228B1C + cmp r0, #1 + beq _02228B28 + add sp, sp, #4 + ldmia sp!, {pc} +_02228B1C: + mov r0, #7 + bl MOD13_0223424C + b _02228BE8 +_02228B28: + ldr r0, _02228BFC ; =0x022430CC + ldrb r0, [r0] + cmp r0, #4 + bne _02228B58 + ldr r0, _02228BF8 ; =0x022430D4 + mov r2, #1 + ldr r1, [r0] + mov r0, #6 + strb r2, [r1, #0x54] + bl MOD13_0223424C + bl MOD13_02227F80 + b _02228BE8 +_02228B58: + ldr r0, _02228C00 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _02228BFC ; =0x022430CC + ldr r2, _02228BF8 ; =0x022430D4 + ldrb lr, [r1] + ldr ip, [r2] + mov r1, #0x2a + ldr r3, [ip] + add lr, lr, r0 + mla r0, lr, r1, r3 + ldrb r0, [r0, #0x28] + cmp r0, #2 + bne _02228BD0 + mov r0, #9 + bl MOD13_0223424C + bl MOD13_02232F14 + bl MOD13_0221EC84 + mov r1, #1 + mov r0, #0 + str r0, [sp] + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02228C04 ; =MOD13_02227F48 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02228BD0: + mov r0, #1 + strb r0, [ip, #0x54] + ldr r1, [r2] + mov r0, #6 + strb lr, [r1, #0x52] + bl MOD13_0223424C +_02228BE8: + ldr r0, _02228C08 ; =MOD13_02228AA8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228BF8: .word 0x022430D4 +_02228BFC: .word 0x022430CC +_02228C00: .word 0x022430D0 +_02228C04: .word MOD13_02227F48 +_02228C08: .word MOD13_02228AA8 + + arm_func_start MOD13_02228C0C +MOD13_02228C0C: ; 0x02228C0C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02228EBC ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x55] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r1, #0x55] + bl MOD13_02232F50 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02228EB4 +_02228C4C: ; jump table + b _02228EB4 ; case 0 + b _02228C6C ; case 1 + b _02228C88 ; case 2 + b _02228CE4 ; case 3 + b _02228DA4 ; case 4 + b _02228EA4 ; case 5 + b _02228E1C ; case 6 + b _02228EA4 ; case 7 +_02228C6C: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x57] + bl MOD13_0221EC84 + add sp, sp, #4 + ldmia sp!, {pc} +_02228C88: + ldr r0, _02228EBC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x55] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_02232F64 + ldr r1, _02228EBC ; =0x022430D4 + ldr r1, [r1] + ldrh r2, [r1, #0x40] + ldrb r1, [r1, #0x53] + mul r0, r2, r0 + bl FX_DivS32 + ldr r1, _02228EC0 ; =0x022430D0 + strh r0, [r1] + bl MOD13_02228754 + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x55] + ldmia sp!, {pc} +_02228CE4: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x57] + bl MOD13_0221EC9C + bl MOD13_02232F64 + ldr r1, _02228EBC ; =0x022430D4 + ldr r1, [r1] + ldrh r2, [r1, #0x40] + ldrb r1, [r1, #0x53] + mul r0, r2, r0 + bl FX_DivS32 + ldr r1, _02228EC0 ; =0x022430D0 + strh r0, [r1] + mov r0, #0x13 + bl MOD13_0223424C + bl MOD13_02228754 + ldr r0, _02228EC0 ; =0x022430D0 + mov r1, #0x1c + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #0 + bne _02228D4C + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {pc} +_02228D4C: + cmp r0, #0xe + bge _02228D7C + mov r0, #0 + ldr r1, _02228EC4 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228D7C: + mov r0, #0 + ldr r1, _02228EC8 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228DA4: + ldr r0, _02228EC0 ; =0x022430D0 + ldrh r0, [r0] + cmp r0, #0 + bne _02228DEC + ldr r0, _02228EBC ; =0x022430D4 + ldr r0, [r0] + ldrb r0, [r0, #0x58] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x58] + ldmia sp!, {pc} +_02228DEC: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228EC4 ; =MOD13_022283B4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228E1C: + ldr r0, _02228EBC ; =0x022430D4 + ldr r2, [r0] + ldrb r0, [r2, #0x51] + cmp r0, #4 + bls _02228E44 + ldr r0, _02228EC0 ; =0x022430D0 + ldrh r1, [r2, #0x40] + ldrh r0, [r0] + cmp r0, r1 + bne _02228E74 +_02228E44: + ldrb r0, [r2, #0x58] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x58] + ldmia sp!, {pc} +_02228E74: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _02228EC8 ; =MOD13_02228314 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02228EBC ; =0x022430D4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_02228EA4: + ldr r0, _02228EBC ; =0x022430D4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x58] +_02228EB4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02228EBC: .word 0x022430D4 +_02228EC0: .word 0x022430D0 +_02228EC4: .word MOD13_022283B4 +_02228EC8: .word MOD13_02228314 + + arm_func_start MOD13_02228ECC +MOD13_02228ECC: ; 0x02228ECC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _02229140 ; =0x022430D4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldrb r0, [r1, #0x57] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r0, _02229144 ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02228F74 + ldr r0, _02229140 ; =0x022430D4 + mvn r1, #0 + ldr r0, [r0] + ldr r4, _02229148 ; =0x0223F1FC + strb r1, [r0, #0x50] + mov r5, #0 +_02228F24: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02228F64 + cmp r5, #4 + ldrlt r0, _02229140 ; =0x022430D4 + ldrlt r0, [r0] + strltb r5, [r0, #0x50] + blt _02228F74 + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _0222914C ; =0x022430CC + strb r5, [r0] + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02228F64: + add r5, r5, #1 + cmp r5, #5 + add r4, r4, #8 + blo _02228F24 +_02228F74: + ldr r0, _02229144 ; =0x0223F75C + bl MOD13_0223B1DC + cmp r0, #0 + beq _02228FF4 + ldr r5, _02229148 ; =0x0223F1FC + mov r4, #0 +_02228F8C: + mov r0, r5 + bl MOD13_0223B1DC + cmp r0, #0 + beq _02228FE4 + ldr r0, _02229140 ; =0x022430D4 + ldr r1, [r0] + ldrsb r0, [r1, #0x50] + cmp r0, r4 + bne _02228FF4 + ldrb r0, [r1, #0x51] + cmp r4, r0 + blt _02228FC8 + mov r0, #9 + bl MOD13_0223424C + b _02228FF4 +_02228FC8: + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _0222914C ; =0x022430CC + strb r4, [r0] + bl MOD13_02228248 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02228FE4: + add r4, r4, #1 + cmp r4, #4 + add r5, r5, #8 + blt _02228F8C +_02228FF4: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02229018 + mov r0, #1 + bl MOD13_0221ECF4 + bl MOD13_02232F14 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229018: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02229038 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229038: + mov r0, #0x200 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02229054 + bl MOD13_02227FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229054: + mov r0, #0x200 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x100 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02229094 + bl MOD13_02228058 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02229094: + mov r0, #0x100 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022290D8 + mov r0, #1 + bl MOD13_022280E4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022290D8: + mov r0, #0x40 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x59] + ldmneia sp!, {r4, r5, pc} + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222911C + mov r0, #3 + bl MOD13_022280E4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222911C: + mov r0, #0x80 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _02229140 ; =0x022430D4 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0, #0x59] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02229140: .word 0x022430D4 +_02229144: .word 0x0223F75C +_02229148: .word 0x0223F1FC +_0222914C: .word 0x022430CC + + arm_func_start MOD13_02229150 +MOD13_02229150: ; 0x02229150 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02228ECC + bl MOD13_02228C0C + bl MOD13_02228AD0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222919C ; =MOD13_02229150 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222919C: .word MOD13_02229150 + + arm_func_start MOD13_022291A0 +MOD13_022291A0: ; 0x022291A0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _022291E8 ; =0x0222916C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022291E8: .word 0x0222916C + + arm_func_start MOD13_022291EC +MOD13_022291EC: ; 0x022291EC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AEF4 + ldr r0, _02229244 ; =MOD13_022291A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229244: .word MOD13_022291A0 + + arm_func_start MOD13_02229248 +MOD13_02229248: ; 0x02229248 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _022293BC ; =0x022430D4 + mov sb, #0 + ldr r0, [r0] + ldrb r4, [r0, #0x51] + cmp r4, #5 + movgt r4, #5 + cmp r4, #0 + ble _022292C4 + ldr r1, _022293C0 ; =0x0223F1C0 + ldr r0, _022293C4 ; =0x0223F1C4 + ldrb r8, [r1] + ldrb r7, [r0] + ldr sl, _022293BC ; =0x022430D4 + mov r6, sb + mov r5, sb +_02229288: + mov r0, r6 + mov r1, r8 + bl MOD13_02239E54 + ldr r2, [sl] + mov r1, r7 + add r2, r2, sb, lsl #2 + str r0, [r2, #0x10] + mov r0, r5 + bl MOD13_02239E54 + ldr r1, [sl] + add r1, r1, sb, lsl #2 + add sb, sb, #1 + str r0, [r1, #0x24] + cmp sb, r4 + blt _02229288 +_022292C4: + ldr r7, _022293C0 ; =0x0223F1C0 + mov r6, #0 + ldr sb, _022293BC ; =0x022430D4 + mov r5, r6 + ldr r8, _022293C8 ; =0x000003FF +_022292D8: + ldr r0, [sb] + ldrb r1, [r7] + ldr r2, [r0, #0x10] + mov r0, r5 + bl MOD13_02239E8C + ldr r0, [sb] + add r7, r7, #1 + ldr r1, [r0, #0x10] + add r0, r0, r6, lsl #1 + ldrh r1, [r1, #4] + add r6, r6, #1 + cmp r6, #3 + and r1, r1, r8 + strh r1, [r0, #0x42] + blo _022292D8 + ldr r7, _022293C4 ; =0x0223F1C4 + mov r6, #0 + ldr sb, _022293BC ; =0x022430D4 + mov r5, r6 + ldr r8, _022293C8 ; =0x000003FF +_02229328: + ldr r0, [sb] + ldrb r1, [r7] + ldr r2, [r0, #0x24] + mov r0, r5 + bl MOD13_02239E8C + ldr r0, [sb] + add r7, r7, #1 + ldr r1, [r0, #0x24] + add r0, r0, r6, lsl #1 + ldrh r1, [r1, #4] + add r6, r6, #1 + cmp r6, #4 + and r1, r1, r8 + strh r1, [r0, #0x48] + blo _02229328 + cmp r4, #0 + mov r0, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, _022293BC ; =0x022430D4 +_02229374: + ldr r2, [r1] + add r2, r2, r0, lsl #2 + ldr r3, [r2, #0x10] + ldrh r2, [r3, #4] + bic r2, r2, #0xc00 + orr r2, r2, #0xc00 + strh r2, [r3, #4] + ldr r2, [r1] + add r2, r2, r0, lsl #2 + ldr r3, [r2, #0x24] + add r0, r0, #1 + ldrh r2, [r3, #4] + cmp r0, r4 + bic r2, r2, #0xc00 + orr r2, r2, #0xc00 + strh r2, [r3, #4] + blt _02229374 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022293BC: .word 0x022430D4 +_022293C0: .word 0x0223F1C0 +_022293C4: .word 0x0223F1C4 +_022293C8: .word 0x000003FF + + arm_func_start MOD13_022293CC +MOD13_022293CC: ; 0x022293CC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _02229470 ; =0x022430D4 + mov r1, #0x1c + ldr ip, [r2] + mov r0, #0 + ldrb r3, [ip, #0x51] + sub r3, r3, #4 + mul r1, r3, r1 + strh r1, [ip, #0x40] + ldr r2, [r2] + ldrb r1, [r2, #0x51] + cmp r1, #4 + movls r4, r0 + strlsb r0, [r2, #0x53] + bls _02229428 + cmp r1, #8 + movls r1, #0x1f + strlsb r1, [r2, #0x53] + movls r4, #1 + movhi r1, #0x37 + strhib r1, [r2, #0x53] + movhi r4, #2 +_02229428: + cmp r4, #0 + beq _02229450 + ldr r1, _02229470 ; =0x022430D4 + ldr r0, _02229474 ; =0x022430D0 + ldr r1, [r1] + ldrh r2, [r0] + ldrb r0, [r1, #0x53] + ldrh r1, [r1, #0x40] + mul r0, r2, r0 + bl FX_DivS32 +_02229450: + str r0, [sp] + mov r0, r4 + mov r1, #0x55 + mov r2, #0xec + mov r3, #0x3f + bl MOD13_02232FB8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02229470: .word 0x022430D4 +_02229474: .word 0x022430D0 + + arm_func_start MOD13_02229478 +MOD13_02229478: ; 0x02229478 + stmdb sp!, {lr} + sub sp, sp, #0x34 + ldr r3, _022295AC ; =0x0223F1E0 + add lr, sp, #0 + mov r2, #0xc +_0222948C: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [lr], #1 + strb r0, [lr], #1 + bne _0222948C + ldrb r0, [r3] + ldr ip, _022295B0 ; =0x0223F1C8 + add r3, sp, #0x19 + strb r0, [lr] + mov r2, #0xb +_022294B8: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _022294B8 + ldr r0, _022295B4 ; =0x0224015C + ldr r1, _022295B8 ; =0x020C8FBC + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022295BC ; =0x022430D4 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r0, [r0, #4] + bl MOD13_02232918 + bl MOD13_022328D0 + add r0, sp, #0x19 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _022295BC ; =0x022430D4 + ldr r2, _022295C0 ; =0x04001008 + ldr r1, [r1] + ldr lr, _022295C4 ; =0x0400100A + str r0, [r1, #8] + ldrh r0, [r2] + ldr ip, _022295C8 ; =0x04000008 + ldr r3, _022295CC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [lr] + ldr r2, _022295D0 ; =0x0400000C + ldr r1, _022295D4 ; =0x0400000E + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [lr] + ldrh r0, [ip] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r1] + add sp, sp, #0x34 + ldmia sp!, {pc} + .align 2, 0 +_022295AC: .word 0x0223F1E0 +_022295B0: .word 0x0223F1C8 +_022295B4: .word 0x0224015C +_022295B8: .word 0x020C8FBC +_022295BC: .word 0x022430D4 +_022295C0: .word 0x04001008 +_022295C4: .word 0x0400100A +_022295C8: .word 0x04000008 +_022295CC: .word 0x0400000A +_022295D0: .word 0x0400000C +_022295D4: .word 0x0400000E + + arm_func_start MOD13_022295D8 +MOD13_022295D8: ; 0x022295D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x5c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _022296AC ; =0x022430D4 + mov r1, #0 + str r0, [r2] + add r0, sp, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + ldreq r0, _022296B0 ; =0x022430D0 + moveq r2, #0 + streqh r2, [r0] + ldr r0, _022296AC ; =0x022430D4 + ldreq r1, _022296B4 ; =0x022430CC + ldr r0, [r0] + streqb r2, [r1] + bl MOD13_0223333C + ldr r1, _022296AC ; =0x022430D4 + ldr r1, [r1] + strb r0, [r1, #0x51] + bl MOD13_02229478 + bl MOD13_0221F4AC + mov r0, #0x34 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + bl MOD13_022293CC + bl MOD13_02229248 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _022296AC ; =0x022430D4 + ldr r1, _022296B8 ; =MOD13_0222829C + ldr r3, [r2] + mov r2, #0 + str r0, [r3, #0xc] + mov r0, #1 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r1, _022296AC ; =0x022430D4 + ldr r1, [r1] + str r0, [r1, #0x3c] + bl MOD13_02228754 + bl MOD13_02228248 + ldr r0, _022296BC ; =MOD13_022291EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022296AC: .word 0x022430D4 +_022296B0: .word 0x022430D0 +_022296B4: .word 0x022430CC +_022296B8: .word MOD13_0222829C +_022296BC: .word MOD13_022291EC + + arm_func_start MOD13_022296C0 +MOD13_022296C0: ; 0x022296C0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02229704 ; =0x022430D8 + ldr r1, _02229708 ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _0222970C ; =MOD13_02229FD0 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229704: .word 0x022430D8 +_02229708: .word 0xC1FFFCFF +_0222970C: .word MOD13_02229FD0 + + arm_func_start MOD13_02229710 +MOD13_02229710: ; 0x02229710 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _02229744 ; =MOD13_022296C0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229744: .word MOD13_022296C0 + + arm_func_start MOD13_02229748 +MOD13_02229748: ; 0x02229748 + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #1 + bne _02229778 + mov r0, #0x35 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_02229778: + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _022297B0 + ldr r0, _022298E0 ; =0x022430D8 + add sp, sp, #0xc + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {pc} +_022297B0: + ldr r0, [sp, #4] + cmp r0, #1 + bne _022297D8 + ldr r0, _022298E0 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {pc} +_022297D8: + ldr r0, _022298E0 ; =0x022430D8 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_0223BDA4 + cmp r0, #0x10 + bgt _02229838 + cmp r0, #0xa + blt _02229818 + cmp r0, #0xa + beq _02229864 + cmp r0, #0xd + beq _02229858 + cmp r0, #0x10 + beq _02229858 + b _022298D4 +_02229818: + cmp r0, #0 + bgt _0222982C + cmp r0, #0 + beq _02229858 + b _022298D4 +_0222982C: + cmp r0, #5 + beq _02229858 + b _022298D4 +_02229838: + cmp r0, #0x1a + bgt _0222984C + cmp r0, #0x1a + beq _02229864 + b _022298D4 +_0222984C: + cmp r0, #0x20 + beq _02229864 + b _022298D4 +_02229858: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {pc} +_02229864: + cmp r0, #0 + mov r3, #0 + ble _022298C8 + ldr r1, _022298E0 ; =0x022430D8 + ldr r1, [r1] +_02229878: + ldrb r2, [r1, #8] + cmp r2, #0x30 + blo _0222988C + cmp r2, #0x39 + bls _022298B8 +_0222988C: + cmp r2, #0x41 + blo _0222989C + cmp r2, #0x46 + bls _022298B8 +_0222989C: + cmp r2, #0x61 + blo _022298AC + cmp r2, #0x66 + bls _022298B8 +_022298AC: + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_022298B8: + add r3, r3, #1 + cmp r3, r0 + add r1, r1, #1 + blt _02229878 +_022298C8: + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {pc} +_022298D4: + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_022298E0: .word 0x022430D8 + + arm_func_start MOD13_022298E4 +MOD13_022298E4: ; 0x022298E4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02229980 ; =0x0223F260 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp] + str r0, [sp, #4] + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #0xc + ldmneia sp!, {pc} + ldr r0, _02229984 ; =0x022430D8 + ldr r1, [r0] + ldrb r0, [r1, #0x2a] + cmp r0, #0 + bne _02229948 + ldr r3, [r1, #4] + ldr r1, _02229988 ; =0xC1FFFCFF + ldr r2, [r3] + ldr r0, _0222998C ; =MOD13_02229FD0 + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_02229948: + add r0, sp, #8 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, _02229984 ; =0x022430D8 + ldr r2, [sp, #8] + add r1, sp, #0 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _02229990 ; =MOD13_02229B88 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02229980: .word 0x0223F260 +_02229984: .word 0x022430D8 +_02229988: .word 0xC1FFFCFF +_0222998C: .word MOD13_02229FD0 +_02229990: .word MOD13_02229B88 + + arm_func_start MOD13_02229994 +MOD13_02229994: ; 0x02229994 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + ldr r1, _022299F4 ; =0x022430D8 + ldr r2, [r1] + strb r0, [r2, #0x2a] + ldr r0, [r1] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + beq _022299CC + cmp r0, #1 + beq _022299D8 + add sp, sp, #4 + ldmia sp!, {pc} +_022299CC: + mov r0, #7 + bl MOD13_0223424C + b _022299E0 +_022299D8: + mov r0, #0xe + bl MOD13_0223424C +_022299E0: + bl MOD13_02235EB0 + ldr r0, _022299F8 ; =MOD13_022298E4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022299F4: .word 0x022430D8 +_022299F8: .word MOD13_022298E4 + + arm_func_start MOD13_022299FC +MOD13_022299FC: ; 0x022299FC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02229A64 ; =0x022430D8 + ldr r1, [r0] + ldrb r0, [r1, #0x29] + ldr lr, [r1, #4] + ldr r1, _02229A68 ; =0x0223F268 + cmp r0, #0x20 + and r3, r0, #0xf + mov r2, r0, asr #4 + movhs r3, #0xf + ldrb ip, [r1, r3] + ldr r0, _02229A6C ; =0x0223F250 + movhs r2, #1 + ldrb r2, [r0, r2] + ldr r3, [lr] + ldr r1, _02229A70 ; =0xFE00FF00 + ldr r0, _02229A74 ; =0x000001FF + and r1, r3, r1 + and r2, r2, #0xff + and r3, ip, r0 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [lr] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229A64: .word 0x022430D8 +_02229A68: .word 0x0223F268 +_02229A6C: .word 0x0223F250 +_02229A70: .word 0xFE00FF00 +_02229A74: .word 0x000001FF + + arm_func_start MOD13_02229A78 +MOD13_02229A78: ; 0x02229A78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + add r0, sp, #0x10 + mov r1, #0 + strh r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + strh r1, [r0, #6] + ldr r2, _02229B74 ; =0x0223F250 + ldr r0, _02229B78 ; =0x0223F254 + ldrb r4, [r2] + ldrh r3, [r0] + ldrh r2, [r0, #2] + ldr r0, _02229B7C ; =0x022430D8 + strh r4, [sp, #0x12] + ldr r0, [r0] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + ldr r0, [r0] + bl MOD13_0223A4D8 + mov sb, #0 + ldr r0, _02229B74 ; =0x0223F250 + ldr r6, _02229B80 ; =0x0000E01D + ldrb r8, [r0, #1] + ldr fp, _02229B84 ; =0x0223F268 + mov sl, sb + strh sb, [sp, #0x1a] + mov r7, sb + mov r5, #2 + mov r4, #0x480 +_02229AF0: + ldr r0, _02229B7C ; =0x022430D8 + cmp sb, #0x10 + ldr r0, [r0] + moveq sl, r7 + streqh r8, [sp, #0x12] + add r1, r0, sb + ldrb r1, [r1, #8] + ldrb r2, [fp, sl] + cmp r1, #0x20 + streqh r6, [sp, #0x18] + strneh r1, [sp, #0x18] + ldrh r1, [sp, #0x16] + strh r2, [sp, #0x10] + str r1, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + add r1, sp, #0x18 + str r1, [sp, #0xc] + ldrh r1, [sp, #0x10] + ldrh r2, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldr r0, [r0] + bl MOD13_0223A4F0 + add sb, sb, #1 + cmp sb, #0x20 + add sl, sl, #1 + blt _02229AF0 + ldr r0, _02229B7C ; =0x022430D8 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223A410 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02229B74: .word 0x0223F250 +_02229B78: .word 0x0223F254 +_02229B7C: .word 0x022430D8 +_02229B80: .word 0x0000E01D +_02229B84: .word 0x0223F268 + + arm_func_start MOD13_02229B88 +MOD13_02229B88: ; 0x02229B88 + stmdb sp!, {lr} + sub sp, sp, #0xc + bl MOD13_0221EE54 + ldr r0, _02229C74 ; =0x022430D8 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02229C78 ; =0x02240174 + ldr r1, _02229C7C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r0, sp, #0 + add r1, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #0 + bne _02229C0C + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r1, [sp] + mov r0, #0 + bl MOD13_02222F6C + ldr r0, _02229C80 ; =MOD13_0222DD4C + bl MOD13_02222FBC + b _02229C64 +_02229C0C: + ldr r0, _02229C74 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + bne _02229C44 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #1 + mov r1, #0 + bl MOD13_02222F6C + ldr r0, _02229C84 ; =MOD13_022295D8 + bl MOD13_02222FBC + b _02229C64 +_02229C44: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _02229C88 ; =MOD13_0223197C + bl MOD13_02222FBC +_02229C64: + ldr r0, _02229C74 ; =0x022430D8 + bl MOD13_0223AF90 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02229C74: .word 0x022430D8 +_02229C78: .word 0x02240174 +_02229C7C: .word 0x020C9480 +_02229C80: .word MOD13_0222DD4C +_02229C84: .word MOD13_022295D8 +_02229C88: .word MOD13_0223197C + + arm_func_start MOD13_02229C8C +MOD13_02229C8C: ; 0x02229C8C + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02229D50 ; =0x0223F258 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [sp, #4] + str r0, [sp, #8] + bl MOD13_022211C8 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + ldr r0, _02229D54 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x2a] + cmp r0, #0 + bne _02229CDC + ldr r0, _02229D58 ; =MOD13_02229B88 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} +_02229CDC: + cmp r0, #2 + bne _02229D10 + mov ip, #0 + mov r0, #6 + mov r1, #3 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _02229D5C ; =MOD13_02229710 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} +_02229D10: + add r1, sp, #0xc + mov r0, #0 + bl MOD13_02222F44 + mov r0, #0 + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, sp, #4 + ldr r0, [r0, r2, lsl #2] + mov r1, #2 + mov r2, #1 + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02229D60 ; =MOD13_02229994 + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02229D50: .word 0x0223F258 +_02229D54: .word 0x022430D8 +_02229D58: .word MOD13_02229B88 +_02229D5C: .word MOD13_02229710 +_02229D60: .word MOD13_02229994 + + arm_func_start MOD13_02229D64 +MOD13_02229D64: ; 0x02229D64 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02221220 + mov r0, #0x15 + bl MOD13_0223424C + ldr r0, _02229D9C ; =MOD13_02229C8C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229D9C: .word MOD13_02229C8C + + arm_func_start MOD13_02229DA0 +MOD13_02229DA0: ; 0x02229DA0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02229DC0 ; =MOD13_02229D64 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229DC0: .word MOD13_02229D64 + + arm_func_start MOD13_02229DC4 +MOD13_02229DC4: ; 0x02229DC4 + bx lr + + arm_func_start MOD13_02229DC8 +MOD13_02229DC8: ; 0x02229DC8 + stmdb sp!, {r4, lr} + bl MOD13_0222120C + mov r4, r0 + cmp r4, #0x83 + bgt _02229E0C + cmp r4, #0x80 + blt _02229E00 + cmp r4, #0x80 + beq _02229E18 + cmp r4, #0x82 + beq _02229E7C + cmp r4, #0x83 + beq _02229EA0 + b _02229F0C +_02229E00: + cmp r4, #0 + beq _02229F70 + b _02229F0C +_02229E0C: + ldr r0, _02229F7C ; =0x0000E01D + cmp r4, r0 + b _02229F0C +_02229E18: + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + beq _02229F70 + mov r0, #3 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + mov r0, #0 + ldr r3, [r1] + ldrb r2, [r3, #0x29] + sub r2, r2, #1 + strb r2, [r3, #0x29] + ldr r3, [r1] + ldrb r2, [r3, #0x29] + add r2, r3, r2 + strb r0, [r2, #8] + ldr r1, [r1] + ldrb r1, [r1, #0x29] + cmp r1, #0 + bne _02229E70 + bl MOD13_022211F8 +_02229E70: + mov r0, #1 + bl MOD13_022211E4 + b _02229F70 +_02229E7C: + mov r0, #7 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + ldr r0, _02229F84 ; =MOD13_02229DA0 + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x2a] + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02229EA0: + bl MOD13_02229748 + cmp r0, #0 + beq _02229EC8 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02229F80 ; =0x022430D8 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x2a] + b _02229EE0 +_02229EC8: + ldr r0, _02229F80 ; =0x022430D8 + mov r2, #2 + ldr r1, [r0] + mov r0, #9 + strb r2, [r1, #0x2a] + bl MOD13_0223424C +_02229EE0: + ldr r0, _02229F80 ; =0x022430D8 + ldr r1, _02229F88 ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _02229F84 ; =MOD13_02229DA0 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + orr r1, r1, #0x200 + str r1, [r3] + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02229F0C: + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + beq _02229F70 + mov r0, #1 + bl MOD13_0223424C + ldr r1, _02229F80 ; =0x022430D8 + mov r0, #1 + ldr r3, [r1] + ldrb r2, [r3, #0x29] + add r2, r3, r2 + strb r4, [r2, #8] + ldr r2, [r1] + ldrb r1, [r2, #0x29] + add r1, r1, #1 + strb r1, [r2, #0x29] + bl MOD13_022211F8 + ldr r0, _02229F80 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + bne _02229F70 + mov r0, #0 + bl MOD13_022211E4 +_02229F70: + bl MOD13_02229A78 + bl MOD13_022299FC + ldmia sp!, {r4, pc} + .align 2, 0 +_02229F7C: .word 0x0000E01D +_02229F80: .word 0x022430D8 +_02229F84: .word MOD13_02229DA0 +_02229F88: .word 0xC1FFFCFF + + arm_func_start MOD13_02229F8C +MOD13_02229F8C: ; 0x02229F8C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02229DC8 + bl MOD13_02229DC4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222120C + cmp r0, #0xff + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _02229FCC ; =MOD13_02229F8C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02229FCC: .word MOD13_02229F8C + + arm_func_start MOD13_02229FD0 +MOD13_02229FD0: ; 0x02229FD0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222125C + mov r0, #0x14 + bl MOD13_0223424C + ldr r0, _0222A054 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + bne _0222A028 + mov r0, #0 + bl MOD13_022211F8 +_0222A028: + ldr r0, _0222A054 ; =0x022430D8 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0x20 + bne _0222A044 + mov r0, #0 + bl MOD13_022211E4 +_0222A044: + ldr r0, _0222A058 ; =0x02229FA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A054: .word 0x022430D8 +_0222A058: .word 0x02229FA4 + + arm_func_start MOD13_0222A05C +MOD13_0222A05C: ; 0x0222A05C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222A0B4 ; =MOD13_02229FD0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A0B4: .word MOD13_02229FD0 + + arm_func_start MOD13_0222A0B8 +MOD13_0222A0B8: ; 0x0222A0B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222A15C ; =0x0224018C + ldr r1, _0222A160 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _0222A164 ; =0x022401A0 + ldr r1, _0222A168 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222A16C ; =0x022401B8 + ldr r1, _0222A170 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222A174 ; =0x022401D0 + ldr r1, _0222A178 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222A17C ; =0x04001008 + ldr ip, _0222A180 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222A184 ; =0x04000008 + ldr r2, _0222A188 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222A18C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A15C: .word 0x0224018C +_0222A160: .word 0x020C9480 +_0222A164: .word 0x022401A0 +_0222A168: .word 0x020C8D4C +_0222A16C: .word 0x022401B8 +_0222A170: .word 0x020C9550 +_0222A174: .word 0x022401D0 +_0222A178: .word 0x020C908C +_0222A17C: .word 0x04001008 +_0222A180: .word 0x0400100A +_0222A184: .word 0x04000008 +_0222A188: .word 0x0400000A +_0222A18C: .word 0x0400000C + + arm_func_start MOD13_0222A190 +MOD13_0222A190: ; 0x0222A190 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _0222A2B8 ; =0x0223F24C + mov r0, #0x2c + ldrb r3, [r1] + ldrb r2, [r1, #1] + mov r1, #4 + strb r3, [sp] + strb r2, [sp, #1] + bl MOD13_0223AFE0 + ldr r2, _0222A2BC ; =0x022430D8 + add r1, sp, #8 + str r0, [r2] + add r0, sp, #4 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #0 + bne _0222A208 + ldr r0, _0222A2BC ; =0x022430D8 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_02233E90 + ldr r0, _0222A2BC ; =0x022430D8 + mov r1, #0x20 + ldr r0, [r0] + add r0, r0, #8 + bl MOD13_0223BDA4 + ldr r1, _0222A2BC ; =0x022430D8 + ldr r1, [r1] + strb r0, [r1, #0x29] +_0222A208: + bl MOD13_0222A0B8 + ldr r0, [sp, #4] + add r0, r0, #9 + bl MOD13_0221F4CC + ldr r0, [sp, #8] + cmp r0, #1 + bne _0222A238 + mov r0, #0x35 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + b _0222A250 +_0222A238: + ldr r2, [sp, #4] + add r0, sp, #0 + ldrb r0, [r0, r2] + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_0222A250: + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _0222A2BC ; =0x022430D8 + mov r1, #0x3e + ldr r2, [r2] + str r0, [r2] + mov r0, #0 + bl MOD13_02239E54 + ldr r1, _0222A2BC ; =0x022430D8 + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r1, [r0, #4] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + bl MOD13_022299FC + bl MOD13_02229A78 + ldr r0, _0222A2C0 ; =MOD13_0222A05C + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0222A2B8: .word 0x0223F24C +_0222A2BC: .word 0x022430D8 +_0222A2C0: .word MOD13_0222A05C + + arm_func_start MOD13_0222A2C4 +MOD13_0222A2C4: ; 0x0222A2C4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222A308 ; =0x022430DC + ldr r1, _0222A30C ; =0xC1FFFCFF + ldr r2, [r0] + ldr r0, _0222A310 ; =MOD13_0222AD78 + ldr r3, [r2, #4] + ldr r2, [r3] + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A308: .word 0x022430DC +_0222A30C: .word 0xC1FFFCFF +_0222A310: .word MOD13_0222AD78 + + arm_func_start MOD13_0222A314 +MOD13_0222A314: ; 0x0222A314 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222A348 ; =MOD13_0222A2C4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A348: .word MOD13_0222A2C4 + + arm_func_start MOD13_0222A34C +MOD13_0222A34C: ; 0x0222A34C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + ldr r1, _0222A4A8 ; =0x0223F278 + ldr r0, _0222A4AC ; =0x022430DC + ldrb lr, [r1] + ldrb ip, [r1, #1] + ldrb r4, [r1, #2] + ldrb r3, [r1, #3] + mov r2, #0 + strb lr, [sp] + ldr r0, [r0] + strb r4, [sp, #2] + add r5, sp, #0 + mov r1, r2 + strb ip, [sp, #1] + strb r3, [sp, #3] + mov lr, r2 + add r4, r0, #8 +_0222A394: + ldrb r3, [r4, r1] + add r8, r4, r1 + cmp r3, #0x20 + beq _0222A3DC + mov r7, lr + mov r6, r5 +_0222A3AC: + ldrb ip, [r8, r7] + ldrb r3, [r6] + cmp ip, r3 + addhi sp, sp, #0x10 + movhi r0, #0 + ldmhiia sp!, {r4, r5, r6, r7, r8, pc} + cmp ip, r3 + blo _0222A3DC + add r7, r7, #1 + cmp r7, #3 + add r6, r6, #1 + blt _0222A3AC +_0222A3DC: + add r2, r2, #1 + cmp r2, #4 + add r1, r1, #3 + blt _0222A394 + add r1, sp, #8 + add r0, r0, #8 + bl MOD13_02233608 + add r0, sp, #4 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, [sp, #4] + cmp r0, #1 + bne _0222A48C + mov ip, #0 + add r6, sp, #8 + mov r5, ip + mov r3, ip + mov r2, #1 +_0222A424: + mov r4, r3 +_0222A428: + cmp ip, #0 + beq _0222A450 + rsb r0, r4, #7 + ldrb r1, [r6] + mov r0, r2, lsl r0 + ands r0, r1, r0 + beq _0222A464 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0222A450: + rsb r0, r4, #7 + ldrb r1, [r6] + mov r0, r2, lsl r0 + ands r0, r1, r0 + moveq ip, r2 +_0222A464: + add r4, r4, #1 + cmp r4, #8 + blt _0222A428 + add r5, r5, #1 + cmp r5, #4 + add r6, r6, #1 + blt _0222A424 + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0222A48C: + add r0, sp, #8 + bl FUN_02095AE0 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222A4A8: .word 0x0223F278 +_0222A4AC: .word 0x022430DC + + arm_func_start MOD13_0222A4B0 +MOD13_0222A4B0: ; 0x0222A4B0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, #0 + mov r4, r6 + ldr r0, _0222A538 ; =0x022430DC + mov ip, r6 + mov r1, #0x20 + mov r2, #0x30 +_0222A4D0: + ldr r3, [r0] + mov r5, ip + add r3, r3, #8 + add r7, r3, r4 +_0222A4E0: + ldrb r3, [r7, r5] + add lr, r7, r5 + cmp r3, #0x30 + beq _0222A500 + cmp r3, #0x20 + beq _0222A500 + cmp r3, #0 + bne _0222A51C +_0222A500: + cmp r5, #2 + moveq r3, r2 + movne r3, r1 + add r5, r5, #1 + strb r3, [lr] + cmp r5, #3 + blt _0222A4E0 +_0222A51C: + add r6, r6, #1 + cmp r6, #4 + add r4, r4, #3 + blt _0222A4D0 + bl MOD13_0222A6B8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222A538: .word 0x022430DC + + arm_func_start MOD13_0222A53C +MOD13_0222A53C: ; 0x0222A53C + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr lr, _0222A5DC ; =0x0223F2B0 + add ip, sp, #4 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldr r0, [lr] + str r0, [ip] + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #0x1c + ldmneia sp!, {pc} + ldr r0, _0222A5E0 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x15] + cmp r0, #0 + bne _0222A5A4 + ldr r3, [r1, #4] + ldr r1, _0222A5E4 ; =0xC1FFFCFF + ldr r2, [r3] + ldr r0, _0222A5E8 ; =MOD13_0222AD78 + and r1, r2, r1 + str r1, [r3] + bl MOD13_02222FBC + add sp, sp, #0x1c + ldmia sp!, {pc} +_0222A5A4: + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, _0222A5E0 ; =0x022430DC + ldr r2, [sp] + add r1, sp, #4 + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _0222A5EC ; =MOD13_0222A79C + bl MOD13_02222FBC + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_0222A5DC: .word 0x0223F2B0 +_0222A5E0: .word 0x022430DC +_0222A5E4: .word 0xC1FFFCFF +_0222A5E8: .word MOD13_0222AD78 +_0222A5EC: .word MOD13_0222A79C + + arm_func_start MOD13_0222A5F0 +MOD13_0222A5F0: ; 0x0222A5F0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + ldr r1, _0222A650 ; =0x022430DC + ldr r2, [r1] + strb r0, [r2, #0x15] + ldr r0, [r1] + ldrb r0, [r0, #0x15] + cmp r0, #0 + beq _0222A628 + cmp r0, #1 + beq _0222A634 + add sp, sp, #4 + ldmia sp!, {pc} +_0222A628: + mov r0, #7 + bl MOD13_0223424C + b _0222A63C +_0222A634: + mov r0, #0xe + bl MOD13_0223424C +_0222A63C: + bl MOD13_02235EB0 + ldr r0, _0222A654 ; =MOD13_0222A53C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A650: .word 0x022430DC +_0222A654: .word MOD13_0222A53C + + arm_func_start MOD13_0222A658 +MOD13_0222A658: ; 0x0222A658 + ldr r0, _0222A6A8 ; =0x022430DC + ldr r2, [r0] + mov r0, #3 + ldrb r3, [r2, #0x14] + ldr ip, [r2, #4] + cmp r3, #3 + movgt r3, #3 + mul r1, r3, r0 + ldr r0, _0222A6AC ; =0x0223F290 + add r1, r1, #2 + ldrb r3, [r0, r1] + ldr r0, _0222A6B0 ; =0x000001FF + ldr r2, [ip] + ldr r1, _0222A6B4 ; =0xFE00FF00 + and r3, r3, r0 + and r0, r2, r1 + orr r0, r0, #0x28 + orr r0, r0, r3, lsl #16 + str r0, [ip] + bx lr + .align 2, 0 +_0222A6A8: .word 0x022430DC +_0222A6AC: .word 0x0223F290 +_0222A6B0: .word 0x000001FF +_0222A6B4: .word 0xFE00FF00 + + arm_func_start MOD13_0222A6B8 +MOD13_0222A6B8: ; 0x0222A6B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x1c + ldr r0, _0222A78C ; =0x0223F288 + ldr r1, _0222A790 ; =0x0223F27C + ldrh r4, [r0, #4] + ldrh r3, [r0, #6] + ldrh r6, [r0] + ldrh r5, [r0, #2] + ldr r0, _0222A794 ; =0x022430DC + ldrh r2, [r1] + strh r4, [sp, #0x14] + ldrh r1, [r1, #2] + strh r3, [sp, #0x16] + ldr r0, [r0] + strh r6, [sp, #0x10] + strh r5, [sp, #0x12] + strh r2, [sp, #0x14] + strh r1, [sp, #0x16] + ldr r0, [r0] + mov r1, #0 + bl MOD13_0223A4D8 + mov r5, #0 + ldr r4, _0222A798 ; =0x0223F290 + strh r5, [sp, #0x1a] + ldr r6, _0222A794 ; =0x022430DC + add r7, sp, #0x18 + mov sb, #2 + mov r8, #0x480 +_0222A728: + ldr ip, [r6] + ldrh r0, [sp, #0x16] + add r1, ip, r5 + ldrb r1, [r1, #8] + strh r1, [sp, #0x18] + ldrb r1, [r4] + strh r1, [sp, #0x10] + str r0, [sp] + str sb, [sp, #4] + str r8, [sp, #8] + str r7, [sp, #0xc] + ldrh r2, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldr r0, [ip] + bl MOD13_0223A4F0 + add r5, r5, #1 + cmp r5, #0xc + add r4, r4, #1 + blt _0222A728 + ldr r0, _0222A794 ; =0x022430DC + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223A410 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0222A78C: .word 0x0223F288 +_0222A790: .word 0x0223F27C +_0222A794: .word 0x022430DC +_0222A798: .word 0x0223F290 + + arm_func_start MOD13_0222A79C +MOD13_0222A79C: ; 0x0222A79C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EE54 + ldr r0, _0222A834 ; =0x022430DC + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223B974 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222A838 ; =0x022401E4 + ldr r1, _0222A83C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r0, sp, #0 + mov r1, #0 + bl MOD13_02222F44 + ldr r0, [sp] + mov r1, #1 + cmp r0, #3 + addge r0, r0, #1 + strge r0, [sp] + mov r0, #2 + bl MOD13_02222FA8 + ldr r1, [sp] + mov r0, #0 + add r1, r1, #3 + bl MOD13_02222F6C + ldr r0, _0222A840 ; =MOD13_0222DD4C + bl MOD13_02222FBC + ldr r0, _0222A834 ; =0x022430DC + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A834: .word 0x022430DC +_0222A838: .word 0x022401E4 +_0222A83C: .word 0x020C9480 +_0222A840: .word MOD13_0222DD4C + + arm_func_start MOD13_0222A844 +MOD13_0222A844: ; 0x0222A844 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022228BC + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222A8E0 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x15] + cmp r0, #0 + bne _0222A880 + ldr r0, _0222A8E4 ; =MOD13_0222A79C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222A880: + cmp r0, #2 + bne _0222A8B4 + mov ip, #0 + mov r0, #6 + mov r1, #3 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222A8E8 ; =MOD13_0222A314 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222A8B4: + mov ip, #0 + mov r0, #0x47 + mov r1, #2 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222A8EC ; =MOD13_0222A5F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A8E0: .word 0x022430DC +_0222A8E4: .word MOD13_0222A79C +_0222A8E8: .word MOD13_0222A314 +_0222A8EC: .word MOD13_0222A5F0 + + arm_func_start MOD13_0222A8F0 +MOD13_0222A8F0: ; 0x0222A8F0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222928 + mov r0, #0x15 + bl MOD13_0223424C + ldr r0, _0222A928 ; =MOD13_0222A844 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A928: .word MOD13_0222A844 + + arm_func_start MOD13_0222A92C +MOD13_0222A92C: ; 0x0222A92C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222A94C ; =MOD13_0222A8F0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222A94C: .word MOD13_0222A8F0 + + arm_func_start MOD13_0222A950 +MOD13_0222A950: ; 0x0222A950 + bx lr + + arm_func_start MOD13_0222A954 +MOD13_0222A954: ; 0x0222A954 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _0222A9EC ; =0x022430DC + mov r1, #3 + ldr r2, [r2] + mov r4, r0 + ldrb r0, [r2, #0x14] + add r3, r2, #8 + mul r2, r0, r1 + ldrb r1, [r3, r2] + add r0, r3, r2 + cmp r1, #0 + beq _0222A998 + cmp r1, #0x20 + addne sp, sp, #8 + movne r0, #1 + ldmneia sp!, {r4, pc} +_0222A998: + add r1, sp, #0 + mov r2, #3 + bl MI_CpuCopy8 + mov r3, #0 + add r2, sp, #0 + strb r3, [sp, #3] + mov r0, #0x20 +_0222A9B4: + ldrb r1, [r2] + cmp r1, #0 + bne _0222A9D0 + add r3, r3, #1 + cmp r3, #3 + strb r0, [r2], #1 + blt _0222A9B4 +_0222A9D0: + add r0, sp, #0 + bl atol + cmp r0, r4 + movge r0, #1 + movlt r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222A9EC: .word 0x022430DC + + arm_func_start MOD13_0222A9F0 +MOD13_0222A9F0: ; 0x0222A9F0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + bl MOD13_02222914 + mov r4, r0 + cmp r4, #0 + bgt _0222AA18 + cmp r4, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + b _0222ABF4 +_0222AA18: + sub r0, r4, #0x10 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0222ABF4 +_0222AA28: ; jump table + b _0222AA40 ; case 0 + b _0222AAF0 ; case 1 + b _0222AB48 ; case 2 + b _0222AB70 ; case 3 + add sp, sp, #4 ; case 4 + ldmia sp!, {r4, r5, pc} ; case 5 +_0222AA40: + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0222AA60 + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _0222AD18 +_0222AA60: + mov r0, #3 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #3 + ldr r2, [r1] + ldrb r1, [r2, #0x14] + mul r0, r1, r0 + add r0, r0, #2 + add r0, r2, r0 + ldrb r0, [r0, #8] + cmp r0, #0 + subeq r0, r1, #1 + streqb r0, [r2, #0x14] + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #3 + ldr r0, [r0] + mov r1, #0 + ldrb r3, [r0, #0x14] + add r0, r0, #8 + mla r0, r3, r2, r0 + bl MI_CpuFill8 + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0222AADC + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0222AADC + mov r0, #0 + bl MOD13_02222900 +_0222AADC: + mov r0, #1 + bl MOD13_022228EC + mov r0, #0 + bl MOD13_022228D8 + b _0222AD18 +_0222AAF0: + ldr r0, _0222AD28 ; =0x022430DC + ldr r2, [r0] + ldrb r1, [r2, #0x14] + cmp r1, #3 + bhs _0222AD18 + mov r0, #3 + mul r0, r1, r0 + add r0, r0, #2 + add r0, r2, r0 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0222AD18 + mov r0, #1 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #0 + ldr r2, [r1] + ldrb r1, [r2, #0x14] + add r1, r1, #1 + strb r1, [r2, #0x14] + bl MOD13_022228D8 + b _0222AD18 +_0222AB48: + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #0 + ldr r1, [r0] + mov r0, #7 + strb r2, [r1, #0x15] + bl MOD13_0223424C + ldr r0, _0222AD2C ; =MOD13_0222A92C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222AB70: + bl MOD13_0222A34C + cmp r0, #0 + beq _0222AB98 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222AD28 ; =0x022430DC + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x15] + b _0222ABB0 +_0222AB98: + ldr r0, _0222AD28 ; =0x022430DC + mov r2, #2 + ldr r1, [r0] + mov r0, #9 + strb r2, [r1, #0x15] + bl MOD13_0223424C +_0222ABB0: + ldr r1, _0222AD28 ; =0x022430DC + mov r3, #3 + ldr r2, [r1] + ldr r0, _0222AD30 ; =0xC1FFFCFF + strb r3, [r2, #0x14] + ldr r1, [r1] + ldr r2, [r1, #4] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x200 + str r0, [r2] + bl MOD13_0222A658 + bl MOD13_0222A4B0 + ldr r0, _0222AD2C ; =MOD13_0222A92C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222ABF4: + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bne _0222AC18 + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + bne _0222AD18 +_0222AC18: + mov r0, #1 + bl MOD13_0223424C + ldr r1, _0222AD28 ; =0x022430DC + mov r0, #3 + ldr r3, [r1] + ldrb r2, [r3, #0x14] + add r5, r3, #8 + mul lr, r2, r0 + add r0, lr, #2 + ldrb r3, [r5, r0] + add ip, r5, r0 + cmp r3, #0 + streqb r4, [ip] + beq _0222ACBC + add r2, lr, #1 + ldrb r0, [r5, r2] + add r2, r5, r2 + cmp r0, #0 + bne _0222AC98 + strb r3, [r2] + mov r0, #0x1a + strb r4, [ip] + bl MOD13_0222A954 + cmp r0, #0 + beq _0222ACBC + ldr r0, _0222AD28 ; =0x022430DC + ldr r1, [r0] + ldrb r0, [r1, #0x14] + cmp r0, #3 + addlo r0, r0, #1 + strlob r0, [r1, #0x14] + b _0222ACBC +_0222AC98: + strb r0, [r5, lr] + ldrb r0, [ip] + strb r0, [r2] + strb r4, [ip] + ldr r1, [r1] + ldrb r0, [r1, #0x14] + cmp r0, #3 + addlo r0, r0, #1 + strlob r0, [r1, #0x14] +_0222ACBC: + mov r0, #1 + bl MOD13_02222900 + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bhs _0222ACE4 + mov r0, #1 + bl MOD13_022228D8 + b _0222ACEC +_0222ACE4: + mov r0, #0 + bl MOD13_022228D8 +_0222ACEC: + ldr r0, _0222AD28 ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #3 + bne _0222AD18 + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + beq _0222AD18 + mov r0, #0 + bl MOD13_022228EC +_0222AD18: + bl MOD13_0222A6B8 + bl MOD13_0222A658 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222AD28: .word 0x022430DC +_0222AD2C: .word MOD13_0222A92C +_0222AD30: .word 0xC1FFFCFF + + arm_func_start MOD13_0222AD34 +MOD13_0222AD34: ; 0x0222AD34 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222A9F0 + bl MOD13_0222A950 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02222914 + cmp r0, #0x1f + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, _0222AD74 ; =MOD13_0222AD34 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AD74: .word MOD13_0222AD34 + + arm_func_start MOD13_0222AD78 +MOD13_0222AD78: ; 0x0222AD78 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02222964 + mov r0, #0x14 + bl MOD13_0223424C + ldr r0, _0222AE0C ; =0x022430DC + ldr r0, [r0] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _0222ADDC + mov r0, #0 + bl MOD13_02222900 + mov r0, #0 + bl MOD13_022228D8 + b _0222ADFC +_0222ADDC: + mov r0, #0x1a + bl MOD13_0222A954 + cmp r0, #0 + beq _0222ADF4 + mov r0, #0 + bl MOD13_022228EC +_0222ADF4: + mov r0, #0 + bl MOD13_022228D8 +_0222ADFC: + ldr r0, _0222AE10 ; =0x0222AD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AE0C: .word 0x022430DC +_0222AE10: .word 0x0222AD4C + + arm_func_start MOD13_0222AE14 +MOD13_0222AE14: ; 0x0222AE14 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222AE6C ; =MOD13_0222AD78 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AE6C: .word MOD13_0222AD78 + + arm_func_start MOD13_0222AE70 +MOD13_0222AE70: ; 0x0222AE70 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222AF14 ; =0x022401FC + ldr r1, _0222AF18 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _0222AF1C ; =0x02240210 + ldr r1, _0222AF20 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222AF24 ; =0x02240228 + ldr r1, _0222AF28 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222AF2C ; =0x02240240 + ldr r1, _0222AF30 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222AF34 ; =0x04001008 + ldr ip, _0222AF38 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222AF3C ; =0x04000008 + ldr r2, _0222AF40 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222AF44 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222AF14: .word 0x022401FC +_0222AF18: .word 0x020C9480 +_0222AF1C: .word 0x02240210 +_0222AF20: .word 0x020C8D4C +_0222AF24: .word 0x02240228 +_0222AF28: .word 0x020C9550 +_0222AF2C: .word 0x02240240 +_0222AF30: .word 0x020C908C +_0222AF34: .word 0x04001008 +_0222AF38: .word 0x0400100A +_0222AF3C: .word 0x04000008 +_0222AF40: .word 0x0400000A +_0222AF44: .word 0x0400000C + + arm_func_start MOD13_0222AF48 +MOD13_0222AF48: ; 0x0222AF48 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x24 + ldr r7, _0222B0A8 ; =0x0223F29C + ldr ip, _0222B0AC ; =0x0223F280 + ldmia r7!, {r0, r1, r2, r3} + add r6, sp, #0xc + stmia r6!, {r0, r1, r2, r3} + ldrb r5, [ip] + ldrb r4, [ip, #1] + ldrb lr, [ip, #2] + ldrb r3, [ip, #3] + ldrb r2, [ip, #4] + ldr ip, [r7] + mov r0, #0x18 + mov r1, #4 + str ip, [r6] + strb r5, [sp] + strb r4, [sp, #1] + strb lr, [sp, #2] + strb r3, [sp, #3] + strb r2, [sp, #4] + bl MOD13_0223AFE0 + ldr r2, _0222B0B0 ; =0x022430DC + mov r1, #0 + str r0, [r2] + add r0, sp, #8 + bl MOD13_02222F44 + ldr r0, _0222B0B0 ; =0x022430DC + ldr r2, [sp, #8] + add r1, sp, #0xc + ldr r0, [r0] + ldr r1, [r1, r2, lsl #2] + add r0, r0, #8 + blx r1 + ldr r0, _0222B0B0 ; =0x022430DC + ldr r1, _0222B0B4 ; =0x02240258 + ldr r4, [r0] + mov r2, #3 + add r0, r4, #8 + bl memcmp + cmp r0, #0 + movne r0, #3 + strneb r0, [r4, #0x14] + bne _0222B018 + add r0, r4, #8 + mov r1, #0 + mov r2, #0xc + bl MI_CpuFill8 + ldr r0, _0222B0B0 ; =0x022430DC + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x14] +_0222B018: + bl MOD13_0222AE70 + ldr r0, [sp, #8] + add r0, r0, #0xb + bl MOD13_0221F4CC + ldr r2, [sp, #8] + add r0, sp, #0 + ldrb r0, [r0, r2] + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0 + mov r1, r0 + bl MOD13_0223A7F0 + ldr r2, _0222B0B0 ; =0x022430DC + mov r1, #0x3f + ldr r2, [r2] + str r0, [r2] + mov r0, #0 + bl MOD13_02239E54 + ldr r1, _0222B0B0 ; =0x022430DC + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + ldr r1, [r0, #4] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + bl MOD13_0222A658 + bl MOD13_0222A6B8 + ldr r0, _0222B0B8 ; =MOD13_0222AE14 + bl MOD13_02222FBC + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222B0A8: .word 0x0223F29C +_0222B0AC: .word 0x0223F280 +_0222B0B0: .word 0x022430DC +_0222B0B4: .word 0x02240258 +_0222B0B8: .word MOD13_0222AE14 + + arm_func_start MOD13_0222B0BC +MOD13_0222B0BC: ; 0x0222B0BC + ldr r1, _0222B0C8 ; =0x022430E0 + str r0, [r1] + bx lr + .align 2, 0 +_0222B0C8: .word 0x022430E0 + + arm_func_start MOD13_0222B0CC +MOD13_0222B0CC: ; 0x0222B0CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + beq _0222B164 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222B194 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222B164: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #0 + bl MOD13_0222B7F4 + ldr r0, _0222B198 ; =MOD13_0222DD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B194: .word MOD13_02230714 +_0222B198: .word MOD13_0222DD4C + + arm_func_start MOD13_0222B19C +MOD13_0222B19C: ; 0x0222B19C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222B1F4 ; =MOD13_0222B0CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B1F4: .word MOD13_0222B0CC + + arm_func_start MOD13_0222B1F8 +MOD13_0222B1F8: ; 0x0222B1F8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222B21C ; =MOD13_0222B19C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B21C: .word MOD13_0222B19C + + arm_func_start MOD13_0222B220 +MOD13_0222B220: ; 0x0222B220 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222B250 ; =MOD13_0222B1F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B250: .word MOD13_0222B1F8 + + arm_func_start MOD13_0222B254 +MOD13_0222B254: ; 0x0222B254 + bx lr + + arm_func_start MOD13_0222B258 +MOD13_0222B258: ; 0x0222B258 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222B258 + bl MOD13_0222B254 + bl MOD13_0222B220 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222B2D0 ; =0x0222B284 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B2D0: .word 0x0222B284 + + arm_func_start MOD13_0222B2D4 +MOD13_0222B2D4: ; 0x0222B2D4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #4 + bl MOD13_0221F0EC + ldr r0, _0222B31C ; =0x0222B2A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B31C: .word 0x0222B2A0 + + arm_func_start MOD13_0222B320 +MOD13_0222B320: ; 0x0222B320 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222B358 ; =MOD13_0222B2D4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B358: .word MOD13_0222B2D4 + + arm_func_start MOD13_0222B35C +MOD13_0222B35C: ; 0x0222B35C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + add r1, sp, #0x10 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, _0222B690 ; =0x022430E0 + ldr r1, _0222B694 ; =0xFFFFB17D + ldr r0, [r0] + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B698 ; =0xFFFFB17C + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B69C ; =0xFFFFB17B + cmp r0, r1 + movge r4, #0x13 + bge _0222B5B8 + ldr r1, _0222B6A0 ; =0xFFFFB175 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6A4 ; =0xFFFFB174 + cmp r0, r1 + movge r4, #0x12 + bge _0222B5B8 + ldr r1, _0222B6A8 ; =0xFFFFB173 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6AC ; =0xFFFFB172 + cmp r0, r1 + movge r4, #3 + bge _0222B5B8 + ldr r1, _0222B6B0 ; =0xFFFFADF9 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B6B4 ; =0xFFFFA629 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6B8 ; =0xFFFFA241 + cmp r0, r1 + movge r4, #0x13 + bge _0222B5B8 + ldr r1, _0222B6BC ; =0xFFFF3CB1 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6C0 ; =0xFFFF3CAE + cmp r0, r1 + movge r4, #7 + bge _0222B5B8 + ldr r1, _0222B6C4 ; =0xFFFF3CAD + cmp r0, r1 + movge r4, #5 + bge _0222B5B8 + ldr r1, _0222B6C8 ; =0xFFFF3C4E + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6CC ; =0xFFFF3C4D + cmp r0, r1 + blt _0222B478 + ldr r0, [sp, #0x10] + cmp r0, #2 + moveq r4, #5 + movne r4, #7 + b _0222B5B8 +_0222B478: + ldr r1, _0222B6D0 ; =0xFFFF3866 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6D4 ; =0xFFFF3865 + cmp r0, r1 + blt _0222B4A8 + ldr r0, [sp, #0x10] + cmp r0, #2 + moveq r4, #5 + movne r4, #8 + b _0222B5B8 +_0222B4A8: + ldr r1, _0222B6D8 ; =0xFFFF3862 + cmp r0, r1 + movge r4, #9 + bge _0222B5B8 + ldr r1, _0222B6DC ; =0xFFFF3861 + cmp r0, r1 + movge r4, #5 + bge _0222B5B8 + ldr r1, _0222B6E0 ; =0xFFFF3801 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6E4 ; =0xFFFF379D + cmp r0, r1 + movge r4, #0x14 + bge _0222B5B8 + ldr r1, _0222B6E8 ; =0xFFFF379A + cmp r0, r1 + movge r4, #0x15 + bge _0222B5B8 + ldr r1, _0222B6EC ; =0xFFFF3799 + cmp r0, r1 + movge r4, #4 + bge _0222B5B8 + ldr r1, _0222B6F0 ; =0xFFFF34E1 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B6F4 ; =0xFFFF34DE + cmp r0, r1 + movge r4, #0xa + bge _0222B5B8 + ldr r1, _0222B6F8 ; =0xFFFF34DD + cmp r0, r1 + movge r4, #0x16 + bge _0222B5B8 + ldr r1, _0222B6FC ; =0xFFFF347D + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B700 ; =0xFFFF3479 + cmp r0, r1 + movge r4, #0xb + bge _0222B5B8 + ldr r1, _0222B704 ; =0xFFFF3419 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B708 ; =0xFFFF3415 + cmp r0, r1 + movge r4, #0xb + bge _0222B5B8 + ldr r1, _0222B70C ; =0xFFFF33B5 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B710 ; =0xFFFF3351 + cmp r0, r1 + movge r4, #2 + bge _0222B5B8 + ldr r1, _0222B714 ; =0xFFFF30F9 + cmp r0, r1 + movge r4, #0 + bge _0222B5B8 + ldr r1, _0222B718 ; =0xFFFF2FCD + cmp r0, r1 + movge r4, #2 + movlt r4, #0 +_0222B5B8: + bl MOD13_02222F34 + mov r2, r0 + ldr r1, _0222B71C ; =0x0223F2C4 + mov r0, #0 + ldrb r1, [r1, r2] + bl MOD13_0223A7F0 + ldr r1, _0222B720 ; =0x0224307C + mov r5, r0 + ldr r0, [r1] + mov r1, r4 + bl MOD13_02223568 + ldr r1, _0222B690 ; =0x022430E0 + mov r4, r0 + ldr r1, [r1] + ldr r2, _0222B724 ; =0x0224025C + rsb r3, r1, #0 + add r0, sp, #0x14 + mov r1, #8 + bl swprintf + bl MOD13_02222F34 + mov r1, r0, lsl #2 + ldr r0, _0222B728 ; =0x0223F2D6 + ldrh r6, [r0, r1] + bl MOD13_02222F34 + mov r1, r0, lsl #2 + ldr r0, _0222B72C ; =0x0223F2D4 + mov ip, #0xa + ldrh r1, [r0, r1] + add r3, sp, #0x14 + mov r0, #0 + str ip, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + mov r2, r6 + mov r0, r5 + mov r3, #2 + bl MOD13_0223A528 + bl MOD13_0221EF88 + ldr r3, _0222B730 ; =0x0223F2CC + mov r1, #2 + ldrh r2, [r3, #6] + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + mov r0, r5 + bl MOD13_0223A4F0 + mov r0, r5 + bl MOD13_0223A410 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222B690: .word 0x022430E0 +_0222B694: .word 0xFFFFB17D +_0222B698: .word 0xFFFFB17C +_0222B69C: .word 0xFFFFB17B +_0222B6A0: .word 0xFFFFB175 +_0222B6A4: .word 0xFFFFB174 +_0222B6A8: .word 0xFFFFB173 +_0222B6AC: .word 0xFFFFB172 +_0222B6B0: .word 0xFFFFADF9 +_0222B6B4: .word 0xFFFFA629 +_0222B6B8: .word 0xFFFFA241 +_0222B6BC: .word 0xFFFF3CB1 +_0222B6C0: .word 0xFFFF3CAE +_0222B6C4: .word 0xFFFF3CAD +_0222B6C8: .word 0xFFFF3C4E +_0222B6CC: .word 0xFFFF3C4D +_0222B6D0: .word 0xFFFF3866 +_0222B6D4: .word 0xFFFF3865 +_0222B6D8: .word 0xFFFF3862 +_0222B6DC: .word 0xFFFF3861 +_0222B6E0: .word 0xFFFF3801 +_0222B6E4: .word 0xFFFF379D +_0222B6E8: .word 0xFFFF379A +_0222B6EC: .word 0xFFFF3799 +_0222B6F0: .word 0xFFFF34E1 +_0222B6F4: .word 0xFFFF34DE +_0222B6F8: .word 0xFFFF34DD +_0222B6FC: .word 0xFFFF347D +_0222B700: .word 0xFFFF3479 +_0222B704: .word 0xFFFF3419 +_0222B708: .word 0xFFFF3415 +_0222B70C: .word 0xFFFF33B5 +_0222B710: .word 0xFFFF3351 +_0222B714: .word 0xFFFF30F9 +_0222B718: .word 0xFFFF2FCD +_0222B71C: .word 0x0223F2C4 +_0222B720: .word 0x0224307C +_0222B724: .word 0x0224025C +_0222B728: .word 0x0223F2D6 +_0222B72C: .word 0x0223F2D4 +_0222B730: .word 0x0223F2CC + + arm_func_start MOD13_0222B734 +MOD13_0222B734: ; 0x0222B734 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222B7B4 ; =0x02240264 + ldr r1, _0222B7B8 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222B7BC ; =0x04001008 + ldr ip, _0222B7C0 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222B7C4 ; =0x04000008 + ldr r2, _0222B7C8 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222B7CC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B7B4: .word 0x02240264 +_0222B7B8: .word 0x020C908C +_0222B7BC: .word 0x04001008 +_0222B7C0: .word 0x0400100A +_0222B7C4: .word 0x04000008 +_0222B7C8: .word 0x0400000A +_0222B7CC: .word 0x0400000C + + arm_func_start MOD13_0222B7D0 +MOD13_0222B7D0: ; 0x0222B7D0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222B734 + bl MOD13_0222B35C + ldr r0, _0222B7F0 ; =MOD13_0222B320 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B7F0: .word MOD13_0222B320 + + arm_func_start MOD13_0222B7F4 +MOD13_0222B7F4: ; 0x0222B7F4 + ldr r1, _0222B800 ; =0x022430E8 + strb r0, [r1] + bx lr + .align 2, 0 +_0222B800: .word 0x022430E8 + + arm_func_start MOD13_0222B804 +MOD13_0222B804: ; 0x0222B804 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222B82C ; =MOD13_0222DA24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B82C: .word MOD13_0222DA24 + + arm_func_start MOD13_0222B830 +MOD13_0222B830: ; 0x0222B830 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222B874 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD13_02232780 + ldr r0, _0222B878 ; =MOD13_0222B804 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222B874: .word 0x022430F4 +_0222B878: .word MOD13_0222B804 + + arm_func_start MOD13_0222B87C +MOD13_0222B87C: ; 0x0222B87C + stmdb sp!, {r4, lr} + bl MOD13_02234164 + mov r4, r0 + ldrb r0, [r4, #0x40] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldrb r0, [r4, #0xf6] + cmp r0, #0 + bne _0222B8C8 + add r0, r4, #0xc8 + bl FUN_02095AE0 + cmp r0, #0 + bne _0222B8C8 + add r0, r4, #0xcc + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_0222B8C8: + ldrb r0, [r4, #0xf5] + cmp r0, #0 + bne _0222B914 + add r0, r4, #0xc0 + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc4 + bl FUN_02095AE0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0xc0 + add r1, r4, #0xf0 + bl FUN_02095B0C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_0222B914: + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222B91C +MOD13_0222B91C: ; 0x0222B91C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _0222B9D0 ; =0x0223F2F0 + ldr r0, _0222B9D4 ; =0x022430E4 + ldrb ip, [r1] + ldrb r3, [r1, #1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #3] + strb ip, [sp] + ldrb lr, [r0] + add r4, sp, #0 + strb r3, [sp, #1] + strb r2, [sp, #2] + strb r1, [sp, #3] + mov ip, #0 +_0222B958: + ldrb r0, [r4] + cmp lr, r0 + bne _0222B9B8 + ldr r0, _0222B9D8 ; =0x022430F4 + mov r3, #0x14 + ldr r2, [r0] + ands r1, ip, #1 + add r1, r2, ip + strb r3, [r1, #4] + beq _0222B99C + ldr r1, [r0] + sub r0, ip, #1 + add r0, r1, r0 + mov r1, #0 + strb r1, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222B99C: + ldr r1, [r0] + add r0, ip, #1 + add r0, r1, r0 + mov r1, #0 + strb r1, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222B9B8: + add ip, ip, #1 + cmp ip, #4 + add r4, r4, #1 + blt _0222B958 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222B9D0: .word 0x0223F2F0 +_0222B9D4: .word 0x022430E4 +_0222B9D8: .word 0x022430F4 + + arm_func_start MOD13_0222B9DC +MOD13_0222B9DC: ; 0x0222B9DC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r5, _0222BA34 ; =0x022430F4 + mov r4, #0 +_0222B9EC: + ldr r0, [r5] + add r1, r0, r4 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0222BA20 + sub r0, r0, #1 + strb r0, [r1, #4] + ldr r0, [r5] + add r0, r0, r4 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _0222BA20 + bl MOD13_0222CD8C +_0222BA20: + add r4, r4, #1 + cmp r4, #4 + blt _0222B9EC + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222BA34: .word 0x022430F4 + + arm_func_start MOD13_0222BA38 +MOD13_0222BA38: ; 0x0222BA38 + ldr r1, _0222BA64 ; =0x022430E4 + ldr r0, _0222BA68 ; =0x022430F4 + ldrb r2, [r1] + ldr r0, [r0] + ldr r1, _0222BA6C ; =0x0223F2EC + sub r2, r2, #0xb + ldrb r1, [r1, r2] + ldr ip, _0222BA70 ; =MOD13_022327DC + ldr r0, [r0, #0x10] + mov r2, r1 + bx ip + .align 2, 0 +_0222BA64: .word 0x022430E4 +_0222BA68: .word 0x022430F4 +_0222BA6C: .word 0x0223F2EC +_0222BA70: .word MOD13_022327DC + + arm_func_start MOD13_0222BA74 +MOD13_0222BA74: ; 0x0222BA74 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl MOD13_02234164 + ldr r1, _0222BDA0 ; =0x022430E4 + mov r4, #0 + ldrb r2, [r1] + cmp r2, #8 + bne _0222BABC + ldrb r0, [r0, #0xf5] + cmp r0, #0 + bne _0222BABC + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r5, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} +_0222BABC: + cmp r2, #0 + bgt _0222BAD0 + cmp r2, #0 + beq _0222BAF0 + b _0222BC78 +_0222BAD0: + sub r0, r2, #0xa + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0222BC78 +_0222BAE0: ; jump table + b _0222BB20 ; case 0 + b _0222BB5C ; case 1 + b _0222BBD4 ; case 2 + b _0222BBD4 ; case 3 +_0222BAF0: + cmp r5, #1 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #0xb + streqb r1, [r0] + beq _0222BD74 + cmp r5, #3 + ldreq r0, _0222BDA4 ; =0x022430EC + movne r4, #2 + ldreqb r1, [r0] + addeq r1, r1, #1 + streqb r1, [r0] + b _0222BD74 +_0222BB20: + cmp r5, #1 + ldreq r0, _0222BDA4 ; =0x022430EC + ldreqb r1, [r0] + subeq r1, r1, #1 + streqb r1, [r0] + beq _0222BD74 + cmp r5, #3 + movne r4, #2 + bne _0222BD74 + ldr r1, _0222BDA8 ; =0x022430F4 + ldr r0, _0222BDA0 ; =0x022430E4 + ldr r1, [r1] + ldrb r1, [r1, #0x42] + strb r1, [r0] + b _0222BD74 +_0222BB5C: + cmp r5, #1 + bne _0222BB9C + ldr r0, _0222BDA8 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222BDA8 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {r4, r5, pc} +_0222BB9C: + cmp r5, #3 + movne r4, #2 + bne _0222BD74 + ldr r2, _0222BDA0 ; =0x022430E4 + mov r3, #0 + ldr r1, _0222BDA4 ; =0x022430EC + ldr r0, _0222BDAC ; =0x022430F0 + strb r3, [r2] + strb r3, [r1] + strh r3, [r0] + bl MOD13_0222CD8C + mov r0, #0 + bl MOD13_02232F44 + b _0222BD74 +_0222BBD4: + ldr r0, _0222BDA8 ; =0x022430F4 + cmp r5, #1 + ldr r1, [r0] + strb r2, [r1, #0x42] + bne _0222BC1C + ldr r2, _0222BDA0 ; =0x022430E4 + mov ip, #0xa + ldr r1, _0222BDA4 ; =0x022430EC + mov r5, #3 + ldr r0, _0222BDAC ; =0x022430F0 + mov r3, #0x91 + strb ip, [r2] + strb r5, [r1] + strh r3, [r0] + bl MOD13_0222CD8C + mov r0, #0x37 + bl MOD13_02232F44 + b _0222BD74 +_0222BC1C: + cmp r5, #3 + bne _0222BC58 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222BDA8 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {r4, r5, pc} +_0222BC58: + cmp r2, #0xc + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #0xd + streqb r1, [r0] + ldrne r0, _0222BDA0 ; =0x022430E4 + movne r1, #0xc + strneb r1, [r0] + b _0222BD74 +_0222BC78: + cmp r5, #1 + bne _0222BCC8 + ldr r0, _0222BDA4 ; =0x022430EC + ldrb r1, [r0] + cmp r1, #0 + subne r1, r1, #1 + strneb r1, [r0] + bne _0222BD74 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222BDB0 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222BDA8 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, r5, pc} +_0222BCC8: + cmp r5, #3 + bne _0222BD18 + ldr r0, _0222BDA4 ; =0x022430EC + ldrb r1, [r0] + cmp r1, #3 + addlo r1, r1, #1 + strlob r1, [r0] + blo _0222BD74 + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222BDB4 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222BDA8 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {r4, r5, pc} +_0222BD18: + cmp r2, #2 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #3 + mov r4, #2 + streqb r1, [r0] + beq _0222BD68 + cmp r2, #3 + ldreq r0, _0222BDA0 ; =0x022430E4 + streqb r4, [r0] + beq _0222BD68 + cmp r2, #7 + ldreq r0, _0222BDA0 ; =0x022430E4 + moveq r1, #8 + streqb r1, [r0] + beq _0222BD68 + cmp r2, #8 + bne _0222BD74 + ldr r0, _0222BDA0 ; =0x022430E4 + mov r1, #7 + strb r1, [r0] +_0222BD68: + mov r0, #8 + bl MOD13_0223424C + bl MOD13_0222BEC0 +_0222BD74: + cmp r4, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #8 + bl MOD13_0223424C + cmp r4, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_0222BDF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222BDA0: .word 0x022430E4 +_0222BDA4: .word 0x022430EC +_0222BDA8: .word 0x022430F4 +_0222BDAC: .word 0x022430F0 +_0222BDB0: .word MOD13_0222C0E8 +_0222BDB4: .word MOD13_0222C03C + + arm_func_start MOD13_0222BDB8 +MOD13_0222BDB8: ; 0x0222BDB8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222BDE8 ; =0x022430E4 + ldr r2, _0222BDEC ; =0x0223F32C + strb r0, [r1] + ldrb r0, [r2, r0] + bl MOD13_0222C1F4 + ldr r1, _0222BDF0 ; =0x022430EC + strb r0, [r1] + bl MOD13_0222BEC0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222BDE8: .word 0x022430E4 +_0222BDEC: .word 0x0223F32C +_0222BDF0: .word 0x022430EC + + arm_func_start MOD13_0222BDF4 +MOD13_0222BDF4: ; 0x0222BDF4 + stmdb sp!, {r4, lr} + ldr r0, _0222BEB0 ; =0x022430E4 + ldrb r0, [r0] + add r0, r0, #0xf5 + and r0, r0, #0xff + cmp r0, #2 + bhi _0222BE18 + bl MOD13_0222BEC0 + ldmia sp!, {r4, pc} +_0222BE18: + bl MOD13_02234164 + ldr r1, _0222BEB4 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + ldr r1, _0222BEB8 ; =0x022430EC + ldrb r1, [r1] + add r2, r1, r0 + cmp r2, #2 + beq _0222BE50 + cmp r2, #6 + beq _0222BE74 + b _0222BE98 +_0222BE50: + ldrb r0, [r4, #0xf5] + cmp r0, #0 + ldrne r0, _0222BEB0 ; =0x022430E4 + movne r1, #2 + strneb r1, [r0] + ldreq r0, _0222BEB0 ; =0x022430E4 + moveq r1, #3 + streqb r1, [r0] + b _0222BEA8 +_0222BE74: + ldrb r0, [r4, #0xf6] + cmp r0, #0 + ldrne r0, _0222BEB0 ; =0x022430E4 + movne r1, #7 + strneb r1, [r0] + ldreq r0, _0222BEB0 ; =0x022430E4 + moveq r1, #8 + streqb r1, [r0] + b _0222BEA8 +_0222BE98: + ldr r1, _0222BEBC ; =0x0223F314 + ldr r0, _0222BEB0 ; =0x022430E4 + ldrb r1, [r1, r2] + strb r1, [r0] +_0222BEA8: + bl MOD13_0222BEC0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222BEB0: .word 0x022430E4 +_0222BEB4: .word 0x022430F0 +_0222BEB8: .word 0x022430EC +_0222BEBC: .word 0x0223F314 + + arm_func_start MOD13_0222BEC0 +MOD13_0222BEC0: ; 0x0222BEC0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _0222BF90 ; =0x0223F338 + add r3, sp, #8 + mov r2, #7 +_0222BED4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _0222BED4 + ldr r0, _0222BF94 ; =0x022430E4 + add r1, sp, #8 + ldrb r0, [r0] + ldrb r2, [r1, r0] + cmp r2, #3 + blt _0222BF30 + mov r3, r2, lsl #3 + ldr r1, _0222BF98 ; =0x0223F3CC + ldr r2, _0222BF9C ; =0x0223F3D0 + ldr r0, _0222BFA0 ; =0x0223F3CE + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldrh r3, [r0, r3] + mov r0, #3 + bl MOD13_0221F348 + add sp, sp, #0x1c + ldmia sp!, {pc} +_0222BF30: + ldr r0, _0222BF98 ; =0x0223F3CC + mov r1, r2, lsl #3 + add lr, r0, r2, lsl #3 + ldrh ip, [r0, r1] + ldrh r1, [lr, #2] + ldr r0, _0222BFA4 ; =0x022430EC + ldrh r3, [lr, #4] + strh r1, [sp, #2] + ldrh r2, [sp, #2] + ldrb r1, [r0] + mov r0, #0x1d + strh ip, [sp] + mla r0, r1, r0, r2 + strh r3, [sp, #4] + strh r0, [sp, #2] + ldrh ip, [lr, #6] + ldrh r1, [sp] + ldrh r2, [sp, #4] + ldrh r3, [sp, #2] + mov r0, #1 + strh ip, [sp, #6] + bl MOD13_0221F348 + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_0222BF90: .word 0x0223F338 +_0222BF94: .word 0x022430E4 +_0222BF98: .word 0x0223F3CC +_0222BF9C: .word 0x0223F3D0 +_0222BFA0: .word 0x0223F3CE +_0222BFA4: .word 0x022430EC + + arm_func_start MOD13_0222BFA8 +MOD13_0222BFA8: ; 0x0222BFA8 + stmdb sp!, {r4, lr} + ldr r0, _0222C024 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x44] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _0222C028 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C028 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_ModS32 + ldr r1, _0222C02C ; =0x01FF0000 + sub ip, r0, #0x33 + ldr r2, _0222C030 ; =0x04000010 + and r3, r1, ip, lsl #16 + ldr r0, _0222C034 ; =0x0223F320 + str r3, [r2] + ldrb r3, [r0, r4] + ldr r2, _0222C038 ; =0x04000018 + ldr r0, _0222C024 ; =0x022430F4 + add r3, ip, r3 + and r1, r1, r3, lsl #16 + str r1, [r2] + ldr r0, [r0] + mov r1, #0 + strb r1, [r0, #0x44] + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C024: .word 0x022430F4 +_0222C028: .word 0x022430F0 +_0222C02C: .word 0x01FF0000 +_0222C030: .word 0x04000010 +_0222C034: .word 0x0223F320 +_0222C038: .word 0x04000018 + + arm_func_start MOD13_0222C03C +MOD13_0222C03C: ; 0x0222C03C + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _0222C0DC ; =0x022430F0 + mov r1, #0x1d + ldrh r2, [r0] + add r2, r2, #6 + strh r2, [r0] + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #6 + blt _0222C078 + bl MOD13_0222C4C8 + ldmia sp!, {r4, pc} +_0222C078: + ldr r1, _0222C0DC ; =0x022430F0 + ldrh r2, [r1] + sub r0, r2, r0 + strh r0, [r1] + bl MOD13_0222CD8C + ldr r1, _0222C0DC ; =0x022430F0 + mov r0, #0x37 + ldrh r1, [r1] + ldr r2, _0222C0E0 ; =0xE1FC780F + mul r3, r1, r0 + smull r1, r0, r2, r3 + add r0, r3, r0 + mov r0, r0, asr #7 + mov r1, r3, lsr #0x1f + add r0, r1, r0 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_0222BDF4 + ldr r0, _0222C0E4 ; =0x022430F4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C0DC: .word 0x022430F0 +_0222C0E0: .word 0xE1FC780F +_0222C0E4: .word 0x022430F4 + + arm_func_start MOD13_0222C0E8 +MOD13_0222C0E8: ; 0x0222C0E8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02232F14 + bl MOD13_0221F21C + ldr r0, _0222C1C4 ; =0x022430F0 + ldrh r1, [r0] + cmp r1, #6 + subhi r1, r1, #6 + strhih r1, [r0] + movls r1, #0 + strlsh r1, [r0] + ldr r0, _0222C1C4 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_ModS32 + mov r5, r0 + cmp r5, #0x17 + bne _0222C140 + bl MOD13_0222CD8C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0222C140: + cmp r5, #0x17 + ble _0222C160 + ldr r0, _0222C1C4 ; =0x022430F0 + rsb r1, r5, #0x1d + ldrh r2, [r0] + mov r5, #0 + add r1, r2, r1 + strh r1, [r0] +_0222C160: + bl MOD13_0222C4C8 + cmp r5, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222C1C4 ; =0x022430F0 + mov r0, #0x37 + ldrh r1, [r1] + ldr r2, _0222C1C8 ; =0xE1FC780F + mul r3, r1, r0 + smull r1, r0, r2, r3 + add r0, r3, r0 + mov r0, r0, asr #7 + mov r1, r3, lsr #0x1f + add r0, r1, r0 + bl MOD13_02232F44 + bl MOD13_02232F2C + bl MOD13_0222BDF4 + ldr r0, _0222C1CC ; =0x022430F4 + mov r1, r4 + ldr r2, [r0] + mov r0, #0 + str r0, [r2, #0x38] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222C1C4: .word 0x022430F0 +_0222C1C8: .word 0xE1FC780F +_0222C1CC: .word 0x022430F4 + + arm_func_start MOD13_0222C1D0 +MOD13_0222C1D0: ; 0x0222C1D0 + stmdb sp!, {r4, lr} + ldr r1, _0222C1F0 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + add r0, r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C1F0: .word 0x022430F0 + + arm_func_start MOD13_0222C1F4 +MOD13_0222C1F4: ; 0x0222C1F4 + stmdb sp!, {r4, lr} + ldr r1, _0222C234 ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_DivS32 + mov r1, #0 +_0222C210: + cmp r0, r4 + moveq r0, r1 + ldmeqia sp!, {r4, pc} + add r1, r1, #1 + cmp r1, #4 + add r0, r0, #1 + blt _0222C210 + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C234: .word 0x022430F0 + + arm_func_start MOD13_0222C238 +MOD13_0222C238: ; 0x0222C238 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r0, _0222C4AC ; =0x0223F75C + bl MOD13_0223B2B4 + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0xe + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C4B4 ; =0x0223F2FC + add r4, sp, #0 + ldrh ip, [r1] + ldrh r3, [r1, #2] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mov r5, r0 + strh ip, [sp] + strh r3, [sp, #2] + strh r2, [sp, #4] + strh r1, [sp, #6] + mov r6, #0 +_0222C298: + cmp r5, #2 + beq _0222C2C4 + cmp r5, #6 + beq _0222C2C4 + mov r0, r4 + bl MOD13_0223B194 + cmp r0, #0 + ldrne r0, _0222C4B8 ; =0x0223F314 + addne sp, sp, #8 + ldrneb r0, [r0, r5] + ldmneia sp!, {r4, r5, r6, pc} +_0222C2C4: + ldrh r0, [sp, #2] + add r6, r6, #1 + cmp r6, #4 + add r0, r0, #0x1d + strh r0, [sp, #2] + add r5, r5, #1 + blt _0222C298 + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + mov r3, #0 +_0222C2F4: + cmp r0, #2 + bne _0222C398 + ldr r1, _0222C4BC ; =0x0223F30C + mov r0, #0x1d + ldrh r2, [r1, #2] + mul r4, r3, r0 + strh r2, [sp, #2] + ldrh r5, [r1] + ldrh r3, [r1, #4] + ldrh r2, [r1, #6] + ldrh r0, [sp, #2] + strh r5, [sp] + strh r3, [sp, #4] + add r1, r0, r4 + add r0, sp, #0 + strh r2, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0222C4C0 ; =0x0223F304 + add r0, sp, #0 + ldrh r2, [r1, #2] + ldrh ip, [r1] + ldrh r5, [r1, #4] + strh r2, [sp, #2] + ldrh r3, [r1, #6] + ldrh r2, [sp, #2] + strh ip, [sp] + strh r5, [sp, #4] + add r1, r2, r4 + strh r3, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + beq _0222C3A8 + add sp, sp, #8 + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_0222C398: + add r3, r3, #1 + cmp r3, #4 + add r0, r0, #1 + blt _0222C2F4 +_0222C3A8: + ldr r0, _0222C4B0 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + mov r3, #0 +_0222C3BC: + cmp r0, #6 + bne _0222C460 + ldr r1, _0222C4BC ; =0x0223F30C + mov r0, #0x1d + ldrh r2, [r1, #2] + mul r4, r3, r0 + strh r2, [sp, #2] + ldrh r5, [r1] + ldrh r3, [r1, #4] + ldrh r2, [r1, #6] + ldrh r0, [sp, #2] + strh r5, [sp] + strh r3, [sp, #4] + add r1, r0, r4 + add r0, sp, #0 + strh r2, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #7 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, _0222C4C0 ; =0x0223F304 + add r0, sp, #0 + ldrh r2, [r1, #2] + ldrh ip, [r1] + ldrh r5, [r1, #4] + strh r2, [sp, #2] + ldrh r3, [r1, #6] + ldrh r2, [sp, #2] + strh ip, [sp] + strh r5, [sp, #4] + add r1, r2, r4 + strh r3, [sp, #6] + strh r1, [sp, #2] + bl MOD13_0223B194 + cmp r0, #0 + beq _0222C470 + add sp, sp, #8 + mov r0, #8 + ldmia sp!, {r4, r5, r6, pc} +_0222C460: + add r3, r3, #1 + cmp r3, #4 + add r0, r0, #1 + blt _0222C3BC +_0222C470: + ldr r5, _0222C4C4 ; =0x0223F3B4 + mov r4, #0 +_0222C478: + mov r0, r5 + bl MOD13_0223B2B4 + cmp r0, #0 + addne sp, sp, #8 + addne r0, r4, #0xb + ldmneia sp!, {r4, r5, r6, pc} + add r4, r4, #1 + cmp r4, #3 + add r5, r5, #8 + blt _0222C478 + mov r0, #0xe + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C4AC: .word 0x0223F75C +_0222C4B0: .word 0x022430F0 +_0222C4B4: .word 0x0223F2FC +_0222C4B8: .word 0x0223F314 +_0222C4BC: .word 0x0223F30C +_0222C4C0: .word 0x0223F304 +_0222C4C4: .word 0x0223F3B4 + + arm_func_start MOD13_0222C4C8 +MOD13_0222C4C8: ; 0x0222C4C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r0, _0222C6EC ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222C6EC ; =0x022430F0 + mov r4, r0 + ldrh r0, [r1] + mov r1, #0x1d + bl FX_ModS32 + ldr r1, _0222C6F0 ; =0x022430F4 + rsb ip, r0, #0x34 + ldr r1, [r1] + ldr r0, [r1, #0x34] + cmp r0, #0 + beq _0222C54C + cmp r4, #0 + moveq r0, #0x26 + streq r0, [sp] + movne r0, #0x100 + strne r0, [sp] + ldr r5, [r1, #0x34] + ldr r1, _0222C6F4 ; =0xFE00FF00 + ldr r2, [r5] + ldr r3, [sp] + ldr r0, _0222C6F8 ; =0x000001FF + and r2, r2, r1 + and r1, ip, #0xff + and r3, r3, r0 + orr r0, r2, r1 + orr r0, r0, r3, lsl #16 + str r0, [r5] +_0222C54C: + mov r3, ip + mov r2, #0 + ldr r7, _0222C6F0 ; =0x022430F4 + ldr lr, _0222C6FC ; =0x01FF0000 + ldr r5, _0222C6F8 ; =0x000001FF + ldr r6, _0222C6F4 ; =0xFE00FF00 +_0222C564: + ldr r0, [r7] + and r8, r3, #0xff + add r1, r0, r2, lsl #2 + ldr r0, [r1, #0x18] + add r2, r2, #1 + ldr sb, [r0] + cmp r2, #5 + and sl, sb, lr + mov sb, sl, lsr #0x10 + str sb, [sp] + ldr sb, [r0] + and r0, r5, sl, lsr #16 + and sb, sb, #0xff + str sb, [sp, #4] + ldr r1, [r1, #0x18] + add r3, r3, #0x1d + ldr sb, [r1] + and sb, sb, r6 + orr r8, sb, r8 + orr r0, r8, r0, lsl #16 + str r0, [r1] + blt _0222C564 + cmp r4, #2 + bgt _0222C624 + ldr r6, [r7] + ldr r0, _0222C6FC ; =0x01FF0000 + ldr r5, [r6, #0x2c] + rsb r2, r4, #2 + ldr r3, [r5] + mov r1, #0x1d + and r0, r3, r0 + mov r3, r0, lsr #0x10 + str r3, [sp] + ldr r5, [r5] + mla r3, r2, r1, ip + and r1, r5, #0xff + str r1, [sp, #4] + ldr r6, [r6, #0x2c] + ldr r1, _0222C6F8 ; =0x000001FF + ldr r5, [r6] + ldr r2, _0222C6F4 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r5, r2 + and r1, r1, r0, lsr #16 + orr r0, r2, r3 + orr r0, r0, r1, lsl #16 + str r0, [r6] + b _0222C640 +_0222C624: + ldr r1, [r7] + ldr r0, _0222C6F4 ; =0xFE00FF00 + ldr r2, [r1, #0x2c] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] +_0222C640: + cmp r4, #2 + blt _0222C6B4 + cmp r4, #6 + bgt _0222C6B4 + ldr r0, _0222C6F0 ; =0x022430F4 + ldr r1, _0222C6FC ; =0x01FF0000 + ldr r0, [r0] + rsb r3, r4, #6 + ldr r6, [r0, #0x30] + mov r2, #0x1d + ldr r4, [r6] + mla r2, r3, r2, ip + and r5, r4, r1 + mov r1, r5, lsr #0x10 + str r1, [sp] + ldr r3, [r6] + ldr r1, _0222C6F4 ; =0xFE00FF00 + and r3, r3, #0xff + str r3, [sp, #4] + ldr r4, [r0, #0x30] + ldr r0, _0222C6F8 ; =0x000001FF + ldr r3, [r4] + and r2, r2, #0xff + and r1, r3, r1 + and r3, r0, r5, lsr #16 + orr r0, r1, r2 + orr r0, r0, r3, lsl #16 + str r0, [r4] + b _0222C6D4 +_0222C6B4: + ldr r1, _0222C6F0 ; =0x022430F4 + ldr r0, _0222C6F4 ; =0xFE00FF00 + ldr r1, [r1] + ldr r2, [r1, #0x30] + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] +_0222C6D4: + ldr r0, _0222C6F0 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x44] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0222C6EC: .word 0x022430F0 +_0222C6F0: .word 0x022430F4 +_0222C6F4: .word 0xFE00FF00 +_0222C6F8: .word 0x000001FF +_0222C6FC: .word 0x01FF0000 + + arm_func_start MOD13_0222C700 +MOD13_0222C700: ; 0x0222C700 + stmdb sp!, {r4, lr} + sub sp, sp, #0x30 + mov ip, r0 + ldrb r2, [ip, #1] + mov r4, r1 + add r0, sp, #0xc + str r2, [sp] + ldrb r3, [ip, #2] + ldr r2, _0222C780 ; =0x02240278 + mov r1, #0x10 + str r3, [sp, #4] + ldrb r3, [ip, #3] + str r3, [sp, #8] + ldrb r3, [ip] + bl swprintf + mov r2, #7 + mov r0, #0x1d + mul r1, r4, r0 + str r2, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r2, #1 + str r2, [sp, #8] + ldr r0, _0222C784 ; =0x022430F4 + add r2, r1, #8 + ldr r0, [r0] + mov r1, #0x5f + ldr r0, [r0, #0x14] + mov r3, #2 + bl MOD13_0223A528 + add sp, sp, #0x30 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222C780: .word 0x02240278 +_0222C784: .word 0x022430F4 + + arm_func_start MOD13_0222C788 +MOD13_0222C788: ; 0x0222C788 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x30 + mov r6, r0 + mov r4, r1 + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + mov r0, r6 + mov r1, #0x20 + bl MOD13_0223BDA4 + mov r5, r0 + cmp r5, #0x10 + movle lr, r5 + movgt lr, #0x10 + cmp lr, #0 + mov ip, #0 + ble _0222C7FC + ldr r2, _0222C8DC ; =0x0000E01D + add r1, sp, #0xc +_0222C7D8: + ldrb r3, [r6, ip] + cmp r3, #0x20 + moveq r0, ip, lsl #1 + streqh r2, [r1, r0] + movne r0, ip, lsl #1 + add ip, ip, #1 + strneh r3, [r1, r0] + cmp ip, lr + blt _0222C7D8 +_0222C7FC: + mov r0, #0x1d + mul r0, r4, r0 + mov r1, #8 + add r4, r0, #2 + str r1, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, _0222C8E0 ; =0x022430F4 + cmp r5, #0x10 + ldr r0, [r0] + addle r4, r4, #5 + ldr r0, [r0, #0x14] + mov r2, r4 + mov r1, #0x48 + mov r3, #2 + bl MOD13_0223A528 + cmp r5, #0x10 + addle sp, sp, #0x30 + ldmleia sp!, {r4, r5, r6, pc} + add r0, sp, #0xc + mov r1, #0 + mov r2, #0x22 + bl MI_CpuFill8 + sub ip, r5, #0x10 + cmp ip, #0 + mov r5, #0 + ble _0222C8A0 + ldr r2, _0222C8DC ; =0x0000E01D + add r1, sp, #0xc +_0222C878: + add r0, r5, #0x10 + ldrb r3, [r6, r0] + cmp r3, #0x20 + moveq r0, r5, lsl #1 + streqh r2, [r1, r0] + movne r0, r5, lsl #1 + add r5, r5, #1 + strneh r3, [r1, r0] + cmp r5, ip + blt _0222C878 +_0222C8A0: + mov r1, #8 + str r1, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + ldr r0, _0222C8E0 ; =0x022430F4 + add r2, r4, #0xc + ldr r0, [r0] + mov r1, #0x48 + ldr r0, [r0, #0x14] + mov r3, #2 + bl MOD13_0223A528 + add sp, sp, #0x30 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C8DC: .word 0x0000E01D +_0222C8E0: .word 0x022430F4 + + arm_func_start MOD13_0222C8E4 +MOD13_0222C8E4: ; 0x0222C8E4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r5, _0222C9EC ; =0x0223F2FC + ldr r4, _0222C9F0 ; =0x0223F30C + ldr r3, _0222C9F4 ; =0x0223F304 + ldrh ip, [r4] + ldrh r4, [r3] + ldr r3, _0222C9F8 ; =0x022430F4 + ldrh lr, [r5] + ldr r3, [r3] + mov r6, r0 + add r3, r3, #0x18 + sub r0, r6, #1 + mov r5, r1 + strh lr, [sp] + strh ip, [sp, #2] + strh ip, [sp, #4] + strh r4, [sp, #6] + strh r4, [sp, #8] + cmp r0, #1 + add r4, r3, r2, lsl #2 + bhi _0222C960 + mov r0, r2 + bl MOD13_0222C1D0 + cmp r0, #2 + ldreq r0, _0222C9F8 ; =0x022430F4 + ldreq r0, [r0] + addeq r4, r0, #0x2c + ldrne r0, _0222C9F8 ; =0x022430F4 + ldrne r0, [r0] + addne r4, r0, #0x30 +_0222C960: + ldr r1, _0222C9FC ; =0x0223F348 + mov r0, #3 + mla r0, r6, r0, r1 + ldrb r1, [r5, r0] + cmp r1, #0 + beq _0222C9CC + ldr r2, [r4] + mov r0, #0 + bl MOD13_02239E8C + ldr r5, [r4] + add r0, sp, #0 + mov r1, r6, lsl #1 + ldrh r3, [r0, r1] + ldr r0, _0222CA00 ; =0x000001FF + ldr r2, [r5] + ldr r1, _0222CA04 ; =0xFE00FF00 + and r3, r3, r0 + and r0, r2, r1 + orr r0, r0, r3, lsl #16 + str r0, [r5] + ldr r1, [r4] + add sp, sp, #0x10 + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + ldmia sp!, {r4, r5, r6, pc} +_0222C9CC: + ldr r2, [r4] + ldr r0, _0222CA04 ; =0xFE00FF00 + ldr r1, [r2] + and r0, r1, r0 + orr r0, r0, #0x1000000 + str r0, [r2] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222C9EC: .word 0x0223F2FC +_0222C9F0: .word 0x0223F30C +_0222C9F4: .word 0x0223F304 +_0222C9F8: .word 0x022430F4 +_0222C9FC: .word 0x0223F348 +_0222CA00: .word 0x000001FF +_0222CA04: .word 0xFE00FF00 + + arm_func_start MOD13_0222CA08 +MOD13_0222CA08: ; 0x0222CA08 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02234164 + cmp r4, #0xa + mov r1, #1 + addls pc, pc, r4, lsl #2 + b _0222CA94 +_0222CA24: ; jump table + b _0222CA60 ; case 0 + b _0222CA60 ; case 1 + b _0222CA94 ; case 2 + b _0222CA94 ; case 3 + b _0222CA78 ; case 4 + b _0222CA78 ; case 5 + b _0222CA78 ; case 6 + b _0222CA50 ; case 7 + b _0222CA94 ; case 8 + b _0222CA88 ; case 9 + b _0222CA88 ; case 10 +_0222CA50: + ldrb r0, [r0, #0xf5] + cmp r0, #0 + moveq r1, #0 + b _0222CA94 +_0222CA60: + ldrb r0, [r0, #0xe7] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #1 + movls r1, #0 + b _0222CA94 +_0222CA78: + ldrb r0, [r0, #0xf5] + cmp r0, #0 + movne r1, #0 + b _0222CA94 +_0222CA88: + ldrb r0, [r0, #0xf6] + cmp r0, #0 + movne r1, #0 +_0222CA94: + mov r0, r1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222CA9C +MOD13_0222CA9C: ; 0x0222CA9C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + bl MOD13_02234164 + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222CBD0 +_0222CAB8: ; jump table + b _0222CADC ; case 0 + b _0222CADC ; case 1 + b _0222CAF8 ; case 2 + b _0222CB44 ; case 3 + b _0222CB44 ; case 4 + b _0222CB44 ; case 5 + b _0222CB5C ; case 6 + b _0222CBB8 ; case 7 + b _0222CBB8 ; case 8 +_0222CADC: + mov r5, #0 + mov r0, r5 + mov r4, r5 + bl MOD13_0222CA08 + cmp r0, #0 + moveq r4, #2 + b _0222CBD8 +_0222CAF8: + ldr r2, _0222CBEC ; =0x022430F4 + ldrb r0, [r0, #0xf5] + ldr r3, [r2] + mov r1, #0 + ldrb r2, [r3, #4] + cmp r0, #0 + movne r5, #1 + movne r0, #4 + moveq r5, #2 + moveq r0, #3 + cmp r2, #0 + mov r4, r1 + ldrb r2, [r3, #5] + movne r4, #1 + cmp r2, #0 + movne r1, #1 + mov r2, r6 + bl MOD13_0222C8E4 + b _0222CBD8 +_0222CB44: + ldrb r0, [r0, #0xf5] + mov r5, #0 + cmp r0, #0 + movne r4, #2 + moveq r4, r5 + b _0222CBD8 +_0222CB5C: + ldrb r2, [r0, #0xf6] + mov r1, #0 + mov r4, r1 + cmp r2, #0 + movne r5, #1 + movne r0, #4 + bne _0222CB8C + ldrb r0, [r0, #0xf5] + mov r5, #2 + cmp r0, #0 + moveq r4, #2 + mov r0, #3 +_0222CB8C: + ldr r2, _0222CBEC ; =0x022430F4 + ldr r3, [r2] + ldrb r2, [r3, #6] + cmp r2, #0 + ldrb r2, [r3, #7] + movne r4, #1 + cmp r2, #0 + movne r1, #1 + mov r2, r6 + bl MOD13_0222C8E4 + b _0222CBD8 +_0222CBB8: + ldrb r0, [r0, #0xf6] + mov r5, #0 + cmp r0, #0 + movne r4, #2 + moveq r4, r5 + b _0222CBD8 +_0222CBD0: + mov r5, #0 + mov r4, #2 +_0222CBD8: + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl MOD13_0222C8E4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222CBEC: .word 0x022430F4 + + arm_func_start MOD13_0222CBF0 +MOD13_0222CBF0: ; 0x0222CBF0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x28 + mov r6, r0 + mov r5, r1 + bl MOD13_02234164 + cmp r6, #8 + addls pc, pc, r6, lsl #2 + b _0222CD84 +_0222CC10: ; jump table + b _0222CC34 ; case 0 + b _0222CC48 ; case 1 + b _0222CD84 ; case 2 + b _0222CCD8 ; case 3 + b _0222CCFC ; case 4 + b _0222CD20 ; case 5 + b _0222CD84 ; case 6 + b _0222CD44 ; case 7 + b _0222CD68 ; case 8 +_0222CC34: + mov r1, r5 + add r0, r0, #0x40 + bl MOD13_0222C788 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CC48: + ldrb r1, [r0, #0xe6] + mov r1, r1, lsl #0x1e + mov r1, r1, lsr #0x1e + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0222CC8C +_0222CC60: ; jump table + b _0222CC70 ; case 0 + b _0222CC78 ; case 1 + b _0222CC80 ; case 2 + b _0222CC88 ; case 3 +_0222CC70: + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CC78: + mov r4, #0xa + b _0222CC8C +_0222CC80: + mov r4, #0x1a + b _0222CC8C +_0222CC88: + mov r4, #0x20 +_0222CC8C: + ldrb r0, [r0, #0xe6] + mov r1, #0 + mov r2, #0x21 + mov r0, r0, lsl #0x18 + mov r0, r0, lsr #0x1a + cmp r0, #1 + addeq r0, r4, r4, lsr #31 + moveq r4, r0, asr #1 + add r0, sp, #0 + bl MI_CpuFill8 + add r0, sp, #0 + mov r2, r4 + mov r1, #0x2a + bl Call_FillMemWithValue + add r0, sp, #0 + mov r1, r5 + bl MOD13_0222C788 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CCD8: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc0 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CCFC: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xf0 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD20: + ldrb r1, [r0, #0xf5] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc4 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD44: + ldrb r1, [r0, #0xf6] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xc8 + bl MOD13_0222C700 + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} +_0222CD68: + ldrb r1, [r0, #0xf6] + cmp r1, #0 + addne sp, sp, #0x28 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, r5 + add r0, r0, #0xcc + bl MOD13_0222C700 +_0222CD84: + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_0222CD8C +MOD13_0222CD8C: ; 0x0222CD8C + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _0222CE44 ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_DivS32 + ldr r1, _0222CE48 ; =0x022430F4 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + ldr r0, [r0, #0x14] + bl MOD13_0223A4D8 + mov r6, r4 + mov r5, #0 +_0222CDC0: + mov r0, r6 + mov r1, r5 + bl MOD13_0222CBF0 + add r5, r5, #1 + cmp r5, #5 + add r6, r6, #1 + blt _0222CDC0 + ldr r0, _0222CE48 ; =0x022430F4 + ldr r1, _0222CE4C ; =0x0223F358 + mov r2, r4, lsl #1 + ldr r3, [r0] + ldrh r0, [r1, r2] + ldr r2, [r3, #8] + mov r1, #0 + add r0, r2, r0, lsl #1 + mov r2, #0x1e + mov r3, #0x13 + bl MOD13_02232878 + mov r5, #0 +_0222CE0C: + mov r0, r4 + mov r1, r5 + bl MOD13_0222CA9C + add r5, r5, #1 + cmp r5, #5 + add r4, r4, #1 + blt _0222CE0C + bl MOD13_022328D0 + ldr r0, _0222CE48 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl MOD13_0223A410 + bl MOD13_0222C4C8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0222CE44: .word 0x022430F0 +_0222CE48: .word 0x022430F4 +_0222CE4C: .word 0x0223F358 + + arm_func_start MOD13_0222CE50 +MOD13_0222CE50: ; 0x0222CE50 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0222D130 ; =0x022430F4 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r1, _0222D130 ; =0x022430F4 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x3c] + bl MOD13_0223C104 + mov r5, #0 + ldr r4, _0222D130 ; =0x022430F4 +_0222CEB0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x18] + bl MOD13_0223B974 + add r5, r5, #1 + cmp r5, #7 + blt _0222CEB0 + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #0x34] + cmp r0, #0 + beq _0222CEE4 + bl MOD13_0223B974 +_0222CEE4: + bl MOD13_02232F78 + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221F21C + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x40] + cmp r0, #0xc + beq _0222CF0C + bl MOD13_0221EE54 +_0222CF0C: + bl MOD13_022328E8 + ldr r0, _0222D130 ; =0x022430F4 + ldr r0, [r0] + ldr r0, [r0, #8] + bl MOD13_0223939C + mov r5, #0 + ldr r4, _0222D130 ; =0x022430F4 +_0222CF28: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0xc] + bl MOD13_0223939C + add r5, r5, #1 + cmp r5, #2 + blt _0222CF28 + ldr r0, _0222D134 ; =0x02240298 + ldr r1, _0222D138 ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AE98 + ldr r2, _0222D13C ; =0x04000010 + mov r1, #0 + ldr r0, _0222D140 ; =0x04000018 + str r1, [r2] + str r1, [r0] + ldr r3, _0222D144 ; =0x0400000C + ldr r0, _0222D130 ; =0x022430F4 + ldrh r2, [r3] + and r2, r2, #0x43 + orr r2, r2, #0xe10 + strh r2, [r3] + ldr r0, [r0] + ldrb r0, [r0, #0x40] + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _0222D120 +_0222CFA8: ; jump table + b _0222CFE0 ; case 0 + b _0222CFE0 ; case 1 + b _0222D120 ; case 2 + b _0222D120 ; case 3 + b _0222CFFC ; case 4 + b _0222CFFC ; case 5 + b _0222CFFC ; case 6 + b _0222D120 ; case 7 + b _0222D120 ; case 8 + b _0222CFFC ; case 9 + b _0222CFFC ; case 10 + b _0222D02C ; case 11 + b _0222D0C4 ; case 12 + b _0222D0D8 ; case 13 +_0222CFE0: + bl MOD13_02222F6C + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _0222D148 ; =MOD13_0222A190 + bl MOD13_02222FBC + b _0222D120 +_0222CFFC: + sub r4, r0, #4 + cmp r0, #9 + subhs r4, r4, #2 + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, r4 + mov r1, #0 + bl MOD13_02222F6C + ldr r0, _0222D14C ; =MOD13_0222AF48 + bl MOD13_02222FBC + b _0222D120 +_0222D02C: + bl MOD13_02234164 + mov r4, r0 + add r0, r4, #0xf0 + bl FUN_02095BE0 + strb r0, [r4, #0xd0] + ldrb r0, [r4, #0xf5] + cmp r0, #0 + beq _0222D084 + add r0, r4, #0xc0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xc4 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xf0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r4, #0xd0] +_0222D084: + ldrb r0, [r4, #0xf6] + cmp r0, #0 + beq _0222D0A0 + add r0, r4, #0xc8 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 +_0222D0A0: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _0222D150 ; =MOD13_022313C8 + bl MOD13_02222FBC + b _0222D120 +_0222D0C4: + mov r0, r1 + bl MOD13_02222FA8 + ldr r0, _0222D154 ; =MOD13_0222E1B0 + bl MOD13_02222FBC + b _0222D120 +_0222D0D8: + ldr r0, _0222D158 ; =0x022430E8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222D100 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222D15C ; =MOD13_02230714 + bl MOD13_02222FBC + b _0222D120 +_0222D100: + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222D160 ; =MOD13_02230EC4 + bl MOD13_02222FBC +_0222D120: + ldr r0, _0222D130 ; =0x022430F4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222D130: .word 0x022430F4 +_0222D134: .word 0x02240298 +_0222D138: .word 0x020C9480 +_0222D13C: .word 0x04000010 +_0222D140: .word 0x04000018 +_0222D144: .word 0x0400000C +_0222D148: .word MOD13_0222A190 +_0222D14C: .word MOD13_0222AF48 +_0222D150: .word MOD13_022313C8 +_0222D154: .word MOD13_0222E1B0 +_0222D158: .word 0x022430E8 +_0222D15C: .word MOD13_02230714 +_0222D160: .word MOD13_02230EC4 + + arm_func_start MOD13_0222D164 +MOD13_0222D164: ; 0x0222D164 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222D1B8 ; =MOD13_0222CE50 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D1B8: .word MOD13_0222CE50 + + arm_func_start MOD13_0222D1BC +MOD13_0222D1BC: ; 0x0222D1BC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02232F14 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222D1E0 ; =MOD13_0222D164 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D1E0: .word MOD13_0222D164 + + arm_func_start MOD13_0222D1E4 +MOD13_0222D1E4: ; 0x0222D1E4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222D484 ; =0x022430F4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x41] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r1, #0x41] + bl MOD13_02232F50 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0222D47C +_0222D224: ; jump table + b _0222D47C ; case 0 + b _0222D244 ; case 1 + b _0222D25C ; case 2 + b _0222D2BC ; case 3 + b _0222D37C ; case 4 + b _0222D46C ; case 5 + b _0222D3F4 ; case 6 + b _0222D46C ; case 7 +_0222D244: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x45] + ldmia sp!, {pc} +_0222D25C: + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x41] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_02232F64 + mov r1, #0x91 + mul r1, r0, r1 + ldr r2, _0222D488 ; =0x094F2095 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + mov r3, r3, asr #1 + ldr r1, _0222D48C ; =0x022430F0 + add r3, r0, r3 + strh r3, [r1] + bl MOD13_0222CD8C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x41] + ldmia sp!, {pc} +_0222D2BC: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x45] + bl MOD13_02232F64 + mov r1, #0x91 + mul r1, r0, r1 + ldr r2, _0222D488 ; =0x094F2095 + mov r0, r1, lsr #0x1f + smull r1, r3, r2, r1 + mov r3, r3, asr #1 + ldr r1, _0222D48C ; =0x022430F0 + add r3, r0, r3 + mov r0, #0x13 + strh r3, [r1] + bl MOD13_0223424C + bl MOD13_0222CD8C + ldr r0, _0222D48C ; =0x022430F0 + mov r1, #0x1d + ldrh r0, [r0] + bl FX_ModS32 + cmp r0, #0 + bne _0222D324 + bl MOD13_0222BDF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D324: + cmp r0, #0x10 + bge _0222D354 + mov r0, #0 + ldr r1, _0222D490 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D354: + mov r0, #0 + ldr r1, _0222D494 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D37C: + ldr r0, _0222D48C ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0 + bne _0222D3C4 + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x46] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x46] + ldmia sp!, {pc} +_0222D3C4: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222D490 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D3F4: + ldr r0, _0222D48C ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0x91 + bne _0222D43C + ldr r0, _0222D484 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x46] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x46] + ldmia sp!, {pc} +_0222D43C: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222D494 ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222D484 ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D46C: + ldr r0, _0222D484 ; =0x022430F4 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x46] +_0222D47C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222D484: .word 0x022430F4 +_0222D488: .word 0x094F2095 +_0222D48C: .word 0x022430F0 +_0222D490: .word MOD13_0222C0E8 +_0222D494: .word MOD13_0222C03C + + arm_func_start MOD13_0222D498 +MOD13_0222D498: ; 0x0222D498 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_02234164 + ldrb r0, [r0, #0xf6] + cmp r0, r4 + ldmeqia sp!, {r4, pc} + ldr r1, _0222D4CC ; =0x022430F4 + mov r0, r4 + ldr r1, [r1] + strb r4, [r1, #0x43] + bl MOD13_0223413C + bl MOD13_0222CD8C + ldmia sp!, {r4, pc} + .align 2, 0 +_0222D4CC: .word 0x022430F4 + + arm_func_start MOD13_0222D4D0 +MOD13_0222D4D0: ; 0x0222D4D0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r0 + bl MOD13_02234164 + ldrb r1, [r0, #0xf5] + cmp r1, r4 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + cmp r4, #0 + beq _0222D514 + ldr r0, _0222D544 ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x43] + cmp r0, #0 + movne r5, #1 + moveq r5, #0 + b _0222D528 +_0222D514: + ldr r1, _0222D544 ; =0x022430F4 + ldrb r2, [r0, #0xf6] + ldr r0, [r1] + mov r5, #0 + strb r2, [r0, #0x43] +_0222D528: + mov r0, r4 + bl MOD13_02234150 + mov r0, r5 + bl MOD13_0223413C + bl MOD13_0222CD8C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0222D544: .word 0x022430F4 + + arm_func_start MOD13_0222D548 +MOD13_0222D548: ; 0x0222D548 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl MOD13_0222CA08 + cmp r0, #0 + bne _0222D570 + mov r0, #9 + bl MOD13_0223424C + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D570: + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222D5E8 +_0222D57C: ; jump table + b _0222D5E8 ; case 0 + b _0222D5E8 ; case 1 + b _0222D5A0 ; case 2 + b _0222D5A0 ; case 3 + b _0222D5E8 ; case 4 + b _0222D5E8 ; case 5 + b _0222D5E8 ; case 6 + b _0222D5C4 ; case 7 + b _0222D5C4 ; case 8 +_0222D5A0: + mov r0, #6 + bl MOD13_0223424C + sub r0, r4, #2 + eors r0, r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_0222D4D0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D5C4: + mov r0, #6 + bl MOD13_0223424C + sub r0, r4, #7 + eors r0, r0, #1 + movne r0, #1 + moveq r0, #0 + bl MOD13_0222D498 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D5E8: + ldr r0, _0222D6B8 ; =0x022430F4 + sub r1, r4, #0xb + ldr r0, [r0] + cmp r1, #1 + strb r4, [r0, #0x40] + bhi _0222D664 + bl MOD13_0222BA38 + bl MOD13_0222B87C + cmp r0, #0 + bne _0222D644 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #6 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222D6BC ; =MOD13_0222B830 + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0222D644: + cmp r4, #0xb + bne _0222D658 + mov r0, #6 + bl MOD13_0223424C + b _0222D6A4 +_0222D658: + mov r0, #0xe + bl MOD13_0223424C + b _0222D6A4 +_0222D664: + cmp r4, #0xd + bne _0222D67C + bl MOD13_0222BA38 + mov r0, #7 + bl MOD13_0223424C + b _0222D6A4 +_0222D67C: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _0222D6C0 ; =0x0223F32C + ldrb r0, [r0, r4] + bl MOD13_0222C1F4 + mov r2, r0 + mov r0, #0 + mov r1, #1 + bl MOD13_0222C8E4 + bl MOD13_0222C4C8 +_0222D6A4: + bl MOD13_02232F14 + ldr r0, _0222D6C4 ; =MOD13_0222D1BC + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222D6B8: .word 0x022430F4 +_0222D6BC: .word MOD13_0222B830 +_0222D6C0: .word 0x0223F32C +_0222D6C4: .word MOD13_0222D1BC + + arm_func_start MOD13_0222D6C8 +MOD13_0222D6C8: ; 0x0222D6C8 + stmdb sp!, {r4, lr} + bl MOD13_02234164 + bl MOD13_0222C238 + mov r4, r0 + cmp r4, #0xe + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_0222CA08 + cmp r0, #0 + bne _0222D700 + mov r0, #9 + bl MOD13_0223424C + mov r0, #1 + ldmia sp!, {r4, pc} +_0222D700: + mov r0, r4 + bl MOD13_0222BDB8 + cmp r4, #8 + addls pc, pc, r4, lsl #2 + b _0222D73C +_0222D714: ; jump table + b _0222D73C ; case 0 + b _0222D73C ; case 1 + b _0222D738 ; case 2 + b _0222D738 ; case 3 + b _0222D73C ; case 4 + b _0222D73C ; case 5 + b _0222D73C ; case 6 + b _0222D738 ; case 7 + b _0222D738 ; case 8 +_0222D738: + bl MOD13_0222B91C +_0222D73C: + mov r0, r4 + bl MOD13_0222D548 + mov r0, #1 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0222D74C +MOD13_0222D74C: ; 0x0222D74C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222DA0C ; =0x022430F4 + ldr r1, [r0] + ldr r0, [r1, #0x38] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrb r0, [r1, #0x45] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0222D6C8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222D7B0 + ldr r0, _0222DA10 ; =0x022430E4 + ldrb r0, [r0] + bl MOD13_0222D548 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D7B0: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222D7E8 + mov r0, #7 + bl MOD13_0223424C + ldr r1, _0222DA0C ; =0x022430F4 + ldr r0, _0222DA14 ; =MOD13_0222D1BC + ldr r1, [r1] + mov r2, #0xd + strb r2, [r1, #0x40] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222D7E8: + mov r0, #0x200 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D870 + ldr r0, _0222DA18 ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0x91 + bne _0222D840 + ldr r0, _0222DA0C ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222DA0C ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {pc} +_0222D840: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222DA1C ; =MOD13_0222C03C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222DA0C ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D870: + mov r0, #0x200 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x100 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D91C + ldr r0, _0222DA18 ; =0x022430F0 + ldrh r0, [r0] + cmp r0, #0 + bne _0222D8EC + ldr r0, _0222DA0C ; =0x022430F4 + ldr r0, [r0] + ldrb r0, [r0, #0x47] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_0223424C + ldr r0, _0222DA0C ; =0x022430F4 + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x47] + ldmia sp!, {pc} +_0222D8EC: + mov r0, #0x13 + bl MOD13_0223424C + mov r0, #0 + ldr r1, _0222DA20 ; =MOD13_0222C0E8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0222DA0C ; =0x022430F4 + add sp, sp, #4 + ldr r1, [r1] + str r0, [r1, #0x38] + ldmia sp!, {pc} +_0222D91C: + mov r0, #0x100 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D960 + mov r0, #1 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D960: + mov r0, #0x40 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D9A4 + mov r0, #3 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D9A4: + mov r0, #0x80 + bl MOD13_0223B38C + cmp r0, #0 + ldrne r0, _0222DA0C ; =0x022430F4 + movne r1, #0 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0x47] + ldmneia sp!, {pc} + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0222D9E8 + mov r0, #0 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} +_0222D9E8: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #2 + bl MOD13_0222BA74 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DA0C: .word 0x022430F4 +_0222DA10: .word 0x022430E4 +_0222DA14: .word MOD13_0222D1BC +_0222DA18: .word 0x022430F0 +_0222DA1C: .word MOD13_0222C03C +_0222DA20: .word MOD13_0222C0E8 + + arm_func_start MOD13_0222DA24 +MOD13_0222DA24: ; 0x0222DA24 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222D74C + bl MOD13_0222D1E4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222DA7C ; =MOD13_0222DA24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DA7C: .word MOD13_0222DA24 + + arm_func_start MOD13_0222DA80 +MOD13_0222DA80: ; 0x0222DA80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x1d + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x1d + bl MOD13_0223AEF4 + ldr r0, _0222DAD8 ; =0x0222DA3C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DAD8: .word 0x0222DA3C + + arm_func_start MOD13_0222DADC +MOD13_0222DADC: ; 0x0222DADC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02234164 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r2, _0222DB28 ; =0x022430F0 + mov r3, #0 + ldr r1, _0222DB2C ; =0x022430E4 + ldr r0, _0222DB30 ; =0x022430EC + strh r3, [r2] + strb r3, [r1] + strb r3, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DB28: .word 0x022430F0 +_0222DB2C: .word 0x022430E4 +_0222DB30: .word 0x022430EC + + arm_func_start MOD13_0222DB34 +MOD13_0222DB34: ; 0x0222DB34 + stmdb sp!, {lr} + sub sp, sp, #0x44 + ldr r3, _0222DCFC ; =0x0223F39C + add ip, sp, #0 + mov r2, #0xb +_0222DB48: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [ip], #1 + strb r0, [ip], #1 + bne _0222DB48 + ldrb r0, [r3] + ldr r3, _0222DD00 ; =0x0223F36C + add lr, sp, #0x17 + strb r0, [ip] + mov r2, #0xa +_0222DB74: + ldrb r1, [r3], #1 + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r1, [lr], #1 + strb r0, [lr], #1 + bne _0222DB74 + ldrb r0, [r3] + ldr ip, _0222DD04 ; =0x0223F384 + add r3, sp, #0x2c + strb r0, [lr] + mov r2, #0xb +_0222DBA0: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _0222DBA0 + ldr ip, _0222DD08 ; =0x0400000C + ldr r2, _0222DD0C ; =0x00000E18 + ldrh r3, [ip] + ldr r0, _0222DD10 ; =0x022402B0 + ldr r1, _0222DD14 ; =0x020C9480 + and r3, r3, #0x43 + orr r2, r3, r2 + strh r2, [ip] + bl MOD13_0221F174 + ldr r0, _0222DD18 ; =0x022402C4 + ldr r1, _0222DD1C ; =0x020C8C7C + bl MOD13_0221F174 + ldr r0, _0222DD20 ; =0x022402DC + ldr r1, _0222DD24 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r1, _0222DD28 ; =0x020C9550 + add r0, sp, #0x17 + bl MOD13_0221F174 + ldr r0, _0222DD2C ; =0x022402F4 + ldr r1, _0222DD30 ; =0x020C8FBC + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #8] + ldr r0, [r1] + ldr r0, [r0, #8] + bl MOD13_02232918 + bl MOD13_022328D0 + add r0, sp, #0x17 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r1, [r1] + str r0, [r1, #0xc] + add r0, sp, #0x2c + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _0222DD34 ; =0x022430F4 + ldr r2, _0222DD38 ; =0x04001008 + ldr r3, [r1] + ldr r1, _0222DD3C ; =0x0400100A + str r0, [r3, #0x10] + ldrh r0, [r2] + ldr ip, _0222DD40 ; =0x04000008 + ldr r3, _0222DD44 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + ldr r2, _0222DD08 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222DD48 ; =0x0400000E + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #2 + strh r0, [r1] + add sp, sp, #0x44 + ldmia sp!, {pc} + .align 2, 0 +_0222DCFC: .word 0x0223F39C +_0222DD00: .word 0x0223F36C +_0222DD04: .word 0x0223F384 +_0222DD08: .word 0x0400000C +_0222DD0C: .word 0x00000E18 +_0222DD10: .word 0x022402B0 +_0222DD14: .word 0x020C9480 +_0222DD18: .word 0x022402C4 +_0222DD1C: .word 0x020C8C7C +_0222DD20: .word 0x022402DC +_0222DD24: .word 0x020C8D4C +_0222DD28: .word 0x020C9550 +_0222DD2C: .word 0x022402F4 +_0222DD30: .word 0x020C8FBC +_0222DD34: .word 0x022430F4 +_0222DD38: .word 0x04001008 +_0222DD3C: .word 0x0400100A +_0222DD40: .word 0x04000008 +_0222DD44: .word 0x0400000A +_0222DD48: .word 0x0400000E + + arm_func_start MOD13_0222DD4C +MOD13_0222DD4C: ; 0x0222DD4C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + bl MOD13_02234164 + mov r5, r0 + mov r0, #0x48 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0222DF38 ; =0x022430F4 + mov r2, #0xc + str r0, [r1] + ldrb r3, [r5, #0xf6] + strb r3, [r0, #0x43] + ldr r0, [r1] + strb r2, [r0, #0x42] + bl MOD13_0222DADC + bl MOD13_0222DB34 + ldr r0, _0222DF3C ; =0x022430E8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222DDBC + bl MOD13_02222F34 + ldr r1, _0222DF40 ; =0x0223F2F4 + ldrb r2, [r5, #0xf4] + ldrsb r1, [r1, r0] + mov r0, #0x30 + add r2, r2, #1 + bl MOD13_0221EE98 + b _0222DDCC +_0222DDBC: + mov r0, #0x45 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_0222DDCC: + mov r0, #1 + bl MOD13_0221F124 + bl MOD13_0221F48C + ldr r0, _0222DF44 ; =0x022430F0 + mov r1, #0x37 + ldrh r3, [r0] + ldr r2, _0222DF48 ; =0xE1FC780F + mov r0, #2 + mul r4, r3, r1 + smull r1, r3, r2, r4 + add r3, r4, r3 + mov r3, r3, asr #7 + mov r1, r4, lsr #0x1f + add r3, r1, r3 + str r3, [sp] + mov r1, #0x55 + mov r2, #0xf1 + mov r3, #0x41 + bl MOD13_02232FB8 + mov r0, #0 + mov r1, #1 + bl MOD13_0223A7F0 + ldr r6, _0222DF38 ; =0x022430F4 + mov r4, #0 + ldr r2, [r6] + ldr r1, _0222DF4C ; =0x0223F348 + str r0, [r2, #0x14] + ldrb r8, [r1, #1] + mov r7, r4 +_0222DE40: + mov r0, r7 + mov r1, r8 + bl MOD13_02239E54 + ldr r1, [r6] + add r1, r1, r4, lsl #2 + add r4, r4, #1 + str r0, [r1, #0x18] + cmp r4, #7 + blt _0222DE40 + ldrb r0, [r5, #0xe7] + cmp r0, #1 + beq _0222DE7C + cmp r0, #2 + beq _0222DEB0 + b _0222DEE0 +_0222DE7C: + mov r0, #0 + mov r1, #0x50 + bl MOD13_02239E54 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #0x34] + ldr r0, [r1] + ldr r1, [r0, #0x34] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] + b _0222DEE0 +_0222DEB0: + mov r0, #0 + mov r1, #0x51 + bl MOD13_02239E54 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r2, [r1] + str r0, [r2, #0x34] + ldr r0, [r1] + ldr r1, [r0, #0x34] + ldrh r0, [r1, #4] + bic r0, r0, #0xc00 + orr r0, r0, #0xc00 + strh r0, [r1, #4] +_0222DEE0: + ldr r1, _0222DF50 ; =MOD13_0222BFA8 + mov r0, #1 + mov r2, #0 + mov r3, #0x6e + bl MOD13_0223C1C4 + ldr r2, _0222DF38 ; =0x022430F4 + ldr r1, _0222DF54 ; =MOD13_0222B9DC + ldr r2, [r2] + mov r3, #0x78 + str r0, [r2, #0x3c] + mov r0, #0 + mov r2, r0 + bl MOD13_0223C1C4 + ldr r1, _0222DF38 ; =0x022430F4 + ldr r1, [r1] + str r0, [r1] + bl MOD13_0222CD8C + bl MOD13_0222BEC0 + ldr r0, _0222DF58 ; =MOD13_0222DA80 + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0222DF38: .word 0x022430F4 +_0222DF3C: .word 0x022430E8 +_0222DF40: .word 0x0223F2F4 +_0222DF44: .word 0x022430F0 +_0222DF48: .word 0xE1FC780F +_0222DF4C: .word 0x0223F348 +_0222DF50: .word MOD13_0222BFA8 +_0222DF54: .word MOD13_0222B9DC +_0222DF58: .word MOD13_0222DA80 + + arm_func_start MOD13_0222DF5C +MOD13_0222DF5C: ; 0x0222DF5C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222DFC4 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222DFC4: .word MOD13_02230714 + + arm_func_start MOD13_0222DFC8 +MOD13_0222DFC8: ; 0x0222DFC8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E008 ; =MOD13_0222DF5C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E008: .word MOD13_0222DF5C + + arm_func_start MOD13_0222E00C +MOD13_0222E00C: ; 0x0222E00C + bx lr + + arm_func_start MOD13_0222E010 +MOD13_0222E010: ; 0x0222E010 + bx lr + + arm_func_start MOD13_0222E014 +MOD13_0222E014: ; 0x0222E014 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222E010 + bl MOD13_0222E00C + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E044 ; =MOD13_0222DFC8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E044: .word MOD13_0222DFC8 + + arm_func_start MOD13_0222E048 +MOD13_0222E048: ; 0x0222E048 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov ip, #0 + mov r0, #0x44 + mov r1, #5 + mov r2, #1 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + ldr r0, _0222E0A4 ; =MOD13_0222E014 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E0A4: .word MOD13_0222E014 + + arm_func_start MOD13_0222E0A8 +MOD13_0222E0A8: ; 0x0222E0A8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _0222E100 ; =MOD13_0222E048 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E100: .word MOD13_0222E048 + + arm_func_start MOD13_0222E104 +MOD13_0222E104: ; 0x0222E104 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E188 ; =0x02240308 + ldr r1, _0222E18C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222E190 ; =0x02240320 + ldr r1, _0222E194 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222E198 ; =0x02240338 + ldr r1, _0222E19C ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _0222E1A0 ; =0x04001008 + ldr r3, _0222E1A4 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _0222E1A8 ; =0x0400000A + ldr r1, _0222E1AC ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E188: .word 0x02240308 +_0222E18C: .word 0x020C8D4C +_0222E190: .word 0x02240320 +_0222E194: .word 0x020C9550 +_0222E198: .word 0x02240338 +_0222E19C: .word 0x020C908C +_0222E1A0: .word 0x04001008 +_0222E1A4: .word 0x0400100A +_0222E1A8: .word 0x0400000A +_0222E1AC: .word 0x0400000C + + arm_func_start MOD13_0222E1B0 +MOD13_0222E1B0: ; 0x0222E1B0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222E104 + bl MOD13_0221F4AC + bl MOD13_02233B3C + ldr r0, _0222E1D4 ; =MOD13_0222E0A8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E1D4: .word MOD13_0222E0A8 + + arm_func_start MOD13_0222E1D8 +MOD13_0222E1D8: ; 0x0222E1D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E200 ; =MOD13_0222E430 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E200: .word MOD13_0222E430 + + arm_func_start MOD13_0222E204 +MOD13_0222E204: ; 0x0222E204 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222E238 ; =MOD13_0222E1D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E238: .word MOD13_0222E1D8 + + arm_func_start MOD13_0222E23C +MOD13_0222E23C: ; 0x0222E23C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #2 + beq _0222E260 + cmp r0, #4 + beq _0222E27C + add sp, sp, #4 + ldmia sp!, {pc} +_0222E260: + ldr r1, _0222E2C4 ; =0x022430F8 + mov r2, #1 + ldr r0, _0222E2C8 ; =MOD13_0222E430 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E27C: + ldr r0, _0222E2C4 ; =0x022430F8 + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E2CC ; =MOD13_0222E204 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E2C4: .word 0x022430F8 +_0222E2C8: .word MOD13_0222E430 +_0222E2CC: .word MOD13_0222E204 + + arm_func_start MOD13_0222E2D0 +MOD13_0222E2D0: ; 0x0222E2D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E310 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222E310: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E34C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222E34C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222E3A4 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E388 + bl MOD13_02223BE0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222E3A8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E388: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222E3AC ; =MOD13_0222EB58 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E3A4: .word 0x022430F8 +_0222E3A8: .word MOD13_02230EC4 +_0222E3AC: .word MOD13_0222EB58 + + arm_func_start MOD13_0222E3B0 +MOD13_0222E3B0: ; 0x0222E3B0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E428 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E3E0 + bl MOD13_0221ED28 +_0222E3E0: + ldr r0, _0222E428 ; =0x022430F8 + ldrb r0, [r0] + cmp r0, #0 + bne _0222E404 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222E404: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E42C ; =MOD13_0222E2D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E428: .word 0x022430F8 +_0222E42C: .word MOD13_0222E2D0 + + arm_func_start MOD13_0222E430 +MOD13_0222E430: ; 0x0222E430 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222E454 ; =MOD13_0222E3B0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E454: .word MOD13_0222E3B0 + + arm_func_start MOD13_0222E458 +MOD13_0222E458: ; 0x0222E458 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222E48C ; =MOD13_0222E430 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E48C: .word MOD13_0222E430 + + arm_func_start MOD13_0222E490 +MOD13_0222E490: ; 0x0222E490 + bx lr + + arm_func_start MOD13_0222E494 +MOD13_0222E494: ; 0x0222E494 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222E4BC + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E4BC: + bl MOD13_0222E68C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222E23C + bl MOD13_0222E494 + bl MOD13_0222E490 + bl MOD13_0222E458 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222E534 ; =0x0222E4DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E534: .word 0x0222E4DC + + arm_func_start MOD13_0222E538 +MOD13_0222E538: ; 0x0222E538 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222E56C ; =0x0222E504 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E56C: .word 0x0222E504 + + arm_func_start MOD13_0222E570 +MOD13_0222E570: ; 0x0222E570 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222E5A8 ; =MOD13_0222E538 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E5A8: .word MOD13_0222E538 + + arm_func_start MOD13_0222E5AC +MOD13_0222E5AC: ; 0x0222E5AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E62C ; =0x0224034C + ldr r1, _0222E630 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222E634 ; =0x04001008 + ldr ip, _0222E638 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222E63C ; =0x04000008 + ldr r2, _0222E640 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222E644 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E62C: .word 0x0224034C +_0222E630: .word 0x020C908C +_0222E634: .word 0x04001008 +_0222E638: .word 0x0400100A +_0222E63C: .word 0x04000008 +_0222E640: .word 0x0400000A +_0222E644: .word 0x0400000C + + arm_func_start MOD13_0222E648 +MOD13_0222E648: ; 0x0222E648 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222E684 ; =0x022430F8 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222E5AC + bl MOD13_0221F4AC + mov r0, #0x25 + bl MOD13_0221F070 + mov r0, #1 + bl MOD13_0221E694 + ldr r0, _0222E688 ; =MOD13_0222E570 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E684: .word 0x022430F8 +_0222E688: .word MOD13_0222E570 + + arm_func_start MOD13_0222E68C +MOD13_0222E68C: ; 0x0222E68C + ldr r0, _0222E6A8 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222E6A8: .word 0x027FFFA8 + + arm_func_start MOD13_0222E6AC +MOD13_0222E6AC: ; 0x0222E6AC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E6D4 ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E6D4: .word MOD13_0222E940 + + arm_func_start MOD13_0222E6D8 +MOD13_0222E6D8: ; 0x0222E6D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222E70C ; =MOD13_0222E6AC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E70C: .word MOD13_0222E6AC + + arm_func_start MOD13_0222E710 +MOD13_0222E710: ; 0x0222E710 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #3 + beq _0222E73C + cmp r0, #4 + beq _0222E760 + cmp r0, #5 + beq _0222E7A8 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E73C: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #1 + strb r1, [r0] + bl MOD13_022341E8 + bl MOD13_02223AF8 + ldr r0, _0222E7F4 ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E760: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E7F8 ; =MOD13_0222E6D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E7A8: + ldr r0, _0222E7F0 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222E7F8 ; =MOD13_0222E6D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E7F0: .word 0x022430FC +_0222E7F4: .word MOD13_0222E940 +_0222E7F8: .word MOD13_0222E6D8 + + arm_func_start MOD13_0222E7FC +MOD13_0222E7FC: ; 0x0222E7FC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E83C + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222E83C: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E878 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222E878: + bl MOD13_02223BE0 + ldr r0, _0222E8C4 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E8A8 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222E8C8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222E8A8: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222E8CC ; =MOD13_0222EDE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E8C4: .word 0x022430FC +_0222E8C8: .word MOD13_02230EC4 +_0222E8CC: .word MOD13_0222EDE4 + + arm_func_start MOD13_0222E8D0 +MOD13_0222E8D0: ; 0x0222E8D0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0222E938 ; =0x022430FC + ldrb r0, [r0] + cmp r0, #0 + bne _0222E914 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222E914: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222E93C ; =MOD13_0222E7FC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E938: .word 0x022430FC +_0222E93C: .word MOD13_0222E7FC + + arm_func_start MOD13_0222E940 +MOD13_0222E940: ; 0x0222E940 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222E964 ; =MOD13_0222E8D0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E964: .word MOD13_0222E8D0 + + arm_func_start MOD13_0222E968 +MOD13_0222E968: ; 0x0222E968 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222E99C ; =MOD13_0222E940 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222E99C: .word MOD13_0222E940 + + arm_func_start MOD13_0222E9A0 +MOD13_0222E9A0: ; 0x0222E9A0 + bx lr + + arm_func_start MOD13_0222E9A4 +MOD13_0222E9A4: ; 0x0222E9A4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222E9CC + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222E9CC: + bl MOD13_0222EB9C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222E710 + bl MOD13_0222E9A4 + bl MOD13_0222E9A0 + bl MOD13_0222E968 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222EA44 ; =0x0222E9EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EA44: .word 0x0222E9EC + + arm_func_start MOD13_0222EA48 +MOD13_0222EA48: ; 0x0222EA48 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222EA7C ; =0x0222EA14 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EA7C: .word 0x0222EA14 + + arm_func_start MOD13_0222EA80 +MOD13_0222EA80: ; 0x0222EA80 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222EAB8 ; =MOD13_0222EA48 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EAB8: .word MOD13_0222EA48 + + arm_func_start MOD13_0222EABC +MOD13_0222EABC: ; 0x0222EABC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EB3C ; =0x02240360 + ldr r1, _0222EB40 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222EB44 ; =0x04001008 + ldr ip, _0222EB48 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222EB4C ; =0x04000008 + ldr r2, _0222EB50 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222EB54 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EB3C: .word 0x02240360 +_0222EB40: .word 0x020C908C +_0222EB44: .word 0x04001008 +_0222EB48: .word 0x0400100A +_0222EB4C: .word 0x04000008 +_0222EB50: .word 0x0400000A +_0222EB54: .word 0x0400000C + + arm_func_start MOD13_0222EB58 +MOD13_0222EB58: ; 0x0222EB58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EB94 ; =0x022430FC + mov r1, #0 + strb r1, [r0] + bl MOD13_0222EABC + bl MOD13_0221F4AC + mov r0, #0x2a + bl MOD13_0221F070 + mov r0, #2 + bl MOD13_0221E694 + ldr r0, _0222EB98 ; =MOD13_0222EA80 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EB94: .word 0x022430FC +_0222EB98: .word MOD13_0222EA80 + + arm_func_start MOD13_0222EB9C +MOD13_0222EB9C: ; 0x0222EB9C + ldr r0, _0222EBB8 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222EBB8: .word 0x027FFFA8 + + arm_func_start MOD13_0222EBBC +MOD13_0222EBBC: ; 0x0222EBBC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EBF4 ; =0x02243100 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _0222EBF8 ; =MOD13_0222EC7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EBF4: .word 0x02243100 +_0222EBF8: .word MOD13_0222EC7C + + arm_func_start MOD13_0222EBFC +MOD13_0222EBFC: ; 0x0222EBFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #1 + bl MOD13_02222F6C + ldr r0, _0222EC78 ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EC78: .word MOD13_0223197C + + arm_func_start MOD13_0222EC7C +MOD13_0222EC7C: ; 0x0222EC7C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222ECBC ; =MOD13_0222EBFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ECBC: .word MOD13_0222EBFC + + arm_func_start MOD13_0222ECC0 +MOD13_0222ECC0: ; 0x0222ECC0 + bx lr + + arm_func_start MOD13_0222ECC4 +MOD13_0222ECC4: ; 0x0222ECC4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222EBBC + bl MOD13_0222ECC0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222ED08 ; =MOD13_0222ECC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ED08: .word MOD13_0222ECC4 + + arm_func_start MOD13_0222ED0C +MOD13_0222ED0C: ; 0x0222ED0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222ED44 ; =0x0222ECDC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222ED44: .word 0x0222ECDC + + arm_func_start MOD13_0222ED48 +MOD13_0222ED48: ; 0x0222ED48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EDC8 ; =0x02240374 + ldr r1, _0222EDCC ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222EDD0 ; =0x04001008 + ldr ip, _0222EDD4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222EDD8 ; =0x04000008 + ldr r2, _0222EDDC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222EDE0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EDC8: .word 0x02240374 +_0222EDCC: .word 0x020C908C +_0222EDD0: .word 0x04001008 +_0222EDD4: .word 0x0400100A +_0222EDD8: .word 0x04000008 +_0222EDDC: .word 0x0400000A +_0222EDE0: .word 0x0400000C + + arm_func_start MOD13_0222EDE4 +MOD13_0222EDE4: ; 0x0222EDE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222EE20 ; =0x02243100 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222ED48 + bl MOD13_0221F4AC + mov r0, #0x26 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _0222EE24 ; =MOD13_0222ED0C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE20: .word 0x02243100 +_0222EE24: .word MOD13_0222ED0C + + arm_func_start MOD13_0222EE28 +MOD13_0222EE28: ; 0x0222EE28 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222EE50 ; =MOD13_0222F080 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE50: .word MOD13_0222F080 + + arm_func_start MOD13_0222EE54 +MOD13_0222EE54: ; 0x0222EE54 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222EE88 ; =MOD13_0222EE28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EE88: .word MOD13_0222EE28 + + arm_func_start MOD13_0222EE8C +MOD13_0222EE8C: ; 0x0222EE8C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02223B24 + cmp r0, #1 + beq _0222EEB0 + cmp r0, #4 + beq _0222EECC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EEB0: + ldr r1, _0222EF14 ; =0x02243104 + mov r2, #1 + ldr r0, _0222EF18 ; =MOD13_0222F080 + strb r2, [r1] + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EECC: + ldr r0, _0222EF14 ; =0x02243104 + mov r1, #0 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xd + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _0222EF1C ; =MOD13_0222EE54 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EF14: .word 0x02243104 +_0222EF18: .word MOD13_0222F080 +_0222EF1C: .word MOD13_0222EE54 + + arm_func_start MOD13_0222EF20 +MOD13_0222EF20: ; 0x0222EF20 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EF60 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_0222EF60: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EF9C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_0222EF9C: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222EFF4 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222EFD8 + bl MOD13_02223BE0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222EFF8 ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222EFD8: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _0222EFFC ; =MOD13_0222E648 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222EFF4: .word 0x02243104 +_0222EFF8: .word MOD13_02230EC4 +_0222EFFC: .word MOD13_0222E648 + + arm_func_start MOD13_0222F000 +MOD13_0222F000: ; 0x0222F000 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222F078 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222F030 + bl MOD13_0221ED28 +_0222F030: + ldr r0, _0222F078 ; =0x02243104 + ldrb r0, [r0] + cmp r0, #0 + bne _0222F054 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_0222F054: + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222F07C ; =MOD13_0222EF20 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F078: .word 0x02243104 +_0222F07C: .word MOD13_0222EF20 + + arm_func_start MOD13_0222F080 +MOD13_0222F080: ; 0x0222F080 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222F0A4 ; =MOD13_0222F000 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F0A4: .word MOD13_0222F000 + + arm_func_start MOD13_0222F0A8 +MOD13_0222F0A8: ; 0x0222F0A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222F0DC ; =MOD13_0222F080 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F0DC: .word MOD13_0222F080 + + arm_func_start MOD13_0222F0E0 +MOD13_0222F0E0: ; 0x0222F0E0 + bx lr + + arm_func_start MOD13_0222F0E4 +MOD13_0222F0E4: ; 0x0222F0E4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0222F10C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_0222F10C: + bl MOD13_0222F35C + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0xa + bl OS_Sleep + bl MOD13_0222EE8C + bl MOD13_0222F0E4 + bl MOD13_0222F0E0 + bl MOD13_0222F0A8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222F184 ; =0x0222F12C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F184: .word 0x0222F12C + + arm_func_start MOD13_0222F188 +MOD13_0222F188: ; 0x0222F188 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02223C0C + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222F1D4 ; =0x0222F154 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F1D4: .word 0x0222F154 + + arm_func_start MOD13_0222F1D8 +MOD13_0222F1D8: ; 0x0222F1D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222F230 ; =MOD13_0222F188 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F230: .word MOD13_0222F188 + + arm_func_start MOD13_0222F234 +MOD13_0222F234: ; 0x0222F234 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F2CC ; =0x02240388 + ldr r1, _0222F2D0 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222F2D4 ; =0x022403A0 + ldr r1, _0222F2D8 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222F2DC ; =0x022403B8 + ldr r1, _0222F2E0 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222F2E4 ; =0x04001008 + ldr ip, _0222F2E8 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222F2EC ; =0x04000008 + ldr r2, _0222F2F0 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222F2F4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F2CC: .word 0x02240388 +_0222F2D0: .word 0x020C8D4C +_0222F2D4: .word 0x022403A0 +_0222F2D8: .word 0x020C9550 +_0222F2DC: .word 0x022403B8 +_0222F2E0: .word 0x020C908C +_0222F2E4: .word 0x04001008 +_0222F2E8: .word 0x0400100A +_0222F2EC: .word 0x04000008 +_0222F2F0: .word 0x0400000A +_0222F2F4: .word 0x0400000C + + arm_func_start MOD13_0222F2F8 +MOD13_0222F2F8: ; 0x0222F2F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F354 ; =0x02243104 + mov r1, #0 + strb r1, [r0] + bl MOD13_0222F234 + bl MOD13_0221F4AC + mov r0, #0x37 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x24 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _0222F358 ; =MOD13_0222F1D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F354: .word 0x02243104 +_0222F358: .word MOD13_0222F1D8 + + arm_func_start MOD13_0222F35C +MOD13_0222F35C: ; 0x0222F35C + ldr r0, _0222F378 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0222F378: .word 0x027FFFA8 + + arm_func_start MOD13_0222F37C +MOD13_0222F37C: ; 0x0222F37C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0222F3A4 ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F3A4: .word MOD13_0222F520 + + arm_func_start MOD13_0222F3A8 +MOD13_0222F3A8: ; 0x0222F3A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _0222F3DC ; =MOD13_0222F37C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F3DC: .word MOD13_0222F37C + + arm_func_start MOD13_0222F3E0 +MOD13_0222F3E0: ; 0x0222F3E0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_0222F420: + bl MOD13_0223339C + cmp r0, #0 + beq _0222F420 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _0222F4B8 ; =0x02243108 + ldrb r0, [r0] + cmp r0, #1 + beq _0222F490 + bl MOD13_02233570 + bl MOD13_02234164 + ldrb r0, [r0, #0xf4] + bl MOD13_02233C24 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _0222F4BC ; =MOD13_02230EC4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0222F490: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _0222F4C0 ; =MOD13_022295D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F4B8: .word 0x02243108 +_0222F4BC: .word MOD13_02230EC4 +_0222F4C0: .word MOD13_022295D8 + + arm_func_start MOD13_0222F4C4 +MOD13_0222F4C4: ; 0x0222F4C4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _0222F51C ; =MOD13_0222F3E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F51C: .word MOD13_0222F3E0 + + arm_func_start MOD13_0222F520 +MOD13_0222F520: ; 0x0222F520 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0222F544 ; =MOD13_0222F4C4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F544: .word MOD13_0222F4C4 + + arm_func_start MOD13_0222F548 +MOD13_0222F548: ; 0x0222F548 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222F57C ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F57C: .word MOD13_0222F520 + + arm_func_start MOD13_0222F580 +MOD13_0222F580: ; 0x0222F580 + bx lr + + arm_func_start MOD13_0222F584 +MOD13_0222F584: ; 0x0222F584 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022341E8 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0222F5B4 +MOD13_0222F5B4: ; 0x0222F5B4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _0222F6D0 ; =0x0224310C + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + ldrh r0, [r0] + cmp r0, #0x12c + addlo sp, sp, #0xc + ldmloia sp!, {pc} + bl MOD13_022341E8 + add r0, sp, #4 + bl MOD13_0223333C + cmp r0, #0 + bne _0222F634 + ldr r0, _0222F6D4 ; =0x02243108 + mov r3, #2 + strb r3, [r0] + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xf + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #0x12 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r0, _0222F6D8 ; =MOD13_0222F3A8 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_0222F634: + cmp r0, #0 + mov r3, #0 + ble _0222F660 + ldr r2, [sp, #4] +_0222F644: + ldrb r1, [r2, #0x28] + cmp r1, #2 + bne _0222F660 + add r3, r3, #1 + cmp r3, r0 + add r2, r2, #0x2a + blt _0222F644 +_0222F660: + cmp r3, r0 + bne _0222F6AC + ldr r0, _0222F6D4 ; =0x02243108 + mov r3, #3 + strb r3, [r0] + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0xe + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + mov r0, #0x12 + bl MOD13_0223424C + bl MOD13_0221EC84 + ldr r0, _0222F6D8 ; =MOD13_0222F3A8 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} +_0222F6AC: + ldr r1, _0222F6D4 ; =0x02243108 + mov r2, #1 + mov r0, #0xf + strb r2, [r1] + bl MOD13_0223424C + ldr r0, _0222F6DC ; =MOD13_0222F520 + bl MOD13_02222FBC + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0222F6D0: .word 0x0224310C +_0222F6D4: .word 0x02243108 +_0222F6D8: .word MOD13_0222F3A8 +_0222F6DC: .word MOD13_0222F520 + + arm_func_start MOD13_0222F6E0 +MOD13_0222F6E0: ; 0x0222F6E0 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0222F584 + bl MOD13_0222F580 + bl MOD13_0222F548 + bl MOD13_0222F5B4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222F730 ; =MOD13_0222F6E0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F730: .word MOD13_0222F6E0 + + arm_func_start MOD13_0222F734 +MOD13_0222F734: ; 0x0222F734 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl MOD13_0221F0EC + ldr r0, _0222F77C ; =0x0222F700 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F77C: .word 0x0222F700 + + arm_func_start MOD13_0222F780 +MOD13_0222F780: ; 0x0222F780 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0222F7D8 ; =MOD13_0222F734 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F7D8: .word MOD13_0222F734 + + arm_func_start MOD13_0222F7DC +MOD13_0222F7DC: ; 0x0222F7DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222F874 ; =0x022403CC + ldr r1, _0222F878 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _0222F87C ; =0x022403E4 + ldr r1, _0222F880 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _0222F884 ; =0x022403FC + ldr r1, _0222F888 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _0222F88C ; =0x04001008 + ldr ip, _0222F890 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _0222F894 ; =0x04000008 + ldr r2, _0222F898 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _0222F89C ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F874: .word 0x022403CC +_0222F878: .word 0x020C8D4C +_0222F87C: .word 0x022403E4 +_0222F880: .word 0x020C9550 +_0222F884: .word 0x022403FC +_0222F888: .word 0x020C908C +_0222F88C: .word 0x04001008 +_0222F890: .word 0x0400100A +_0222F894: .word 0x04000008 +_0222F898: .word 0x0400000A +_0222F89C: .word 0x0400000C + + arm_func_start MOD13_0222F8A0 +MOD13_0222F8A0: ; 0x0222F8A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0222F90C ; =0x0224310C + mov r2, #0 + ldr r0, _0222F910 ; =0x02243108 + strh r2, [r1] + strb r2, [r0] + bl MOD13_0222F7DC + mov r0, #0x33 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + bl MOD13_0221F4AC + mov r0, #2 + bl MOD13_0221F124 + mov r0, #0x33 + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_022335AC + bl MOD13_0223348C + mov r0, #0xa + bl MOD13_0223424C + ldr r0, _0222F914 ; =MOD13_0222F780 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222F90C: .word 0x0224310C +_0222F910: .word 0x02243108 +_0222F914: .word MOD13_0222F780 + + arm_func_start MOD13_0222F918 +MOD13_0222F918: ; 0x0222F918 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + ldr r2, _0222F9EC ; =0x0223F400 + ldr r1, _0222F9F0 ; =0x0223F404 + ldrb r7, [r2] + ldrb r6, [r2, #1] + ldrb r5, [r2, #2] + ldrb r4, [r2, #3] + ldrb lr, [r1] + ldrb ip, [r1, #1] + ldrb r3, [r1, #2] + ldrb r2, [r1, #3] + ldr r0, _0222F9F4 ; =0x02243110 + strb r7, [sp] + ldrb r1, [r0] + strb r2, [sp, #7] + strb r6, [sp, #1] + strb r5, [sp, #2] + strb r4, [sp, #3] + strb lr, [sp, #4] + strb ip, [sp, #5] + strb r3, [sp, #6] + cmp r1, #3 + add r2, sp, #0 + addhi sp, sp, #0xc + ldmhiia sp!, {r4, r5, r6, r7, pc} + ldr r0, _0222F9F8 ; =0x02243114 + ldrb r1, [r2, r1] + ldr r0, [r0] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + ldr r0, _0222F9F4 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, pc} + bl MOD13_02233D0C + ldr r1, _0222F9F4 ; =0x02243110 + ldr r2, _0222F9F8 ; =0x02243114 + ldrb r3, [r1] + ldr r2, [r2] + cmp r0, #2 + movgt r0, #3 + add r1, sp, #4 + add r2, r2, r3, lsl #2 + ldrb r3, [r1, r0] + ldr r0, [r2, #4] + mvn r1, #0 + mov r2, #0 + bl MOD13_02239994 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0222F9EC: .word 0x0223F400 +_0222F9F0: .word 0x0223F404 +_0222F9F4: .word 0x02243110 +_0222F9F8: .word 0x02243114 + + arm_func_start MOD13_0222F9FC +MOD13_0222F9FC: ; 0x0222F9FC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _0222FA28 ; =MOD13_022303D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FA28: .word MOD13_022303D8 + + arm_func_start MOD13_0222FA2C +MOD13_0222FA2C: ; 0x0222FA2C + stmdb sp!, {r4, lr} + ldr r0, _0222FB8C ; =0x02243110 + ldrb r0, [r0] + sub r4, r0, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _0222FB00 + cmp r0, #1 + ldmneia sp!, {r4, pc} + mov r0, #0xe + bl MOD13_0223424C + mov r0, r4 + bl MOD13_022338B8 + ldr r0, _0222FB90 ; =0x02243114 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + bl MOD13_02239ADC + ldr r1, _0222FB94 ; =0x0223F3FC + mov r2, r0 + ldrb r1, [r1, #3] + mov r0, #0 + bl MOD13_02239E8C + ldr r0, _0222FB90 ; =0x02243114 + mov ip, r4, lsl #2 + ldr r0, [r0] + mvn r1, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + ldr r2, _0222FB98 ; =0x0223F428 + ldr r3, _0222FB9C ; =0x0223F42A + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_02239888 + ldr r0, _0222FB90 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #4] + bl MOD13_02239814 + ldr r0, _0222FB90 ; =0x02243114 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239AE8 + mov r1, #0 + ldr r0, _0222FB90 ; =0x02243114 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + str r1, [r0, #0x10] + b _0222FB7C +_0222FB00: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _0222FB90 ; =0x02243114 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239ADC + mov r2, r0 + mov r0, #0 + mov r1, #0x11 + bl MOD13_02239E8C + ldr r0, _0222FB90 ; =0x02243114 + add r1, r4, #3 + ldr r0, [r0] + mov ip, r1, lsl #2 + ldr r2, _0222FB98 ; =0x0223F428 + ldr r3, _0222FB9C ; =0x0223F42A + add r0, r0, r4, lsl #2 + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + ldr r0, [r0, #0x10] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0222FB90 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239814 +_0222FB7C: + bl MOD13_02235EB0 + ldr r0, _0222FBA0 ; =MOD13_0222F9FC + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_0222FB8C: .word 0x02243110 +_0222FB90: .word 0x02243114 +_0222FB94: .word 0x0223F3FC +_0222FB98: .word 0x0223F428 +_0222FB9C: .word 0x0223F42A +_0222FBA0: .word MOD13_0222F9FC + + arm_func_start MOD13_0222FBA4 +MOD13_0222FBA4: ; 0x0222FBA4 + stmdb sp!, {r4, lr} + ldr r1, _0222FC2C ; =0x02243110 + ldr r0, _0222FC30 ; =0x02243114 + ldrb r2, [r1] + ldr r0, [r0] + mov r1, #0 + sub r4, r2, #4 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239ADC + mov r2, r0 + mov r0, #0 + mov r1, #0x32 + bl MOD13_02239E8C + ldr r0, _0222FC30 ; =0x02243114 + add r3, r4, #3 + ldr r2, [r0] + ldr r1, _0222FC34 ; =0x0223F428 + mov r3, r3, lsl #2 + ldr r0, _0222FC38 ; =0x0223F42A + add ip, r2, r4, lsl #2 + ldrh r2, [r1, r3] + ldrh r3, [r0, r3] + ldr r0, [ip, #0x10] + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _0222FC30 ; =0x02243114 + mvn r1, #0 + ldr r0, [r0] + mov r2, #3 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0x10] + bl MOD13_02239814 + ldmia sp!, {r4, pc} + .align 2, 0 +_0222FC2C: .word 0x02243110 +_0222FC30: .word 0x02243114 +_0222FC34: .word 0x0223F428 +_0222FC38: .word 0x0223F42A + + arm_func_start MOD13_0222FC3C +MOD13_0222FC3C: ; 0x0222FC3C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r3, _0222FE54 ; =0x02243110 + mov r1, #1 + ldrb r2, [r3] + cmp r2, #6 + addls pc, pc, r2, lsl #2 + b _0222FE34 +_0222FC5C: ; jump table + b _0222FC78 ; case 0 + b _0222FCBC ; case 1 + b _0222FD00 ; case 2 + b _0222FD44 ; case 3 + b _0222FD70 ; case 4 + b _0222FDB4 ; case 5 + b _0222FDF4 ; case 6 +_0222FC78: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #0 + strb ip, [r2, #0x1c] + moveq r0, #2 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + streqb r1, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #4 + strneb r0, [r3] + b _0222FE34 +_0222FCBC: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + moveq r0, #0 + strb r1, [r2, #0x1c] + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #2 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #5 + strneb r0, [r3] + b _0222FE34 +_0222FD00: + ldr r2, _0222FE58 ; =0x02243114 + mov ip, #2 + ldr r2, [r2] + cmp r0, #0 + strb ip, [r2, #0x1c] + streqb r1, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #0 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + moveq r0, #3 + streqb r0, [r3] + movne r0, #6 + strneb r0, [r3] + b _0222FE34 +_0222FD44: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #1 + ldr r2, [r2] + ldrb ip, [r2, #0x1c] + add r2, ip, #4 + streqb r2, [r3] + beq _0222FE34 + cmp r0, #3 + streqb ip, [r3] + movne r1, #0 + b _0222FE34 +_0222FD70: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #0 + strb ip, [r2, #0x1c] + moveq r0, #6 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #5 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb ip, [r3] + movne r0, #3 + strneb r0, [r3] + b _0222FE34 +_0222FDB4: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + moveq r0, #4 + strb r1, [r2, #0x1c] + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #6 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb r1, [r3] + movne r0, #3 + strneb r0, [r3] + b _0222FE34 +_0222FDF4: + ldr r2, _0222FE58 ; =0x02243114 + cmp r0, #0 + ldr r2, [r2] + mov ip, #2 + strb ip, [r2, #0x1c] + moveq r0, #5 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #2 + moveq r0, #4 + streqb r0, [r3] + beq _0222FE34 + cmp r0, #1 + streqb ip, [r3] + movne r0, #3 + strneb r0, [r3] +_0222FE34: + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #8 + bl MOD13_0223424C + bl MOD13_0222FE5C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FE54: .word 0x02243110 +_0222FE58: .word 0x02243114 + + arm_func_start MOD13_0222FE5C +MOD13_0222FE5C: ; 0x0222FE5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0222FED0 ; =0x02243110 + ldrb r2, [r0] + cmp r2, #4 + bhs _0222FEA4 + mov ip, r2, lsl #3 + ldr r0, _0222FED4 ; =0x0223F478 + ldr r1, _0222FED8 ; =0x0223F47C + ldr r2, _0222FEDC ; =0x0223F47A + ldr r3, _0222FEE0 ; =0x0223F47E + ldrh r0, [r0, ip] + ldrh r1, [r1, ip] + ldrh r2, [r2, ip] + ldrh r3, [r3, ip] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {pc} +_0222FEA4: + ldr r1, _0222FED4 ; =0x0223F478 + mov r3, r2, lsl #3 + ldr r2, _0222FED8 ; =0x0223F47C + ldr r0, _0222FEDC ; =0x0223F47A + ldrh r1, [r1, r3] + ldrh r2, [r2, r3] + ldrh r3, [r0, r3] + mov r0, #0 + bl MOD13_0221F348 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0222FED0: .word 0x02243110 +_0222FED4: .word 0x0223F478 +_0222FED8: .word 0x0223F47C +_0222FEDC: .word 0x0223F47A +_0222FEE0: .word 0x0223F47E + + arm_func_start MOD13_0222FEE4 +MOD13_0222FEE4: ; 0x0222FEE4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl MOD13_022343D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r4, _02230084 ; =0x02243114 + mov r5, #0 +_0222FF3C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0222FF54 + bl MOD13_02239AE8 +_0222FF54: + add r5, r5, #1 + cmp r5, #3 + blo _0222FF3C + ldr r4, _02230084 ; =0x02243114 + mov r5, #0 +_0222FF68: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0222FF80 + bl MOD13_02239AE8 +_0222FF80: + add r5, r5, #1 + cmp r5, #3 + blo _0222FF68 + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02230084 ; =0x02243114 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223939C + ldr r0, _02230088 ; =0x02240410 + ldr r1, _0223008C ; =0x020C9480 + bl MOD13_0221F174 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02230084 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #2 + bne _0222FFF4 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _02230090 ; =MOD13_022245B4 + bl MOD13_02222FBC + b _02230074 +_0222FFF4: + ldr r0, _02230094 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02230074 +_02230008: ; jump table + b _02230018 ; case 0 + b _02230018 ; case 1 + b _02230018 ; case 2 + b _02230060 ; case 3 +_02230018: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + bl MOD13_02234164 + ldrb r0, [r0, #0xe7] + cmp r0, #0xff + bne _02230040 + ldr r0, _02230098 ; =MOD13_02230EC4 + bl MOD13_02222FBC + b _02230074 +_02230040: + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #0 + bl MOD13_0222B7F4 + ldr r0, _0223009C ; =MOD13_0222DD4C + bl MOD13_02222FBC + b _02230074 +_02230060: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022300A0 ; =MOD13_0223201C + bl MOD13_02222FBC +_02230074: + ldr r0, _02230084 ; =0x02243114 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02230084: .word 0x02243114 +_02230088: .word 0x02240410 +_0223008C: .word 0x020C9480 +_02230090: .word MOD13_022245B4 +_02230094: .word 0x02243110 +_02230098: .word MOD13_02230EC4 +_0223009C: .word MOD13_0222DD4C +_022300A0: .word MOD13_0223201C + + arm_func_start MOD13_022300A4 +MOD13_022300A4: ; 0x022300A4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02230130 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #1 + bne _022300F8 + ldr r0, _02230134 ; =0x02243110 + ldrb r0, [r0] + cmp r0, #3 + beq _022300F4 + bl MOD13_02234164 + ldrb r0, [r0, #0xe7] + cmp r0, #0xff + beq _022300F8 +_022300F4: + bl MOD13_0221ED28 +_022300F8: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02230138 ; =MOD13_0222FEE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230130: .word 0x02243114 +_02230134: .word 0x02243110 +_02230138: .word MOD13_0222FEE4 + + arm_func_start MOD13_0223013C +MOD13_0223013C: ; 0x0223013C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02230178 ; =0x02243114 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + cmp r0, #2 + bne _0223015C + bl MOD13_02234908 +_0223015C: + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _0223017C ; =MOD13_022300A4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230178: .word 0x02243114 +_0223017C: .word MOD13_022300A4 + + arm_func_start MOD13_02230180 +MOD13_02230180: ; 0x02230180 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + bl MOD13_0221ED14 + cmp r0, #0 + beq _022301A4 + cmp r0, #1 + beq _022301EC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022301A4: + bl MOD13_02222F1C + cmp r0, #0 + beq _022301BC + cmp r0, #1 + beq _022301D8 + b _02230294 +_022301BC: + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022302A4 ; =0x02243114 + mov r1, #2 + ldr r0, [r0] + strb r1, [r0, #0x1d] + b _02230294 +_022301D8: + bl MOD13_0221EC84 + ldr r0, _022302A8 ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022301EC: + ldr r0, _022302A4 ; =0x02243114 + mov r2, #1 + ldr r1, [r0] + ldr r0, _022302AC ; =0x02243110 + strb r2, [r1, #0x1d] + ldrb r0, [r0] + cmp r0, #4 + blo _0223027C + sub r4, r0, #4 + mov r0, r4 + bl MOD13_02233D0C + cmp r0, #0xff + bne _02230238 + mov r0, #9 + bl MOD13_0223424C + mvn r0, #0 + bl MOD13_0221ECE0 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02230238: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02222F34 + add r2, r4, #1 + str r2, [sp] + ldr r1, _022302B0 ; =0x0223F408 + mov r2, #1 + ldrsb r3, [r1, r0] + mov r0, #0x46 + mov r1, #0 + bl MOD13_02235EFC + bl MOD13_0222FBA4 + bl MOD13_0221EC84 + ldr r0, _022302B4 ; =MOD13_0222FA2C + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} +_0223027C: + cmp r0, #2 + bhi _02230288 + bl MOD13_02233C24 +_02230288: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_0222F918 +_02230294: + ldr r0, _022302B8 ; =MOD13_0223013C + bl MOD13_02222FBC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022302A4: .word 0x02243114 +_022302A8: .word MOD13_02223CFC +_022302AC: .word 0x02243110 +_022302B0: .word 0x0223F408 +_022302B4: .word MOD13_0222FA2C +_022302B8: .word MOD13_0223013C + + arm_func_start MOD13_022302BC +MOD13_022302BC: ; 0x022302BC + bx lr + + arm_func_start MOD13_022302C0 +MOD13_022302C0: ; 0x022302C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _022303D0 ; =0x0223F440 + mov r5, #0 +_022302D0: + mov r0, r4 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _022302FC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r0, _022303D4 ; =0x02243110 + strb r5, [r0] + bl MOD13_0222FE5C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022302FC: + add r5, r5, #1 + cmp r5, #7 + add r4, r4, #8 + blo _022302D0 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0223032C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223032C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _0223034C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223034C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0223036C + mov r0, #1 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223036C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _0223038C + mov r0, #3 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_0223038C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _022303AC + mov r0, #0 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_022303AC: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + mov r0, #2 + bl MOD13_0222FC3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022303D0: .word 0x0223F440 +_022303D4: .word 0x02243110 + + arm_func_start MOD13_022303D8 +MOD13_022303D8: ; 0x022303D8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022302C0 + bl MOD13_022302BC + bl MOD13_02230180 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_02234800 + cmp r0, #1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02230434 ; =MOD13_022303D8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230434: .word MOD13_022303D8 + + arm_func_start MOD13_02230438 +MOD13_02230438: ; 0x02230438 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02230480 ; =0x022303F4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230480: .word 0x022303F4 + + arm_func_start MOD13_02230484 +MOD13_02230484: ; 0x02230484 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022304DC ; =MOD13_02230438 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022304DC: .word MOD13_02230438 + + arm_func_start MOD13_022304E0 +MOD13_022304E0: ; 0x022304E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, #0 + ldr r4, _022305F0 ; =0x02243114 + ldr r5, _022305F4 ; =0x0223F428 + str sb, [sp] + str sb, [sp, #4] + mov fp, #0x11 + mov r7, #1 + mvn r6, #0 + mov r8, #3 +_0223050C: + mov r0, sb + bl MOD13_02233D0C + mov sl, r0 + cmp sl, #0xff + moveq sl, r8 + beq _02230580 + ldr r0, [sp] + mov r1, fp + mov r2, r7 + bl MOD13_02239E0C + ldr r1, [r4] + add r3, sb, #3 + add r1, r1, sb, lsl #2 + str r0, [r1, #0x10] + mov r2, r3, lsl #2 + ldr r0, [r4] + add r3, r5, r3, lsl #2 + add r0, r0, sb, lsl #2 + ldrh r2, [r5, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, #0x10] + mov r1, r6 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r6 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #0x10] + mov r2, r8 + bl MOD13_02239814 +_02230580: + ldr r0, _022305F8 ; =0x0223F3FC + mov r2, r7 + ldrb r1, [r0, sl] + ldr r0, [sp, #4] + bl MOD13_02239E0C + ldr r1, [r4] + mov r2, sb, lsl #2 + add r1, r1, sb, lsl #2 + str r0, [r1, #4] + ldr r0, [r4] + add r3, r5, sb, lsl #2 + add r0, r0, sb, lsl #2 + ldrh r2, [r5, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, #4] + mov r1, r6 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r6 + add r0, r0, sb, lsl #2 + ldr r0, [r0, #4] + mov r2, r8 + bl MOD13_02239814 + add sb, sb, #1 + cmp sb, #3 + blt _0223050C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022305F0: .word 0x02243114 +_022305F4: .word 0x0223F428 +_022305F8: .word 0x0223F3FC + + arm_func_start MOD13_022305FC +MOD13_022305FC: ; 0x022305FC + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _022306DC ; =0x0223F410 + add r3, sp, #0 + mov r2, #0xb +_02230610: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02230610 + ldr r0, _022306E0 ; =0x02240428 + ldr r1, _022306E4 ; =0x020C9480 + bl MOD13_0221F174 + ldr r0, _022306E8 ; =0x0224043C + ldr r1, _022306EC ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _022306F0 ; =0x02240454 + ldr r1, _022306F4 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _022306F8 ; =0x0224046C + ldr r1, _022306FC ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r2, _02230700 ; =0x02243114 + mov r1, #0x10 + ldr r2, [r2] + str r0, [r2] + mov r0, #1 + bl MOD13_0223AEF4 + ldr ip, _02230704 ; =0x04001008 + ldr r3, _02230708 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _0223070C ; =0x0400000A + ldr r1, _02230710 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_022306DC: .word 0x0223F410 +_022306E0: .word 0x02240428 +_022306E4: .word 0x020C9480 +_022306E8: .word 0x0224043C +_022306EC: .word 0x020C8D4C +_022306F0: .word 0x02240454 +_022306F4: .word 0x020C9550 +_022306F8: .word 0x0224046C +_022306FC: .word 0x020C908C +_02230700: .word 0x02243114 +_02230704: .word 0x04001008 +_02230708: .word 0x0400100A +_0223070C: .word 0x0400000A +_02230710: .word 0x0400000C + + arm_func_start MOD13_02230714 +MOD13_02230714: ; 0x02230714 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x20 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _02230774 ; =0x02243114 + mov r2, #0 + str r0, [r1] + strb r2, [r0, #0x1d] + bl MOD13_022305FC + mov r0, #1 + bl MOD13_0221F4CC + mov r0, #0x2f + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #0 + bl MOD13_0221F124 + bl MOD13_022304E0 + bl MOD13_0222FE5C + ldr r0, _02230778 ; =MOD13_02230484 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230774: .word 0x02243114 +_02230778: .word MOD13_02230484 + + arm_func_start MOD13_0223077C +MOD13_0223077C: ; 0x0223077C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _022307D0 ; =0x0223F4B0 + ldr r1, _022307D4 ; =0x0224311C + ldrb lr, [r0] + ldrb ip, [r0, #1] + ldrb r3, [r0, #2] + ldrb r2, [r0, #3] + ldr r0, _022307D8 ; =0x02243124 + ldrsb r1, [r1] + add r4, sp, #0 + strb lr, [sp] + strb ip, [sp, #1] + strb r3, [sp, #2] + strb r2, [sp, #3] + ldrb r1, [r4, r1] + ldr r0, [r0] + mov r2, r1 + bl MOD13_022327DC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022307D0: .word 0x0223F4B0 +_022307D4: .word 0x0224311C +_022307D8: .word 0x02243124 + + arm_func_start MOD13_022307DC +MOD13_022307DC: ; 0x022307DC + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022308B8 ; =0x0224311C + mov r5, r0 + mov r0, #1 + ldrsb r4, [r1] + bl MOD13_02222EFC + ldr r2, _022308BC ; =0x0223F4D4 + mvn r1, #0 + add r0, r2, r0, lsl #4 + add r0, r0, r4, lsl #2 + ldrsb r2, [r5, r0] + cmp r2, r1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r2, #0 + ldreq r0, _022308C0 ; =0x02243118 + streqb r4, [r0] + mvn r0, #1 + cmp r2, r0 + ldreq r1, _022308C0 ; =0x02243118 + ldreq r0, _022308B8 ; =0x0224311C + ldreqsb r1, [r1] + streqb r1, [r0] + ldrne r0, _022308B8 ; =0x0224311C + strneb r2, [r0] + mov r0, #8 + bl MOD13_0223424C + mov r0, #1 + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r0, _022308B8 ; =0x0224311C + ldr r1, _022308C4 ; =0x0223F534 + ldrsb lr, [r0] + ldr r0, _022308C8 ; =0x0223F536 + add ip, r1, r6, lsl #5 + ldr r1, _022308CC ; =0x0223F538 + add r2, r0, r4, lsl #5 + ldr r4, _022308D0 ; =0x0223F53A + add r1, r1, r5, lsl #5 + mov r5, lr, lsl #3 + add r3, r4, r3, lsl #5 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldrh r3, [r5, r3] + bl MOD13_0221F25C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022308B8: .word 0x0224311C +_022308BC: .word 0x0223F4D4 +_022308C0: .word 0x02243118 +_022308C4: .word 0x0223F534 +_022308C8: .word 0x0223F536 +_022308CC: .word 0x0223F538 +_022308D0: .word 0x0223F53A + + arm_func_start MOD13_022308D4 +MOD13_022308D4: ; 0x022308D4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221F21C + bl MOD13_0221EE54 + ldr r0, _02230A14 ; =0x02243124 + ldr r0, [r0] + bl MOD13_0223939C + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + ldr r0, _02230A18 ; =0x02243120 + ldrb r0, [r0] + cmp r0, #0 + bne _0223096C + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + ldr r0, _02230A1C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0223096C: + ldr r0, _02230A20 ; =0x0224311C + ldrsb r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02230A0C +_02230980: ; jump table + b _02230990 ; case 0 + b _022309AC ; case 1 + b _022309C8 ; case 2 + b _022309E4 ; case 3 +_02230990: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A24 ; =MOD13_0222F8A0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309AC: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A28 ; =MOD13_02227C38 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309C8: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02230A2C ; =MOD13_0222F2F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022309E4: + mov r0, #2 + mov r1, #0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + mov r0, #1 + bl MOD13_0222B7F4 + ldr r0, _02230A30 ; =MOD13_0222DD4C + bl MOD13_02222FBC +_02230A0C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230A14: .word 0x02243124 +_02230A18: .word 0x02243120 +_02230A1C: .word MOD13_02230714 +_02230A20: .word 0x0224311C +_02230A24: .word MOD13_0222F8A0 +_02230A28: .word MOD13_02227C38 +_02230A2C: .word MOD13_0222F2F8 +_02230A30: .word MOD13_0222DD4C + + arm_func_start MOD13_02230A34 +MOD13_02230A34: ; 0x02230A34 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02230A9C ; =0x02243120 + ldrb r0, [r0] + cmp r0, #0 + beq _02230A64 + bl MOD13_0221ED28 +_02230A64: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02230AA0 ; =MOD13_022308D4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230A9C: .word 0x02243120 +_02230AA0: .word MOD13_022308D4 + + arm_func_start MOD13_02230AA4 +MOD13_02230AA4: ; 0x02230AA4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02230AC8 ; =MOD13_02230A34 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230AC8: .word MOD13_02230A34 + + arm_func_start MOD13_02230ACC +MOD13_02230ACC: ; 0x02230ACC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02230AF0 + cmp r0, #1 + beq _02230AFC + add sp, sp, #4 + ldmia sp!, {pc} +_02230AF0: + mov r0, #7 + bl MOD13_0223424C + b _02230B14 +_02230AFC: + mov r0, #6 + bl MOD13_0223424C + bl MOD13_0223077C + ldr r0, _02230B24 ; =0x02243120 + mov r1, #1 + strb r1, [r0] +_02230B14: + ldr r0, _02230B28 ; =MOD13_02230AA4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230B24: .word 0x02243120 +_02230B28: .word MOD13_02230AA4 + + arm_func_start MOD13_02230B2C +MOD13_02230B2C: ; 0x02230B2C + bx lr + + arm_func_start MOD13_02230B30 +MOD13_02230B30: ; 0x02230B30 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, #0 + mov r6, r7 + ldr r4, _02230CC0 ; =0x0223F4F4 + mov r5, #1 +_02230B48: + mov r0, r5 + bl MOD13_02222EFC + add r0, r4, r0, lsl #5 + add r0, r0, r6 + bl MOD13_0223B2B4 + cmp r0, #0 + beq _02230BEC + mov r0, #1 + bl MOD13_0221ECF4 + ldr r1, _02230CC4 ; =0x0224311C + mov r0, #1 + strb r7, [r1] + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r0, _02230CC4 ; =0x0224311C + ldr r1, _02230CC8 ; =0x0223F534 + ldrsb lr, [r0] + ldr r0, _02230CCC ; =0x0223F536 + add ip, r1, r6, lsl #5 + ldr r1, _02230CD0 ; =0x0223F538 + add r2, r0, r4, lsl #5 + ldr r4, _02230CD4 ; =0x0223F53A + add r1, r1, r5, lsl #5 + mov r5, lr, lsl #3 + add r3, r4, r3, lsl #5 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldrh r3, [r5, r3] + bl MOD13_0221F25C + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230BEC: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #8 + blo _02230B48 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02230C1C + mov r0, #1 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C1C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02230C3C + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C3C: + mov r0, #0x40 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C5C + mov r0, #1 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C5C: + mov r0, #0x80 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C7C + mov r0, #3 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C7C: + mov r0, #0x20 + bl MOD13_0223B3B0 + cmp r0, #0 + beq _02230C9C + mov r0, #0 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} +_02230C9C: + mov r0, #0x10 + bl MOD13_0223B3B0 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #2 + bl MOD13_022307DC + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02230CC0: .word 0x0223F4F4 +_02230CC4: .word 0x0224311C +_02230CC8: .word 0x0223F534 +_02230CCC: .word 0x0223F536 +_02230CD0: .word 0x0223F538 +_02230CD4: .word 0x0223F53A + + arm_func_start MOD13_02230CD8 +MOD13_02230CD8: ; 0x02230CD8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02230B30 + bl MOD13_02230B2C + bl MOD13_02230ACC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02230D24 ; =MOD13_02230CD8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230D24: .word MOD13_02230CD8 + + arm_func_start MOD13_02230D28 +MOD13_02230D28: ; 0x02230D28 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0221F0EC + ldr r0, _02230D70 ; =0x02230CF4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230D70: .word 0x02230CF4 + + arm_func_start MOD13_02230D74 +MOD13_02230D74: ; 0x02230D74 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _02230DCC ; =MOD13_02230D28 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02230DCC: .word MOD13_02230D28 + + arm_func_start MOD13_02230DD0 +MOD13_02230DD0: ; 0x02230DD0 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, _02230E94 ; =0x0223F4BC + add r3, sp, #0 + mov r2, #0xb +_02230DE4: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02230DE4 + ldr r0, _02230E98 ; =0x02240480 + ldr r1, _02230E9C ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02230EA0 ; =0x02240498 + ldr r1, _02230EA4 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02230EA8 ; =0x022404B0 + ldr r1, _02230EAC ; =0x020C908C + bl MOD13_0221F174 + add r0, sp, #0 + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02230EB0 ; =0x02243124 + ldr ip, _02230EB4 ; =0x04001008 + str r0, [r1] + ldrh r0, [ip] + ldr r3, _02230EB8 ; =0x0400100A + ldr r2, _02230EBC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + ldr r1, _02230EC0 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #0x1c + ldmia sp!, {pc} + .align 2, 0 +_02230E94: .word 0x0223F4BC +_02230E98: .word 0x02240480 +_02230E9C: .word 0x020C8D4C +_02230EA0: .word 0x02240498 +_02230EA4: .word 0x020C9550 +_02230EA8: .word 0x022404B0 +_02230EAC: .word 0x020C908C +_02230EB0: .word 0x02243124 +_02230EB4: .word 0x04001008 +_02230EB8: .word 0x0400100A +_02230EBC: .word 0x0400000A +_02230EC0: .word 0x0400000C + + arm_func_start MOD13_02230EC4 +MOD13_02230EC4: ; 0x02230EC4 + stmdb sp!, {r4, r5, r6, lr} + bl MOD13_02234164 + ldr r1, _02230FD0 ; =0x02243118 + ldr r2, _02230FD4 ; =0x02243120 + ldrsb r3, [r1] + mov r5, #0 + mov r4, r0 + cmp r3, #0 + moveq r0, #1 + strb r5, [r2] + streqb r0, [r1] + bl MOD13_02222F34 + cmp r0, #0 + beq _02230F24 + ldr r0, _02230FD8 ; =0x0224311C + ldrsb r1, [r0] + cmp r1, #2 + moveq r1, #0 + streqb r1, [r0] + ldr r0, _02230FD0 ; =0x02243118 + ldrsb r1, [r0] + cmp r1, #2 + moveq r1, #1 + streqb r1, [r0] +_02230F24: + bl MOD13_02230DD0 + bl MOD13_0221F4AC + bl MOD13_02222F34 + mov r5, r0 + ldrb r1, [r4, #0xf4] + mov r0, #0x32 + ldr r3, _02230FDC ; =0x0223F4B4 + add r2, r1, #1 + ldrsb r1, [r3, r5] + bl MOD13_0221EE98 + mov r0, #1 + bl MOD13_0221F124 + mov r0, #1 + bl MOD13_02222EFC + mov r6, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r5, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r4, r0 + mov r0, #1 + bl MOD13_02222EFC + mov r3, r0 + ldr r1, _02230FE0 ; =0x0223F534 + ldr r0, _02230FD8 ; =0x0224311C + add ip, r1, r6, lsl #5 + ldrsb lr, [r0] + ldr r1, _02230FE4 ; =0x0223F538 + ldr r0, _02230FE8 ; =0x0223F536 + add r1, r1, r5, lsl #5 + add r2, r0, r4, lsl #5 + mov r5, lr, lsl #3 + ldrh r0, [r5, ip] + ldrh r1, [r5, r1] + ldrh r2, [r5, r2] + ldr r4, _02230FEC ; =0x0223F53A + add r3, r4, r3, lsl #5 + ldrh r3, [r5, r3] + bl MOD13_0221F25C + ldr r0, _02230FF0 ; =MOD13_02230D74 + bl MOD13_02222FBC + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02230FD0: .word 0x02243118 +_02230FD4: .word 0x02243120 +_02230FD8: .word 0x0224311C +_02230FDC: .word 0x0223F4B4 +_02230FE0: .word 0x0223F534 +_02230FE4: .word 0x0223F538 +_02230FE8: .word 0x0223F536 +_02230FEC: .word 0x0223F53A +_02230FF0: .word MOD13_02230D74 + + arm_func_start MOD13_02230FF4 +MOD13_02230FF4: ; 0x02230FF4 + ldr ip, _02231000 ; =MOD13_0223AF48 + mov r0, r1 + bx ip + .align 2, 0 +_02231000: .word MOD13_0223AF48 + + arm_func_start MOD13_02231004 +MOD13_02231004: ; 0x02231004 + ldr ip, _02231014 ; =MOD13_0223B004 + mov r0, r1 + mov r1, #0x20 + bx ip + .align 2, 0 +_02231014: .word MOD13_0223B004 + + arm_func_start MOD13_02231018 +MOD13_02231018: ; 0x02231018 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + bl FUN_021EBB80 + movs r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_0221F694 + bl MOD13_022341E8 + cmp r4, #0 + ble _0223105C + ldr r1, _02231088 ; =0x02243128 + mov r2, #1 + mov r0, #0x11 + strb r2, [r1] + bl MOD13_0223424C + b _0223106C +_0223105C: + bl FUN_021EBAE8 + bl MOD13_0222B0BC + mov r0, #0x12 + bl MOD13_0223424C +_0223106C: + ldr r0, _0223108C ; =MOD13_0223115C + bl MOD13_02222FBC + mov r1, r5 + mov r0, #0 + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02231088: .word 0x02243128 +_0223108C: .word MOD13_0223115C + + arm_func_start MOD13_02231090 +MOD13_02231090: ; 0x02231090 + stmdb sp!, {r4, lr} + bl MOD13_022338FC + mov r4, r0 + bl FUN_021EB9D8 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl FUN_02095324 + add r1, r4, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + bl FUN_02095324 + add r1, r4, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02231120 ; =0x02243128 + ldrb r0, [r0] + cmp r0, #0 + bne _02231108 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231124 ; =MOD13_0222B7D0 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} +_02231108: + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231128 ; =MOD13_02231704 + bl MOD13_02222FBC + ldmia sp!, {r4, pc} + .align 2, 0 +_02231120: .word 0x02243128 +_02231124: .word MOD13_0222B7D0 +_02231128: .word MOD13_02231704 + + arm_func_start MOD13_0223112C +MOD13_0223112C: ; 0x0223112C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231158 ; =MOD13_02231090 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231158: .word MOD13_02231090 + + arm_func_start MOD13_0223115C +MOD13_0223115C: ; 0x0223115C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231188 ; =MOD13_0223112C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231188: .word MOD13_0223112C + + arm_func_start MOD13_0223118C +MOD13_0223118C: ; 0x0223118C + bx lr + + arm_func_start MOD13_02231190 +MOD13_02231190: ; 0x02231190 + bx lr + + arm_func_start MOD13_02231194 +MOD13_02231194: ; 0x02231194 + bx lr + + arm_func_start MOD13_02231198 +MOD13_02231198: ; 0x02231198 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02231194 + bl MOD13_02231190 + bl MOD13_0223118C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022311F4 ; =MOD13_02231198 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022311F4: .word MOD13_02231198 + + arm_func_start MOD13_022311F8 +MOD13_022311F8: ; 0x022311F8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231258 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 +_02231258: + ldr r0, _02231268 ; =0x022311B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231268: .word 0x022311B4 + + arm_func_start MOD13_0223126C +MOD13_0223126C: ; 0x0223126C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + bl MOD13_02234164 + mov r4, r0 + ldr r0, _022312FC ; =0x0223F574 + add r1, sp, #4 + mov r2, #0xc + bl MIi_CpuCopy32 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #2 + moveq r0, #4 + streqb r0, [sp, #0xe] + ldrneb r0, [r4, #0xf4] + addne r0, r0, #1 + strneb r0, [sp, #0xe] + add r0, sp, #4 + bl FUN_021EBC60 + cmp r0, #0 + bne _022312C8 + bl OS_Terminate +_022312C8: + ldr r0, [sp] + cmp r0, #0 + bne _022312E0 + ldrb r0, [r4, #0xf4] + mov r1, r4 + bl FUN_021EB9A4 +_022312E0: + mov r0, #0 + ldr r1, _02231300 ; =MOD13_02231018 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022312FC: .word 0x0223F574 +_02231300: .word MOD13_02231018 + + arm_func_start MOD13_02231304 +MOD13_02231304: ; 0x02231304 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223139C ; =0x022404C4 + ldr r1, _022313A0 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _022313A4 ; =0x022404DC + ldr r1, _022313A8 ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _022313AC ; =0x022404F4 + ldr r1, _022313B0 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _022313B4 ; =0x04001008 + ldr ip, _022313B8 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _022313BC ; =0x04000008 + ldr r2, _022313C0 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _022313C4 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223139C: .word 0x022404C4 +_022313A0: .word 0x020C8D4C +_022313A4: .word 0x022404DC +_022313A8: .word 0x020C9550 +_022313AC: .word 0x022404F4 +_022313B0: .word 0x020C908C +_022313B4: .word 0x04001008 +_022313B8: .word 0x0400100A +_022313BC: .word 0x04000008 +_022313C0: .word 0x0400000A +_022313C4: .word 0x0400000C + + arm_func_start MOD13_022313C8 +MOD13_022313C8: ; 0x022313C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231454 ; =0x02243128 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231304 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231408 + mov r0, #0x31 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 +_02231408: + mov r0, #2 + bl MOD13_0221F124 + ldr r0, [sp] + cmp r0, #0 + bne _02231420 + bl MOD13_0221F4AC +_02231420: + mov r0, #0x2c + bl MOD13_0221F070 + mov r0, #0 + bl MOD13_0221E694 + bl MOD13_0223126C + mov r0, #0 + bl MOD13_0221F6E0 + mov r0, #0xc + bl MOD13_0223424C + ldr r0, _02231458 ; =MOD13_022311F8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231454: .word 0x02243128 +_02231458: .word MOD13_022311F8 + + arm_func_start MOD13_0223145C +MOD13_0223145C: ; 0x0223145C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022314D0 ; =0x0224312C + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0xb4 + addlo sp, sp, #4 + ldmloia sp!, {pc} + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + bl MOD13_02222F1C + cmp r0, #0 + beq _022314C0 + cmp r0, #1 + bne _022314C0 + ldr r0, [sp] + cmp r0, #0 + beq _022314C0 + ldr r0, _022314D4 ; =MOD13_02223CFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022314C0: + ldr r0, _022314D8 ; =MOD13_02231598 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022314D0: .word 0x0224312C +_022314D4: .word MOD13_02223CFC +_022314D8: .word MOD13_02231598 + + arm_func_start MOD13_022314DC +MOD13_022314DC: ; 0x022314DC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_022343D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + bne _02231580 + mov r0, #0 + mov r1, r0 + bl MOD13_02222F6C + ldr r0, _02231590 ; =MOD13_0222DD4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02231580: + ldr r0, _02231594 ; =MOD13_022245B4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231590: .word MOD13_0222DD4C +_02231594: .word MOD13_022245B4 + + arm_func_start MOD13_02231598 +MOD13_02231598: ; 0x02231598 + stmdb sp!, {lr} + sub sp, sp, #4 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + ldr r0, [sp] + cmp r0, #0 + beq _022315BC + bl MOD13_02234908 +_022315BC: + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022315F4 ; =MOD13_022314DC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022315F4: .word MOD13_022314DC + + arm_func_start MOD13_022315F8 +MOD13_022315F8: ; 0x022315F8 + bx lr + + arm_func_start MOD13_022315FC +MOD13_022315FC: ; 0x022315FC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223145C + bl MOD13_022315F8 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231640 ; =MOD13_022315FC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231640: .word MOD13_022315FC + + arm_func_start MOD13_02231644 +MOD13_02231644: ; 0x02231644 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _0223167C ; =0x02231614 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223167C: .word 0x02231614 + + arm_func_start MOD13_02231680 +MOD13_02231680: ; 0x02231680 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022316EC ; =0x02240508 + ldr r1, _022316F0 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _022316F4 ; =0x04001008 + ldr r3, _022316F8 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _022316FC ; =0x0400000A + ldr r1, _02231700 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022316EC: .word 0x02240508 +_022316F0: .word 0x020C908C +_022316F4: .word 0x04001008 +_022316F8: .word 0x0400100A +_022316FC: .word 0x0400000A +_02231700: .word 0x0400000C + + arm_func_start MOD13_02231704 +MOD13_02231704: ; 0x02231704 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231734 ; =0x0224312C + mov r1, #0 + strb r1, [r0] + bl MOD13_02231680 + mov r0, #0x2d + bl MOD13_0221F070 + ldr r0, _02231738 ; =MOD13_02231644 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231734: .word 0x0224312C +_02231738: .word MOD13_02231644 + + arm_func_start MOD13_0223173C +MOD13_0223173C: ; 0x0223173C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231780 ; =MOD13_022313C8 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231780: .word MOD13_022313C8 + + arm_func_start MOD13_02231784 +MOD13_02231784: ; 0x02231784 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _022317C0 ; =MOD13_0223173C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022317C0: .word MOD13_0223173C + + arm_func_start MOD13_022317C4 +MOD13_022317C4: ; 0x022317C4 + bx lr + + arm_func_start MOD13_022317C8 +MOD13_022317C8: ; 0x022317C8 + bx lr + + arm_func_start MOD13_022317CC +MOD13_022317CC: ; 0x022317CC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022317C8 + bl MOD13_022317C4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02231810 ; =MOD13_02231784 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231810: .word MOD13_02231784 + + arm_func_start MOD13_02231814 +MOD13_02231814: ; 0x02231814 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02231894 ; =0x0223F580 + add r3, sp, #8 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {pc} + add r1, sp, #4 + mov r0, #0 + bl MOD13_02222F44 + mov r0, #0 + str r0, [sp] + mov r1, #1 + ldr r3, [sp, #4] + add r0, sp, #8 + ldr r0, [r0, r3, lsl #2] + mov r2, r1 + mvn r3, #0 + bl MOD13_02235EFC + ldr r0, _02231898 ; =MOD13_022317CC + bl MOD13_02222FBC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02231894: .word 0x0223F580 +_02231898: .word MOD13_022317CC + + arm_func_start MOD13_0223189C +MOD13_0223189C: ; 0x0223189C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x14 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x14 + bl MOD13_0223AEF4 + ldr r0, _022318F4 ; =MOD13_02231814 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022318F4: .word MOD13_02231814 + + arm_func_start MOD13_022318F8 +MOD13_022318F8: ; 0x022318F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231964 ; =0x0224051C + ldr r1, _02231968 ; =0x020C908C + bl MOD13_0221F174 + ldr ip, _0223196C ; =0x04001008 + ldr r3, _02231970 ; =0x0400100A + ldrh r0, [ip] + ldr r2, _02231974 ; =0x0400000A + ldr r1, _02231978 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231964: .word 0x0224051C +_02231968: .word 0x020C908C +_0223196C: .word 0x04001008 +_02231970: .word 0x0400100A +_02231974: .word 0x0400000A +_02231978: .word 0x0400000C + + arm_func_start MOD13_0223197C +MOD13_0223197C: ; 0x0223197C + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02233570 + add r1, sp, #0 + mov r0, #0 + bl MOD13_02222F44 + bl MOD13_022318F8 + mov r0, #0x31 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + ldr r0, [sp] + cmp r0, #2 + beq _022319B8 + bl MOD13_0221F4AC +_022319B8: + ldr r0, [sp] + cmp r0, #1 + bne _022319C8 + bl MOD13_02233B3C +_022319C8: + ldr r0, _022319D8 ; =MOD13_0223189C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022319D8: .word MOD13_0223189C + + arm_func_start MOD13_022319DC +MOD13_022319DC: ; 0x022319DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231A14 ; =0x02243130 + ldrb r1, [r0] + add r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r0, _02231A18 ; =MOD13_02231A9C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231A14: .word 0x02243130 +_02231A18: .word MOD13_02231A9C + + arm_func_start MOD13_02231A1C +MOD13_02231A1C: ; 0x02231A1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + mov r0, #0 + mov r1, #2 + bl MOD13_02222F6C + ldr r0, _02231A98 ; =MOD13_0223197C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231A98: .word MOD13_0223197C + + arm_func_start MOD13_02231A9C +MOD13_02231A9C: ; 0x02231A9C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231ADC ; =MOD13_02231A1C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231ADC: .word MOD13_02231A1C + + arm_func_start MOD13_02231AE0 +MOD13_02231AE0: ; 0x02231AE0 + bx lr + + arm_func_start MOD13_02231AE4 +MOD13_02231AE4: ; 0x02231AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022319DC + bl MOD13_02231AE0 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231B28 ; =MOD13_02231AE4 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231B28: .word MOD13_02231AE4 + + arm_func_start MOD13_02231B2C +MOD13_02231B2C: ; 0x02231B2C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02231B64 ; =0x02231AFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231B64: .word 0x02231AFC + + arm_func_start MOD13_02231B68 +MOD13_02231B68: ; 0x02231B68 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231BE8 ; =0x02240530 + ldr r1, _02231BEC ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02231BF0 ; =0x04001008 + ldr ip, _02231BF4 ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02231BF8 ; =0x04000008 + ldr r2, _02231BFC ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02231C00 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231BE8: .word 0x02240530 +_02231BEC: .word 0x020C908C +_02231BF0: .word 0x04001008 +_02231BF4: .word 0x0400100A +_02231BF8: .word 0x04000008 +_02231BFC: .word 0x0400000A +_02231C00: .word 0x0400000C + + arm_func_start MOD13_02231C04 +MOD13_02231C04: ; 0x02231C04 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231C44 ; =0x02243130 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231B68 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #0x29 + bl MOD13_0221F070 + mov r0, #0x10 + bl MOD13_0223424C + ldr r0, _02231C48 ; =MOD13_02231B2C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231C44: .word 0x02243130 +_02231C48: .word MOD13_02231B2C + + arm_func_start MOD13_02231C4C +MOD13_02231C4C: ; 0x02231C4C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231C8C + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_02231C8C: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231CC4 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02231CC4: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _02231D18 ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231CFC + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231D1C ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02231CFC: + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _02231D20 ; =MOD13_0223269C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231D18: .word 0x02243134 +_02231D1C: .word MOD13_02230714 +_02231D20: .word MOD13_0223269C + + arm_func_start MOD13_02231D24 +MOD13_02231D24: ; 0x02231D24 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _02231D8C ; =0x02243134 + ldrb r0, [r0] + cmp r0, #0 + bne _02231D68 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02231D68: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02231D90 ; =MOD13_02231C4C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231D8C: .word 0x02243134 +_02231D90: .word MOD13_02231C4C + + arm_func_start MOD13_02231D94 +MOD13_02231D94: ; 0x02231D94 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02231DB8 ; =MOD13_02231D24 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231DB8: .word MOD13_02231D24 + + arm_func_start MOD13_02231DBC +MOD13_02231DBC: ; 0x02231DBC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + cmp r0, #0 + beq _02231DE0 + cmp r0, #1 + beq _02231DEC + add sp, sp, #4 + ldmia sp!, {pc} +_02231DE0: + mov r0, #7 + bl MOD13_0223424C + b _02231E00 +_02231DEC: + mov r0, #6 + bl MOD13_0223424C + ldr r0, _02231E10 ; =0x02243134 + mov r1, #1 + strb r1, [r0] +_02231E00: + ldr r0, _02231E14 ; =MOD13_02231D94 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231E10: .word 0x02243134 +_02231E14: .word MOD13_02231D94 + + arm_func_start MOD13_02231E18 +MOD13_02231E18: ; 0x02231E18 + bx lr + + arm_func_start MOD13_02231E1C +MOD13_02231E1C: ; 0x02231E1C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02231E3C + mov r0, #1 + bl MOD13_0221ECF4 +_02231E3C: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02231E1C + bl MOD13_02231E18 + bl MOD13_02231DBC + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02231EAC ; =0x02231E60 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231EAC: .word 0x02231E60 + + arm_func_start MOD13_02231EB0 +MOD13_02231EB0: ; 0x02231EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0221F0EC + ldr r0, _02231EF8 ; =0x02231E7C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231EF8: .word 0x02231E7C + + arm_func_start MOD13_02231EFC +MOD13_02231EFC: ; 0x02231EFC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, #1 + mov r2, r1 + mov r0, #2 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AEF4 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _02231F54 ; =MOD13_02231EB0 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231F54: .word MOD13_02231EB0 + + arm_func_start MOD13_02231F58 +MOD13_02231F58: ; 0x02231F58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02231FF0 ; =0x02240544 + ldr r1, _02231FF4 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02231FF8 ; =0x0224055C + ldr r1, _02231FFC ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02232000 ; =0x02240574 + ldr r1, _02232004 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02232008 ; =0x04001008 + ldr ip, _0223200C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02232010 ; =0x04000008 + ldr r2, _02232014 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02232018 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02231FF0: .word 0x02240544 +_02231FF4: .word 0x020C8D4C +_02231FF8: .word 0x0224055C +_02231FFC: .word 0x020C9550 +_02232000: .word 0x02240574 +_02232004: .word 0x020C908C +_02232008: .word 0x04001008 +_0223200C: .word 0x0400100A +_02232010: .word 0x04000008 +_02232014: .word 0x0400000A +_02232018: .word 0x0400000C + + arm_func_start MOD13_0223201C +MOD13_0223201C: ; 0x0223201C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223206C ; =0x02243134 + mov r1, #0 + strb r1, [r0] + bl MOD13_02231F58 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #0x38 + mvn r1, #0 + mov r2, #0 + bl MOD13_0221EE98 + mov r0, #1 + bl MOD13_0221F124 + mov r0, #0x27 + bl MOD13_0221F070 + ldr r0, _02232070 ; =MOD13_02231EFC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223206C: .word 0x02243134 +_02232070: .word MOD13_02231EFC + + arm_func_start MOD13_02232074 +MOD13_02232074: ; 0x02232074 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022320DC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #1 + bne _022320AC + ldr r0, _022320E0 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022320AC: + mov r0, #0xb + bl MOD13_0223424C + bl MOD13_0221EC9C + ldr r1, _022320DC ; =0x02243138 + mov r2, #0 + ldr r0, _022320E4 ; =MOD13_022321B8 + strb r2, [r1] + bl MOD13_022353A4 + ldr r0, _022320E8 ; =0x02232514 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022320DC: .word 0x02243138 +_022320E0: .word MOD13_02232444 +_022320E4: .word MOD13_022321B8 +_022320E8: .word 0x02232514 + + arm_func_start MOD13_022320EC +MOD13_022320EC: ; 0x022320EC + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + beq _02232124 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _0223214C ; =0x02243138 + mov r2, #3 + mov r0, #6 + strb r2, [r1] + bl MOD13_0223424C + b _02232138 +_02232124: + ldr r1, _0223214C ; =0x02243138 + mov r2, #1 + mov r0, #7 + strb r2, [r1] + bl MOD13_0223424C +_02232138: + bl MOD13_02235EB0 + ldr r0, _02232150 ; =MOD13_02232074 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223214C: .word 0x02243138 +_02232150: .word MOD13_02232074 + + arm_func_start MOD13_02232154 +MOD13_02232154: ; 0x02232154 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E80 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _0223217C ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223217C: .word MOD13_02232444 + + arm_func_start MOD13_02232180 +MOD13_02232180: ; 0x02232180 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02235E9C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #6 + bl MOD13_0223424C + bl MOD13_02235EB0 + ldr r0, _022321B4 ; =MOD13_02232154 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022321B4: .word MOD13_02232154 + + arm_func_start MOD13_022321B8 +MOD13_022321B8: ; 0x022321B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022322AC ; =0x02243138 + ldrb r2, [r1] + cmp r2, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022322A4 +_022321E0: ; jump table + b _022321F0 ; case 0 + b _02232234 ; case 1 + b _02232250 ; case 2 + b _02232288 ; case 3 +_022321F0: + mov r0, #3 + strb r0, [r1] + bl MOD13_022341E8 + mov r0, #0x12 + bl MOD13_0223424C + mov r1, #1 + mov ip, #0 + mov r2, r1 + mov r0, #0x10 + mvn r3, #0 + str ip, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022322B0 ; =MOD13_02232180 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232234: + mov r0, #1 + strb r0, [r1] + bl MOD13_022341E8 + ldr r0, _022322B4 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232250: + bl MOD13_022341E8 + mov r0, #0 + bl MOD13_022353A4 + mov r1, #0 + mov r0, #0x11 + mov r2, #1 + mvn r3, #0 + str r1, [sp] + bl MOD13_02235EFC + bl MOD13_0221EC84 + ldr r0, _022322B8 ; =MOD13_022320EC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_02232288: + mov r0, #2 + strb r0, [r1] + bl MOD13_022341E8 + mov r0, #9 + bl MOD13_0223424C + ldr r0, _022322B4 ; =MOD13_02232444 + bl MOD13_02222FBC +_022322A4: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022322AC: .word 0x02243138 +_022322B0: .word MOD13_02232180 +_022322B4: .word MOD13_02232444 +_022322B8: .word MOD13_022320EC + + arm_func_start MOD13_022322BC +MOD13_022322BC: ; 0x022322BC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #2 + bne _022322FC + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} +_022322FC: + bl MOD13_0221ECB4 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_022353BC + bl MOD13_0221E654 + mov r0, #0 + bl MOD13_0223A65C + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02232344 + bl MOD13_0221EE54 + mov r0, #1 + mov r1, r0 + bl MOD13_0223AE98 +_02232344: + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AE98 + ldr r0, _022323BC ; =0x02243138 + ldrb r0, [r0] + cmp r0, #2 + bne _0223237C + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022323C0 ; =MOD13_02230714 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_0223237C: + cmp r0, #3 + bne _022323A0 + mov r0, #2 + mov r1, #1 + bl MOD13_02222FA8 + ldr r0, _022323C4 ; =MOD13_0223201C + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} +_022323A0: + mov r0, #0 + mov r1, r0 + bl MOD13_02222FA8 + ldr r0, _022323C8 ; =MOD13_02231C04 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022323BC: .word 0x02243138 +_022323C0: .word MOD13_02230714 +_022323C4: .word MOD13_0223201C +_022323C8: .word MOD13_02231C04 + + arm_func_start MOD13_022323CC +MOD13_022323CC: ; 0x022323CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED28 + ldr r0, _0223243C ; =0x02243138 + ldrb r0, [r0] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02232418 + mov r1, #1 + mov r2, r1 + mov r0, #3 + mov r3, #8 + bl MOD13_0223A2A8 +_02232418: + mov r0, #3 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + ldr r0, _02232440 ; =MOD13_022322BC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223243C: .word 0x02243138 +_02232440: .word MOD13_022322BC + + arm_func_start MOD13_02232444 +MOD13_02232444: ; 0x02232444 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221EC84 + mov r0, #8 + bl MOD13_0223A10C + ldr r0, _02232468 ; =MOD13_022323CC + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232468: .word MOD13_022323CC + + arm_func_start MOD13_0223246C +MOD13_0223246C: ; 0x0223246C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022324C0 ; =0x02243138 + ldrb r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_0221ED14 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022324C0 ; =0x02243138 + mov r1, #2 + strb r1, [r0] + bl MOD13_022341E8 + mov r0, #7 + bl MOD13_0223424C + ldr r0, _022324C4 ; =MOD13_02232444 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022324C0: .word 0x02243138 +_022324C4: .word MOD13_02232444 + + arm_func_start MOD13_022324C8 +MOD13_022324C8: ; 0x022324C8 + bx lr + + arm_func_start MOD13_022324CC +MOD13_022324CC: ; 0x022324CC + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _022324F4 + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} +_022324F4: + bl MOD13_02232730 + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl MOD13_0221ECF4 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022324CC + bl MOD13_022324C8 + bl MOD13_0223246C + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0221ED14 + mvn r1, #1 + cmp r0, r1 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + bl MOD13_0221EC9C + ldr r0, _02232560 ; =0x02232514 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232560: .word 0x02232514 + + arm_func_start MOD13_02232564 +MOD13_02232564: ; 0x02232564 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0 + bl MOD13_0223A388 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_0221F0EC + ldr r0, _02232598 ; =0x02232530 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232598: .word 0x02232530 + + arm_func_start MOD13_0223259C +MOD13_0223259C: ; 0x0223259C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #2 + mov r1, #0 + mov r2, #0x15 + mov r3, #8 + bl MOD13_0223A2A8 + mov r0, #0 + mov r1, #0x15 + bl MOD13_0223AEF4 + ldr r0, _022325D4 ; =MOD13_02232564 + bl MOD13_02222FBC + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022325D4: .word MOD13_02232564 + + arm_func_start MOD13_022325D8 +MOD13_022325D8: ; 0x022325D8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232670 ; =0x02240588 + ldr r1, _02232674 ; =0x020C8D4C + bl MOD13_0221F174 + ldr r0, _02232678 ; =0x022405A0 + ldr r1, _0223267C ; =0x020C9550 + bl MOD13_0221F174 + ldr r0, _02232680 ; =0x022405B8 + ldr r1, _02232684 ; =0x020C908C + bl MOD13_0221F174 + ldr r1, _02232688 ; =0x04001008 + ldr ip, _0223268C ; =0x0400100A + ldrh r0, [r1] + ldr r3, _02232690 ; =0x04000008 + ldr r2, _02232694 ; =0x0400000A + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + ldrh r0, [ip] + ldr r1, _02232698 ; =0x0400000C + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [ip] + ldrh r0, [r3] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r3] + ldrh r0, [r2] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r2] + ldrh r0, [r1] + bic r0, r0, #3 + orr r0, r0, #3 + strh r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232670: .word 0x02240588 +_02232674: .word 0x020C8D4C +_02232678: .word 0x022405A0 +_0223267C: .word 0x020C9550 +_02232680: .word 0x022405B8 +_02232684: .word 0x020C908C +_02232688: .word 0x04001008 +_0223268C: .word 0x0400100A +_02232690: .word 0x04000008 +_02232694: .word 0x0400000A +_02232698: .word 0x0400000C + + arm_func_start MOD13_0223269C +MOD13_0223269C: ; 0x0223269C + stmdb sp!, {lr} + sub sp, sp, #0x6c + ldr r0, _02232724 ; =0x02243138 + mov r1, #0 + strb r1, [r0] + bl MOD13_022325D8 + mov r0, #8 + bl MOD13_0221F4CC + mov r0, #2 + bl MOD13_0221F124 + add r0, sp, #0x16 + bl OS_GetOwnerInfo + add r1, sp, #0 + mov r0, #0 + mov r2, #0x16 + bl MIi_CpuClear16 + ldrh r2, [sp, #0x2e] + add r0, sp, #0x1a + add r1, sp, #0 + mov r2, r2, lsl #1 + bl MIi_CpuCopy16 + add r0, sp, #0 + mov r1, #0x28 + bl MOD13_0221EFA8 + mov r0, #0 + bl MOD13_0221E694 + ldr r0, _02232728 ; =MOD13_022321B8 + bl MOD13_022354F4 + mov r0, #0xb + bl MOD13_0223424C + ldr r0, _0223272C ; =MOD13_0223259C + bl MOD13_02222FBC + add sp, sp, #0x6c + ldmia sp!, {pc} + .align 2, 0 +_02232724: .word 0x02243138 +_02232728: .word MOD13_022321B8 +_0223272C: .word MOD13_0223259C + + arm_func_start MOD13_02232730 +MOD13_02232730: ; 0x02232730 + ldr r0, _0223274C ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0223274C: .word 0x027FFFA8 + + arm_func_start MOD13_02232750 +MOD13_02232750: ; 0x02232750 + stmdb sp!, {r4, lr} + ldr r1, _0223277C ; =0x02243140 + mov r4, r0 + ldr r0, [r1] + mov r1, #0x5000000 + mov r2, #0x200 + bl MIi_CpuCopy16 + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223277C: .word 0x02243140 + + arm_func_start MOD13_02232780 +MOD13_02232780: ; 0x02232780 + ldr r2, _022327A0 ; =0x02243140 + ldr ip, _022327A4 ; =MOD13_0223C1C4 + str r0, [r2] + ldr r1, _022327A8 ; =MOD13_02232750 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bx ip + .align 2, 0 +_022327A0: .word 0x02243140 +_022327A4: .word MOD13_0223C1C4 +_022327A8: .word MOD13_02232750 + + arm_func_start MOD13_022327AC +MOD13_022327AC: ; 0x022327AC + stmdb sp!, {r4, lr} + ldr r1, _022327D8 ; =0x02243140 + mov r4, r0 + ldr r0, [r1] + ldr r1, [r1, #4] + mov r2, #0x20 + bl MIi_CpuCopy16 + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_022327D8: .word 0x02243140 + + arm_func_start MOD13_022327DC +MOD13_022327DC: ; 0x022327DC + stmdb sp!, {r4, lr} + add r4, r0, r1, lsl #5 + mov r0, r2, lsl #5 + ldr ip, _02232810 ; =0x02243140 + add lr, r0, #0x5000000 + ldr r1, _02232814 ; =MOD13_022327AC + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + str r4, [ip] + str lr, [ip, #4] + bl MOD13_0223C1C4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232810: .word 0x02243140 +_02232814: .word MOD13_022327AC + + arm_func_start MOD13_02232818 +MOD13_02232818: ; 0x02232818 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232874 ; =0x0224313C + ldr r1, [r0] + ldrb r0, [r1, #0x604] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + add r0, r1, #4 + mov r1, #0x600 + bl DC_FlushRange + ldr r0, _02232874 ; =0x0224313C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x600 + add r0, r0, #4 + bl GX_LoadBG2Scr + ldr r0, _02232874 ; =0x0224313C + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x604] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232874: .word 0x0224313C + + arm_func_start MOD13_02232878 +MOD13_02232878: ; 0x02232878 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _022328CC ; =0x0224313C + mov r7, r3 + ldr r3, [ip] + mov r8, r0 + add r0, r3, #4 + add r6, r0, r1, lsl #1 + mov r5, #0 + cmp r7, #0 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} + mov r4, r2, lsl #1 +_022328A4: + mov r0, r8 + mov r1, r6 + mov r2, r4 + bl MIi_CpuCopy16 + add r5, r5, #1 + cmp r5, r7 + add r8, r8, #0x40 + add r6, r6, #0x40 + blt _022328A4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022328CC: .word 0x0224313C + + arm_func_start MOD13_022328D0 +MOD13_022328D0: ; 0x022328D0 + ldr r0, _022328E4 ; =0x0224313C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x604] + bx lr + .align 2, 0 +_022328E4: .word 0x0224313C + + arm_func_start MOD13_022328E8 +MOD13_022328E8: ; 0x022328E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02232914 ; =0x0224313C + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1] + bl MOD13_0223C104 + ldr r0, _02232914 ; =0x0224313C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232914: .word 0x0224313C + + arm_func_start MOD13_02232918 +MOD13_02232918: ; 0x02232918 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0223296C ; =0x00000608 + mov r1, #4 + bl MOD13_0223AFE0 + mov ip, r0 + ldr r3, _02232970 ; =0x0224313C + mov r0, r4 + add r1, ip, #4 + mov r2, #0x600 + str ip, [r3] + bl MIi_CpuCopyFast + ldr r1, _02232974 ; =MOD13_02232818 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02232970 ; =0x0224313C + ldr r1, [r1] + str r0, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0223296C: .word 0x00000608 +_02232970: .word 0x0224313C +_02232974: .word MOD13_02232818 + + arm_func_start MOD13_02232978 +MOD13_02232978: ; 0x02232978 + stmdb sp!, {r4, lr} + ldr r1, _022329B0 ; =0x02243148 + mov r4, r0 + ldr r0, [r1] + mvn r1, #0 + ldrh r3, [r0, #0x12] + ldrh r2, [r0, #0x10] + ldr r0, [r0] + add r3, r4, r3 + bl MOD13_02239888 + ldr r0, _022329B0 ; =0x02243148 + ldr r0, [r0] + strb r4, [r0, #0x1a] + ldmia sp!, {r4, pc} + .align 2, 0 +_022329B0: .word 0x02243148 + + arm_func_start MOD13_022329B4 +MOD13_022329B4: ; 0x022329B4 + ldr r2, _02232A8C ; =0x02243148 + cmp r0, #4 + ldr r3, [r2] + ldrh r3, [r3, #0x10] + strh r3, [r1] + ldrh r3, [r1] + add r3, r3, #0xc + strh r3, [r1, #4] + addls pc, pc, r0, lsl #2 + bx lr +_022329DC: ; jump table + bx lr ; case 0 + b _022329F0 ; case 1 + b _02232A24 ; case 2 + b _02232A44 ; case 3 + b _02232A68 ; case 4 +_022329F0: + ldr r3, [r2] + ldr r0, _02232A90 ; =0x0223F590 + ldrh ip, [r3, #0x12] + ldrb r3, [r3, #0x1a] + add r3, ip, r3 + strh r3, [r1, #2] + ldr r2, [r2] + ldrh r3, [r1, #2] + ldrb r2, [r2, #0x1b] + ldrb r0, [r0, r2] + add r0, r3, r0 + strh r0, [r1, #6] + bx lr +_02232A24: + ldr r0, [r2] + ldrh r0, [r0, #0x12] + sub r0, r0, #0xd + strh r0, [r1, #2] + ldr r0, [r2] + ldrh r0, [r0, #0x12] + strh r0, [r1, #6] + bx lr +_02232A44: + ldr r0, [r2] + ldrh r2, [r0, #0x12] + ldrb r0, [r0, #0x19] + add r0, r2, r0 + strh r0, [r1, #2] + ldrh r0, [r1, #2] + add r0, r0, #0xd + strh r0, [r1, #6] + bx lr +_02232A68: + ldr r0, [r2] + ldrh r0, [r0, #0x12] + strh r0, [r1, #2] + ldr r0, [r2] + ldrh r2, [r1, #2] + ldrb r0, [r0, #0x19] + add r0, r2, r0 + strh r0, [r1, #6] + bx lr + .align 2, 0 +_02232A8C: .word 0x02243148 +_02232A90: .word 0x0223F590 + + arm_func_start MOD13_02232A94 +MOD13_02232A94: ; 0x02232A94 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, #2 + add r4, sp, #0 +_02232AA4: + mov r0, r5 + mov r1, r4 + bl MOD13_022329B4 + mov r0, r4 + bl MOD13_0223B320 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r5 + ldmneia sp!, {r4, r5, pc} + add r5, r5, #1 + cmp r5, #3 + ble _02232AA4 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02232AE0 +MOD13_02232AE0: ; 0x02232AE0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + add r1, sp, #0 + mov r0, #1 + bl MOD13_022329B4 + add r0, sp, #0 + bl MOD13_0223B248 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, #1 + ldmneia sp!, {r4, r5, pc} + mov r5, #2 + add r4, sp, #0 +_02232B14: + mov r0, r5 + mov r1, r4 + bl MOD13_022329B4 + mov r0, r4 + bl MOD13_0223B248 + cmp r0, #0 + addne sp, sp, #0xc + movne r0, r5 + ldmneia sp!, {r4, r5, pc} + add r5, r5, #1 + cmp r5, #3 + ble _02232B14 + add r1, sp, #0 + mov r0, #4 + bl MOD13_022329B4 + add r0, sp, #0 + bl MOD13_0223B2B4 + cmp r0, #0 + movne r0, #4 + moveq r0, #0 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02232B6C +MOD13_02232B6C: ; 0x02232B6C + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #0 + bl MOD13_0223B14C + ldr r0, _02232BD8 ; =0x02243148 + ldr r2, _02232BDC ; =0x0223F590 + ldr ip, [r0] + ldrh r1, [sp, #2] + ldrb r3, [ip, #0x1b] + ldrh r0, [ip, #0x12] + ldrb r2, [r2, r3] + sub r1, r1, r0 + mov r0, r2, lsr #1 + subs r0, r1, r0 + movmi r0, #0 + bmi _02232BBC + ldrb r1, [ip, #0x19] + sub r1, r1, r2 + cmp r0, r1 + movge r0, r1 +_02232BBC: + bl MOD13_02232978 + ldr r0, _02232BD8 ; =0x02243148 + mov r1, #3 + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232BD8: .word 0x02243148 +_02232BDC: .word 0x0223F590 + + arm_func_start MOD13_02232BE0 +MOD13_02232BE0: ; 0x02232BE0 + ldr r1, _02232C08 ; =0x02243148 + cmp r0, #2 + ldr r1, [r1] + strb r0, [r1, #0x1c] + ldr r0, _02232C08 ; =0x02243148 + moveq r1, #4 + ldr r0, [r0] + movne r1, #6 + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 +_02232C08: .word 0x02243148 + + arm_func_start MOD13_02232C0C +MOD13_02232C0C: ; 0x02232C0C + stmdb sp!, {r4, lr} + ldr r1, _02232C80 ; =0x02243148 + ldr r1, [r1] + ldrb r1, [r1, #0x1a] + subs r4, r1, r0 + rsbmi r4, r4, #0 + cmp r4, #2 + movlt r0, #0 + blt _02232C48 + cmp r4, #6 + movge r0, #0x7f + bge _02232C48 + rsb r1, r4, #6 + mov r0, #0x7f + bl FX_DivS32 +_02232C48: + bl MOD13_0223422C + cmp r4, #2 + mvnlt r1, #0xff + blt _02232C74 + cmp r4, #6 + movge r1, #0x100 + bge _02232C74 + rsb r1, r4, #6 + mov r0, #0x200 + bl FX_DivS32 + sub r1, r0, #0x100 +_02232C74: + ldr r0, _02232C84 ; =0x0000FFFF + bl MOD13_02234208 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232C80: .word 0x02243148 +_02232C84: .word 0x0000FFFF + + arm_func_start MOD13_02232C88 +MOD13_02232C88: ; 0x02232C88 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _02232D4C ; =0x0223F75C + bl MOD13_0223B320 + cmp r0, #0 + beq _02232D24 + add r0, sp, #0 + bl MOD13_0223B14C + ldr r0, _02232D50 ; =0x02243148 + ldrh r1, [sp] + ldr r3, [r0] + ldrh r0, [r3, #0x10] + sub r0, r0, #0x1e + cmp r1, r0 + blt _02232D24 + ldrh r1, [sp, #2] + ldrh r0, [r3, #0x16] + ldrb r2, [r3, #0x18] + sub r0, r1, r0 + adds r4, r2, r0 + movmi r4, #0 + bmi _02232CFC + ldrb r1, [r3, #0x1b] + ldr r0, _02232D54 ; =0x0223F590 + ldrb r2, [r3, #0x19] + ldrb r0, [r0, r1] + sub r0, r2, r0 + cmp r4, r0 + movge r4, r0 +_02232CFC: + mov r0, r4 + bl MOD13_02232C0C + mov r0, r4 + bl MOD13_02232978 + ldr r0, _02232D50 ; =0x02243148 + mov r1, #2 + ldr r0, [r0] + add sp, sp, #8 + strb r1, [r0, #0x1d] + ldmia sp!, {r4, pc} +_02232D24: + bl MOD13_022341E8 + ldr r0, _02232D50 ; =0x02243148 + mov r3, #0 + ldr r2, [r0] + mov r1, #3 + strb r3, [r2, #0x1c] + ldr r0, [r0] + strb r1, [r0, #0x1d] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02232D4C: .word 0x0223F75C +_02232D50: .word 0x02243148 +_02232D54: .word 0x0223F590 + + arm_func_start MOD13_02232D58 +MOD13_02232D58: ; 0x02232D58 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02232F10 ; =0x02243148 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x1d] + ldr r1, [r0] + ldrb r0, [r1, #0x1c] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02232F08 +_02232D84: ; jump table + b _02232D94 ; case 0 + b _02232E5C ; case 1 + b _02232E68 ; case 2 + b _02232EBC ; case 3 +_02232D94: + ldrb r0, [r1, #0x1e] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02232AE0 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02232F08 +_02232DB4: ; jump table + b _02232F08 ; case 0 + b _02232DC8 ; case 1 + b _02232E30 ; case 2 + b _02232E40 ; case 3 + b _02232E50 ; case 4 +_02232DC8: + ldr r0, _02232F10 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1b] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0x16 + bl MOD13_0223424C + mov r0, #0 + bl MOD13_0223422C + ldr r0, _02232F10 ; =0x02243148 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x1d] + ldr r0, [r0] + add r0, r0, #0x14 + bl MOD13_0223B14C + ldr r0, _02232F10 ; =0x02243148 + mov r1, #1 + ldr r3, [r0] + add sp, sp, #4 + ldrb r2, [r3, #0x1a] + strb r2, [r3, #0x18] + ldr r0, [r0] + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232E30: + mov r0, #2 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E40: + mov r0, #3 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E50: + bl MOD13_02232B6C + add sp, sp, #4 + ldmia sp!, {pc} +_02232E5C: + bl MOD13_02232C88 + add sp, sp, #4 + ldmia sp!, {pc} +_02232E68: + mov r0, #2 + bl MOD13_02232A94 + cmp r0, #2 + beq _02232E9C + ldr r0, _02232F10 ; =0x02243148 + mov r3, #5 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232E9C: + bl MOD13_02232AE0 + cmp r0, #2 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_02232BE0 + add sp, sp, #4 + ldmia sp!, {pc} +_02232EBC: + mov r0, #3 + bl MOD13_02232A94 + cmp r0, #3 + beq _02232EF0 + ldr r0, _02232F10 ; =0x02243148 + mov r3, #7 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x1d] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0x1c] + ldmia sp!, {pc} +_02232EF0: + bl MOD13_02232AE0 + cmp r0, #3 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02232BE0 +_02232F08: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232F10: .word 0x02243148 + + arm_func_start MOD13_02232F14 +MOD13_02232F14: ; 0x02232F14 + ldr r0, _02232F28 ; =0x02243148 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1e] + bx lr + .align 2, 0 +_02232F28: .word 0x02243148 + + arm_func_start MOD13_02232F2C +MOD13_02232F2C: ; 0x02232F2C + ldr r0, _02232F40 ; =0x02243148 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x1e] + bx lr + .align 2, 0 +_02232F40: .word 0x02243148 + + arm_func_start MOD13_02232F44 +MOD13_02232F44: ; 0x02232F44 + ldr ip, _02232F4C ; =MOD13_02232978 + bx ip + .align 2, 0 +_02232F4C: .word MOD13_02232978 + + arm_func_start MOD13_02232F50 +MOD13_02232F50: ; 0x02232F50 + ldr r0, _02232F60 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1d] + bx lr + .align 2, 0 +_02232F60: .word 0x02243148 + + arm_func_start MOD13_02232F64 +MOD13_02232F64: ; 0x02232F64 + ldr r0, _02232F74 ; =0x02243148 + ldr r0, [r0] + ldrb r0, [r0, #0x1a] + bx lr + .align 2, 0 +_02232F74: .word 0x02243148 + + arm_func_start MOD13_02232F78 +MOD13_02232F78: ; 0x02232F78 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02232FB4 ; =0x02243148 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0xc] + bl MOD13_0223C104 + ldr r0, _02232FB4 ; =0x02243148 + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_02239AE8 + ldr r0, _02232FB4 ; =0x02243148 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02232FB4: .word 0x02243148 + + arm_func_start MOD13_02232FB8 +MOD13_02232FB8: ; 0x02232FB8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r0 + mov r7, r1 + mov r0, #0x20 + mov r1, #4 + mov r5, r2 + mov r4, r3 + bl MOD13_0223AFE0 + ldr r2, _0223308C ; =0x02243148 + ldr ip, [sp, #0x18] + str r0, [r2] + strb r6, [r0, #0x1b] + ldr r1, [r2] + mov r0, r5 + strb r7, [r1, #0x19] + ldr r3, [r2] + mov r1, r4 + strb ip, [r3, #0x1a] + ldr r2, [r2] + add r2, r2, #0x10 + bl MOD13_0223ABC0 + ldr r1, _02233090 ; =0x0223F58C + mov r0, #0 + ldrb r1, [r1, r6] + mov r2, #1 + bl MOD13_02239E0C + mov r2, r5 + ldr r5, _0223308C ; =0x02243148 + ldr r3, [sp, #0x18] + ldr r6, [r5] + mvn r1, #0 + str r0, [r6] + ldr r0, [r5] + add r3, r4, r3 + ldr r0, [r0] + bl MOD13_02239888 + mov r0, r5 + ldr r0, [r0] + mvn r1, #0 + ldr r0, [r0] + mov r2, #1 + bl MOD13_02239814 + mov r0, #0 + ldr r1, _02233094 ; =MOD13_02232D58 + mov r2, r0 + mov r3, #0x80 + bl MOD13_0223C1C4 + mov r1, r5 + ldr r1, [r1] + str r0, [r1, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223308C: .word 0x02243148 +_02233090: .word 0x0223F58C +_02233094: .word MOD13_02232D58 + + arm_func_start MOD13_02233098 +MOD13_02233098: ; 0x02233098 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xac + ldr r1, _022332AC ; =0x0224314C + str r0, [sp] + ldr r2, [r1] + mov r1, #0x400 + add r0, r2, #0xf00 + add r2, r2, #0x1300 + str r2, [sp, #4] + bl DC_InvalidateRange + ldr r0, [sp] + ldrh r1, [r0, #0xe] + mov r0, #0 + str r0, [sp, #8] + cmp r1, #0 + addle sp, sp, #0xac + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + mov r0, #0x20 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x24] + mov r0, #1 + ldr fp, _022332B0 ; =0x0223F598 + add r5, sp, #0x28 + mov r6, #6 + mov r4, #4 + str r0, [sp, #0x1c] +_02233114: + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0, lsl #2 + ldr sl, [r0, #0x10] + ldrb r0, [sl, #0xc] + cmp r0, #0 + beq _02233284 + ldrh r0, [sl, #0x3c] + cmp r0, #0 + bne _02233284 + ldr sb, [sp, #0xc] + ldr r8, [sp, #4] + add r7, sl, #4 +_02233148: + mov r0, r7 + add r1, r8, #0x20 + mov r2, r6 + bl memcmp + cmp r0, #0 + beq _02233170 + add r8, r8, #0x2a + add sb, sb, #1 + cmp sb, #0x14 + blt _02233148 +_02233170: + cmp sb, #0x14 + bne _022331B4 + ldr sb, [sp, #0x10] + ldr r7, [sp, #4] +_02233180: + add r0, r7, #0x20 + mov r1, fp + mov r2, r6 + bl memcmp + cmp r0, #0 + beq _022331A8 + add r7, r7, #0x2a + add sb, sb, #1 + cmp sb, #0x14 + blt _02233180 +_022331A8: + cmp sb, #0x14 + addeq sp, sp, #0xac + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022331B4: + ldr r0, [sp, #4] + mov r1, #0x2a + mla r7, sb, r1, r0 + add r0, sl, #4 + add r1, r7, #0x20 + mov r2, r6 + bl MI_CpuCopy8 + ldr r2, [sp, #0x14] + add r0, sl, #0xc + mov r1, r7 + bl MI_CpuCopy8 + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0, lsl #1 + ldrh r0, [r0, #0x50] + strh r0, [r7, #0x26] + ldrh r0, [sl, #0x2c] + ands r0, r0, #0x10 + ldreq r0, [sp, #0x18] + streqb r0, [r7, #0x28] + beq _02233284 + ldr r0, [sp, #0x1c] + mov r1, sl + strb r0, [r7, #0x28] + mov r0, r5 + bl WM_GetOtherElements + ldrb r8, [sp, #0x28] + ldr sb, [sp, #0x20] + cmp r8, #0 + ble _02233284 +_0223322C: + add r1, r5, sb, lsl #3 + ldrb r0, [r1, #4] + cmp r0, #0x30 + ldreq r0, [sp, #0x24] + streqb r0, [r7, #0x28] + beq _02233284 + cmp r0, #0xdd + bne _02233278 + ldrb r0, [r1, #5] + cmp r0, #4 + blo _02233278 + ldr r0, [r1, #8] + ldr r1, _022332B4 ; =0x0223F594 + mov r2, r4 + bl memcmp + cmp r0, #0 + ldreq r0, [sp, #0x24] + streqb r0, [r7, #0x28] + beq _02233284 +_02233278: + add sb, sb, #1 + cmp sb, r8 + blt _0223322C +_02233284: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp] + ldrh r1, [r0, #0xe] + ldr r0, [sp, #8] + cmp r0, r1 + blt _02233114 + add sp, sp, #0xac + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022332AC: .word 0x0224314C +_022332B0: .word 0x0223F598 +_022332B4: .word 0x0223F594 + + arm_func_start MOD13_022332B8 +MOD13_022332B8: ; 0x022332B8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _02233338 ; =0x0224314C + ldr r1, [r1] + add r1, r1, #0x1000 + ldrb r1, [r1, #0xe4c] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r1, [r0] + cmp r1, #0x26 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r1, [r0, #8] + cmp r1, #4 + beq _02233320 + cmp r1, #5 + bne _0223332C + bl MOD13_02233098 + bl MOD13_0223344C + add sp, sp, #4 + ldmia sp!, {pc} +_02233320: + bl MOD13_0223344C + add sp, sp, #4 + ldmia sp!, {pc} +_0223332C: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233338: .word 0x0224314C + + arm_func_start MOD13_0223333C +MOD13_0223333C: ; 0x0223333C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02233394 ; =0x0224314C + mov r4, #0 + ldr r1, [r1] + mov r8, r4 + add r1, r1, #0x1300 + str r1, [r0] + ldr r7, [r0] + ldr r6, _02233398 ; =0x0223F598 + mov r5, #6 +_02233364: + mov r1, r6 + mov r2, r5 + add r0, r7, #0x20 + bl memcmp + cmp r0, #0 + add r8, r8, #1 + addne r4, r4, #1 + cmp r8, #0x14 + add r7, r7, #0x2a + blt _02233364 + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02233394: .word 0x0224314C +_02233398: .word 0x0223F598 + + arm_func_start MOD13_0223339C +MOD13_0223339C: ; 0x0223339C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02233440 ; =0x0224314C + mov r3, #1 + ldr r0, [r2] + ldr r1, _02233444 ; =0x0000168C + add r0, r0, #0x1000 + strb r3, [r0, #0xe4c] + ldr r0, [r2] + add r0, r0, r1 + bl WM_ReadStatus + ldr r0, _02233440 ; =0x0224314C + ldr r0, [r0] + add r0, r0, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + beq _02233424 + ldr r0, _02233448 ; =MOD13_022332B8 + bl WM_Reset + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} +_022333F8: + ldr r1, _02233440 ; =0x0224314C + ldr r0, _02233444 ; =0x0000168C + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _02233440 ; =0x0224314C + ldr r0, [r0] + add r0, r0, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + bne _022333F8 +_02233424: + ldr r0, _02233448 ; =MOD13_022332B8 + bl WM_End + cmp r0, #2 + movne r0, #0 + moveq r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233440: .word 0x0224314C +_02233444: .word 0x0000168C +_02233448: .word MOD13_022332B8 + + arm_func_start MOD13_0223344C +MOD13_0223344C: ; 0x0223344C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02233480 ; =0x0224314C + ldr r1, _02233484 ; =0x00001648 + ldr r2, [r0] + ldr r0, _02233488 ; =MOD13_022332B8 + add r1, r2, r1 + bl WM_StartScanEx + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02233480: .word 0x0224314C +_02233484: .word 0x00001648 +_02233488: .word MOD13_022332B8 + + arm_func_start MOD13_0223348C +MOD13_0223348C: ; 0x0223348C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _0223355C ; =0x0224314C + mov r0, #0 + ldr r1, [r1] + mov r2, #0x348 + add r1, r1, #0x1300 + bl MIi_CpuClear16 + ldr r0, _0223355C ; =0x0224314C + ldr r1, _02233560 ; =MOD13_022332B8 + ldr r0, [r0] + mov r2, #3 + bl WM_Initialize + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} +_022334D0: + ldr r1, _0223355C ; =0x0224314C + ldr r0, _02233564 ; =0x0000168C + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _0223355C ; =0x0224314C + ldr r5, [r0] + add r0, r5, #0x1600 + ldrh r0, [r0, #0x8c] + cmp r0, #2 + bne _022334D0 + ldr r0, _02233568 ; =0x00001648 + ldr r4, _0223356C ; =0x0223F5A0 + add lr, r5, r0 + mov ip, #4 +_0223350C: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0223350C + ldr r0, [r4] + add r1, r5, #0xf00 + str r0, [lr] + add r0, r5, #0x1000 + str r1, [r0, #0x648] + bl WM_GetDispersionScanPeriod + ldr r1, _0223355C ; =0x0224314C + ldr r1, [r1] + add r1, r1, #0x1600 + strh r0, [r1, #0x50] + bl MOD13_0223344C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223355C: .word 0x0224314C +_02233560: .word MOD13_022332B8 +_02233564: .word 0x0000168C +_02233568: .word 0x00001648 +_0223356C: .word 0x0223F5A0 + + arm_func_start MOD13_02233570 +MOD13_02233570: ; 0x02233570 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022335A8 ; =0x0224314C + ldr r0, [r0] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} +_0223358C: + bl WM_GetAllowedChannel + cmp r0, #0x8000 + bne _0223358C + ldr r0, _022335A8 ; =0x0224314C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022335A8: .word 0x0224314C + + arm_func_start MOD13_022335AC +MOD13_022335AC: ; 0x022335AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022335E4 ; =0x0224314C + ldr r0, [r0] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _022335E8 ; =0x00001E60 + mov r1, #0x20 + bl MOD13_0223AFE0 + ldr r1, _022335E4 ; =0x0224314C + str r0, [r1] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022335E4: .word 0x0224314C +_022335E8: .word 0x00001E60 + + arm_func_start MOD13_022335EC +MOD13_022335EC: ; 0x022335EC + cmp r0, #0x39 + subls r0, r0, #0x30 + bxls lr + cmp r0, #0x46 + subls r0, r0, #0x37 + subhi r0, r0, #0x57 + bx lr + + arm_func_start MOD13_02233608 +MOD13_02233608: ; 0x02233608 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov sl, r0 + mov sb, r1 + add r0, sp, #0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r8, #0 + mov r7, r8 + add r6, sp, #0 + mov fp, r8 + mov r4, #0x20 + mov r5, #3 +_02233640: + mov r1, r6 + mov r2, r5 + add r0, sl, r7 + bl MI_CpuCopy8 + mov r2, fp + mov r1, r6 +_02233658: + ldrb r0, [r1] + cmp r0, #0 + bne _02233674 + add r2, r2, #1 + cmp r2, #3 + strb r4, [r1], #1 + blt _02233658 +_02233674: + mov r0, r6 + bl atol + strb r0, [sb, r8] + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #3 + blt _02233640 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start MOD13_02233698 +MOD13_02233698: ; 0x02233698 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + ldr r1, _02233800 ; =0x02243150 + mov r7, r0 + ldr r0, [r1] + mov r4, #0 + add r2, r0, r7, lsl #8 + ldrb r6, [r2, #0xe7] + mov r3, #1 + add r0, sp, #4 + mov r1, r4 + mov r2, #0x10 + mov r5, r3, lsl r7 + bl MI_CpuFill8 + add r0, sp, #4 + mov r2, #1 + str r2, [r0, r7, lsl #2] + cmp r7, #2 + bgt _02233778 + ldr r0, _02233800 ; =0x02243150 + ldr r0, [r0] + ldrb r1, [r0, #0xef] + ands r1, r1, r5 + movne r4, r2 + cmp r6, #0xff + bne _0223373C + cmp r4, #0 + beq _0223373C + ldrb r2, [r0, #0xef] + mvn r3, r5 + ldr r1, _02233800 ; =0x02243150 + and r2, r2, r3 + strb r2, [r0, #0xef] + ldr r2, [r1] + mov r0, #1 + ldrb r1, [r2, #0x1ef] + and r1, r1, r3 + strb r1, [r2, #0x1ef] + str r0, [sp, #8] + str r0, [sp, #4] + b _02233778 +_0223373C: + cmp r6, #0xff + beq _02233778 + cmp r4, #0 + bne _02233778 + ldrb r3, [r0, #0xef] + ldr r1, _02233800 ; =0x02243150 + mov r2, #1 + orr r3, r3, r5 + strb r3, [r0, #0xef] + ldr r1, [r1] + ldrb r0, [r1, #0x1ef] + orr r0, r0, r5 + strb r0, [r1, #0x1ef] + str r2, [sp, #8] + str r2, [sp, #4] +_02233778: + mov r7, #0 + mov r6, r7 + ldr sb, _02233800 ; =0x02243150 + add r5, sp, #4 + mov r4, #0xfe + ldr r8, _02233804 ; =0x000004F8 +_02233790: + ldr r0, [r5, r7, lsl #2] + cmp r0, #0 + beq _022337BC + ldr r1, [sb] + mov r2, r4 + add r0, r1, r8 + add r1, r1, r6 + bl MATH_CalcCRC16 + ldr r1, [sb] + add r1, r1, r7, lsl #8 + strh r0, [r1, #0xfe] +_022337BC: + add r7, r7, #1 + cmp r7, #4 + add r6, r6, #0x100 + blt _02233790 + mov r0, #0x100 + mov r1, #0x20 + bl MOD13_0223B004 + mov r2, r0 + ldr r0, _02233800 ; =0x02243150 + add r1, sp, #4 + ldr r0, [r0] + str r2, [sp] + bl FUN_02095CDC + add r0, sp, #0 + bl MOD13_0223AF90 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02233800: .word 0x02243150 +_02233804: .word 0x000004F8 + + arm_func_start MOD13_02233808 +MOD13_02233808: ; 0x02233808 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + ldr r1, _022338B4 ; =0x02243150 + mov r0, #0 + ldr r1, [r1] + mov r2, #0x400 + bl MIi_CpuClear16 + mov r3, #0 + ldr r0, _022338B4 ; =0x02243150 + mov r2, #0xff +_02233830: + ldr r1, [r0] + add r1, r1, r3, lsl #8 + add r3, r3, #1 + strb r2, [r1, #0xe7] + cmp r3, #3 + blt _02233830 + add r0, sp, #0 + bl FUN_020967A4 + add r0, sp, #0 + bl FUN_02095330 + mov r6, #0 + ldr r4, _022338B4 ; =0x02243150 + mov r8, r0 + mov r7, r6 + mov r5, #0xe +_0223386C: + ldr r1, [r4] + mov r0, r8 + add r1, r1, r7 + mov r2, r5 + add r1, r1, #0xf0 + bl MI_CpuCopy8 + add r6, r6, #1 + cmp r6, #2 + add r7, r7, #0x100 + blt _0223386C + mov r4, #0 +_02233898: + mov r0, r4 + bl MOD13_02233698 + add r4, r4, #1 + cmp r4, #4 + blt _02233898 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022338B4: .word 0x02243150 + + arm_func_start MOD13_022338B8 +MOD13_022338B8: ; 0x022338B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _022338F8 ; =0x02243150 + mov r5, r0 + ldr r0, [r1] + mov r1, #0 + add r4, r0, r5, lsl #8 + mov r0, r4 + mov r2, #0xef + bl MI_CpuFill8 + mov r1, #0xff + mov r0, r5 + strb r1, [r4, #0xe7] + bl MOD13_02233698 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022338F8: .word 0x02243150 + + arm_func_start MOD13_022338FC +MOD13_022338FC: ; 0x022338FC + ldr r0, _02233908 ; =0x02243150 + ldr r0, [r0] + bx lr + .align 2, 0 +_02233908: .word 0x02243150 + + arm_func_start MOD13_0223390C +MOD13_0223390C: ; 0x0223390C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02233A20 ; =0x02243150 + mov r5, r0 + ldr r0, [r1] + mov r1, #0 + add r4, r0, #0x400 + mov r0, r4 + mov r2, #0xef + bl MI_CpuFill8 + mov r0, r5 + add r1, r4, #0xd1 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #6 + add r1, r4, #0xd6 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0xc + add r1, r4, #0xdb + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0x12 + add r1, r4, #0xe0 + mov r2, #5 + bl MI_CpuCopy8 + add r0, r5, #0x18 + add r1, r4, #0x60 + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, r5, #0x39 + add r1, r4, #0x80 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x47 + add r1, r4, #0x90 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x55 + add r1, r4, #0xa0 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x63 + add r1, r4, #0xb0 + mov r2, #0xd + bl MI_CpuCopy8 + add r0, r5, #0x71 + add r1, r4, #0x40 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrb r1, [r4, #0xe6] + mov r3, #1 + add r0, r4, #0xf0 + bic r1, r1, #3 + orr r1, r1, #2 + strb r1, [r4, #0xe6] + ldrb ip, [r4, #0xe6] + mov r1, #0 + mov r2, #4 + bic ip, ip, #0xfc + strb ip, [r4, #0xe6] + strb r3, [r4, #0xe7] + bl MI_CpuFill8 + mov r0, #1 + strb r0, [r4, #0xf5] + strb r0, [r4, #0xf6] + bl MOD13_02233B3C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233A20: .word 0x02243150 + + arm_func_start MOD13_02233A24 +MOD13_02233A24: ; 0x02233A24 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02233B38 ; =0x02243150 + mov r6, r0 + ldr r0, [r1] + mov r1, #0 + add r5, r0, #0x400 + mov r0, r5 + mov r2, #0xef + bl MI_CpuFill8 + mov r0, r6 + add r1, r5, #0x40 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r6, #0x20] + cmp r0, #1 + beq _02233A78 + cmp r0, #2 + beq _02233A90 + cmp r0, #3 + beq _02233AA8 + b _02233AC0 +_02233A78: + ldrb r0, [r5, #0xe6] + mov r4, #5 + bic r0, r0, #3 + orr r0, r0, #1 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233A90: + ldrb r0, [r5, #0xe6] + mov r4, #0xd + bic r0, r0, #3 + orr r0, r0, #2 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233AA8: + ldrb r0, [r5, #0xe6] + mov r4, #0x10 + bic r0, r0, #3 + orr r0, r0, #3 + strb r0, [r5, #0xe6] + b _02233AD0 +_02233AC0: + ldrb r0, [r5, #0xe6] + mov r4, #0 + bic r0, r0, #3 + strb r0, [r5, #0xe6] +_02233AD0: + ldrb r0, [r5, #0xe6] + add r7, r5, #0x80 + add r6, r6, #0x28 + bic r0, r0, #0xfc + strb r0, [r5, #0xe6] + mov r8, #0 +_02233AE8: + mov r0, r6 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #0x10 + add r6, r6, #0x20 + blt _02233AE8 + mov r3, #2 + add r0, r5, #0xf0 + mov r1, #0 + mov r2, #4 + strb r3, [r5, #0xe7] + bl MI_CpuFill8 + mov r0, #1 + strb r0, [r5, #0xf5] + strb r0, [r5, #0xf6] + bl MOD13_02233B3C + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02233B38: .word 0x02243150 + + arm_func_start MOD13_02233B3C +MOD13_02233B3C: ; 0x02233B3C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r0, _02233C20 ; =0x02243150 + mov r2, #0x78 + ldr r1, [r0] + add r5, r1, #0x400 + ldrb r0, [r5, #0xf4] + mov ip, r5 + add r4, r1, r0, lsl #8 + mov r3, r4 +_02233B64: + ldrb r1, [ip], #1 + ldrb r0, [ip], #1 + subs r2, r2, #1 + strb r1, [r3], #1 + strb r0, [r3], #1 + bne _02233B64 + ldrb r0, [r5, #0xf5] + cmp r0, #0 + beq _02233BB4 + add r0, r4, #0xc0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + add r0, r4, #0xc4 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r0, #0 + strb r0, [r4, #0xd0] + b _02233BE0 +_02233BB4: + add r0, r5, #0xc0 + add r1, r4, #0xc0 + mov r2, #4 + bl MI_CpuCopy8 + add r0, r5, #0xc4 + add r1, r4, #0xc4 + mov r2, #4 + bl MI_CpuCopy8 + add r0, r5, #0xf0 + bl FUN_02095BE0 + strb r0, [r4, #0xd0] +_02233BE0: + ldrb r0, [r5, #0xf6] + cmp r0, #0 + beq _02233C00 + add r0, r4, #0xc8 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + b _02233C10 +_02233C00: + add r0, r5, #0xc8 + add r1, r4, #0xc8 + mov r2, #8 + bl MI_CpuCopy8 +_02233C10: + ldrb r0, [r5, #0xf4] + bl MOD13_02233698 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233C20: .word 0x02243150 + + arm_func_start MOD13_02233C24 +MOD13_02233C24: ; 0x02233C24 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _02233D04 ; =0x02243150 + mov r3, #0x78 + ldr r5, [r1] + add r4, r5, r0, lsl #8 + mov lr, r4 + add ip, r5, #0x400 +_02233C44: + ldrb r2, [lr], #1 + ldrb r1, [lr], #1 + subs r3, r3, #1 + strb r2, [ip], #1 + strb r1, [ip], #1 + bne _02233C44 + ldr r1, _02233D08 ; =0x0223F5E4 + strb r0, [r5, #0x4f4] + add r0, r4, #0xc0 + mov r2, #4 + bl memcmp + cmp r0, #0 + ldrne r0, _02233D04 ; =0x02243150 + movne r1, #0 + ldrne r0, [r0] + mov r2, #4 + strneb r1, [r0, #0x4f5] + ldreq r0, _02233D04 ; =0x02243150 + moveq r1, #1 + ldreq r0, [r0] + streqb r1, [r0, #0x4f5] + ldr r1, _02233D08 ; =0x0223F5E4 + add r0, r4, #0xc8 + bl memcmp + cmp r0, #0 + bne _02233CC4 + ldr r1, _02233D08 ; =0x0223F5E4 + add r0, r4, #0xcc + mov r2, #4 + bl memcmp + cmp r0, #0 + beq _02233CD8 +_02233CC4: + ldr r0, _02233D04 ; =0x02243150 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x4f6] + b _02233CE8 +_02233CD8: + ldr r0, _02233D04 ; =0x02243150 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x4f6] +_02233CE8: + ldr r1, _02233D04 ; =0x02243150 + ldrb r0, [r4, #0xd0] + ldr r1, [r1] + add r1, r1, #0x4f0 + bl FUN_02095BB0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02233D04: .word 0x02243150 +_02233D08: .word 0x0223F5E4 + + arm_func_start MOD13_02233D0C +MOD13_02233D0C: ; 0x02233D0C + ldr r1, _02233D20 ; =0x02243150 + ldr r1, [r1] + add r0, r1, r0, lsl #8 + ldrb r0, [r0, #0xe7] + bx lr + .align 2, 0 +_02233D20: .word 0x02243150 + + arm_func_start MOD13_02233D24 +MOD13_02233D24: ; 0x02233D24 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233D64 ; =0x02243150 + ldr r2, _02233D68 ; =0x000004CC + ldr r3, [r1] + ldr r1, _02233D6C ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4cc] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233D64: .word 0x02243150 +_02233D68: .word 0x000004CC +_02233D6C: .word 0x022405CC + + arm_func_start MOD13_02233D70 +MOD13_02233D70: ; 0x02233D70 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233DB0 ; =0x02243150 + ldr r2, _02233DB4 ; =0x000004C8 + ldr r3, [r1] + ldr r1, _02233DB8 ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c8] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233DB0: .word 0x02243150 +_02233DB4: .word 0x000004C8 +_02233DB8: .word 0x022405CC + + arm_func_start MOD13_02233DBC +MOD13_02233DBC: ; 0x02233DBC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r1, _02233DFC ; =0x02243150 + ldr r2, _02233E00 ; =0x000004C4 + ldr r3, [r1] + ldr r1, _02233E04 ; =0x022405CC + add ip, r3, r2 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c4] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233DFC: .word 0x02243150 +_02233E00: .word 0x000004C4 +_02233E04: .word 0x022405CC + + arm_func_start MOD13_02233E08 +MOD13_02233E08: ; 0x02233E08 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _02233E44 ; =0x02243150 + ldr r1, _02233E48 ; =0x022405CC + ldr r3, [r2] + add ip, r3, #0x4f0 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4f0] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233E44: .word 0x02243150 +_02233E48: .word 0x022405CC + + arm_func_start MOD13_02233E4C +MOD13_02233E4C: ; 0x02233E4C + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r2, _02233E88 ; =0x02243150 + ldr r1, _02233E8C ; =0x022405CC + ldr r3, [r2] + add ip, r3, #0x4c0 + ldrb r2, [ip, #2] + str r2, [sp] + ldrb r2, [ip, #3] + str r2, [sp, #4] + ldrb r2, [r3, #0x4c0] + ldrb r3, [ip, #1] + bl OS_SPrintf + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02233E88: .word 0x02243150 +_02233E8C: .word 0x022405CC + + arm_func_start MOD13_02233E90 +MOD13_02233E90: ; 0x02233E90 + ldr r2, _02233EAC ; =0x02243150 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02233EB0 ; =0x020CE3E0 + mov r2, #0x20 + add r0, r0, #0x440 + bx ip + .align 2, 0 +_02233EAC: .word 0x02243150 +_02233EB0: .word 0x020CE3E0 + + arm_func_start MOD13_02233EB4 +MOD13_02233EB4: ; 0x02233EB4 + ldr r2, _02233ECC ; =0x02243150 + ldr r1, _02233ED0 ; =0x000004CC + ldr r2, [r2] + ldr ip, _02233ED4 ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233ECC: .word 0x02243150 +_02233ED0: .word 0x000004CC +_02233ED4: .word MOD13_02233608 + + arm_func_start MOD13_02233ED8 +MOD13_02233ED8: ; 0x02233ED8 + ldr r2, _02233EF0 ; =0x02243150 + ldr r1, _02233EF4 ; =0x000004C8 + ldr r2, [r2] + ldr ip, _02233EF8 ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233EF0: .word 0x02243150 +_02233EF4: .word 0x000004C8 +_02233EF8: .word MOD13_02233608 + + arm_func_start MOD13_02233EFC +MOD13_02233EFC: ; 0x02233EFC + ldr r2, _02233F14 ; =0x02243150 + ldr r1, _02233F18 ; =0x000004C4 + ldr r2, [r2] + ldr ip, _02233F1C ; =MOD13_02233608 + add r1, r2, r1 + bx ip + .align 2, 0 +_02233F14: .word 0x02243150 +_02233F18: .word 0x000004C4 +_02233F1C: .word MOD13_02233608 + + arm_func_start MOD13_02233F20 +MOD13_02233F20: ; 0x02233F20 + ldr r1, _02233F34 ; =0x02243150 + ldr ip, _02233F38 ; =MOD13_02233608 + ldr r1, [r1] + add r1, r1, #0x4f0 + bx ip + .align 2, 0 +_02233F34: .word 0x02243150 +_02233F38: .word MOD13_02233608 + + arm_func_start MOD13_02233F3C +MOD13_02233F3C: ; 0x02233F3C + ldr r1, _02233F50 ; =0x02243150 + ldr ip, _02233F54 ; =MOD13_02233608 + ldr r1, [r1] + add r1, r1, #0x4c0 + bx ip + .align 2, 0 +_02233F50: .word 0x02243150 +_02233F54: .word MOD13_02233608 + + arm_func_start MOD13_02233F58 +MOD13_02233F58: ; 0x02233F58 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02234100 ; =0x02243150 + mov r6, r0 + ldr r0, [r1] + mov r1, #0 + add r0, r0, #0x480 + mov r2, #0x10 + bl MI_CpuFill8 + mov r0, r6 + mov r1, #0x20 + bl MOD13_0223BDA4 + mov r4, r0 + cmp r4, #0xa + bgt _02233FA4 + cmp r4, #0xa + bge _02233FC0 + cmp r4, #0 + beq _02233FC0 + b _0223401C +_02233FA4: + cmp r4, #0x1a + bgt _02233FB8 + cmp r4, #0x1a + beq _02233FC0 + b _0223401C +_02233FB8: + cmp r4, #0x20 + bne _0223401C +_02233FC0: + ldr r0, _02234100 ; =0x02243150 + cmp r4, #0 + ldr r2, [r0] + mov r5, #0 + ldrb r1, [r2, #0x4e6] + bic r1, r1, #0xfc + strb r1, [r2, #0x4e6] + ldr r0, [r0] + add r8, r0, #0x480 + ble _02234048 +_02233FE8: + ldrb r0, [r6, r5] + bl MOD13_022335EC + add r1, r5, #1 + mov r7, r0 + ldrb r0, [r6, r1] + bl MOD13_022335EC + add r0, r0, r7, lsl #4 + add r5, r5, #2 + strb r0, [r8] + cmp r5, r4 + add r8, r8, #1 + blt _02233FE8 + b _02234048 +_0223401C: + ldr r1, _02234100 ; =0x02243150 + mov r0, r6 + ldr r5, [r1] + mov r2, #0x10 + ldrb r3, [r5, #0x4e6] + bic r3, r3, #0xfc + orr r3, r3, #4 + strb r3, [r5, #0x4e6] + ldr r1, [r1] + add r1, r1, #0x480 + bl MI_CpuCopy8 +_02234048: + cmp r4, #5 + bgt _02234064 + cmp r4, #5 + bge _022340AC + cmp r4, #0 + beq _02234094 + b _022340E4 +_02234064: + cmp r4, #0xd + bgt _02234088 + cmp r4, #0xa + blt _022340E4 + cmp r4, #0xa + beq _022340AC + cmp r4, #0xd + beq _022340C8 + b _022340E4 +_02234088: + cmp r4, #0x1a + beq _022340C8 + b _022340E4 +_02234094: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340AC: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #1 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340C8: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #2 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022340E4: + ldr r0, _02234100 ; =0x02243150 + ldr r1, [r0] + ldrb r0, [r1, #0x4e6] + bic r0, r0, #3 + orr r0, r0, #3 + strb r0, [r1, #0x4e6] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234100: .word 0x02243150 + + arm_func_start MOD13_02234104 +MOD13_02234104: ; 0x02234104 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02234138 ; =0x02243150 + mov r2, #0x20 + ldr r1, [r1] + add r1, r1, #0x440 + bl MI_CpuCopy8 + ldr r0, _02234138 ; =0x02243150 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x4e7] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02234138: .word 0x02243150 + + arm_func_start MOD13_0223413C +MOD13_0223413C: ; 0x0223413C + ldr r1, _0223414C ; =0x02243150 + ldr r1, [r1] + strb r0, [r1, #0x4f6] + bx lr + .align 2, 0 +_0223414C: .word 0x02243150 + + arm_func_start MOD13_02234150 +MOD13_02234150: ; 0x02234150 + ldr r1, _02234160 ; =0x02243150 + ldr r1, [r1] + strb r0, [r1, #0x4f5] + bx lr + .align 2, 0 +_02234160: .word 0x02243150 + + arm_func_start MOD13_02234164 +MOD13_02234164: ; 0x02234164 + ldr r0, _02234174 ; =0x02243150 + ldr r0, [r0] + add r0, r0, #0x400 + bx lr + .align 2, 0 +_02234174: .word 0x02243150 + + arm_func_start MOD13_02234178 +MOD13_02234178: ; 0x02234178 + ldr ip, _02234184 ; =MOD13_0223AF90 + ldr r0, _02234188 ; =0x02243150 + bx ip + .align 2, 0 +_02234184: .word MOD13_0223AF90 +_02234188: .word 0x02243150 + + arm_func_start MOD13_0223418C +MOD13_0223418C: ; 0x0223418C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022341CC ; =0x000006F8 + mov r1, #0x20 + bl MOD13_0223B004 + ldr r1, _022341D0 ; =0x02243150 + ldr r2, _022341D4 ; =0x000004F8 + str r0, [r1] + ldr r1, _022341D8 ; =0x0000A001 + add r0, r0, r2 + bl MATHi_CRC16InitTableRev + ldr r0, _022341D0 ; =0x02243150 + ldr r0, [r0] + bl FUN_02095D68 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022341CC: .word 0x000006F8 +_022341D0: .word 0x02243150 +_022341D4: .word 0x000004F8 +_022341D8: .word 0x0000A001 + + arm_func_start MOD13_022341DC +MOD13_022341DC: ; 0x022341DC + ldr ip, _022341E4 ; =0x020C01A0 + bx ip + .align 2, 0 +_022341E4: .word 0x020C01A0 + + arm_func_start MOD13_022341E8 +MOD13_022341E8: ; 0x022341E8 + ldr r0, _02234200 ; =0x02243154 + ldr ip, _02234204 ; =0x020C10A4 + ldr r0, [r0] + mov r1, #0 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234200: .word 0x02243154 +_02234204: .word 0x020C10A4 + + arm_func_start MOD13_02234208 +MOD13_02234208: ; 0x02234208 + ldr r2, _02234224 ; =0x02243154 + ldr ip, _02234228 ; =0x020C0EA4 + ldr r3, [r2] + mov r2, r1 + mov r1, r0 + add r0, r3, #0x90 + bx ip + .align 2, 0 +_02234224: .word 0x02243154 +_02234228: .word 0x020C0EA4 + + arm_func_start MOD13_0223422C +MOD13_0223422C: ; 0x0223422C + ldr r2, _02234244 ; =0x02243154 + mov r1, r0 + ldr r0, [r2] + ldr ip, _02234248 ; =0x020C0F40 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234244: .word 0x02243154 +_02234248: .word 0x020C0F40 + + arm_func_start MOD13_0223424C +MOD13_0223424C: ; 0x0223424C + ldr r1, _02234268 ; =0x02243154 + mov r2, r0 + ldr r0, [r1] + ldr ip, _0223426C ; =0x020C3888 + mov r1, #0 + add r0, r0, #0x90 + bx ip + .align 2, 0 +_02234268: .word 0x02243154 +_0223426C: .word 0x020C3888 + + arm_func_start MOD13_02234270 +MOD13_02234270: ; 0x02234270 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0223429C ; =0x02243154 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x98] + bl MOD13_0223C110 + ldr r0, _0223429C ; =0x02243154 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223429C: .word 0x02243154 + + arm_func_start MOD13_022342A0 +MOD13_022342A0: ; 0x022342A0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x9c + mov r1, #4 + bl MOD13_0223B004 + ldr r2, _0223432C ; =0x02243154 + add r1, sp, #0 + str r0, [r2] + ldr r0, _02234330 ; =0x022405DC + mov r2, #0x20 + bl MOD13_022393D8 + ldr r1, _0223432C ; =0x02243154 + ldr r1, [r1] + str r0, [r1, #0x94] + bl FUN_020C01D0 + ldr r0, _0223432C ; =0x02243154 + ldr r0, [r0] + ldr r1, [r0, #0x94] + bl FUN_020C2444 + mov r0, #0 + bl FUN_020C39CC + ldr r0, _0223432C ; =0x02243154 + ldr r0, [r0] + add r0, r0, #0x90 + bl FUN_020C0F80 + mov r0, #0 + ldr r1, _02234334 ; =MOD13_022341DC + mov r2, r0 + mov r3, #0xc8 + bl MOD13_0223C1C4 + ldr r1, _0223432C ; =0x02243154 + ldr r1, [r1] + str r0, [r1, #0x98] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223432C: .word 0x02243154 +_02234330: .word 0x022405DC +_02234334: .word MOD13_022341DC + + arm_func_start MOD13_02234338 +MOD13_02234338: ; 0x02234338 + stmdb sp!, {r4, lr} + ldr r1, _02234380 ; =0x02243158 + mov r4, r0 + ldr r0, [r1] + mov r1, #0x600 + bl DC_FlushRange + ldr r0, _02234380 ; =0x02243158 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x600 + bl GXS_LoadBG1Scr + ldr r0, _02234380 ; =0x02243158 + ldr r0, [r0] + bl MOD13_0223939C + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + ldmia sp!, {r4, pc} + .align 2, 0 +_02234380: .word 0x02243158 + + arm_func_start MOD13_02234384 +MOD13_02234384: ; 0x02234384 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _022343C8 ; =0x02240658 + ldr r0, [r1, r0, lsl #2] + bl MOD13_0221F1BC + mov r1, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r2, _022343CC ; =0x02243158 + ldr r1, _022343D0 ; =MOD13_02234338 + str r0, [r2] + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022343C8: .word 0x02240658 +_022343CC: .word 0x02243158 +_022343D0: .word MOD13_02234338 + + arm_func_start MOD13_022343D4 +MOD13_022343D4: ; 0x022343D4 + ldr r0, _022343FC ; =0x0224315C + ldr r0, [r0] + cmp r0, #0 + moveq r0, #1 + bxeq lr + ldrb r0, [r0, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022343FC: .word 0x0224315C + + arm_func_start MOD13_02234400 +MOD13_02234400: ; 0x02234400 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _022344C8 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp] + ldr r6, _022344C8 ; =0x0224315C + sub r0, r0, #8 + ldr r7, _022344CC ; =0x0223F608 + mov r4, #0 + str r0, [sp] + mvn r8, #0 +_02234444: + add r0, r7, r4, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r4, lsl #2] + ldr r2, [sp] + mov r1, r8 + bl MOD13_02239888 + add r4, r4, #1 + cmp r4, #5 + blt _02234444 + ldr r1, [sp] + ldr r0, _022344D0 ; =0x000001D6 + cmp r1, r0 + addgt sp, sp, #8 + ldmgtia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0x100 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, r5 + mov r0, #0 + bl MOD13_0223C110 + mov r5, #0 + ldr r4, _022344C8 ; =0x0224315C +_022344A0: + ldr r0, [r4] + ldr r0, [r0, r5, lsl #2] + bl MOD13_02239AE8 + add r5, r5, #1 + cmp r5, #5 + blt _022344A0 + ldr r0, _022344C8 ; =0x0224315C + bl MOD13_0223AF90 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022344C8: .word 0x0224315C +_022344CC: .word 0x0223F608 +_022344D0: .word 0x000001D6 + + arm_func_start MOD13_022344D4 +MOD13_022344D4: ; 0x022344D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _022345A0 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _022345A4 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _02234554 + ldr r5, _022345A0 ; =0x0224315C + mov r7, #1 + mvn r6, #0 +_02234524: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234524 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234554: + str r0, [sp] + mov r8, #1 + ldr r6, _022345A0 ; =0x0224315C + mvn r7, #0 +_02234564: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234564 + ldr r1, _022345A8 ; =MOD13_02234400 + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022345A0: .word 0x0224315C +_022345A4: .word 0x0223F608 +_022345A8: .word MOD13_02234400 + + arm_func_start MOD13_022345AC +MOD13_022345AC: ; 0x022345AC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234678 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _0223467C ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4, #4] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _0223462C + ldr r5, _02234678 ; =0x0224315C + mov r7, #2 + mvn r6, #0 +_022345FC: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _022345FC + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0223462C: + str r0, [sp] + mov r8, #2 + ldr r6, _02234678 ; =0x0224315C + mvn r7, #0 +_0223463C: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _0223463C + ldr r1, _02234680 ; =MOD13_022344D4 + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234678: .word 0x0224315C +_0223467C: .word 0x0223F608 +_02234680: .word MOD13_022344D4 + + arm_func_start MOD13_02234684 +MOD13_02234684: ; 0x02234684 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234750 ; =0x0224315C + mov r5, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r4, _02234754 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r4, #8] + sub r1, r1, #8 + str r1, [sp] + cmp r1, r0 + ble _02234704 + ldr r5, _02234750 ; =0x0224315C + mov r7, #3 + mvn r6, #0 +_022346D4: + add r0, r4, r7, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _022346D4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234704: + str r0, [sp] + mov r8, #3 + ldr r6, _02234750 ; =0x0224315C + mvn r7, #0 +_02234714: + add r0, r4, r8, lsl #2 + ldr r1, [r6] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234714 + ldr r1, _02234758 ; =MOD13_022345AC + mov r0, r5 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234750: .word 0x0224315C +_02234754: .word 0x0223F608 +_02234758: .word MOD13_022345AC + + arm_func_start MOD13_0223475C +MOD13_0223475C: ; 0x0223475C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022347F4 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x10] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r1, _022347F8 ; =0x0223F608 + ldr r0, [sp] + ldrh ip, [r1, #0xc] + sub r2, r0, #8 + str r2, [sp] + cmp r2, ip + ble _022347C0 + ldr r0, _022347F4 ; =0x0224315C + ldrh r3, [r1, #0x12] + ldr r0, [r0] + mvn r1, #0 + ldr r0, [r0, #0x10] + bl MOD13_02239888 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022347C0: + ldr r0, _022347F4 ; =0x0224315C + str ip, [sp] + ldr r0, [r0] + ldrh r3, [r1, #0x12] + ldr r0, [r0, #0x10] + mov r2, ip + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _022347FC ; =MOD13_02234684 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022347F4: .word 0x0224315C +_022347F8: .word 0x0223F608 +_022347FC: .word MOD13_02234684 + + arm_func_start MOD13_02234800 +MOD13_02234800: ; 0x02234800 + ldr r0, _0223481C ; =0x0224315C + ldr r0, [r0] + ldr r0, [r0, #0x14] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_0223481C: .word 0x0224315C + + arm_func_start MOD13_02234820 +MOD13_02234820: ; 0x02234820 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r1, #5 + mul r2, r0, r1 + mov sl, #0 + str r0, [sp] + ldr r1, _022348F8 ; =0x0223F5E8 + ldr r0, _022348FC ; =0x0223F5F8 + ldr r4, _02234900 ; =0x0224315C + add sb, r1, r2 + add r8, r0, r2 + mov r7, sl + mov fp, sl + str sl, [sp, #4] + mov r6, #1 + mvn r5, #0 +_02234860: + ldr r0, [r4] + mov r1, r7 + ldr r0, [r0, sl, lsl #2] + bl MOD13_02239ADC + mov r2, r0 + ldrb r1, [sb] + mov r0, r6 + bl MOD13_02239E8C + ldr r0, [r4] + mov r1, r5 + ldr r0, [r0, sl, lsl #2] + mov r2, fp + bl MOD13_02239814 + ldr r3, _02234904 ; =0x0223F608 + ldr r0, [r4] + add r3, r3, sl, lsl #2 + ldr r1, _02234904 ; =0x0223F608 + mov r2, sl, lsl #2 + ldrh r2, [r1, r2] + ldrh r3, [r3, #2] + ldr r0, [r0, sl, lsl #2] + mov r1, r5 + bl MOD13_02239888 + ldr r0, [r4] + ldrb r3, [r8] + ldr r0, [r0, sl, lsl #2] + ldr r2, [sp, #4] + mov r1, r5 + bl MOD13_02239994 + add sl, sl, #2 + add sb, sb, #2 + add r8, r8, #2 + cmp sl, #5 + blt _02234860 + ldr r0, [sp] + bl MOD13_02234384 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022348F8: .word 0x0223F5E8 +_022348FC: .word 0x0223F5F8 +_02234900: .word 0x0224315C +_02234904: .word 0x0223F608 + + arm_func_start MOD13_02234908 +MOD13_02234908: ; 0x02234908 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02234948 ; =0x0224315C + mov r0, #0 + ldr ip, [r1] + mov lr, #1 + ldr r1, _0223494C ; =MOD13_0223475C + mov r2, r0 + mov r3, #0x78 + strb lr, [ip, #0x18] + bl MOD13_0223C1C4 + ldr r1, _02234948 ; =0x0224315C + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02234948: .word 0x0224315C +_0223494C: .word MOD13_0223475C + + arm_func_start MOD13_02234950 +MOD13_02234950: ; 0x02234950 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r1, r0 + mov r0, #0 + bl MOD13_0223C110 + ldr r0, _0223497C ; =0x0224315C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223497C: .word 0x0224315C + + arm_func_start MOD13_02234980 +MOD13_02234980: ; 0x02234980 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02234A24 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0x10] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r1, _02234A28 ; =0x0223F608 + ldr r0, [sp] + ldrh ip, [r1, #0x10] + add r2, r0, #8 + str r2, [sp] + cmp r2, ip + blt _022349CC + cmp r2, #0x100 + ble _022349F0 +_022349CC: + ldr r1, _02234A24 ; =0x0224315C + ldr r0, _02234A28 ; =0x0223F608 + ldr r1, [r1] + ldrh r3, [r0, #0x12] + ldr r0, [r1, #0x10] + mvn r1, #0 + bl MOD13_02239888 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_022349F0: + ldr r0, _02234A24 ; =0x0224315C + str ip, [sp] + ldr r0, [r0] + ldrh r3, [r1, #0x12] + ldr r0, [r0, #0x10] + mov r2, ip + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _02234A2C ; =MOD13_02234950 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02234A24: .word 0x0224315C +_02234A28: .word 0x0223F608 +_02234A2C: .word MOD13_02234950 + + arm_func_start MOD13_02234A30 +MOD13_02234A30: ; 0x02234A30 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234B08 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #0xc] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234B0C ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #0xc] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234A7C + cmp r1, #0x100 + ble _02234ABC +_02234A7C: + ldr r4, _02234B08 ; =0x0224315C + ldr r5, _02234B0C ; =0x0223F608 + mov r7, #3 + mvn r6, #0 +_02234A8C: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234A8C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234ABC: + str r0, [sp] + mov r8, #3 + ldr r5, _02234B08 ; =0x0224315C + mvn r7, #0 +_02234ACC: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234ACC + ldr r1, _02234B10 ; =MOD13_02234980 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234B08: .word 0x0224315C +_02234B0C: .word 0x0223F608 +_02234B10: .word MOD13_02234980 + + arm_func_start MOD13_02234B14 +MOD13_02234B14: ; 0x02234B14 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234BEC ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #8] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234BF0 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #8] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234B60 + cmp r1, #0x100 + ble _02234BA0 +_02234B60: + ldr r4, _02234BEC ; =0x0224315C + ldr r5, _02234BF0 ; =0x0223F608 + mov r7, #2 + mvn r6, #0 +_02234B70: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234B70 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234BA0: + str r0, [sp] + mov r8, #2 + ldr r5, _02234BEC ; =0x0224315C + mvn r7, #0 +_02234BB0: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234BB0 + ldr r1, _02234BF4 ; =MOD13_02234A30 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234BEC: .word 0x0224315C +_02234BF0: .word 0x0223F608 +_02234BF4: .word MOD13_02234A30 + + arm_func_start MOD13_02234BF8 +MOD13_02234BF8: ; 0x02234BF8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234CD0 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0, #4] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234CD4 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6, #4] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234C44 + cmp r1, #0x100 + ble _02234C84 +_02234C44: + ldr r4, _02234CD0 ; =0x0224315C + ldr r5, _02234CD4 ; =0x0223F608 + mov r7, #1 + mvn r6, #0 +_02234C54: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234C54 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234C84: + str r0, [sp] + mov r8, #1 + ldr r5, _02234CD0 ; =0x0224315C + mvn r7, #0 +_02234C94: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234C94 + ldr r1, _02234CD8 ; =MOD13_02234B14 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234CD0: .word 0x0224315C +_02234CD4: .word 0x0223F608 +_02234CD8: .word MOD13_02234B14 + + arm_func_start MOD13_02234CDC +MOD13_02234CDC: ; 0x02234CDC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r1, _02234DB4 ; =0x0224315C + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r6, _02234DB8 ; =0x0223F608 + ldr r1, [sp] + ldrh r0, [r6] + add r1, r1, #8 + str r1, [sp] + cmp r1, r0 + blt _02234D28 + cmp r1, #0x100 + ble _02234D68 +_02234D28: + ldr r4, _02234DB4 ; =0x0224315C + ldr r5, _02234DB8 ; =0x0223F608 + mov r7, #0 + mvn r6, #0 +_02234D38: + add r0, r5, r7, lsl #2 + ldr r1, [r4] + ldrh r3, [r0, #2] + ldr r0, [r1, r7, lsl #2] + ldr r2, [sp] + mov r1, r6 + bl MOD13_02239888 + add r7, r7, #1 + cmp r7, #5 + blt _02234D38 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02234D68: + str r0, [sp] + mov r8, #0 + ldr r5, _02234DB4 ; =0x0224315C + mvn r7, #0 +_02234D78: + add r0, r6, r8, lsl #2 + ldr r1, [r5] + ldrh r3, [r0, #2] + ldr r0, [r1, r8, lsl #2] + ldr r2, [sp] + mov r1, r7 + bl MOD13_02239888 + add r8, r8, #1 + cmp r8, #5 + blt _02234D78 + ldr r1, _02234DBC ; =MOD13_02234BF8 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02234DB4: .word 0x0224315C +_02234DB8: .word 0x0223F608 +_02234DBC: .word MOD13_02234BF8 + + arm_func_start MOD13_02234DC0 +MOD13_02234DC0: ; 0x02234DC0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + str r0, [sp] + mov r0, #0x1c + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, [sp] + mov r2, #5 + mul r3, r1, r2 + mov sl, #0 + ldr r4, _02234EC4 ; =0x0224315C + ldr r2, _02234EC8 ; =0x0223F5E8 + ldr r1, _02234ECC ; =0x0223F5F8 + str r0, [r4] + add sb, r2, r3 + add r8, r1, r3 + mov fp, sl + str sl, [sp, #4] + mov r7, #1 + mvn r6, #0 + mvn r5, #0x29 +_02234E14: + ldrb r1, [sb] + mov r0, r7 + mov r2, r7 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r6 + str r0, [r2, sl, lsl #2] + ldr r0, [r4] + mov r2, fp + ldr r0, [r0, sl, lsl #2] + bl MOD13_02239814 + ldr r3, _02234ED0 ; =0x0223F608 + ldr r0, [r4] + add r3, r3, sl, lsl #2 + ldrh r3, [r3, #2] + ldr r0, [r0, sl, lsl #2] + mov r1, r6 + mov r2, r5 + bl MOD13_02239888 + ldr r0, [r4] + ldrb r3, [r8] + ldr r0, [r0, sl, lsl #2] + ldr r2, [sp, #4] + mov r1, r6 + bl MOD13_02239994 + add sl, sl, #1 + add sb, sb, #1 + add r8, r8, #1 + cmp sl, #5 + blt _02234E14 + mov r0, #0 + ldr r1, _02234ED4 ; =MOD13_02234CDC + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02234EC4 ; =0x0224315C + ldr r1, [r1] + str r0, [r1, #0x14] + ldr r0, [sp] + bl MOD13_02234384 + mov r0, #0xd + bl MOD13_0223424C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02234EC4: .word 0x0224315C +_02234EC8: .word 0x0223F5E8 +_02234ECC: .word 0x0223F5F8 +_02234ED0: .word 0x0223F608 +_02234ED4: .word MOD13_02234CDC + + arm_func_start MOD13_02234ED8 +MOD13_02234ED8: ; 0x02234ED8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + str r0, [sp] + bl OS_GetTick + ldr r2, _02235018 ; =0x02243160 + ldr r3, _0223501C ; =0x0017F898 + ldr fp, [r2] + mov r8, #0 + add r2, fp, #0x1000 + ldr r4, [r2, #0xb78] + ldr r2, [r2, #0xb7c] + adds r3, r4, r3 + adc r2, r2, #0 + cmp r1, r2 + cmpeq r0, r3 + addlo sp, sp, #4 + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov sb, r8 + mov sl, r8 + mov r6, fp + add r7, fp, #0x1300 + mov r4, #1 + mov r5, #6 +_02234F34: + ldr r1, _02235020 ; =0x0223F61C + mov r0, r7 + mov r2, r5 + bl memcmp + cmp r0, #0 + beq _02234F60 + add r0, r6, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + movne sb, r4 + moveq r8, r4 +_02234F60: + add sl, sl, #1 + cmp sl, #0x10 + add r7, r7, #7 + add r6, r6, #7 + blt _02234F34 + cmp sb, #0 + beq _02234FA0 + cmp r8, #0 + beq _02234FA0 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #2 + blx r1 + b _02234FE4 +_02234FA0: + cmp sb, #0 + beq _02234FC4 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #1 + blx r1 + b _02234FE4 +_02234FC4: + cmp r8, #0 + bne _02234FE4 + add r0, fp, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + beq _02234FE4 + mov r0, #0 + blx r1 +_02234FE4: + ldr r3, _02235018 ; =0x02243160 + mov r0, #0 + ldr r2, [r3] + ldr r1, [sp] + add r2, r2, #0x1000 + str r0, [r2, #0xb80] + ldr r2, [r3] + mov r3, #1 + add r2, r2, #0x1000 + strb r3, [r2, #0xb86] + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235018: .word 0x02243160 +_0223501C: .word 0x0017F898 +_02235020: .word 0x0223F61C + + arm_func_start MOD13_02235024 +MOD13_02235024: ; 0x02235024 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _02235154 ; =0x02243160 + mov r4, r0 + ldr r2, [r1] + add r1, r2, #0x1000 + ldrb r0, [r1, #0xb85] + cmp r0, #0 + beq _02235064 + ldr r1, [r1, #0x370] + cmp r1, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02235064: + add r0, r2, #0xf00 + mov r1, #0x400 + bl DC_InvalidateRange + ldrh fp, [r4, #0xe] + mov sl, #0 + cmp fp, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _02235154 ; =0x02243160 + ldr r7, [r0] + str sl, [sp, #4] + mov r5, #6 + mov r0, #8 + str r0, [sp] +_0223509C: + add r0, r4, sl, lsl #2 + ldr r6, [r0, #0x10] + ldr r1, _02235158 ; =0x0223F624 + ldr r2, [sp] + add r0, r6, #0xc + bl memcmp + cmp r0, #0 + bne _02235140 + ldrb r0, [r6, #0x15] + ands r0, r0, #1 + beq _02235140 + ldr sb, [sp, #4] + add r8, r7, #0x1300 + add r6, r6, #4 +_022350D4: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _02235130 + mov r0, #7 + mla r0, sb, r0, r7 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + bne _02235140 + add r0, r7, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + moveq r1, #1 + streqb r1, [r0, #0xb85] + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02235130: + add sb, sb, #1 + cmp sb, #0x10 + add r8, r8, #7 + blt _022350D4 +_02235140: + add sl, sl, #1 + cmp sl, fp + blt _0223509C + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235154: .word 0x02243160 +_02235158: .word 0x0223F624 + + arm_func_start MOD13_0223515C +MOD13_0223515C: ; 0x0223515C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + str r0, [sp] + ldrh r0, [r0, #0xe] + mov fp, #0 + cmp r0, #0 + addle sp, sp, #0x1c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + str r0, [sp, #0x14] + mov r0, #0xc0 + str r0, [sp, #4] + mov r0, #8 + ldr r4, _022352EC ; =0x0223F61C + str fp, [sp, #0x18] + str fp, [sp, #0xc] + str fp, [sp, #0x10] + mov r5, #6 + str r0, [sp, #8] +_022351A8: + ldr r0, [sp] + ldr r1, [sp, #4] + add r0, r0, fp, lsl #2 + ldr sl, [r0, #0x10] + mov r0, sl + bl DC_InvalidateRange + ldr r1, _022352F0 ; =0x0223F624 + ldr r2, [sp, #8] + add r0, sl, #0xc + bl memcmp + cmp r0, #0 + bne _022352D0 + ldr r0, _022352F4 ; =0x02243160 + ldr sb, [sp, #0xc] + ldr r7, [r0] + add r6, sl, #4 + add r8, r7, #0x1300 +_022351EC: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _0223524C + mov r0, #7 + mla r0, sb, r0, r7 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x306] + cmp r0, #0 + bne _022352D0 + ldrb r0, [sl, #0x15] + ands r0, r0, #1 + beq _022352D0 + add r0, r7, #0x1000 + ldr r1, [r0, #0x370] + cmp r1, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #1 + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0223524C: + add r8, r8, #7 + add sb, sb, #1 + cmp sb, #0x10 + blt _022351EC + ldr r6, [sp, #0x10] + add r8, r7, #0x1300 +_02235264: + mov r0, r8 + mov r1, r4 + mov r2, r5 + bl memcmp + cmp r0, #0 + bne _022352C0 + mov r0, #7 + add r1, r7, #0x1300 + mul r7, r6, r0 + add r1, r1, r7 + add r0, sl, #4 + mov r2, r5 + bl MI_CpuCopy8 + ldrb r0, [sl, #0x15] + ands r0, r0, #1 + ldr r0, _022352F4 ; =0x02243160 + ldrne r1, [sp, #0x14] + ldr r0, [r0] + ldreq r1, [sp, #0x18] + add r0, r0, r7 + add r0, r0, #0x1000 + strb r1, [r0, #0x306] + b _022352D0 +_022352C0: + add r8, r8, #7 + add r6, r6, #1 + cmp r6, #0x10 + blt _02235264 +_022352D0: + ldr r0, [sp] + add fp, fp, #1 + ldrh r0, [r0, #0xe] + cmp fp, r0 + blt _022351A8 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022352EC: .word 0x0223F61C +_022352F0: .word 0x0223F624 +_022352F4: .word 0x02243160 + + arm_func_start MOD13_022352F8 +MOD13_022352F8: ; 0x022352F8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r1, _022353A0 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1000 + ldrb r2, [r1, #0xb84] + cmp r2, #0 + beq _02235340 + ldrh r0, [r0] + add sp, sp, #4 + cmp r0, #2 + moveq r0, #2 + streqb r0, [r1, #0xb84] + ldmia sp!, {pc} +_02235340: + ldrh r2, [r0] + cmp r2, #0x26 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldrh r2, [r0, #8] + cmp r2, #4 + beq _02235388 + cmp r2, #5 + bne _02235394 + ldrb r1, [r1, #0xb86] + cmp r1, #0 + beq _02235378 + bl MOD13_02235024 + b _0223537C +_02235378: + bl MOD13_0223515C +_0223537C: + bl MOD13_022354B4 + add sp, sp, #4 + ldmia sp!, {pc} +_02235388: + bl MOD13_022354B4 + add sp, sp, #4 + ldmia sp!, {pc} +_02235394: + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022353A0: .word 0x02243160 + + arm_func_start MOD13_022353A4 +MOD13_022353A4: ; 0x022353A4 + ldr r1, _022353B8 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1000 + str r0, [r1, #0x370] + bx lr + .align 2, 0 +_022353B8: .word 0x02243160 + + arm_func_start MOD13_022353BC +MOD13_022353BC: ; 0x022353BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _022354A8 ; =0x02243160 + mov r3, #1 + ldr r0, [r2] + ldr r1, _022354AC ; =0x000013B8 + add r0, r0, #0x1000 + strb r3, [r0, #0xb84] + ldr r0, [r2] + add r0, r0, r1 + bl WM_ReadStatus + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + beq _02235444 + ldr r0, _022354B0 ; =MOD13_022352F8 + bl WM_Reset + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} +_02235418: + ldr r1, _022354A8 ; =0x02243160 + ldr r0, _022354AC ; =0x000013B8 + ldr r1, [r1] + add r0, r1, r0 + bl WM_ReadStatus + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + bne _02235418 +_02235444: + ldr r0, _022354B0 ; =MOD13_022352F8 + bl WM_End + cmp r0, #2 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r1, [r0, #0xb80] + cmp r1, #0 + beq _0223547C + mov r0, #0 + bl MOD13_0223C104 +_0223547C: + ldr r0, _022354A8 ; =0x02243160 + ldr r0, [r0] + add r0, r0, #0x1000 +_02235488: + ldrb r1, [r0, #0xb84] + cmp r1, #2 + bne _02235488 + ldr r0, _022354A8 ; =0x02243160 + bl MOD13_0223AF90 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022354A8: .word 0x02243160 +_022354AC: .word 0x000013B8 +_022354B0: .word MOD13_022352F8 + + arm_func_start MOD13_022354B4 +MOD13_022354B4: ; 0x022354B4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022354E8 ; =0x02243160 + ldr r1, _022354EC ; =0x00001374 + ldr r2, [r0] + ldr r0, _022354F0 ; =MOD13_022352F8 + add r1, r2, r1 + bl WM_StartScanEx + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022354E8: .word 0x02243160 +_022354EC: .word 0x00001374 +_022354F0: .word MOD13_022352F8 + + arm_func_start MOD13_022354F4 +MOD13_022354F4: ; 0x022354F4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x54 + mov r4, r0 + ldr r0, _0223565C ; =0x00001BA0 + mov r1, #0x20 + bl MOD13_0223AFE0 + ldr r2, _02235660 ; =0x02243160 + add r1, r0, #0x1000 + str r0, [r2] + str r4, [r1, #0x370] + ldr r4, [r2] + bl OS_GetTick + add r2, r4, #0x1000 + str r0, [r2, #0xb78] + str r1, [r2, #0xb7c] + ldr r1, _02235664 ; =MOD13_022352F8 + mov r0, r4 + mov r2, #3 + bl WM_Initialize + cmp r0, #2 + bne _02235648 + ldr r5, _02235660 ; =0x02243160 + ldr r4, _02235668 ; =0x000013B8 +_02235550: + ldr r0, [r5] + add r0, r0, r4 + bl WM_ReadStatus + ldr ip, [r5] + add r0, ip, #0x1300 + ldrh r0, [r0, #0xb8] + cmp r0, #2 + bne _02235550 + ldr r0, _0223566C ; =0x00001374 + ldr lr, _02235670 ; =0x0223F630 + add r5, ip, r0 + mov r4, #4 +_02235580: + ldmia lr!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _02235580 + ldr r0, [lr] + add r1, ip, #0xf00 + str r0, [r5] + add r0, ip, #0x1000 + str r1, [r0, #0x374] + bl WM_GetDispersionScanPeriod + ldr r1, _02235660 ; =0x02243160 + ldr r1, [r1] + add r1, r1, #0x1300 + strh r0, [r1, #0x7c] + add r0, sp, #0 + bl OS_GetOwnerInfo + ldr r0, _02235660 ; =0x02243160 + ldr r1, _02235674 ; =0x00001388 + ldr r2, [r0] + ldr r0, _02235678 ; =0x0223F624 + add r1, r2, r1 + mov r2, #8 + bl MI_CpuCopy8 + ldr r2, _02235660 ; =0x02243160 + mov r3, #1 + ldr r0, [r2] + ldr r1, _0223567C ; =0x00001394 + add r0, r0, #0x1000 + strb r3, [r0, #0x391] + ldr r2, [r2] + ldrh r3, [sp, #0x18] + add r1, r2, r1 + add r0, sp, #4 + mov r2, r3, lsl #1 + bl MI_CpuCopy8 + bl MOD13_022354B4 + cmp r0, #0 + beq _02235648 + mov r0, #0 + ldr r1, _02235680 ; =MOD13_02234ED8 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235660 ; =0x02243160 + add sp, sp, #0x54 + ldr r1, [r1] + add r1, r1, #0x1000 + str r0, [r1, #0xb80] + mov r0, #1 + ldmia sp!, {r4, r5, pc} +_02235648: + ldr r0, _02235660 ; =0x02243160 + bl MOD13_0223AF90 + mov r0, #0 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223565C: .word 0x00001BA0 +_02235660: .word 0x02243160 +_02235664: .word MOD13_022352F8 +_02235668: .word 0x000013B8 +_0223566C: .word 0x00001374 +_02235670: .word 0x0223F630 +_02235674: .word 0x00001388 +_02235678: .word 0x0223F624 +_0223567C: .word 0x00001394 +_02235680: .word MOD13_02234ED8 + + arm_func_start MOD13_02235684 +MOD13_02235684: ; 0x02235684 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r3, #0x4000000 + ldr r2, [r3] + ldr r1, _02235730 ; =0x02243164 + bic r2, r2, #0xe000 + str r2, [r3] + ldr r1, [r1] + mov r6, r0 + ldr r0, [r1] + bl MOD13_02239AE8 + ldr r0, _02235730 ; =0x02243164 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_02239AE8 + ldr r7, _02235730 ; =0x02243164 + ldr r4, _02235734 ; =0x0223F680 + ldr r1, [r7] + mov r5, #0 + ldrb r0, [r1, #0x1c] + ldrb r0, [r4, r0] + cmp r0, #0 + ble _0223570C +_022356E0: + add r0, r1, r5, lsl #2 + ldr r0, [r0, #8] + cmp r0, #0 + beq _022356F4 + bl MOD13_02239AE8 +_022356F4: + ldr r1, [r7] + add r5, r5, #1 + ldrb r0, [r1, #0x1c] + ldrb r0, [r4, r0] + cmp r5, r0 + blt _022356E0 +_0223570C: + ldr r0, [r1, #0x10] + bl MOD13_0223A978 + mov r1, r6 + mov r0, #1 + bl MOD13_0223C110 + ldr r0, _02235730 ; =0x02243164 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02235730: .word 0x02243164 +_02235734: .word 0x0223F680 + + arm_func_start MOD13_02235738 +MOD13_02235738: ; 0x02235738 + stmdb sp!, {r4, lr} + ldr r1, _02235788 ; =0x02243164 + mov r4, r0 + ldr r3, [r1] + ldr r0, _0223578C ; =0x04000050 + ldrsb r2, [r3, #0x1a] + add r2, r2, #1 + strb r2, [r3, #0x1a] + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + bl G2x_ChangeBlendBrightness_ + ldr r0, _02235788 ; =0x02243164 + ldr r0, [r0] + ldrsb r0, [r0, #0x1a] + cmp r0, #0 + ldmltia sp!, {r4, pc} + ldr r1, _02235790 ; =MOD13_02235684 + mov r0, r4 + bl MOD13_0223C130 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235788: .word 0x02243164 +_0223578C: .word 0x04000050 +_02235790: .word MOD13_02235684 + + arm_func_start MOD13_02235794 +MOD13_02235794: ; 0x02235794 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02235818 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + add r0, r0, #0xc + str r0, [sp, #4] + bl MOD13_022359B8 + ldr r0, [sp, #4] + cmp r0, #0xc0 + addlt sp, sp, #8 + ldmltia sp!, {r4, pc} + ldr r0, _02235818 ; =0x02243164 + ldr r0, [r0] + ldrb r0, [r0, #0x1e] + cmp r0, #0 + beq _02235804 + ldr r1, _0223581C ; =MOD13_02235738 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02235804: + ldr r1, _02235820 ; =MOD13_02235684 + mov r0, r4 + bl MOD13_0223C130 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235818: .word 0x02243164 +_0223581C: .word MOD13_02235738 +_02235820: .word MOD13_02235684 + + arm_func_start MOD13_02235824 +MOD13_02235824: ; 0x02235824 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02235864 ; =0x02243164 + ldr r3, [r1] + ldrb r2, [r3, #0x1d] + add r2, r2, #1 + strb r2, [r3, #0x1d] + ldr r1, [r1] + ldrb r1, [r1, #0x1d] + cmp r1, #8 + addlo sp, sp, #4 + ldmloia sp!, {pc} + ldr r1, _02235868 ; =MOD13_02235794 + bl MOD13_0223C130 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235864: .word 0x02243164 +_02235868: .word MOD13_02235794 + + arm_func_start MOD13_0223586C +MOD13_0223586C: ; 0x0223586C + stmdb sp!, {r4, lr} + ldr r1, _02235918 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + mov r1, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + bl MOD13_02239ADC + ldr r1, _02235918 ; =0x02243164 + mov r2, r0 + ldr r0, [r1] + ldr r1, _0223591C ; =0x0223F6B0 + ldrb r3, [r0, #0x1c] + mov r0, #0 + add r1, r1, r3, lsl #1 + ldrb r1, [r4, r1] + add r1, r1, #1 + bl MOD13_02239E8C + ldr r0, _02235918 ; =0x02243164 + ldr r2, _02235920 ; =0x0223F698 + ldr r0, [r0] + ldr r1, _02235924 ; =0x0223F718 + ldrb lr, [r0, #0x1c] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + add r2, r2, lr, lsl #1 + ldrb r3, [r4, r2] + add r2, r1, lr, lsl #3 + mvn r1, #0 + mov ip, r3, lsl #2 + ldrh r2, [ip, r2] + ldr r3, _02235928 ; =0x0223F71A + add r3, r3, lr, lsl #3 + ldrh r3, [ip, r3] + bl MOD13_02239888 + ldr r0, _02235918 ; =0x02243164 + mvn r1, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, r4, lsl #2 + ldr r0, [r0, #8] + bl MOD13_02239814 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235918: .word 0x02243164 +_0223591C: .word 0x0223F6B0 +_02235920: .word 0x0223F698 +_02235924: .word 0x0223F718 +_02235928: .word 0x0223F71A + + arm_func_start MOD13_0223592C +MOD13_0223592C: ; 0x0223592C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov sb, r1 + bl MOD13_02239AD4 + mov r8, r0 + cmp r8, #0 + mov r7, #0 + addle sp, sp, #0xc + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add fp, sp, #0 + mov r6, r7 + mov r4, r7 + mov r5, #0x200 +_02235964: + mov r0, sl + mov r1, r7 + mov r2, fp + add r3, sp, #4 + bl MOD13_022397DC + ldr r0, [sp, #4] + cmp r0, sb + blt _02235990 + cmp r0, #0xc0 + movlt r2, r6 + blt _02235994 +_02235990: + mov r2, r5 +_02235994: + mov r0, sl + mov r1, r7 + mov r3, r4 + bl MOD13_02239A1C + add r7, r7, #1 + cmp r7, r8 + blt _02235964 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + + arm_func_start MOD13_022359B8 +MOD13_022359B8: ; 0x022359B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r1, _02235B4C ; =0x02243164 + mov sl, r0 + ldr r0, [r1] + ldr r1, _02235B50 ; =0x0223F6E8 + ldrb r2, [r0, #0x1c] + ldr r0, [r0] + mov r3, sl + mov r2, r2, lsl #2 + ldrh r2, [r1, r2] + mvn r1, #0 + bl MOD13_02239888 + ldr r1, _02235B4C ; =0x02243164 + ldr r0, _02235B54 ; =0x0223F674 + ldr r5, [r1] + ldr r2, _02235B50 ; =0x0223F6E8 + ldrb r3, [r5, #0x1c] + ldrh r1, [r0, #2] + ldrh r4, [r0] + mov r0, r3, lsl #2 + ldrh r2, [r2, r0] + ldr r0, [r5, #4] + add r3, sl, r1 + add r2, r4, r2 + mvn r1, #0 + bl MOD13_02239888 + ldr r0, _02235B4C ; =0x02243164 + mov r1, sl + ldr r0, [r0] + ldr r0, [r0] + bl MOD13_0223592C + ldr r0, _02235B4C ; =0x02243164 + mov r1, sl + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD13_0223592C + ldr r4, _02235B4C ; =0x02243164 + ldr r8, _02235B58 ; =0x0223F680 + ldr r0, [r4] + mov sb, #0 + ldrb r0, [r0, #0x1c] + ldrb r1, [r8, r0] + cmp r1, #0 + ble _02235AE8 + ldr r7, _02235B5C ; =0x0223F698 + ldr r5, _02235B60 ; =0x0223F718 + ldr fp, _02235B50 ; =0x0223F6E8 + mvn r6, #0 +_02235A7C: + add r1, r7, r0, lsl #1 + ldrb ip, [sb, r1] + add r2, r5, r0, lsl #3 + add r3, fp, r0, lsl #2 + add r0, r2, ip, lsl #2 + ldr r1, [r4] + mov ip, ip, lsl #2 + ldrh r2, [ip, r2] + ldrh r0, [r0, #2] + add r1, r1, sb, lsl #2 + ldrh r3, [r3, #2] + add ip, sl, r0 + ldr r0, [r1, #8] + mov r1, r6 + sub r3, ip, r3 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, sl + add r0, r0, sb, lsl #2 + ldr r0, [r0, #8] + bl MOD13_0223592C + ldr r0, [r4] + add sb, sb, #1 + ldrb r0, [r0, #0x1c] + ldrb r1, [r8, r0] + cmp sb, r1 + blt _02235A7C +_02235AE8: + and r1, sl, #0xff + cmp r1, #0xc0 + movge r3, #0 + movge r1, r3 + ldrlt r2, _02235B64 ; =0x0223F702 + movlt r3, r0, lsl #2 + ldrlth r2, [r2, r3] + mov r5, r0, lsl #2 + add r4, sp, #4 + addlt r3, r1, r2 + ldr r2, _02235B50 ; =0x0223F6E8 + cmp r3, #0xc0 + ldrh r0, [r2, r5] + ldr r2, _02235B68 ; =0x0223F700 + movgt r3, #0xc0 + str r4, [sp] + ldrh r2, [r2, r5] + add r2, r0, r2 + bl MOD13_0223ABA8 + mov r0, #0 + mov r2, r4 + mov r1, r0 + bl MOD13_0223AD38 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02235B4C: .word 0x02243164 +_02235B50: .word 0x0223F6E8 +_02235B54: .word 0x0223F674 +_02235B58: .word 0x0223F680 +_02235B5C: .word 0x0223F698 +_02235B60: .word 0x0223F718 +_02235B64: .word 0x0223F702 +_02235B68: .word 0x0223F700 + + arm_func_start MOD13_02235B6C +MOD13_02235B6C: ; 0x02235B6C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02235BDC ; =0x02243164 + mvn ip, #0 + ldr r3, [r2] + mov r1, r0 + strb ip, [r3, #0x1b] + ldr r3, [r2] + ldrh r0, [r3, #0x18] + add r0, r0, #1 + strh r0, [r3, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #0x18] + cmp r0, #0x78 + addlo sp, sp, #4 + ldmloia sp!, {pc} + mov r0, #0 + bl MOD13_0223C110 + ldr r1, _02235BE0 ; =MOD13_02235824 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235BDC ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235BDC: .word 0x02243164 +_02235BE0: .word MOD13_02235824 + + arm_func_start MOD13_02235BE4 +MOD13_02235BE4: ; 0x02235BE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r5, _02235D20 ; =0x02243164 + ldr sl, _02235D24 ; =0x0223F680 + ldr r0, [r5] + mov r4, #0 + ldrb r1, [r0, #0x1c] + ldrb r0, [sl, r1] + cmp r0, #0 + ble _02235C6C + ldr sb, _02235D28 ; =0x0223F718 + ldr r8, _02235D2C ; =0x0223F698 + ldr r7, _02235D30 ; =0x0223F6BC + add r6, sp, #0 +_02235C1C: + add r0, r8, r1, lsl #1 + ldrb r0, [r4, r0] + add r3, sb, r1, lsl #3 + mov r2, r6 + add r0, r3, r0, lsl #2 + add r1, r7, r1, lsl #2 + bl MOD13_0223AB74 + mov r0, r6 + bl MOD13_0223B2B4 + cmp r0, #0 + ldrne r0, _02235D20 ; =0x02243164 + ldrne r0, [r0] + strneb r4, [r0, #0x1b] + bne _02235C6C + ldr r0, [r5] + add r4, r4, #1 + ldrb r1, [r0, #0x1c] + ldrb r0, [sl, r1] + cmp r4, r0 + blt _02235C1C +_02235C6C: + mov r0, #1 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02235C98 + ldr r0, _02235D20 ; =0x02243164 + ldr r1, _02235D34 ; =0x0223F6A4 + ldr r2, [r0] + ldrb r0, [r2, #0x1c] + mov r0, r0, lsl #1 + ldrsb r0, [r1, r0] + strb r0, [r2, #0x1b] +_02235C98: + mov r0, #2 + bl MOD13_0223B3D4 + cmp r0, #0 + beq _02235CC4 + ldr r0, _02235D20 ; =0x02243164 + ldr r1, _02235D38 ; =0x0223F6A5 + ldr r2, [r0] + ldrb r0, [r2, #0x1c] + mov r0, r0, lsl #1 + ldrsb r0, [r1, r0] + strb r0, [r2, #0x1b] +_02235CC4: + ldr r0, _02235D20 ; =0x02243164 + ldr r2, _02235D24 ; =0x0223F680 + ldr r4, [r0] + mov r0, #0 + ldrb r1, [r4, #0x1c] + ldrb r1, [r2, r1] + cmp r1, #0 + ble _02235D10 + ldrsb r3, [r4, #0x1b] +_02235CE8: + cmp r0, r3 + bne _02235CFC + bl MOD13_0223586C + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02235CFC: + ldrb r1, [r4, #0x1c] + add r0, r0, #1 + ldrb r1, [r2, r1] + cmp r0, r1 + blt _02235CE8 +_02235D10: + mvn r0, #0 + strb r0, [r4, #0x1b] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02235D20: .word 0x02243164 +_02235D24: .word 0x0223F680 +_02235D28: .word 0x0223F718 +_02235D2C: .word 0x0223F698 +_02235D30: .word 0x0223F6BC +_02235D34: .word 0x0223F6A4 +_02235D38: .word 0x0223F6A5 + + arm_func_start MOD13_02235D3C +MOD13_02235D3C: ; 0x02235D3C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _02235E10 ; =0x02243164 + mov r4, r0 + ldr r0, [r1] + add r2, sp, #0 + ldr r0, [r0] + add r3, sp, #4 + mov r1, #0 + bl MOD13_022397DC + ldr r0, [sp, #4] + ldr r1, _02235E10 ; =0x02243164 + sub r0, r0, #0xc + ldr r1, [r1] + str r0, [sp, #4] + ldrb r2, [r1, #0x1c] + ldr r1, _02235E14 ; =0x0223F6EA + mov r2, r2, lsl #2 + ldrh r1, [r1, r2] + cmp r0, r1 + ble _02235D9C + bl MOD13_022359B8 + add sp, sp, #8 + ldmia sp!, {r4, pc} +_02235D9C: + mov r0, r1 + bl MOD13_022359B8 + ldr r0, _02235E10 ; =0x02243164 + ldr r0, [r0] + ldrb r0, [r0, #0x1c] + cmp r0, #5 + bne _02235DDC + mov r0, #0 + ldr r1, _02235E18 ; =MOD13_02235B6C + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235E10 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + b _02235DFC +_02235DDC: + mov r0, #0 + ldr r1, _02235E1C ; =MOD13_02235BE4 + mov r2, r0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235E10 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] +_02235DFC: + mov r1, r4 + mov r0, #1 + bl MOD13_0223C110 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235E10: .word 0x02243164 +_02235E14: .word 0x0223F6EA +_02235E18: .word MOD13_02235B6C +_02235E1C: .word MOD13_02235BE4 + + arm_func_start MOD13_02235E20 +MOD13_02235E20: ; 0x02235E20 + stmdb sp!, {r4, lr} + ldr r1, _02235E74 ; =0x02243164 + mov r4, r0 + ldr r3, [r1] + ldr r0, _02235E78 ; =0x04000050 + ldrsb r2, [r3, #0x1a] + sub r2, r2, #1 + strb r2, [r3, #0x1a] + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + bl G2x_ChangeBlendBrightness_ + ldr r1, _02235E74 ; =0x02243164 + mvn r0, #0xb + ldr r1, [r1] + ldrsb r1, [r1, #0x1a] + cmp r1, r0 + ldmgtia sp!, {r4, pc} + ldr r1, _02235E7C ; =MOD13_02235D3C + mov r0, r4 + bl MOD13_0223C130 + ldmia sp!, {r4, pc} + .align 2, 0 +_02235E74: .word 0x02243164 +_02235E78: .word 0x04000050 +_02235E7C: .word MOD13_02235D3C + + arm_func_start MOD13_02235E80 +MOD13_02235E80: ; 0x02235E80 + ldr r0, _02235E98 ; =0x02243164 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02235E98: .word 0x02243164 + + arm_func_start MOD13_02235E9C +MOD13_02235E9C: ; 0x02235E9C + ldr r0, _02235EAC ; =0x02243164 + ldr r0, [r0] + ldrsb r0, [r0, #0x1b] + bx lr + .align 2, 0 +_02235EAC: .word 0x02243164 + + arm_func_start MOD13_02235EB0 +MOD13_02235EB0: ; 0x02235EB0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02235EF4 ; =0x02243164 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x14] + bl MOD13_0223C110 + ldr r1, _02235EF8 ; =MOD13_02235824 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _02235EF4 ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02235EF4: .word 0x02243164 +_02235EF8: .word MOD13_02235824 + + arm_func_start MOD13_02235EFC +MOD13_02235EFC: ; 0x02235EFC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + ldr r5, _02236224 ; =0x0223F688 + ldr r4, _02236228 ; =0x0224307C + ldrb sl, [r5] + ldrb sb, [r5, #1] + ldrb r8, [r5, #2] + ldrb r7, [r5, #3] + ldrb r6, [r5, #4] + ldrb r5, [r5, #5] + mov fp, r0 + str r2, [sp, #0x14] + mov r2, r3 + str r1, [sp, #0x10] + ldr r0, [r4] + ldr r3, [sp, #0x50] + mov r1, fp + strb sl, [sp, #0x20] + strb sb, [sp, #0x21] + strb r8, [sp, #0x22] + strb r7, [sp, #0x23] + strb r6, [sp, #0x24] + strb r5, [sp, #0x25] + bl MOD13_0222352C + str r0, [sp, #0x18] + mov r0, #0x20 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0223622C ; =0x02243164 + ldr r1, [sp, #0x10] + str r0, [r2] + strb r1, [r0, #0x1c] + ldr r1, [r2] + mvn r3, #1 + strb r3, [r1, #0x1b] + ldr r3, [r2] + ldr r2, [sp, #0x14] + ldr r0, _02236230 ; =0x04000050 + strb r2, [r3, #0x1e] + mov r1, #0x1f + mov r2, #0 + bl G2x_SetBlendBrightness_ + mov r0, #0 + ldr r3, _02236234 ; =0x0223F678 + ldr r1, [sp, #0x10] + mov r2, r0 + ldrb r1, [r3, r1] + bl MOD13_02239E0C + ldr r3, _0223622C ; =0x02243164 + mvn r1, #0 + ldr r4, [r3] + mov r2, #0x100 + str r0, [r4] + ldr r0, [r3] + mov r3, #0 + ldr r0, [r0] + bl MOD13_02239888 + ldr r0, _0223622C ; =0x02243164 + mvn r1, #0 + ldr r0, [r0] + mov r2, #0 + ldr r0, [r0] + bl MOD13_02239814 + ldr r2, _02236238 ; =0x0223F680 + ldr r0, [sp, #0x10] + mov sl, #0 + ldrb r0, [r2, r0] + cmp r0, #0 + ble _0223609C + ldr r0, [sp, #0x10] + ldr r1, _0223623C ; =0x0223F6B0 + ldr r4, _0223622C ; =0x02243164 + add r8, r2, r0 + add sb, r1, r0, lsl #1 + str sl, [sp, #0x1c] + mov r5, sl + mov fp, sl + mvn r7, #0 + mov r6, #0x100 +_02236038: + ldr r0, [sp, #0x1c] + ldrb r1, [sb] + mov r2, r0 + bl MOD13_02239E0C + ldr r2, [r4] + mov r1, r7 + add r2, r2, sl, lsl #2 + str r0, [r2, #8] + ldr r0, [r4] + mov r2, r6 + add r0, r0, sl, lsl #2 + ldr r0, [r0, #8] + mov r3, r5 + bl MOD13_02239888 + ldr r0, [r4] + mov r1, r7 + add r0, r0, sl, lsl #2 + ldr r0, [r0, #8] + mov r2, fp + bl MOD13_02239814 + ldrb r0, [r8] + add sl, sl, #1 + add sb, sb, #1 + cmp sl, r0 + blt _02236038 +_0223609C: + add r1, sp, #0x28 + str r1, [sp] + mov r0, #0 + mov r1, #0x20 + mov r2, #0xc + mov r3, #1 + str r0, [sp, #4] + bl MOD13_0223A9A4 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x10] + mov r0, #0 + ldr r1, [sp, #0x28] + mov r2, r0 + bl MOD13_02239B74 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #4] + bl MOD13_0221EF88 + ldr r1, [sp, #0x10] + mov r3, #2 + mov r5, r1, lsl #2 + ldr r1, _02236240 ; =0x0223F6D2 + ldr r2, _0223622C ; =0x02243164 + ldrh r4, [r1, r5] + mov r1, #0 + str r4, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x18] + ldr r3, _02236244 ; =0x0223F6D0 + str r0, [sp, #0xc] + ldr r0, [r2] + ldrh r3, [r3, r5] + ldr r0, [r0, #0x10] + mov r2, r1 + bl MOD13_0223A4F0 + ldr r0, _0223622C ; =0x02243164 + mov r2, #0 + ldr r3, [r0] + mov r1, #0x100 + str r2, [sp] + ldr r0, [r3, #0x10] + ldr r3, [r3, #4] + bl MOD13_0223A440 + mov r0, #0 + mov r1, r0 + mov r2, #0x1f + mov r3, r0 + bl MOD13_0223ABCC + ldr r3, _0223622C ; =0x02243164 + add r4, sp, #0x20 + ldr r3, [r3] + mov r0, #0 + ldrb r3, [r3, #0x1c] + mov r1, #1 + mov r2, #0x1f + ldrb r3, [r4, r3] + bl MOD13_0223ABCC + mov r0, #0 + mov r1, #3 + mov r2, #0x1f + mov r3, #1 + bl MOD13_0223ABCC + ldr r2, _02236248 ; =0x0223F690 + mov r0, #0 + mov r1, #1 + bl MOD13_0223AD38 + mov r0, #0xc0 + bl MOD13_022359B8 + mov r2, #0x4000000 + ldr r0, [sp, #0x14] + ldr r1, [r2] + cmp r0, #0 + bic r0, r1, #0xe000 + orr r0, r0, #0x6000 + str r0, [r2] + beq _022361FC + ldr r1, _0223624C ; =MOD13_02235E20 + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0223622C ; =0x02243164 + add sp, sp, #0x2c + ldr r1, [r1] + str r0, [r1, #0x14] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022361FC: + ldr r1, _02236250 ; =MOD13_02235D3C + mov r0, #1 + mov r2, #0 + mov r3, #0x78 + bl MOD13_0223C1C4 + ldr r1, _0223622C ; =0x02243164 + ldr r1, [r1] + str r0, [r1, #0x14] + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02236224: .word 0x0223F688 +_02236228: .word 0x0224307C +_0223622C: .word 0x02243164 +_02236230: .word 0x04000050 +_02236234: .word 0x0223F678 +_02236238: .word 0x0223F680 +_0223623C: .word 0x0223F6B0 +_02236240: .word 0x0223F6D2 +_02236244: .word 0x0223F6D0 +_02236248: .word 0x0223F690 +_0223624C: .word MOD13_02235E20 +_02236250: .word MOD13_02235D3C + + arm_func_start MOD13_02236254 +MOD13_02236254: ; 0x02236254 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02236310 ; =0x02243168 + mov r5, #1 + ldr lr, [r1] + ldrh r4, [lr, #2] + mov ip, r5 + add r1, lr, #0x24 + mov r6, #0x1e +_02236274: + mov r2, ip, lsl r5 + ands r2, r4, r2 + beq _022362F4 + sub r2, r5, #1 + mul r3, r2, r6 + ldrb r8, [r0] + ldrb r7, [r1, r3] + add r2, r1, r3 + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #1] + ldrb r7, [r2, #1] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #2] + ldrb r7, [r2, #2] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #3] + ldrb r7, [r2, #3] + cmp r8, r7 + bne _022362F4 + ldrb r8, [r0, #4] + ldrb r7, [r2, #4] + cmp r8, r7 + bne _022362F4 + ldrb r7, [r0, #5] + ldrb r2, [r2, #5] + cmp r7, r2 + addeq r0, lr, r3 + ldreqh r0, [r0, #0x2a] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_022362F4: + add r2, r5, #1 + mov r2, r2, lsl #0x10 + mov r5, r2, lsr #0x10 + cmp r5, #2 + blo _02236274 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02236310: .word 0x02243168 + + arm_func_start MOD13_02236314 +MOD13_02236314: ; 0x02236314 + ldr r1, _02236344 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mov r1, r2, lsl r0 + ldrh r2, [r3, #2] + ands r1, r2, r1 + subne r1, r0, #1 + addne r2, r3, #0xe + movne r0, #0x1e + mlane r0, r1, r0, r2 + moveq r0, #0 + bx lr + .align 2, 0 +_02236344: .word 0x02243168 + + arm_func_start MOD13_02236348 +MOD13_02236348: ; 0x02236348 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02236410 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mov r1, r2, lsl r4 + mov r1, r1, lsl #0x10 + ldrh r2, [r3, #2] + mov r4, r1, lsr #0x10 + mov r5, r0 + ands r1, r2, r4 + bne _02236390 + bl OS_RestoreInterrupts + add sp, sp, #0x14 + mov r0, #0 + ldmia sp!, {r4, r5, pc} +_02236390: + add r1, sp, #0 + mov r0, r3 + mov r2, #0xe + bl MI_CpuCopy8 + mov r0, r5 + bl OS_RestoreInterrupts + ldrh r0, [sp, #4] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #2 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #6] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #3 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #8] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #4 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #0xa] + ands r0, r0, r4 + addne sp, sp, #0x14 + movne r0, #5 + ldmneia sp!, {r4, r5, pc} + ldrh r0, [sp, #0xc] + ands r0, r0, r4 + movne r0, #6 + moveq r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236410: .word 0x02243168 + + arm_func_start MOD13_02236414 +MOD13_02236414: ; 0x02236414 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _02236468 ; =0x02243168 + ldr r1, _0223646C ; =0x0224316C + ldr r2, [r2] + add r5, r2, #2 + add r4, r2, #4 + add lr, r2, #6 + add ip, r2, #8 + add r3, r2, #0xa + add r2, r2, #0xc + str r5, [r1] + str r4, [r1, #4] + str lr, [r1, #8] + str ip, [r1, #0xc] + str r3, [r1, #0x10] + str r2, [r1, #0x14] + ldr r0, [r1, r0, lsl #2] + ldrh r0, [r0] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236468: .word 0x02243168 +_0223646C: .word 0x0224316C + + arm_func_start MOD13_02236470 +MOD13_02236470: ; 0x02236470 + ldr r0, _02236480 ; =0x02243168 + ldr r0, [r0] + ldrh r0, [r0] + bx lr + .align 2, 0 +_02236480: .word 0x02243168 + + arm_func_start MOD13_02236484 +MOD13_02236484: ; 0x02236484 + ldr r1, _02236494 ; =0x02243168 + ldr r1, [r1] + strh r0, [r1] + bx lr + .align 2, 0 +_02236494: .word 0x02243168 + + arm_func_start MOD13_02236498 +MOD13_02236498: ; 0x02236498 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r2 + cmp r1, #0xe + addls pc, pc, r1, lsl #2 + b _022367CC +_022364B0: ; jump table + b _022367CC ; case 0 + ldmia sp!, {r4, r5, r6, pc} ; case 1 + b _022364EC ; case 2 + b _02236574 ; case 3 + ldmia sp!, {r4, r5, r6, pc} ; case 4 + ldmia sp!, {r4, r5, r6, pc} ; case 5 + ldmia sp!, {r4, r5, r6, pc} ; case 6 + b _022366AC ; case 7 + ldmia sp!, {r4, r5, r6, pc} ; case 8 + b _022366DC ; case 9 + b _022365FC ; case 10 + ldmia sp!, {r4, r5, r6, pc} ; case 11 + b _02236724 ; case 12 + b _02236780 ; case 13 + b _02236668 ; case 14 +_022364EC: + bl MOD13_02236470 + cmp r0, #2 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, _022367D4 ; =0x02243168 + ldr r6, [r0] + bl OS_DisableInterrupts + ldrh r2, [r6, #2] + mov r1, #1 + orr r1, r2, r1, lsl r5 + strh r1, [r6, #2] + bl OS_RestoreInterrupts + ldr r1, _022367D4 ; =0x02243168 + sub r3, r5, #1 + mov r0, #0x1e + mul r0, r3, r0 + ldr r2, [r1] + add r3, r2, #0x24 + ldrb r2, [r4, #0xa] + add ip, r3, r0 + strb r2, [r3, r0] + ldrb r2, [r4, #0xb] + strb r2, [ip, #1] + ldrb r2, [r4, #0xc] + strb r2, [ip, #2] + ldrb r2, [r4, #0xd] + strb r2, [ip, #3] + ldrb r2, [r4, #0xe] + strb r2, [ip, #4] + ldrb r2, [r4, #0xf] + strb r2, [ip, #5] + ldr r1, [r1] + add r0, r1, r0 + strh r5, [r0, #0x2a] + ldmia sp!, {r4, r5, r6, pc} +_02236574: + bl MOD13_02236348 + cmp r0, #6 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #1 + mvn r0, r0, lsl r5 + mov r4, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _022367D4 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r4, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r4, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r4, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r4, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r4, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r4, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + ldmia sp!, {r4, r5, r6, pc} +_022365FC: + bl MOD13_02236470 + cmp r0, #2 + beq _02236614 + mov r0, r5 + bl MOD13_02236B38 + ldmia sp!, {r4, r5, r6, pc} +_02236614: + ldr r0, _022367D4 ; =0x02243168 + mov r1, #1 + ldr r3, [r0] + mov r0, r5 + ldrh r2, [r3, #4] + orr r1, r2, r1, lsl r5 + strh r1, [r3, #4] + bl MOD13_02236C1C + mov r0, r5 + bl MOD13_022132CC + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _022367D4 ; =0x02243168 + sub r2, r5, #1 + ldr r3, [r1] + mov r1, #0x1e + add r3, r3, #0xe + mla r1, r2, r1, r3 + mov r2, #0x16 + bl MI_CpuCopy8 + ldmia sp!, {r4, r5, r6, pc} +_02236668: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #4] + and r1, r2, r1 + strh r1, [r3, #4] + ldr r1, [r0] + ldrh r0, [r1, #6] + orr r0, r0, r4, lsl r5 + strh r0, [r1, #6] + bl MOD13_02236470 + cmp r0, #3 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl MOD13_02236A54 + ldmia sp!, {r4, r5, r6, pc} +_022366AC: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #8] + and r1, r2, r1 + strh r1, [r3, #8] + ldr r1, [r0] + ldrh r0, [r1, #0xa] + orr r0, r0, r4, lsl r5 + strh r0, [r1, #0xa] + ldmia sp!, {r4, r5, r6, pc} +_022366DC: + ldr r0, _022367D4 ; =0x02243168 + mov r4, #1 + ldr r3, [r0] + mvn r1, r4, lsl r5 + ldrh r2, [r3, #0xa] + and r1, r2, r1 + strh r1, [r3, #0xa] + ldr r2, [r0] + ldrh r1, [r2, #0xc] + orr r1, r1, r4, lsl r5 + strh r1, [r2, #0xc] + ldr r0, [r0] + ldrh r1, [r0, #2] + ldrh r0, [r0, #0xc] + cmp r1, r0 + ldmneia sp!, {r4, r5, r6, pc} + bl MOD13_02214F18 + ldmia sp!, {r4, r5, r6, pc} +_02236724: + bl MOD13_02236470 + cmp r0, #4 + bne _0223673C + mov r0, #5 + bl MOD13_02236484 + b _02236744 +_0223673C: + mov r0, #0 + bl MOD13_02236484 +_02236744: + ldr r0, _022367D4 ; =0x02243168 + ldr r0, [r0] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x144] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #0x144] + ldr r0, _022367D4 ; =0x02243168 + ldr r0, [r0] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x140] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #0x140] + ldmia sp!, {r4, r5, r6, pc} +_02236780: + ldrh r0, [r4] + cmp r0, #8 + bgt _022367B8 + cmp r0, #8 + ldmgeia sp!, {r4, r5, r6, pc} + cmp r0, #2 + ldmgtia sp!, {r4, r5, r6, pc} + cmp r0, #1 + ldmltia sp!, {r4, r5, r6, pc} + cmp r0, #1 + beq _022367C0 + cmp r0, #2 + beq _022367C0 + ldmia sp!, {r4, r5, r6, pc} +_022367B8: + cmp r0, #9 + ldmneia sp!, {r4, r5, r6, pc} +_022367C0: + mov r0, #7 + bl MOD13_02236484 + ldmia sp!, {r4, r5, r6, pc} +_022367CC: + bl OS_Terminate + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022367D4: .word 0x02243168 + + arm_func_start MOD13_022367D8 +MOD13_022367D8: ; 0x022367D8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #6 + bl MOD13_02236484 + bl MOD13_02214F18 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_022367F4 +MOD13_022367F4: ; 0x022367F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov r8, #0 + mov sb, #1 + ldr r4, _022368F8 ; =0x02243168 + mov r6, sb + mov r5, #3 +_02236810: + ldr r0, [r4] + mov r7, r6, lsl sb + ldrh r0, [r0, #0xa] + ands r0, r0, r7 + beq _022368BC + mov r0, sb + mov r1, r5 + bl MOD13_02213174 + cmp r0, #0 + orrne r0, r8, r7 + movne r0, r0, lsl #0x10 + movne r8, r0, lsr #0x10 + bne _022368BC + mvn r0, r7 + mov r7, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r2, [r4] + ldrh r1, [r2, #2] + and r1, r1, r7, lsr #16 + strh r1, [r2, #2] + ldr r2, [r4] + ldrh r1, [r2, #4] + and r1, r1, r7, lsr #16 + strh r1, [r2, #4] + ldr r2, [r4] + ldrh r1, [r2, #6] + and r1, r1, r7, lsr #16 + strh r1, [r2, #6] + ldr r2, [r4] + ldrh r1, [r2, #8] + and r1, r1, r7, lsr #16 + strh r1, [r2, #8] + ldr r2, [r4] + ldrh r1, [r2, #0xa] + and r1, r1, r7, lsr #16 + strh r1, [r2, #0xa] + ldr r2, [r4] + ldrh r1, [r2, #0xc] + and r1, r1, r7, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, sb + bl MOD13_02214D6C +_022368BC: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, lsr #0x10 + cmp sb, #0x10 + blo _02236810 + cmp r8, #0 + bne _022368E8 + mov r0, #7 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_022368E8: + mov r0, #4 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022368F8: .word 0x02243168 + + arm_func_start MOD13_022368FC +MOD13_022368FC: ; 0x022368FC + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _02236964 ; =0x02243168 + ldr r0, [r4] + ldrh r0, [r0, #2] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r6, #1 + mov r5, r6 +_02236920: + ldr r1, [r4] + mov r0, r5, lsl r6 + ldrh r1, [r1, #2] + ands r0, r1, r0 + beq _02236948 + mov r0, r6 + bl MOD13_02213270 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_02236948: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, #0x10 + blo _02236920 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02236964: .word 0x02243168 + + arm_func_start MOD13_02236968 +MOD13_02236968: ; 0x02236968 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02236484 + mov r5, #1 + ldr r7, _02236A50 ; =0x02243168 + mov r4, r5 +_02236984: + ldr r1, [r7] + mov r2, r4, lsl r5 + ldrh r0, [r1, #2] + ands r0, r0, r2 + beq _02236A34 + ldrh r0, [r1, #4] + ands r0, r0, r2 + bne _02236A34 + ldrh r0, [r1, #6] + ands r0, r0, r2 + bne _02236A2C + mvn r0, r2 + mov r6, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r2, [r7] + ldrh r1, [r2, #2] + and r1, r1, r6, lsr #16 + strh r1, [r2, #2] + ldr r2, [r7] + ldrh r1, [r2, #4] + and r1, r1, r6, lsr #16 + strh r1, [r2, #4] + ldr r2, [r7] + ldrh r1, [r2, #6] + and r1, r1, r6, lsr #16 + strh r1, [r2, #6] + ldr r2, [r7] + ldrh r1, [r2, #8] + and r1, r1, r6, lsr #16 + strh r1, [r2, #8] + ldr r2, [r7] + ldrh r1, [r2, #0xa] + and r1, r1, r6, lsr #16 + strh r1, [r2, #0xa] + ldr r2, [r7] + ldrh r1, [r2, #0xc] + and r1, r1, r6, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r5 + bl MOD13_02214D6C + b _02236A34 +_02236A2C: + mov r0, r5 + bl MOD13_02236A54 +_02236A34: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + cmp r5, #0x10 + blo _02236984 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02236A50: .word 0x02243168 + + arm_func_start MOD13_02236A54 +MOD13_02236A54: ; 0x02236A54 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #2 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + bne _02236AF8 + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236B34 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236AF8: + bl OS_DisableInterrupts + ldr r1, _02236B34 ; =0x02243168 + mov ip, #1 + ldr r5, [r1] + mvn r2, ip, lsl r4 + ldrh r3, [r5, #6] + and r2, r3, r2 + strh r2, [r5, #6] + ldr r2, [r1] + ldrh r1, [r2, #8] + orr r1, r1, ip, lsl r4 + strh r1, [r2, #8] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236B34: .word 0x02243168 + + arm_func_start MOD13_02236B38 +MOD13_02236B38: ; 0x02236B38 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #0 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + bne _02236BDC + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236C18 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236BDC: + bl OS_DisableInterrupts + ldr r1, _02236C18 ; =0x02243168 + mov r2, #1 + ldr r3, [r1] + mvn r4, r2, lsl r4 + ldrh r2, [r3, #4] + and r2, r2, r4 + strh r2, [r3, #4] + ldr r2, [r1] + ldrh r1, [r2, #2] + and r1, r1, r4 + strh r1, [r2, #2] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236C18: .word 0x02243168 + + arm_func_start MOD13_02236C1C +MOD13_02236C1C: ; 0x02236C1C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r1, #1 + mov r4, r0 + bl MOD13_02213174 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #1 + mvn r0, r0, lsl r4 + mov r5, r0, lsl #0x10 + bl OS_DisableInterrupts + ldr r1, _02236CC4 ; =0x02243168 + ldr r3, [r1] + ldrh r2, [r3, #2] + and r2, r2, r5, lsr #16 + strh r2, [r3, #2] + ldr r3, [r1] + ldrh r2, [r3, #4] + and r2, r2, r5, lsr #16 + strh r2, [r3, #4] + ldr r3, [r1] + ldrh r2, [r3, #6] + and r2, r2, r5, lsr #16 + strh r2, [r3, #6] + ldr r3, [r1] + ldrh r2, [r3, #8] + and r2, r2, r5, lsr #16 + strh r2, [r3, #8] + ldr r3, [r1] + ldrh r2, [r3, #0xa] + and r2, r2, r5, lsr #16 + strh r2, [r3, #0xa] + ldr r2, [r1] + ldrh r1, [r2, #0xc] + and r1, r1, r5, lsr #16 + strh r1, [r2, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + bl MOD13_02214D6C + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236CC4: .word 0x02243168 + + arm_func_start MOD13_02236CC8 +MOD13_02236CC8: ; 0x02236CC8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov r6, r0 + ldr r0, [r6] + mov r4, #0 + cmp r0, #0 + moveq r5, r4 + beq _02236D10 + add r0, sp, #0 + bl FS_InitFile + ldr r1, [r6] + add r0, sp, #0 + bl FS_OpenFile + cmp r0, #0 + addeq sp, sp, #0x48 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, sp, #0 +_02236D10: + mov r0, r5 + bl MOD13_0221411C + cmp r0, #0 + beq _02236D7C + ldr r1, _02236D98 ; =0x02243168 + ldr r0, [r1] + add r2, r0, #0x2c + add r0, r0, #0x1b000 + str r2, [r0, #0x144] + ldr r0, [r1] + add r0, r0, #0x1b000 + ldr r1, [r0, #0x144] + cmp r1, #0 + beq _02236D7C + mov r0, r5 + mov r2, #0x10000 + bl MOD13_02213CB0 + cmp r0, #0 + beq _02236D7C + ldr r1, _02236D98 ; =0x02243168 + mov r0, r6 + ldr r1, [r1] + add r1, r1, #0x1b000 + ldr r1, [r1, #0x144] + bl MOD13_02213944 + cmp r0, #0 + movne r4, #1 +_02236D7C: + add r0, sp, #0 + cmp r5, r0 + bne _02236D8C + bl FS_CloseFile +_02236D8C: + mov r0, r4 + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02236D98: .word 0x02243168 + + arm_func_start MOD13_02236D9C +MOD13_02236D9C: ; 0x02236D9C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, r1 + mov r0, #2 + bl MOD13_02236484 + mov r0, r4 + bl MOD13_02215028 + cmp r0, #0 + beq _02236DD4 + mov r0, #7 + bl MOD13_02236484 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02236DD4: + mov r0, r5 + bl MOD13_02236CC8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_02236DF4 +MOD13_02236DF4: ; 0x02236DF4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x7c + mov r5, r0 + add r0, sp, #0x28 + mov r4, r1 + bl OS_GetOwnerInfo + ldrb r2, [sp, #4] + ldrb r1, [sp, #0x29] + ldrh r3, [sp, #0x40] + bic r2, r2, #0xf + and r1, r1, #0xf + orr r2, r2, r1 + strb r2, [sp, #4] + add r0, sp, #0x2c + add r1, sp, #6 + mov r2, r3, lsl #1 + strb r3, [sp, #5] + bl MI_CpuCopy8 + ldrb r0, [sp, #4] + add ip, sp, #0x1a + mov r1, #0 + bic r0, r0, #0xf0 + strb r0, [sp, #4] + strh r1, [ip] + strh r1, [ip, #2] + strh r1, [ip, #4] + strh r1, [ip, #6] + strh r1, [ip, #8] + strh r1, [ip, #0xa] + ldr r0, _02236F04 ; =0x02243168 + strh r1, [ip, #0xc] + ldr lr, [r0] + mov r2, #3 + mov r3, lr +_02236E7C: + ldrh r1, [ip], #2 + ldrh r0, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + strh r0, [r3], #2 + bne _02236E7C + ldrh r2, [ip] + ldr r0, _02236F08 ; =0x00010040 + add r1, lr, #0x1b000 + strh r2, [r3] + add r0, lr, r0 + str r0, [r1, #0x140] + mov r1, #2 + str r1, [sp] + ldr r0, _02236F04 ; =0x02243168 + add r1, sp, #4 + ldr r0, [r0] + mov r2, r5 + add r0, r0, #0x1b000 + ldr r0, [r0, #0x140] + mov r3, r4 + bl MOD13_02215474 + cmp r0, #0 + beq _02236EE0 + bl OS_Terminate +_02236EE0: + mov r0, #0x100 + mov r1, #1 + bl MOD13_02215360 + ldr r0, _02236F0C ; =MOD13_02236498 + bl MOD13_02213368 + mov r0, #1 + bl MOD13_02236484 + add sp, sp, #0x7c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02236F04: .word 0x02243168 +_02236F08: .word 0x00010040 +_02236F0C: .word MOD13_02236498 + + arm_func_start MOD13_02236F10 +MOD13_02236F10: ; 0x02236F10 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _02236F54 ; =0x02243168 + ldr r1, _02236F58 ; =0x0001B160 + str r0, [r2] + add r0, r0, r1 + bl MOD13_0223831C + ldr r1, _02236F54 ; =0x02243168 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x1b000 + str r2, [r0, #0x140] + ldr r0, [r1] + add r0, r0, #0x1b000 + str r2, [r0, #0x144] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02236F54: .word 0x02243168 +_02236F58: .word 0x0001B160 + + arm_func_start MOD13_02236F5C +MOD13_02236F5C: ; 0x02236F5C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02236FB0 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #1 + beq _02236F7C + bl OS_Terminate +_02236F7C: + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02236FB4 ; =MOD13_0223794C + bl WM_End + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02236FB0: .word 0x02243188 +_02236FB4: .word MOD13_0223794C + + arm_func_start MOD13_02236FB8 +MOD13_02236FB8: ; 0x02236FB8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r2, [r0, #0x40] + cmp r2, #1 + bne _02236FFC + ldr r0, _022370FC ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02237100 ; =0x022407D0 + mov r0, #0x8000000 + blx r2 + add sp, sp, #4 + ldmia sp!, {pc} +_02236FFC: + ldr r0, _022370FC ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237018 + ldr r1, _02237104 ; =0x022407F4 + mov r0, #0x8000000 + blx r3 +_02237018: + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #6 + beq _02237050 + cmp r0, #5 + beq _02237050 + cmp r0, #4 + beq _02237050 + mov r0, #3 + bl MOD13_02238294 + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02237050: + mov r0, #3 + bl MOD13_02238294 + ldr r0, _022370F8 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x44] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022370F0 +_02237070: ; jump table + b _022370DC ; case 0 + b _022370A4 ; case 1 + b _022370C0 ; case 2 + b _02237088 ; case 3 + b _022370DC ; case 4 + b _022370A4 ; case 5 +_02237088: + bl MOD13_02237AE4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370A4: + bl MOD13_02237AA8 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370C0: + bl MOD13_02237C48 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_022370DC: + bl MOD13_02237C0C + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02237108 +_022370F0: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022370F8: .word 0x02243188 +_022370FC: .word 0x02243184 +_02237100: .word 0x022407D0 +_02237104: .word 0x022407F4 + + arm_func_start MOD13_02237108 +MOD13_02237108: ; 0x02237108 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022379B4 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237130 +MOD13_02237130: ; 0x02237130 + stmdb sp!, {r4, lr} + ldr r1, _022371CC ; =0x02243188 + ldr r2, _022371D0 ; =0x000013E0 + ldr r3, [r1] + mov r1, r0 + add r0, r3, r2 + add r2, r3, #0x1c00 + bl WM_StepDataSharing + mov r4, r0 + cmp r4, #7 + bne _02237180 + ldr r0, _022371D4 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237178 + ldr r1, _022371D8 ; =0x02240818 + mov r0, #0x8000000 + blx r2 +_02237178: + mov r0, #0 + ldmia sp!, {r4, pc} +_02237180: + cmp r4, #5 + bne _022371B4 + ldr r0, _022371D4 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _022371A4 + ldr r1, _022371DC ; =0x02240848 + mov r0, #0x8000000 + blx r2 +_022371A4: + mov r0, r4 + bl MOD13_02238274 + mov r0, #0 + ldmia sp!, {r4, pc} +_022371B4: + cmp r4, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + bl MOD13_02238274 + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022371CC: .word 0x02243188 +_022371D0: .word 0x000013E0 +_022371D4: .word 0x02243184 +_022371D8: .word 0x02240818 +_022371DC: .word 0x02240848 + + arm_func_start MOD13_022371E0 +MOD13_022371E0: ; 0x022371E0 + ldr r2, _02237200 ; =0x02243188 + ldr r1, _02237204 ; =0x000013E0 + ldr r3, [r2] + ldr ip, _02237208 ; =0x020DA048 + mov r2, r0 + add r0, r3, r1 + add r1, r3, #0x1c00 + bx ip + .align 2, 0 +_02237200: .word 0x02243188 +_02237204: .word 0x000013E0 +_02237208: .word 0x020DA048 + + arm_func_start MOD13_0223720C +MOD13_0223720C: ; 0x0223720C + ldr r1, _0223721C ; =0x02243188 + ldr r1, [r1] + str r0, [r1, #0x4c] + bx lr + .align 2, 0 +_0223721C: .word 0x02243188 + + arm_func_start MOD13_02237220 +MOD13_02237220: ; 0x02237220 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02237398 ; =0x02243188 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + ldr r0, [r0, #0x40] + mov r4, r2 + cmp r0, #1 + beq _02237248 + bl OS_Terminate +_02237248: + ldr r2, _02237398 ; =0x02243188 + mov r1, #0x180 + ldr r0, [r2] + mov r3, #0xe0 + add r0, r0, #0x1000 + str r1, [r0, #0x2a4] + ldr r0, [r2] + ldr r1, _0223739C ; =0x02243184 + add r0, r0, #0x1000 + str r3, [r0, #0x2a0] + ldr r3, [r1] + cmp r3, #0 + beq _02237294 + ldr r0, [r2] + ldr r1, _022373A0 ; =0x0224087C + add r0, r0, #0x1000 + ldr r2, [r0, #0x2a4] + mov r0, #0x8000000 + blx r3 +_02237294: + ldr r0, _0223739C ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _022372C0 + ldr r0, _02237398 ; =0x02243188 + ldr r1, _022373A4 ; =0x02240894 + ldr r2, [r0] + mov r0, #0x8000000 + add r2, r2, #0x1000 + ldr r2, [r2, #0x2a0] + blx r3 +_022372C0: + ldr r1, _02237398 ; =0x02243188 + mov r0, #3 + ldr r1, [r1] + str r6, [r1, #0x44] + bl MOD13_02238294 + ldr r0, _02237398 ; =0x02243188 + ldr r1, [r0] + strh r5, [r1, #0xc] + ldr r0, [r0] + strh r4, [r0, #0x32] + bl WM_GetDispersionBeaconPeriod + ldr r1, _02237398 ; =0x02243188 + mov r2, #0xd0 + ldr r3, [r1] + mov r4, #0x44 + strh r0, [r3, #0x18] + ldr r0, [r1] + mov r3, #2 + strh r2, [r0, #0x34] + ldr r0, [r1] + mov r2, #0 + strh r4, [r0, #0x36] + ldr r0, [r1] + mov r4, #1 + strh r3, [r0, #0x10] + ldr r0, [r1] + cmp r6, #2 + strh r2, [r0, #0x16] + ldr r0, [r1] + strh r2, [r0, #0x12] + ldr r0, [r1] + strh r4, [r0, #0xe] + ldr r0, _02237398 ; =0x02243188 + movne r4, r2 + ldr r0, [r0] + cmp r6, #0 + strh r4, [r0, #0x14] + beq _02237368 + cmp r6, #2 + beq _02237368 + cmp r6, #4 + bne _02237370 +_02237368: + bl MOD13_02238224 + ldmia sp!, {r4, r5, r6, pc} +_02237370: + ldr r0, _0223739C ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237390 + ldr r1, _022373A8 ; =0x022408AC + mov r2, r6 + mov r0, #0x8000000 + blx r3 +_02237390: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02237398: .word 0x02243188 +_0223739C: .word 0x02243184 +_022373A0: .word 0x0224087C +_022373A4: .word 0x02240894 +_022373A8: .word 0x022408AC + + arm_func_start MOD13_022373AC +MOD13_022373AC: ; 0x022373AC + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022373D4 + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022373D4: + ldr r0, _02237408 ; =MOD13_02237464 + bl WM_SetIndCallback + cmp r0, #0 + beq _022373F8 + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022373F8: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237408: .word MOD13_02237464 + + arm_func_start MOD13_0223740C +MOD13_0223740C: ; 0x0223740C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _0223745C ; =0x02243188 + ldr r1, _02237460 ; =MOD13_022373AC + ldr r0, [r0] + mov r2, #2 + add r0, r0, #0x80 + bl WM_Initialize + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0xa + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223745C: .word 0x02243188 +_02237460: .word MOD13_022373AC + + arm_func_start MOD13_02237464 +MOD13_02237464: ; 0x02237464 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #8 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + bl OS_Terminate + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237490 +MOD13_02237490: ; 0x02237490 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0223750C ; =0x02243188 + mov r0, #0 + ldr r1, [r2] + mov r3, #1 + add r1, r1, #0x1000 + str r0, [r1, #0x2a4] + ldr r1, [r2] + add r1, r1, #0x1000 + str r0, [r1, #0x2a0] + ldr r1, [r2] + str r0, [r1, #0x48] + ldr r1, [r2] + strh r0, [r1, #0x50] + ldr r1, [r2] + strh r3, [r1, #0x52] + ldr r1, [r2] + str r0, [r1, #0x54] + ldr r1, [r2] + str r0, [r1] + ldr r1, [r2] + strh r0, [r1, #4] + ldr r1, [r2] + str r0, [r1, #0x4c] + bl MOD13_0223740C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223750C: .word 0x02243188 + + arm_func_start MOD13_02237510 +MOD13_02237510: ; 0x02237510 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, #0 + mov r2, r4 + mov r5, r4 + mov r3, #1 +_02237528: + mov r1, r3, lsl r5 + ands r1, r0, r1 + beq _0223754C + add r1, r5, #1 + add r2, r2, #1 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r4, r1, asr #0x10 + mov r2, r2, lsr #0x10 +_0223754C: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 + cmp r5, #0x10 + blt _02237528 + cmp r2, #1 + addls sp, sp, #4 + movls r0, r4 + ldmlsia sp!, {r4, r5, pc} + ldr lr, _022375FC ; =0x02243188 + ldr r3, _02237600 ; =0x00010DCD + ldr r5, [lr] + ldr ip, _02237604 ; =0x00003039 + ldr r4, [r5, #0x58] + mov r1, #0 + mla r3, r4, r3, ip + str r3, [r5, #0x58] + ldr r3, [lr] + ldr r3, [r3, #0x58] + and r3, r3, #0xff + mul r3, r2, r3 + mov r2, r3, lsl #8 + mov r3, r2, lsr #0x10 +_022375A8: + ands r2, r0, #1 + beq _022375D4 + cmp r3, #0 + addeq r0, r1, #1 + moveq r0, r0, lsl #0x10 + addeq sp, sp, #4 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, r5, pc} + sub r2, r3, #1 + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 +_022375D4: + add r1, r1, #1 + mov r1, r1, lsl #0x10 + mov r0, r0, lsl #0xf + mov r1, r1, asr #0x10 + cmp r1, #0x10 + mov r0, r0, lsr #0x10 + blt _022375A8 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022375FC: .word 0x02243188 +_02237600: .word 0x00010DCD +_02237604: .word 0x00003039 + + arm_func_start MOD13_02237608 +MOD13_02237608: ; 0x02237608 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #7 + beq _02237628 + bl OS_Terminate +_02237628: + mov r0, #1 + bl MOD13_02238294 + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x60] + bl MOD13_02237510 + ldr r2, _02237684 ; =0x02243188 + ldr r1, _02237688 ; =0x02243184 + ldr r3, [r2] + strh r0, [r3, #0x5c] + ldr r3, [r1] + cmp r3, #0 + beq _02237670 + ldr r0, [r2] + ldr r1, _0223768C ; =0x022408C8 + ldrh r2, [r0, #0x5c] + mov r0, #0x8000000 + blx r3 +_02237670: + ldr r0, _02237684 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x5c] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237684: .word 0x02243188 +_02237688: .word 0x02243184 +_0223768C: .word 0x022408C8 + + arm_func_start MOD13_02237690 +MOD13_02237690: ; 0x02237690 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r3, r1 + mov ip, #0x1e + mov r1, #3 + mov r2, #0x11 + str ip, [sp] + bl WM_MeasureChannel + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022376DC + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + ldmia sp!, {r4, pc} +_022376DC: + ldr r0, _02237788 ; =0x02243184 + ldr ip, [r0] + cmp ip, #0 + beq _02237700 + ldrh r2, [r4, #8] + ldrh r3, [r4, #0xa] + ldr r1, _0223778C ; =0x022408E0 + mov r0, #0x8000000 + blx ip +_02237700: + ldr r0, _02237790 ; =0x02243188 + ldrh r2, [r4, #0xa] + ldr r3, [r0] + ldrh ip, [r4, #8] + ldrh r1, [r3, #0x5e] + cmp r1, r2 + bls _02237738 + strh r2, [r3, #0x5e] + sub r1, ip, #1 + mov r2, #1 + mov r1, r2, lsl r1 + ldr r0, [r0] + strh r1, [r0, #0x60] + b _02237750 +_02237738: + cmp r1, r2 + ldreqh r2, [r3, #0x60] + subeq r0, ip, #1 + moveq r1, #1 + orreq r0, r2, r1, lsl r0 + streqh r0, [r3, #0x60] +_02237750: + add r0, ip, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl MOD13_02237794 + cmp r0, #0x18 + bne _02237774 + mov r0, #7 + bl MOD13_02238294 + ldmia sp!, {r4, pc} +_02237774: + cmp r0, #2 + ldmeqia sp!, {r4, pc} + mov r0, #9 + bl MOD13_02238294 + ldmia sp!, {r4, pc} + .align 2, 0 +_02237788: .word 0x02243184 +_0223778C: .word 0x022408E0 +_02237790: .word 0x02243188 + + arm_func_start MOD13_02237794 +MOD13_02237794: ; 0x02237794 + stmdb sp!, {r4, lr} + mov r4, r0 + bl WM_GetAllowedChannel + cmp r0, #0x8000 + bne _022377C0 + mov r0, #3 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #3 + ldmia sp!, {r4, pc} +_022377C0: + cmp r0, #0 + bne _022377E0 + mov r0, #0x16 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0x18 + ldmia sp!, {r4, pc} +_022377E0: + sub r1, r4, #1 + mov r2, #1 + mov r1, r2, lsl r1 + ands r1, r1, r0 + bne _0223781C +_022377F4: + add r1, r4, #1 + mov r1, r1, lsl #0x10 + mov r4, r1, lsr #0x10 + cmp r4, #0x10 + movhi r0, #0x18 + ldmhiia sp!, {r4, pc} + sub r1, r4, #1 + mov r1, r2, lsl r1 + ands r1, r1, r0 + beq _022377F4 +_0223781C: + ldr r0, _02237834 ; =0x022376B8 + mov r1, r4 + bl MOD13_02237690 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02237834: .word 0x022376B8 + + arm_func_start MOD13_02237838 +MOD13_02237838: ; 0x02237838 + stmdb sp!, {lr} + sub sp, sp, #0xc + add r0, sp, #0 + bl OS_GetMacAddress + ldr r1, _02237900 ; =0x027FFC3C + ldrh r0, [sp] + ldr r3, [r1] + ldrh r1, [sp, #2] + add r0, r0, r3 + ldr r2, _02237904 ; =0x02243188 + add r1, r1, r0 + ldrh r3, [sp, #4] + ldr r0, [r2] + mov ip, #0 + add r1, r3, r1 + str r1, [r0, #0x58] + ldr lr, [r2] + ldr r0, _02237908 ; =0x00010DCD + ldr r3, [lr, #0x58] + ldr r1, _0223790C ; =0x00003039 + mla r0, r3, r0, r1 + str r0, [lr, #0x58] + ldr r0, [r2] + mov r3, #0x65 + strh ip, [r0, #0x5c] + ldr r1, [r2] + mov r0, #3 + strh r3, [r1, #0x5e] + bl MOD13_02238294 + mov r0, #1 + bl MOD13_02237794 + cmp r0, #0x18 + bne _022378D8 + mov r0, #0x18 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #0xc + mov r0, #0 + ldmia sp!, {pc} +_022378D8: + cmp r0, #2 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02237900: .word 0x027FFC3C +_02237904: .word 0x02243188 +_02237908: .word 0x00010DCD +_0223790C: .word 0x00003039 + + arm_func_start MOD13_02237910 +MOD13_02237910: ; 0x02237910 + ldr r0, _02237920 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + bx lr + .align 2, 0 +_02237920: .word 0x02243188 + + arm_func_start MOD13_02237924 +MOD13_02237924: ; 0x02237924 + ldr r0, _02237934 ; =0x02243188 + ldr r0, [r0] + ldrh r0, [r0, #0x52] + bx lr + .align 2, 0 +_02237934: .word 0x02243188 + + arm_func_start MOD13_02237938 +MOD13_02237938: ; 0x02237938 + ldr r1, _02237948 ; =0x02243188 + ldr r1, [r1] + str r0, [r1, #8] + bx lr + .align 2, 0 +_02237948: .word 0x02243188 + + arm_func_start MOD13_0223794C +MOD13_0223794C: ; 0x0223794C + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237970 + mov r0, #0xa + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237970: + mov r0, #0 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + stmdb sp!, {r4, lr} + mov r4, r0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _022379A8 + mov r0, #9 + bl MOD13_02238294 + ldrh r0, [r4, #2] + bl MOD13_02238274 + ldmia sp!, {r4, pc} +_022379A8: + mov r0, #1 + bl MOD13_02238294 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_022379B4 +MOD13_022379B4: ; 0x022379B4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _022379EC ; =0x02237980 + bl WM_Reset + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022379EC: .word 0x02237980 + + arm_func_start MOD13_022379F0 +MOD13_022379F0: ; 0x022379F0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237A10 + bl MOD13_02238274 + add sp, sp, #4 + ldmia sp!, {pc} +_02237A10: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237A20 +MOD13_02237A20: ; 0x02237A20 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237A60 ; =MOD13_022379F0 + mov r1, #0 + bl WM_Disconnect + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + bl MOD13_02237108 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237A60: .word MOD13_022379F0 + + arm_func_start MOD13_02237A64 +MOD13_02237A64: ; 0x02237A64 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237A88 + bl MOD13_02238274 + bl MOD13_02236FB8 + add sp, sp, #4 + ldmia sp!, {pc} +_02237A88: + bl MOD13_02237A20 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237AA8 +MOD13_02237AA8: ; 0x02237AA8 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237AE0 ; =MOD13_02237A64 + bl WM_EndMP + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237AE0: .word MOD13_02237A64 + + arm_func_start MOD13_02237AE4 +MOD13_02237AE4: ; 0x02237AE4 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237B40 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + cmp r0, #6 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237B40 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_EndKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237B40: .word 0x02243188 + + arm_func_start MOD13_02237B44 +MOD13_02237B44: ; 0x02237B44 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237B64 + bl MOD13_02238274 + add sp, sp, #4 + ldmia sp!, {pc} +_02237B64: + mov r0, #1 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02237B74 +MOD13_02237B74: ; 0x02237B74 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237BA4 ; =MOD13_02237B44 + bl WM_EndParent + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237BA4: .word MOD13_02237B44 + + arm_func_start MOD13_02237BA8 +MOD13_02237BA8: ; 0x02237BA8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02237BCC + bl MOD13_02238274 + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02237BCC: + bl MOD13_02237B74 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02237C04 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237BF8 + ldr r1, _02237C08 ; =0x02240918 + mov r0, #0x8000000 + blx r2 +_02237BF8: + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C04: .word 0x02243184 +_02237C08: .word 0x02240918 + + arm_func_start MOD13_02237C0C +MOD13_02237C0C: ; 0x02237C0C + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02237C44 ; =MOD13_02237BA8 + bl WM_EndMP + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C44: .word MOD13_02237BA8 + + arm_func_start MOD13_02237C48 +MOD13_02237C48: ; 0x02237C48 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02237C80 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_EndKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237C80: .word 0x02243188 + + arm_func_start MOD13_02237C84 +MOD13_02237C84: ; 0x02237C84 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #6 + bl MOD13_02238294 + ldr r0, _02237CC8 ; =0x02243188 + mov r1, #0xd + ldr r0, [r0] + add r0, r0, #0x1e00 + bl WM_StartKeySharing + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237CC8: .word 0x02243188 + + arm_func_start MOD13_02237CCC +MOD13_02237CCC: ; 0x02237CCC + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r1, [r0, #2] + cmp r1, #0 + beq _02237CF8 + mov r0, r1 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237CF8: + ldrh r2, [r0, #4] + sub r0, r2, #0xa + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02237DEC +_02237D0C: ; jump table + b _02237D1C ; case 0 + b _02237E0C ; case 1 + b _02237DEC ; case 2 + b _02237DEC ; case 3 +_02237D1C: + ldr r0, _02237E14 ; =0x02243188 + ldr r1, [r0] + ldr r0, [r1, #0x44] + cmp r0, #2 + bne _02237D88 + ldr r0, [r1, #0x40] + cmp r0, #4 + bne _02237D78 + bl MOD13_02237C84 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, _02237E18 ; =0x02243184 + ldr r2, [r0] + cmp r2, #0 + beq _02237D68 + ldr r1, _02237E1C ; =0x02240940 + mov r0, #0x8000000 + blx r2 +_02237D68: + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237D78: + cmp r0, #6 + bne _02237DDC + add sp, sp, #4 + ldmia sp!, {pc} +_02237D88: + cmp r0, #4 + bne _02237DDC + ldr r0, _02237E20 ; =0x000013E0 + mov ip, #1 + add r0, r1, r0 + mov r1, #0xd + mov r2, #7 + mov r3, #0x44 + str ip, [sp] + bl WM_StartDataSharing + cmp r0, #0 + beq _02237DCC + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DCC: + mov r0, #5 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DDC: + mov r0, #4 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02237DEC: + ldr r0, _02237E18 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r1, _02237E24 ; =0x022408F8 + mov r0, #0x8000000 + blx r3 +_02237E0C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02237E14: .word 0x02243188 +_02237E18: .word 0x02243184 +_02237E1C: .word 0x02240940 +_02237E20: .word 0x000013E0 +_02237E24: .word 0x022408F8 + + arm_func_start MOD13_02237E28 +MOD13_02237E28: ; 0x02237E28 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _02237EBC ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + sub r0, r0, #4 + cmp r0, #2 + addls sp, sp, #0xc + movls r0, #1 + ldmlsia sp!, {pc} + mov r0, #4 + bl MOD13_02238294 + ldr r0, _02237EBC ; =0x02243188 + mov ip, #1 + ldr lr, [r0] + ldr r2, _02237EC0 ; =0x00001060 + add r3, lr, #0x1000 + ldr r1, [r3, #0x2a0] + ldr r0, _02237EC4 ; =MOD13_02237CCC + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + str r1, [sp] + str ip, [sp, #4] + ldr r3, [r3, #0x2a4] + add r1, lr, r2 + mov r2, r3, lsl #0x10 + mov r2, r2, lsr #0x10 + add r3, lr, #0xf80 + bl WM_StartMP + cmp r0, #2 + addeq sp, sp, #0xc + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02237EBC: .word 0x02243188 +_02237EC0: .word 0x00001060 +_02237EC4: .word MOD13_02237CCC + + arm_func_start MOD13_02237EC8 +MOD13_02237EC8: ; 0x02237EC8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrh r2, [r5, #0x10] + mov r1, #1 + ldrh r0, [r5, #2] + mov r1, r1, lsl r2 + mov r1, r1, lsl #0x10 + cmp r0, #0 + mov r4, r1, lsr #0x10 + beq _02237F08 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02237F08: + ldrh ip, [r5, #8] + cmp ip, #7 + bgt _02237F44 + cmp ip, #7 + bge _02237F50 + cmp ip, #2 + bgt _02238034 + cmp ip, #0 + blt _02238034 + cmp ip, #0 + beq _02238014 + cmp ip, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + b _02238034 +_02237F44: + cmp ip, #9 + beq _02237FD8 + b _02238034 +_02237F50: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237F6C + ldr r1, _02238064 ; =0x02240970 + mov r0, #0x8000000 + blx r3 +_02237F6C: + ldr r0, _02238068 ; =0x02243188 + ldr r0, [r0] + ldr r1, [r0, #0x4c] + cmp r1, #0 + beq _02237FBC + mov r0, r5 + blx r1 + cmp r0, #0 + bne _02237FBC + ldrh r1, [r5, #0x10] + mov r0, #0 + bl WM_Disconnect + cmp r0, #2 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02237FBC: + ldr r0, _02238068 ; =0x02243188 + add sp, sp, #4 + ldr r1, [r0] + ldrh r0, [r1, #0x52] + orr r0, r0, r4 + strh r0, [r1, #0x52] + ldmia sp!, {r4, r5, pc} +_02237FD8: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + beq _02237FF4 + ldr r1, _0223806C ; =0x0224099C + mov r0, #0x8000000 + blx r3 +_02237FF4: + ldr r0, _02238068 ; =0x02243188 + mvn r1, r4 + ldr r2, [r0] + add sp, sp, #4 + ldrh r0, [r2, #0x52] + and r0, r0, r1 + strh r0, [r2, #0x52] + ldmia sp!, {r4, r5, pc} +_02238014: + bl MOD13_02237E28 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} +_02238034: + ldr r0, _02238060 ; =0x02243184 + ldr r3, [r0] + cmp r3, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _02238070 ; =0x022408F8 + mov r2, ip + mov r0, #0x8000000 + blx r3 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02238060: .word 0x02243184 +_02238064: .word 0x02240970 +_02238068: .word 0x02243188 +_0223806C: .word 0x0224099C +_02238070: .word 0x022408F8 + + arm_func_start MOD13_02238074 +MOD13_02238074: ; 0x02238074 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _022380E0 ; =0x02243188 + ldr r0, [r0] + ldr r0, [r0, #0x40] + sub r0, r0, #4 + cmp r0, #2 + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {pc} + ldr r0, _022380E4 ; =MOD13_02237EC8 + bl WM_StartParent + cmp r0, #2 + beq _022380BC + bl MOD13_02238274 + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_022380BC: + ldr r1, _022380E0 ; =0x02243188 + mov r3, #0 + ldr r2, [r1] + mov r0, #1 + strh r3, [r2, #0x50] + ldr r1, [r1] + strh r0, [r1, #0x52] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022380E0: .word 0x02243188 +_022380E4: .word MOD13_02237EC8 + + arm_func_start MOD13_022380E8 +MOD13_022380E8: ; 0x022380E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02238110 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02238110: + bl MOD13_02238074 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02238130 +MOD13_02238130: ; 0x02238130 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r0, _02238198 ; =0x02243188 + ldr r1, [r0] + add r0, r1, #0x1000 + ldr r2, [r0, #0x3ac] + add r0, r1, #0x13c0 + blx r2 + ldr r2, _02238198 ; =0x02243188 + mov r1, r0 + ldr r2, [r2] + ldr r0, _0223819C ; =MOD13_022380E8 + add r2, r2, #0x13c0 + bl WM_SetWEPKeyEx2 + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238198: .word 0x02243188 +_0223819C: .word MOD13_022380E8 + + arm_func_start MOD13_022381A0 +MOD13_022381A0: ; 0x022381A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrh r0, [r0, #2] + cmp r0, #0 + beq _022381C8 + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_022381C8: + ldr r0, _02238220 ; =0x02243188 + ldr r0, [r0] + add r0, r0, #0x1000 + ldr r0, [r0, #0x3ac] + cmp r0, #0 + beq _02238200 + bl MOD13_02238130 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} +_02238200: + bl MOD13_02238074 + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #9 + bl MOD13_02238294 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238220: .word 0x02243188 + + arm_func_start MOD13_02238224 +MOD13_02238224: ; 0x02238224 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #3 + bl MOD13_02238294 + ldr r1, _0223826C ; =0x02243188 + ldr r0, _02238270 ; =MOD13_022381A0 + ldr r1, [r1] + bl WM_SetParentParameter + cmp r0, #2 + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + bl MOD13_02238274 + mov r0, #9 + bl MOD13_02238294 + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223826C: .word 0x02243188 +_02238270: .word MOD13_022381A0 + + arm_func_start MOD13_02238274 +MOD13_02238274: ; 0x02238274 + ldr r1, _02238290 ; =0x02243188 + ldr r2, [r1] + ldr r1, [r2, #0x40] + sub r1, r1, #9 + cmp r1, #1 + strhi r0, [r2, #0x54] + bx lr + .align 2, 0 +_02238290: .word 0x02243188 + + arm_func_start MOD13_02238294 +MOD13_02238294: ; 0x02238294 + stmdb sp!, {r4, lr} + ldr r1, _02238308 ; =0x02243184 + mov r4, r0 + ldr ip, [r1] + cmp ip, #0 + beq _022382CC + ldr r0, _0223830C ; =0x02243188 + ldr r2, _02238310 ; =0x022407A8 + ldr r0, [r0] + ldr r1, _02238314 ; =0x022409C8 + ldr r3, [r0, #0x40] + mov r0, #0x8000000 + ldr r2, [r2, r3, lsl #2] + blx ip +_022382CC: + ldr r1, _0223830C ; =0x02243188 + ldr r0, _02238308 ; =0x02243184 + ldr r2, [r1] + str r4, [r2, #0x40] + ldr r3, [r0] + cmp r3, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r1] + ldr r0, _02238310 ; =0x022407A8 + ldr r2, [r1, #0x40] + ldr r1, _02238318 ; =0x022409D0 + ldr r2, [r0, r2, lsl #2] + mov r0, #0x8000000 + blx r3 + ldmia sp!, {r4, pc} + .align 2, 0 +_02238308: .word 0x02243184 +_0223830C: .word 0x02243188 +_02238310: .word 0x022407A8 +_02238314: .word 0x022409C8 +_02238318: .word 0x022409D0 + + arm_func_start MOD13_0223831C +MOD13_0223831C: ; 0x0223831C + ldr r1, _02238354 ; =0x02243188 + mov r2, #0 + str r0, [r1] + str r2, [r0, #0x40] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3a8] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3ac] + ldr r0, [r1] + add r0, r0, #0x1000 + str r2, [r0, #0x3b0] + bx lr + .align 2, 0 +_02238354: .word 0x02243188 + + arm_func_start MOD13_02238358 +MOD13_02238358: ; 0x02238358 + ldr r0, _0223836C ; =0x0224318C + ldr r0, [r0] + add r0, r0, #0x100 + ldrh r0, [r0, #0x44] + bx lr + .align 2, 0 +_0223836C: .word 0x0224318C + + arm_func_start MOD13_02238370 +MOD13_02238370: ; 0x02238370 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov ip, #0 + ldr r4, _0223845C ; =0x0224318C + mov r5, ip + mov r2, ip + mov r0, #1 + mov r1, #0xbc + mov lr, #0x44 +_02238394: + ldr r3, [r4] + add r6, r3, ip, lsl #2 + ldr r6, [r6, #0x208] + cmp r6, #0 + beq _02238448 + add r6, r3, #0x100 + mla r7, ip, lr, r6 + cmp ip, #1 + bne _02238448 + ldrb r6, [r3, #0xa93] + cmp r6, #1 + bne _02238418 + ldrh r6, [r7] + cmp r6, #0x10 + addne sp, sp, #4 + ldmneia sp!, {r4, r5, r6, r7, pc} + ldr r6, [r3, #0xa94] + add r6, r6, #1 + str r6, [r3, #0xa94] + ldr r6, [r4] + ldr r3, [r6, #0xa94] + ands r3, r3, #1 + bne _02238448 + add r3, r6, #0x200 + ldrh r6, [r3] + add r6, r6, #1 + strh r6, [r3] + ldr r3, [r4] + add r3, r3, #0x200 + ldrh r6, [r3] + cmp r6, #0x24 + strhsh r2, [r3] + b _02238448 +_02238418: + add r3, r3, #0x200 + strh r1, [r3, #2] + ldrh r3, [r7] + cmp r3, #0xbd + bne _02238448 + ldr r3, [r4] + strb r0, [r3, #0xa93] + ldr r3, [r4] + add r3, r3, #0x200 + strh r5, [r3] + ldr r3, [r4] + str r5, [r3, #0xa94] +_02238448: + add ip, ip, #1 + cmp ip, #0x10 + blt _02238394 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223845C: .word 0x0224318C + + arm_func_start MOD13_02238460 +MOD13_02238460: ; 0x02238460 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r3, _022385B8 ; =0x0224318C + ldr r5, [r3] + ldrb r4, [r5, #0xa93] + cmp r4, #1 + bne _022384A8 + ldr r4, [r5, #0xab0] + strh r0, [r4] + ldr r4, [r3] + mov r0, r2 + ldr r4, [r4, #0xab0] + mov r2, #0x40 + strh r1, [r4, #2] + ldr r1, [r3] + ldr r1, [r1, #0xab0] + add r1, r1, #4 + bl MI_CpuCopy8 + b _022384D4 +_022384A8: + ldr r0, [r5, #0x204] + mov r1, #0xbc + add r0, r0, #1 + str r0, [r5, #0x204] + ldr r0, [r3] + ldr r0, [r0, #0xab0] + strh r1, [r0] + ldr r0, [r3] + ldrb r1, [r0, #0xa92] + ldr r0, [r0, #0xab0] + strb r1, [r0, #4] +_022384D4: + bl MOD13_02237910 + cmp r0, #5 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022385B8 ; =0x0224318C + ldr r0, [r0] + bl MOD13_02237130 + cmp r0, #0 + bne _0223850C + ldr r0, _022385B8 ; =0x0224318C + ldr r1, [r0] + ldr r0, [r1, #0x204] + add r0, r0, #4 + str r0, [r1, #0x204] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0223850C: + ldr r0, _022385B8 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa93] + cmp r0, #0 + ldreq r0, [r1, #0x204] + addeq r0, r0, #1 + streq r0, [r1, #0x204] + beq _02238550 + mov r0, #0 + str r0, [r1, #0x204] + bl MOD13_02237924 + cmp r0, #3 + ldrne r0, _022385B8 ; =0x0224318C + movne r1, #0x1b + ldrne r0, [r0] + strneb r1, [r0, #0xa90] + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02238550: + mov r7, #0 + ldr r8, _022385B8 ; =0x0224318C + mov r4, r7 + mov r6, #0x44 + mov r5, #1 +_02238564: + mov r0, r7 + bl MOD13_022371E0 + cmp r0, #0 + ldreq r0, [r8] + addeq r0, r0, r7, lsl #2 + streq r4, [r0, #0x208] + beq _022385A0 + ldr r1, [r8] + mov r2, r6 + add r1, r1, #0x100 + mla r1, r7, r6, r1 + bl MI_CpuCopy8 + ldr r0, [r8] + add r0, r0, r7, lsl #2 + str r5, [r0, #0x208] +_022385A0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + cmp r7, #2 + blo _02238564 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022385B8: .word 0x0224318C + + arm_func_start MOD13_022385BC +MOD13_022385BC: ; 0x022385BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02238604 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + add r0, r0, #0x100 + bl MI_CpuFill8 + ldr r0, _02238604 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + mov r2, #0x100 + bl MI_CpuFill8 + ldr r0, _02238604 ; =0x0224318C + ldr r0, [r0] + str r0, [r0, #0xab0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238604: .word 0x0224318C + + arm_func_start MOD13_02238608 +MOD13_02238608: ; 0x02238608 + stmdb sp!, {r4, lr} + add r0, r0, #0xa + bl MOD13_02236254 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl MOD13_02236314 + ldr r1, _02238640 ; =0x0224318C + sub r2, r4, #1 + ldr r1, [r1] + add r1, r1, r2, lsl #2 + str r0, [r1, #0xaa0] + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02238640: .word 0x0224318C + + arm_func_start MOD13_02238644 +MOD13_02238644: ; 0x02238644 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r1, _0223867C ; =0x0224318C + mov r0, #1 + ldr r1, [r1] + strb r0, [r1, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223867C: .word 0x0224318C + + arm_func_start MOD13_02238680 +MOD13_02238680: ; 0x02238680 + ldr r0, _02238694 ; =0x0224318C + mov r1, #0xc + ldr r0, [r0] + strb r1, [r0, #0xa90] + bx lr + .align 2, 0 +_02238694: .word 0x0224318C + + arm_func_start MOD13_02238698 +MOD13_02238698: ; 0x02238698 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02238878 +_022386B0: ; jump table + b _02238878 ; case 0 + b _022386CC ; case 1 + b _02238878 ; case 2 + b _02238878 ; case 3 + b _022386FC ; case 4 + b _022386FC ; case 5 + b _022386FC ; case 6 +_022386CC: + ldr r1, _02238880 ; =0x0224318C + mov r0, #4 + ldr r1, [r1] + add r1, r1, #0x600 + ldrh r3, [r1, #0x48] + ldrh r2, [r1, #0x4a] + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl MOD13_02237220 + add sp, sp, #4 + ldmia sp!, {pc} +_022386FC: + ldr r1, _02238880 ; =0x0224318C + mov r0, #0 + ldr r2, [r1] + add r1, r2, #0x200 + ldrh r1, [r1] + ldr ip, [r2, #0xaa4] + mov r3, r1, lsr #0x1f + rsb r2, r3, r1, lsl #28 + add r2, r3, r2, ror #28 + add r2, ip, r2, lsl #6 + bl MOD13_02238460 + bl MOD13_02238370 + ldr r0, _02238880 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + cmp r0, #0x1b + addeq sp, sp, #4 + ldmeqia sp!, {pc} + ldr r0, [r1, #0x204] + cmp r0, #0x1e0 + movhi r0, #0x1b + strhib r0, [r1, #0xa90] + addhi sp, sp, #4 + ldmhiia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x10 + beq _02238774 + bl MOD13_02238358 + cmp r0, #0x20 + bne _02238790 +_02238774: + bl MOD13_02238358 + ldr r0, _02238880 ; =0x0224318C + mov r1, #0xa + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238790: + bl MOD13_02238358 + cmp r0, #0x40 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0xb + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0xff + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x1b + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x50 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x15 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x60 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x18 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0x70 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #0x1b + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0 + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #8 + ldreq r0, [r0] + addeq sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmeqia sp!, {pc} + bl MOD13_02238358 + cmp r0, #0xbd + ldreq r0, _02238880 ; =0x0224318C + moveq r1, #9 + ldreq r0, [r0] + streqb r1, [r0, #0xa90] + ldrne r0, _02238880 ; =0x0224318C + movne r1, #0x1f + ldrne r0, [r0] + strneb r1, [r0, #0xa90] +_02238878: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238880: .word 0x0224318C + + arm_func_start MOD13_02238884 +MOD13_02238884: ; 0x02238884 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_022385BC + ldr r0, _022388B0 ; =MOD13_02238608 + bl MOD13_0223720C + ldr r0, _022388B4 ; =0x0224318C + mov r1, #8 + ldr r0, [r0] + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_022388B0: .word MOD13_02238608 +_022388B4: .word 0x0224318C + + arm_func_start MOD13_022388B8 +MOD13_022388B8: ; 0x022388B8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02236470 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02238A94 +_022388D0: ; jump table + b _02238A3C ; case 0 + b _022388F0 ; case 1 + b _02238914 ; case 2 + b _022389AC ; case 3 + b _02238A94 ; case 4 + b _02238A08 ; case 5 + b _02238A94 ; case 6 + b _02238A20 ; case 7 +_022388F0: + ldr r1, _02238A9C ; =0x0224318C + ldr r0, _02238AA0 ; =0x00000AB4 + ldr r2, [r1] + add r1, r2, #0x600 + ldrh r1, [r1, #0x4a] + add r0, r2, r0 + bl MOD13_02236D9C + add sp, sp, #4 + ldmia sp!, {pc} +_02238914: + mov r0, #2 + bl MOD13_02236414 + cmp r0, #0 + ldrne r0, _02238A9C ; =0x0224318C + movne r1, #5 + ldrne r0, [r0] + addne sp, sp, #4 + strneb r1, [r0, #0xa90] + ldmneia sp!, {pc} + mov r0, #3 + bl MOD13_02236414 + cmp r0, #0 + bne _02238958 + mov r0, #4 + bl MOD13_02236414 + cmp r0, #0 + beq _02238970 +_02238958: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #6 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238970: + ldr r0, _02238A9C ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + cmp r0, #5 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #2 + bl MOD13_02236414 + cmp r0, #0 + ldreq r0, _02238A9C ; =0x0224318C + moveq r1, #0xd + ldreq r0, [r0] + add sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmia sp!, {pc} +_022389AC: + bl MOD13_022368FC + cmp r0, #0 + beq _022389C4 + bl MOD13_022367F4 + add sp, sp, #4 + ldmia sp!, {pc} +_022389C4: + ldr r0, _02238A9C ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + add r0, r0, #0xfa + and r0, r0, #0xff + cmp r0, #1 + addhi sp, sp, #4 + ldmhiia sp!, {pc} + mov r0, #3 + bl MOD13_02236414 + cmp r0, #0 + ldreq r0, _02238A9C ; =0x0224318C + moveq r1, #0x12 + ldreq r0, [r0] + add sp, sp, #4 + streqb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A08: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #7 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A20: + bl MOD13_022367D8 + ldr r0, _02238A9C ; =0x0224318C + mov r1, #1 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A3C: + bl MOD13_02237910 + cmp r0, #0 + beq _02238A6C + cmp r0, #1 + beq _02238A60 + cmp r0, #3 + addeq sp, sp, #4 + ldmeqia sp!, {pc} + b _02238A84 +_02238A60: + bl MOD13_02236F5C + add sp, sp, #4 + ldmia sp!, {pc} +_02238A6C: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #0x1f + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238A84: + ldr r0, _02238A9C ; =0x0224318C + mov r1, #0x1f + ldr r0, [r0] + strb r1, [r0, #0xa90] +_02238A94: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238A9C: .word 0x0224318C +_02238AA0: .word 0x00000AB4 + + arm_func_start MOD13_02238AA4 +MOD13_02238AA4: ; 0x02238AA4 + ldr r0, _02238AC0 ; =0x0224318C + ldr ip, _02238AC4 ; =MOD13_02236DF4 + ldr r2, [r0] + add r0, r2, #0x600 + ldrh r1, [r0, #0x48] + ldr r0, [r2, #0xac8] + bx ip + .align 2, 0 +_02238AC0: .word 0x0224318C +_02238AC4: .word MOD13_02236DF4 + + arm_func_start MOD13_02238AC8 +MOD13_02238AC8: ; 0x02238AC8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_02237910 + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _02238B78 +_02238AE0: ; jump table + b _02238B48 ; case 0 + b _02238B08 ; case 1 + b _02238B78 ; case 2 + b _02238B7C ; case 3 + b _02238B78 ; case 4 + b _02238B78 ; case 5 + b _02238B78 ; case 6 + b _02238B14 ; case 7 + b _02238B78 ; case 8 + b _02238B6C ; case 9 +_02238B08: + bl MOD13_02237838 + add sp, sp, #4 + ldmia sp!, {pc} +_02238B14: + bl MOD13_02237608 + ldr r2, _02238B84 ; =0x0224318C + mov ip, #0 + ldr r1, [r2] + mov r3, #3 + add r1, r1, #0x600 + strh r0, [r1, #0x4a] + ldr r0, [r2] + add sp, sp, #4 + str ip, [r0, #0xa98] + ldr r0, [r2] + strb r3, [r0, #0xa90] + ldmia sp!, {pc} +_02238B48: + ldr r0, _02238B84 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #3 + str r3, [r2, #0xa98] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238B6C: + bl MOD13_02237108 + add sp, sp, #4 + ldmia sp!, {pc} +_02238B78: + bl OS_Terminate +_02238B7C: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238B84: .word 0x0224318C + + arm_func_start MOD13_02238B88 +MOD13_02238B88: ; 0x02238B88 + ldr ip, _02238B94 ; =MOD13_022132CC + mov r0, #1 + bx ip + .align 2, 0 +_02238B94: .word MOD13_022132CC + + arm_func_start MOD13_02238B98 +MOD13_02238B98: ; 0x02238B98 + ldr r2, _02238BDC ; =0x0224318C + ldr r3, [r2] + ldrb r3, [r3, #0xa90] + strb r3, [r0] + ldr r0, [r2] + ldrb r2, [r0, #0xa90] + ldrb r0, [r0, #0xa91] + cmp r2, r0 + movne r0, #1 + strneb r0, [r1] + moveq r0, #0 + streqb r0, [r1] + ldr r0, _02238BDC ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + strb r0, [r1, #0xa91] + bx lr + .align 2, 0 +_02238BDC: .word 0x0224318C + + arm_func_start MOD13_02238BE0 +MOD13_02238BE0: ; 0x02238BE0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _02238FF0 ; =0x0224318C + ldr r0, [r1] + ldrb r2, [r0, #0xa90] + cmp r2, #0x22 + addls pc, pc, r2, lsl #2 + b _02238FE8 +_02238C00: ; jump table + b _02238FE8 ; case 0 + b _02238C8C ; case 1 + b _02238CD4 ; case 2 + b _02238CE0 ; case 3 + b _02238CFC ; case 4 + b _02238D14 ; case 5 + b _02238D14 ; case 6 + b _02238D20 ; case 7 + b _02238D2C ; case 8 + b _02238D2C ; case 9 + b _02238D2C ; case 10 + b _02238D38 ; case 11 + b _02238FE8 ; case 12 + b _02238FE8 ; case 13 + b _02238FE8 ; case 14 + b _02238FE8 ; case 15 + b _02238D44 ; case 16 + b _02238D60 ; case 17 + b _02238D84 ; case 18 + b _02238DAC ; case 19 + b _02238FE8 ; case 20 + b _02238DF0 ; case 21 + b _02238E18 ; case 22 + b _02238FE8 ; case 23 + b _02238E5C ; case 24 + b _02238E84 ; case 25 + b _02238FE8 ; case 26 + b _02238EC8 ; case 27 + b _02238EF0 ; case 28 + b _02238FE8 ; case 29 + b _02238FE4 ; case 30 + b _02238FE8 ; case 31 + b _02238F78 ; case 32 + b _02238FA0 ; case 33 + b _02238FE8 ; case 34 +_02238C8C: + ldrb r2, [r0, #0xaac] + cmp r2, #1 + bne _02238CAC + mov r1, #0 + strb r1, [r0, #0xaac] + bl MOD13_0223903C + add sp, sp, #4 + ldmia sp!, {pc} +_02238CAC: + cmp r2, #2 + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r2, #0 + strb r2, [r0, #0xaac] + ldr r0, [r1] + mov r1, #0x22 + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} +_02238CD4: + bl MOD13_02238AC8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238CE0: + bl MOD13_02238AA4 + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #4 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238CFC: + ldr r1, [r0, #0xa98] + add r1, r1, #1 + str r1, [r0, #0xa98] + bl MOD13_022388B8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D14: + bl MOD13_022388B8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D20: + bl MOD13_02238884 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D2C: + bl MOD13_02238698 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D38: + bl MOD13_02238680 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D44: + mov r2, #0 + str r2, [r0, #0xa9c] + ldr r0, [r1] + mov r1, #0x11 + strb r1, [r0, #0xa90] + add sp, sp, #4 + ldmia sp!, {pc} +_02238D60: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02238644 + add sp, sp, #4 + ldmia sp!, {pc} +_02238D84: + bl MOD13_02214F18 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238DAC: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x14 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238DF0: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E18: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x17 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E5C: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x19 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238E84: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x1a + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238EC8: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x1c + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238EF0: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + bne _02238F30 + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x1d + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238F30: + ldr r1, _02238FF0 ; =0x0224318C + ldr r0, _02238FF4 ; =0x88888889 + ldr r1, [r1] + ldr r2, _02238FF8 ; =0x0000001E + ldr r3, [r1, #0xa9c] + umull r0, r1, r3, r0 + mov r1, r1, lsr #4 + umull r0, r1, r2, r1 + sub r1, r3, r0 + cmp r1, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + cmp r3, #0x37 + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02236FB8 + add sp, sp, #4 + ldmia sp!, {pc} +_02238F78: + bl MOD13_02236FB8 + ldr r0, _02238FF0 ; =0x0224318C + mov r3, #0 + ldr r2, [r0] + mov r1, #0x21 + str r3, [r2, #0xa9c] + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238FA0: + ldr r2, [r0, #0xa9c] + add r1, r2, #1 + cmp r2, #0x1e + str r1, [r0, #0xa9c] + addls sp, sp, #4 + ldmlsia sp!, {pc} + bl MOD13_02237910 + cmp r0, #1 + addne sp, sp, #4 + ldmneia sp!, {pc} + bl MOD13_02236F5C + ldr r0, _02238FF0 ; =0x0224318C + mov r1, #0x22 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xa90] + ldmia sp!, {pc} +_02238FE4: + bl MOD13_02236FB8 +_02238FE8: + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02238FF0: .word 0x0224318C +_02238FF4: .word 0x88888889 +_02238FF8: .word 0x0000001E + + arm_func_start MOD13_02238FFC +MOD13_02238FFC: ; 0x02238FFC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239038 ; =0x0224318C + ldr r1, [r0] + ldrb r0, [r1, #0xa90] + cmp r0, #5 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {pc} + mov r0, #6 + strb r0, [r1, #0xa90] + bl MOD13_02236968 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239038: .word 0x0224318C + + arm_func_start MOD13_0223903C +MOD13_0223903C: ; 0x0223903C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239098 ; =0x0224318C + ldr r0, [r0] + ldrb r0, [r0, #0xa90] + cmp r0, #1 + beq _02239068 + cmp r0, #0x1a + beq _02239068 + cmp r0, #0x1d + bne _0223908C +_02239068: + bl MOD13_0223909C + bl MOD13_02237490 + ldr r0, _02239098 ; =0x0224318C + mov r2, #2 + ldr r1, [r0] + add sp, sp, #4 + strb r2, [r1, #0xa90] + mov r0, #1 + ldmia sp!, {pc} +_0223908C: + mov r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239098: .word 0x0224318C + + arm_func_start MOD13_0223909C +MOD13_0223909C: ; 0x0223909C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239120 ; =0x0224318C + ldr r0, [r0] + ldr r0, [r0, #0xac8] + bl MOD13_02237938 + ldr r0, _02239120 ; =0x0224318C + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xa90] + bl WM_GetNextTgid + ldr r3, _02239120 ; =0x0224318C + mov r2, #0x40 + ldr r1, [r3] + add r1, r1, #0x600 + strh r0, [r1, #0x48] + ldr r1, [r3] + ldr r0, [r1, #0xaa4] + add r1, r1, #0xa50 + bl MI_CpuCopy8 + ldr r0, _02239120 ; =0x0224318C + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0xa93] + ldr r1, [r0] + str r2, [r1, #0x204] + ldr r0, [r0] + add r0, r0, #0x600 + ldrh r1, [r0, #0x48] + add r1, r1, #1 + strh r1, [r0, #0x48] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239120: .word 0x0224318C + + arm_func_start MOD13_02239124 +MOD13_02239124: ; 0x02239124 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239238 ; =0x0224318C + ldr r2, [r0] + ldrb r1, [r2, #0xa90] + cmp r1, #1 + beq _02239160 + cmp r1, #0x14 + beq _02239160 + cmp r1, #0x17 + beq _02239160 + cmp r1, #0x1a + beq _02239160 + cmp r1, #0x1d + bne _02239184 +_02239160: + mov r1, #0x22 + strb r1, [r2, #0xa90] + ldr r0, _02239238 ; =0x0224318C + mov r1, #0 + ldr r0, [r0] + add sp, sp, #4 + strb r1, [r0, #0xaac] + mov r0, #1 + ldmia sp!, {pc} +_02239184: + cmp r1, #4 + beq _022391A4 + cmp r1, #5 + beq _022391A4 + cmp r1, #6 + beq _022391A4 + cmp r1, #0xd + bne _022391EC +_022391A4: + cmp r1, #4 + bne _022391C0 + ldr r0, [r2, #0xa98] + cmp r0, #6 + addlo sp, sp, #4 + movlo r0, #0 + ldmloia sp!, {pc} +_022391C0: + bl MOD13_02214F18 + ldr r0, _02239238 ; =0x0224318C + mov r3, #0x10 + ldr r1, [r0] + mov r2, #2 + strb r3, [r1, #0xa90] + ldr r1, [r0] + add sp, sp, #4 + strb r2, [r1, #0xaac] + mov r0, #1 + ldmia sp!, {pc} +_022391EC: + add r0, r1, #0xf7 + and r0, r0, #0xff + cmp r0, #1 + movls r0, #0x20 + strlsb r0, [r2, #0xa90] + addls sp, sp, #4 + movls r0, #1 + ldmlsia sp!, {pc} + cmp r1, #0xc + moveq r0, #0x22 + streqb r0, [r2, #0xa90] + addeq sp, sp, #4 + moveq r0, #1 + ldmeqia sp!, {pc} + cmp r1, #2 + moveq r0, #0 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239238: .word 0x0224318C + + arm_func_start MOD13_0223923C +MOD13_0223923C: ; 0x0223923C + stmdb sp!, {r4, lr} + ldr r2, _02239328 ; =0x0224318C + mov r4, r1 + str r0, [r2] + add r0, r0, #0xb00 + bl MOD13_02236F10 + ldr r1, _02239328 ; =0x0224318C + mov r3, #0 + ldr r0, [r1] + mov r2, #1 + add r0, r0, #0x600 + strh r3, [r0, #0x48] + ldr r0, [r1] + add r0, r0, #0x600 + strh r3, [r0, #0x4a] + ldr r0, [r1] + strb r2, [r0, #0xa90] + ldr r0, [r1] + strb r2, [r0, #0xa91] + ldr r0, [r1] + str r3, [r0, #0xa9c] + bl MOD13_022385BC + ldr r0, _02239328 ; =0x0224318C + ldr r3, [r4] + ldr r2, [r0] + mov r1, #2 + str r3, [r2, #0xab4] + ldr r3, [r4, #4] + ldr r2, [r0] + str r3, [r2, #0xab8] + ldr r3, [r4, #8] + ldr r2, [r0] + str r3, [r2, #0xabc] + ldr r3, [r4, #0xc] + ldr r2, [r0] + str r3, [r2, #0xac0] + ldr r3, [r4, #0x10] + ldr r2, [r0] + str r3, [r2, #0xac4] + ldr r3, [r4, #0x14] + ldr r2, [r0] + str r3, [r2, #0xac8] + ldrb r3, [r4, #0x18] + ldr r2, [r0] + strb r3, [r2, #0xa92] + ldr r0, [r0] + strb r1, [r0, #0xacc] + bl OS_GetTick + ldr r1, _02239328 ; =0x0224318C + ldr r0, _0223932C ; =0x0000064C + ldr r1, [r1] + add r0, r1, r0 + bl FUN_02095D68 + bl OS_GetTick + bl MOD13_022338FC + ldr r1, _02239328 ; =0x0224318C + ldr r1, [r1] + str r0, [r1, #0xaa4] + ldmia sp!, {r4, pc} + .align 2, 0 +_02239328: .word 0x0224318C +_0223932C: .word 0x0000064C + + arm_func_start MOD13_02239330 +MOD13_02239330: ; 0x02239330 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r6, r1 + mov r7, r0 + mov r5, r2 + bl strlen + mov r4, r0 + mov r0, r6 + bl strlen + cmp r4, r5 + blt _02239364 + cmp r0, r5 + bge _02239370 +_02239364: + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, pc} +_02239370: + sub r1, r0, r5 + sub r3, r4, r5 + mov r2, r5 + add r0, r7, r3 + add r1, r6, r1 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start MOD13_0223939C +MOD13_0223939C: ; 0x0223939C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + ldr r0, _022393D4 ; =0x02243190 + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0x84] + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022393D4: .word 0x02243190 + + arm_func_start MOD13_022393D8 +MOD13_022393D8: ; 0x022393D8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x4c + ldr r3, _022394C4 ; =0x02243190 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + ldr r0, [r0, #0x84] + mov r4, r2 + bl MOD13_02239F78 + add r0, sp, #4 + bl FS_InitFile + add r0, sp, #4 + mov r1, r6 + bl FS_OpenFile + cmp r0, #0 + bne _0223941C + bl OS_Terminate +_0223941C: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x28] + mov r2, #2 + sub r7, r1, r0 + cmp r5, #0 + ldr r1, _022394C8 ; =0x022409D4 + mov r0, r6 + strne r7, [r5] + bl MOD13_02239330 + cmp r0, #0 + mvnne r6, #3 + moveq r6, r4 + mov r0, r7 + mov r1, r6 + bl MOD13_0223B004 + mov r1, r0 + add r0, sp, #4 + mov r2, r7 + str r1, [sp] + bl FS_ReadFile + add r0, sp, #4 + bl FS_CloseFile + cmp r6, #0 + ldrgt r0, [sp] + addgt sp, sp, #0x4c + ldmgtia sp!, {r4, r5, r6, r7, pc} + ldr r0, [sp] + cmp r5, #0 + ldr r0, [r0] + mov r1, r4 + mov r0, r0, lsr #8 + strne r0, [r5] + bl MOD13_0223B004 + mov r4, r0 + ldr r0, [sp] + mov r1, r4 + bl MI_UncompressLZ8 + add r0, sp, #0 + bl MOD13_0223AF90 + mov r0, r4 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022394C4: .word 0x02243190 +_022394C8: .word 0x022409D4 + + arm_func_start MOD13_022394CC +MOD13_022394CC: ; 0x022394CC + mov r0, #1 + bx lr + + arm_func_start MOD13_022394D4 +MOD13_022394D4: ; 0x022394D4 + ldr ip, _022394E0 ; =0x020D0B40 + mov r1, #0 + bx ip + .align 2, 0 +_022394E0: .word 0x020D0B40 + + arm_func_start MOD13_022394E4 +MOD13_022394E4: ; 0x022394E4 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr ip, _02239524 ; =MOD13_022394D4 + str ip, [sp] + str r0, [sp, #4] + mov ip, #1 + str ip, [sp, #8] + ldr r0, [r0, #0x28] + mov ip, r1 + add r1, r2, r0 + mov r2, ip + mvn r0, #0 + bl CARDi_ReadRom + mov r0, #6 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02239524: .word MOD13_022394D4 + + arm_func_start MOD13_02239528 +MOD13_02239528: ; 0x02239528 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #1 + beq _02239584 + cmp r1, #9 + beq _0223954C + cmp r1, #0xa + beq _02239568 + b _02239590 +_0223954C: + ldr r0, _0223959C ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl CARD_LockRom + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02239568: + ldr r0, _0223959C ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl CARD_UnlockRom + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {pc} +_02239584: + add sp, sp, #4 + mov r0, #4 + ldmia sp!, {pc} +_02239590: + mov r0, #8 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223959C: .word 0x02243190 + + arm_func_start MOD13_022395A0 +MOD13_022395A0: ; 0x022395A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _02239624 ; =0x022409D8 + bl FS_ChangeDir + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FS_UnloadArchiveTables + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FUN_020D0EB0 + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FUN_020D0FF0 + ldr r0, _02239628 ; =0x02243190 + ldr r0, [r0] + ldrh r0, [r0, #0xe4] + bl OS_ReleaseLockID + ldr r0, _02239628 ; =0x02243190 + mov r2, #0 + ldr r1, [r0] + strh r2, [r1, #0xe4] + ldr r0, [r0] + bl MOD13_0223AF90 + ldr r0, _02239628 ; =0x02243190 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239624: .word 0x022409D8 +_02239628: .word 0x02243190 + + arm_func_start MOD13_0223962C +MOD13_0223962C: ; 0x0223962C + stmdb sp!, {r4, lr} + sub sp, sp, #0xe8 + mov r0, #0xe8 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _022397BC ; =0x02243190 + str r0, [r1] + add r0, sp, #0x20 + bl FS_InitFile + ldr r1, _022397C0 ; =0x022409E0 + add r0, sp, #0x20 + bl FS_OpenFile + cmp r0, #0 + bne _02239668 + bl OS_Terminate +_02239668: + bl OS_GetLockID + ldr r2, _022397BC ; =0x02243190 + add r1, sp, #0x10 + ldr r3, [r2] + mov r2, #8 + strh r0, [r3, #0xe4] + add r0, sp, #0x20 + ldr r4, [sp, #0x44] + bl FS_ReadFile + add r0, sp, #0x20 + add r1, sp, #0x18 + mov r2, #8 + bl FS_ReadFile + add r0, sp, #0x20 + bl FS_CloseFile + ldr r0, _022397BC ; =0x02243190 + ldr r0, [r0] + add r0, r0, #0x88 + bl FS_InitArchive + ldr r0, _022397BC ; =0x02243190 + ldr r1, _022397C4 ; =0x0223F740 + ldr r0, [r0] + mov r2, #3 + add r0, r0, #0x88 + bl FS_RegisterArchiveName + cmp r0, #0 + bne _022396D8 + bl OS_Terminate +_022396D8: + ldr r0, _022397BC ; =0x02243190 + ldr r1, _022397C8 ; =MOD13_02239528 + ldr r0, [r0] + ldr r2, _022397CC ; =0x00000602 + add r0, r0, #0x88 + bl FS_SetArchiveProc + ldr r0, [sp, #0x10] + ldr r1, _022397D0 ; =MOD13_022394E4 + str r0, [sp] + ldr r2, [sp, #0x14] + ldr r0, _022397D4 ; =MOD13_022394CC + str r2, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, _022397BC ; =0x02243190 + ldr r2, [sp, #0x18] + ldr r0, [r0] + ldr r3, [sp, #0x1c] + mov r1, r4 + add r0, r0, #0x88 + bl FS_LoadArchive + cmp r0, #0 + bne _02239738 + bl OS_Terminate +_02239738: + ldr r0, _022397BC ; =0x02243190 + mov r1, #0 + ldr r0, [r0] + mov r2, r1 + add r0, r0, #0x88 + bl FUN_020D0D84 + mov r1, #4 + mov r4, r0 + bl MOD13_0223B004 + ldr r1, _022397BC ; =0x02243190 + mov r2, r4 + ldr r3, [r1] + str r0, [r3] + ldr r0, [r1] + ldr r1, [r0], #0x88 + bl FUN_020D0D84 + ldr r1, _022397BC ; =0x02243190 + mov r0, #0x20 + ldr r1, [r1] + mov r2, #4 + add r1, r1, #4 + bl MOD13_0223A054 + ldr r2, _022397BC ; =0x02243190 + ldr r1, _022397D8 ; =0x022409F8 + ldr r3, [r2] + ldr r2, _022397C4 ; =0x0223F740 + str r0, [r3, #0x84] + add r0, sp, #0x68 + bl OS_SPrintf + add r0, sp, #0x68 + bl FS_ChangeDir + add sp, sp, #0xe8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022397BC: .word 0x02243190 +_022397C0: .word 0x022409E0 +_022397C4: .word 0x0223F740 +_022397C8: .word MOD13_02239528 +_022397CC: .word 0x00000602 +_022397D0: .word MOD13_022394E4 +_022397D4: .word MOD13_022394CC +_022397D8: .word 0x022409F8 + + arm_func_start MOD13_022397DC +MOD13_022397DC: ; 0x022397DC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr lr, [r0, #8] + ldr r0, _02239810 ; =0x01FF0000 + ldr ip, [lr, r1, lsl #3] + and r0, ip, r0 + mov r0, r0, lsr #0x10 + str r0, [r2] + ldr r0, [lr, r1, lsl #3] + and r0, r0, #0xff + str r0, [r3] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_02239810: .word 0x01FF0000 + + arm_func_start MOD13_02239814 +MOD13_02239814: ; 0x02239814 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r1, #0 + ldr lr, [r0, #8] + blt _02239844 + add r1, lr, r1, lsl #3 + ldrh r0, [r1, #4] + add sp, sp, #4 + bic r0, r0, #0xc00 + orr r0, r0, r2, lsl #10 + strh r0, [r1, #4] + ldmia sp!, {pc} +_02239844: + ldrb r1, [r0, #0xc] + mov ip, #0 + cmp r1, #0 + addle sp, sp, #4 + ldmleia sp!, {pc} + mov r3, r2, lsl #0xa +_0223985C: + add r2, lr, ip, lsl #3 + ldrh r1, [r2, #4] + add ip, ip, #1 + bic r1, r1, #0xc00 + orr r1, r1, r3 + strh r1, [r2, #4] + ldrb r1, [r0, #0xc] + cmp ip, r1 + blt _0223985C + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_02239888 +MOD13_02239888: ; 0x02239888 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + cmp r1, #0 + ldr ip, [r0, #8] + blt _022398C8 + ldr r5, [ip, r1, lsl #3] + ldr r4, _02239988 ; =0xFE00FF00 + ldr r0, _0223998C ; =0x000001FF + and r4, r5, r4 + and r3, r3, #0xff + and r2, r2, r0 + orr r0, r4, r3 + orr r0, r0, r2, lsl #16 + str r0, [ip, r1, lsl #3] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022398C8: + ldr r1, [ip] + ldr lr, _02239990 ; =0x01FF0000 + ldr r4, _0223998C ; =0x000001FF + and r1, r1, lr + mov r1, r1, lsr #0x10 + str r1, [sp] + ldr r1, [ip] + ldr r5, _02239988 ; =0xFE00FF00 + and r1, r1, #0xff + str r1, [sp, #4] + ldr r6, [ip] + and r1, r3, #0xff + and r6, r6, r5 + and r7, r2, r4 + orr r1, r6, r1 + orr r1, r1, r7, lsl #16 + str r1, [ip] + ldrb r1, [r0, #0xc] + ldr r7, [sp] + ldr r6, [sp, #4] + cmp r1, #1 + sub r1, r3, r6 + addle sp, sp, #0x10 + sub r2, r2, r7 + mov r3, #1 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} +_02239930: + ldr r6, [ip, r3, lsl #3] + and r7, r6, lr + mov r6, r7, lsr #0x10 + str r6, [sp, #8] + ldr r6, [ip, r3, lsl #3] + add r8, r2, r7, lsr #16 + and r6, r6, #0xff + str r6, [sp, #0xc] + ldr r7, [ip, r3, lsl #3] + add r6, r6, r1 + and r7, r7, r5 + and r6, r6, #0xff + and r8, r8, r4 + orr r6, r7, r6 + orr r6, r6, r8, lsl #16 + str r6, [ip, r3, lsl #3] + ldrb r6, [r0, #0xc] + add r3, r3, #1 + cmp r3, r6 + blt _02239930 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02239988: .word 0xFE00FF00 +_0223998C: .word 0x000001FF +_02239990: .word 0x01FF0000 + + arm_func_start MOD13_02239994 +MOD13_02239994: ; 0x02239994 + stmdb sp!, {r4, lr} + cmp r1, #0 + ldr ip, [r0, #8] + blt _022399CC + ldr r0, [ip, r1, lsl #3] + add lr, ip, r1, lsl #3 + bic r0, r0, #0xc00 + orr r0, r0, r2, lsl #10 + str r0, [ip, r1, lsl #3] + ldrh r0, [lr, #4] + bic r0, r0, #0xf000 + orr r0, r0, r3, lsl #12 + strh r0, [lr, #4] + ldmia sp!, {r4, pc} +_022399CC: + ldrb lr, [r0, #0xc] + mov r1, #0 + cmp lr, #0 + ldmleia sp!, {r4, pc} + mov r4, r2, lsl #0xa + mov lr, r3, lsl #0xc +_022399E4: + ldr r2, [ip, r1, lsl #3] + add r3, ip, r1, lsl #3 + bic r2, r2, #0xc00 + orr r2, r2, r4 + str r2, [ip, r1, lsl #3] + ldrh r2, [r3, #4] + add r1, r1, #1 + bic r2, r2, #0xf000 + orr r2, r2, lr + strh r2, [r3, #4] + ldrb r2, [r0, #0xc] + cmp r1, r2 + blt _022399E4 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_02239A1C +MOD13_02239A1C: ; 0x02239A1C + stmdb sp!, {r4, lr} + cmp r1, #0 + ldr ip, [r0, #8] + blt _02239A70 + cmp r2, #0x100 + beq _02239A54 + cmp r2, #0x300 + beq _02239A54 + ldr r3, [ip, r1, lsl #3] + ldr r0, _02239AD0 ; =0xC1FFFCFF + and r0, r3, r0 + orr r0, r0, r2 + str r0, [ip, r1, lsl #3] + ldmia sp!, {r4, pc} +_02239A54: + ldr lr, [ip, r1, lsl #3] + ldr r0, _02239AD0 ; =0xC1FFFCFF + and r0, lr, r0 + orr r0, r0, r2 + orr r0, r0, r3, lsl #25 + str r0, [ip, r1, lsl #3] + ldmia sp!, {r4, pc} +_02239A70: + ldrb lr, [r0, #0xc] + mov r1, #0 + cmp lr, #0 + ldmleia sp!, {r4, pc} + mov r4, r3, lsl #0x19 + ldr r3, _02239AD0 ; =0xC1FFFCFF +_02239A88: + cmp r2, #0x100 + beq _02239AA8 + cmp r2, #0x300 + ldrne lr, [ip, r1, lsl #3] + andne lr, lr, r3 + orrne lr, lr, r2 + strne lr, [ip, r1, lsl #3] + bne _02239ABC +_02239AA8: + ldr lr, [ip, r1, lsl #3] + and lr, lr, r3 + orr lr, lr, r2 + orr lr, r4, lr + str lr, [ip, r1, lsl #3] +_02239ABC: + ldrb lr, [r0, #0xc] + add r1, r1, #1 + cmp r1, lr + blt _02239A88 + ldmia sp!, {r4, pc} + .align 2, 0 +_02239AD0: .word 0xC1FFFCFF + + arm_func_start MOD13_02239AD4 +MOD13_02239AD4: ; 0x02239AD4 + ldrb r0, [r0, #0xc] + bx lr + + arm_func_start MOD13_02239ADC +MOD13_02239ADC: ; 0x02239ADC + ldr r0, [r0, #8] + add r0, r0, r1, lsl #3 + bx lr + + arm_func_start MOD13_02239AE8 +MOD13_02239AE8: ; 0x02239AE8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + ldrb r0, [r5, #0xc] + mov r4, #0 + mov r2, r4 + cmp r0, #0 + ldr r3, [r5, #8] + ble _02239B34 + ldr r0, _02239B6C ; =0xC1FFFCFF +_02239B10: + ldr r1, [r3] + add r2, r2, #1 + and r1, r1, r0 + orr r1, r1, #0x200 + str r1, [r3] + ldrb r1, [r5, #0xc] + add r3, r3, #8 + cmp r2, r1 + blt _02239B10 +_02239B34: + mov r0, r5 + bl MOD13_0223B8C4 + ldr r0, _02239B70 ; =0x02243194 + ldr r1, [r0] + add r0, r1, #0x228 + cmp r5, r0 + movhs r4, #1 + mov r0, #0x228 + mla r0, r4, r0, r1 + ldr r0, [r0, #0x224] + mov r1, r5 + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02239B6C: .word 0xC1FFFCFF +_02239B70: .word 0x02243194 + + arm_func_start MOD13_02239B74 +MOD13_02239B74: ; 0x02239B74 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + mov sb, r0 + mov r0, #0x228 + mul r7, sb, r0 + ldr r0, _02239CE4 ; =0x02243194 + mov r5, r1 + ldr r0, [r0] + mov r6, r2 + add r0, r0, r7 + ldr r0, [r0, #0x224] + bl MOD13_02239F78 + mov r4, r0 + mov r0, #1 + bl OS_DisableIrqMask + mov r8, r0 + cmp r6, #0 + beq _02239C44 + ldr r1, _02239CE4 ; =0x02243194 + mov r0, #0x228 + ldr r2, [r1] + mla r0, sb, r0, r2 + add r6, r0, #0x200 + add r0, r0, #0x210 + cmp r6, r0 + beq _02239C24 + mov r1, r5, lsl #3 + add r0, r2, r7 + add r2, r0, #0x210 +_02239BE8: + ldrb sb, [r6, #0xc] + ldr r0, [r6, #4] + ldr ip, [r6, #8] + ldr r3, [r0, #8] + add ip, ip, sb, lsl #3 + add sb, ip, r1 + cmp sb, r3 + bhi _02239C18 + mov r1, r4 + str ip, [r4, #8] + bl MOD13_0223B888 + b _02239C24 +_02239C18: + mov r6, r0 + cmp r0, r2 + bne _02239BE8 +_02239C24: + ldr r0, _02239CE4 ; =0x02243194 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x210 + cmp r6, r0 + bne _02239CCC + bl OS_Terminate + b _02239CCC +_02239C44: + ldr r1, _02239CE4 ; =0x02243194 + mov r0, #0x228 + ldr r1, [r1] + mla r0, sb, r0, r1 + add r6, r0, #0x210 + add r0, r0, #0x200 + cmp r6, r0 + beq _02239CB0 + mov r0, r5, lsl #3 + add r1, r1, r7 + add r1, r1, #0x200 +_02239C70: + ldr ip, [r6] + ldr sb, [r6, #8] + ldrb r2, [ip, #0xc] + ldr r3, [ip, #8] + sub sb, sb, r0 + add r2, r3, r2, lsl #3 + cmp sb, r2 + blo _02239CA4 + mov r0, r6 + mov r1, r4 + str sb, [r4, #8] + bl MOD13_0223B888 + b _02239CB0 +_02239CA4: + mov r6, ip + cmp ip, r1 + bne _02239C70 +_02239CB0: + ldr r0, _02239CE4 ; =0x02243194 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x200 + cmp r6, r0 + bne _02239CCC + bl OS_Terminate +_02239CCC: + mov r0, r8 + bl OS_EnableIrqMask + mov r0, r4 + strb r5, [r4, #0xc] + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02239CE4: .word 0x02243194 + + arm_func_start MOD13_02239CE8 +MOD13_02239CE8: ; 0x02239CE8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r5, r6 + ldr r4, _02239D34 ; =0x02243194 +_02239CF8: + ldr r0, [r4] + add r0, r0, r5 + ldr r0, [r0, #0x220] + bl MOD13_0223B904 + ldr r0, [r4] + add r0, r0, r5 + ldr r0, [r0, #0x224] + bl MOD13_0223A030 + add r6, r6, #1 + cmp r6, #2 + add r5, r5, #0x228 + blt _02239CF8 + ldr r0, _02239D34 ; =0x02243194 + bl MOD13_0223AF90 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02239D34: .word 0x02243194 + + arm_func_start MOD13_02239D38 +MOD13_02239D38: ; 0x02239D38 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r0, #0x450 + mov r1, #4 + bl MOD13_0223AFE0 + ldr sl, _02239E08 ; =0x02243194 + mov sb, #0 + mov r8, sb + str r0, [sl] + mov r7, #0x20 + mov r6, #0x10 + mov r5, #0x40 + mov r4, #0x7f +_02239D68: + ldr r1, [sl] + mov r0, r7 + mov r2, r6 + add r1, r1, r8 + bl MOD13_0223A054 + ldr r1, [sl] + add r1, r1, r8 + str r0, [r1, #0x224] + bl MOD13_0223B928 + ldr r2, [sl] + mov r1, r5 + add r2, r2, r8 + str r0, [r2, #0x220] + mov r0, sb + bl MOD13_0223B95C + ldr r2, [sl] + mov r1, r4 + add r2, r2, r8 + str r0, [r2, #0x208] + mov r0, sb + bl MOD13_0223B95C + add r1, r0, #8 + ldr r0, [sl] + add r0, r0, r8 + str r1, [r0, #0x218] + ldr r0, [sl] + add r1, r0, r8 + ldr r0, [r1, #0x220] + add r1, r1, #0x200 + bl MOD13_0223B868 + ldr r0, [sl] + add r1, r0, r8 + ldr r0, [r1, #0x220] + add r1, r1, #0x210 + bl MOD13_0223B878 + add r8, r8, #0x228 + add sb, sb, #1 + cmp sb, #2 + blt _02239D68 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02239E08: .word 0x02243194 + + arm_func_start MOD13_02239E0C +MOD13_02239E0C: ; 0x02239E0C + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _02239E50 ; =0x02243198 + mov r6, r0 + mov r5, r1 + ldr r3, [r3, r6, lsl #2] + mov r1, r5, lsl #3 + ldrh r1, [r3, r1] + bl MOD13_02239B74 + mov r1, #0 + mov r4, r0 + bl MOD13_02239ADC + mov r2, r0 + mov r0, r6 + mov r1, r5 + bl MOD13_02239E8C + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02239E50: .word 0x02243198 + + arm_func_start MOD13_02239E54 +MOD13_02239E54: ; 0x02239E54 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r1 + add r1, sp, #0 + mov r6, r0 + bl MOD13_0223B9C0 + mov r4, r0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MOD13_02239E8C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_02239E8C +MOD13_02239E8C: ; 0x02239E8C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + ldr r3, _02239F1C ; =0x02243198 + mov r5, r2 + ldr r6, [r3, r0, lsl #2] + mov r2, r1, lsl #3 + add r0, r6, r1, lsl #3 + ldr r3, [r0, #4] + ldrh r4, [r6, r2] + add r1, sp, #0 + mov r0, #0 + mov r2, #8 + add sl, r6, r3 + bl MIi_CpuClear32 + cmp r4, #0 + mov sb, #0 + addle sp, sp, #8 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r8, sp, #0 + mov r7, #6 + mov r6, #8 +_02239EE0: + mov r0, sl + mov r1, r8 + mov r2, r7 + bl MIi_CpuCopy16 + mov r0, r8 + mov r1, r5 + mov r2, r6 + bl MIi_CpuCopy32 + add sb, sb, #1 + cmp sb, r4 + add sl, sl, #6 + add r5, r5, #8 + blt _02239EE0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02239F1C: .word 0x02243198 + + arm_func_start MOD13_02239F20 +MOD13_02239F20: ; 0x02239F20 + stmdb sp!, {r4, lr} + ldr r1, _02239F44 ; =0x02243198 + mov r4, r0 + ldr r0, [r1, r4, lsl #2] + bl MOD13_0223939C + ldr r0, _02239F44 ; =0x02243198 + mov r1, #0 + str r1, [r0, r4, lsl #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_02239F44: .word 0x02243198 + + arm_func_start MOD13_02239F48 +MOD13_02239F48: ; 0x02239F48 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r0, r1 + add r1, sp, #0 + mov r2, #4 + bl MOD13_022393D8 + ldr r1, _02239F74 ; =0x02243198 + str r0, [r1, r4, lsl #2] + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02239F74: .word 0x02243198 + + arm_func_start MOD13_02239F78 +MOD13_02239F78: ; 0x02239F78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, #0 + bl OS_DisableIrqMask + ldrb r2, [r6, #3] + ldrb r1, [r6, #2] + mov r4, r0 + cmp r1, r2 + beq _02239FC0 + ldrh r1, [r6] + add r0, r2, r1 + sub r0, r0, #1 + bl FX_ModS32 + strb r0, [r6, #3] + ldrb r0, [r6, #3] + add r0, r6, r0, lsl #2 + ldr r5, [r0, #4] +_02239FC0: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_02239FD0 +MOD13_02239FD0: ; 0x02239FD0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl OS_DisableIrqMask + ldrb r2, [r5, #3] + mov r7, r0 + ldrh r1, [r5] + add r0, r2, #1 + bl FX_ModS32 + ldrb r1, [r5, #2] + mov r6, r0 + cmp r6, r1 + bne _0223A010 + bl OS_Terminate +_0223A010: + ldrb r1, [r5, #3] + mov r0, r7 + add r1, r5, r1, lsl #2 + str r4, [r1, #4] + strb r6, [r5, #3] + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + + arm_func_start MOD13_0223A030 +MOD13_0223A030: ; 0x0223A030 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start MOD13_0223A054 +MOD13_0223A054: ; 0x0223A054 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl MOD13_0223A094 + cmp r6, #0 + mov r2, #0 + ble _0223A08C +_0223A074: + add r1, r0, r2, lsl #2 + add r2, r2, #1 + str r5, [r1, #4] + cmp r2, r6 + add r5, r5, r4 + blt _0223A074 +_0223A08C: + strb r6, [r0, #3] + ldmia sp!, {r4, r5, r6, pc} + + arm_func_start MOD13_0223A094 +MOD13_0223A094: ; 0x0223A094 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #1 + mov r0, r0, lsl #2 + add r0, r0, #8 + mov r1, #4 + bl MOD13_0223B004 + add r1, r4, #1 + strh r1, [r0] + mov r1, #0 + strb r1, [r0, #2] + strb r1, [r0, #3] + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223A0C8 +MOD13_0223A0C8: ; 0x0223A0C8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldrsh r2, [r1, #4] + add r2, r2, #1 + strh r2, [r1, #4] + ldrsh r3, [r1, #4] + ldrh r2, [r1, #6] + cmp r3, r2 + addlt sp, sp, #4 + ldmltia sp!, {pc} + mov r2, #0 + strb r2, [r1, #9] + mov r1, r0 + mov r0, #1 + bl MOD13_0223C110 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A10C +MOD13_0223A10C: ; 0x0223A10C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r1, _0223A168 ; =0x022431A0 + mov r5, r0 + ldr r4, [r1] + ldrb r0, [r4, #9] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #0 + ldmneia sp!, {r4, r5, pc} + ldr r1, _0223A16C ; =MOD13_0223A0C8 + mov r2, r4 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r4] + mov r0, #0 + strh r0, [r4, #4] + strh r5, [r4, #6] + mov r0, #1 + strb r0, [r4, #9] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223A168: .word 0x022431A0 +_0223A16C: .word MOD13_0223A0C8 + + arm_func_start MOD13_0223A170 +MOD13_0223A170: ; 0x0223A170 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r3, _0223A294 ; =0x0223F748 + ldr r2, _0223A298 ; =0x0223F744 + ldrb r8, [r3] + ldrb r7, [r3, #1] + ldrb r6, [r3, #2] + ldrb lr, [r3, #3] + ldrb ip, [r2] + ldrb r5, [r2, #1] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r5, [sp, #5] + mov r4, r1 + strb r8, [sp] + strb r7, [sp, #1] + strb r6, [sp, #2] + strb lr, [sp, #3] + strb ip, [sp, #4] + strb r3, [sp, #6] + strb r2, [sp, #7] + ldrsh r1, [r4, #4] + mov r5, r0 + add r0, r1, #1 + strh r0, [r4, #4] + ldrsh r0, [r4, #4] + ldrh r1, [r4, #6] + mov r0, r0, lsl #4 + bl FX_DivS32 + ldrb r3, [r4, #8] + add r2, sp, #0 + mov r1, r0 + ldrb r2, [r2, r3] + ands r0, r2, #1 + rsbne r1, r1, #0x10 + ands r0, r2, #0x10 + ldr r0, _0223A29C ; =0x022431A0 + rsbne r1, r1, #0 + ldr r0, [r0] + cmp r4, r0 + bne _0223A220 + ldr r0, _0223A2A0 ; =0x04001050 + bl G2x_ChangeBlendBrightness_ + b _0223A228 +_0223A220: + ldr r0, _0223A2A4 ; =0x04000050 + bl G2x_ChangeBlendBrightness_ +_0223A228: + ldrsh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r1, r0 + addlt sp, sp, #8 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _0223A29C ; =0x022431A0 + ldr r0, [r0] + cmp r4, r0 + bne _0223A264 + ldrb r2, [r4, #8] + add r1, sp, #4 + ldr r0, _0223A2A0 ; =0x04001050 + ldrsb r1, [r1, r2] + bl G2x_ChangeBlendBrightness_ + b _0223A278 +_0223A264: + ldrb r2, [r4, #8] + add r1, sp, #4 + ldr r0, _0223A2A4 ; =0x04000050 + ldrsb r1, [r1, r2] + bl G2x_ChangeBlendBrightness_ +_0223A278: + mov r2, #0 + mov r1, r5 + mov r0, #1 + strb r2, [r4, #9] + bl MOD13_0223C110 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223A294: .word 0x0223F748 +_0223A298: .word 0x0223F744 +_0223A29C: .word 0x022431A0 +_0223A2A0: .word 0x04001050 +_0223A2A4: .word 0x04000050 + + arm_func_start MOD13_0223A2A8 +MOD13_0223A2A8: ; 0x0223A2A8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r4, _0223A374 ; =0x0223F74C + mov r5, r0 + ldrb r0, [r4, #3] + ldrb r6, [r4] + ldrb lr, [r4, #1] + strb r0, [sp, #3] + cmp r1, #1 + ldreq r0, _0223A378 ; =0x022431A0 + ldrb ip, [r4, #2] + strb r6, [sp] + ldreq r6, [r0] + ldrne r0, _0223A378 ; =0x022431A0 + strb lr, [sp, #1] + ldrne r0, [r0] + strb ip, [sp, #2] + addne r6, r0, #0xc + ldrb r0, [r6, #9] + mov r4, r3 + cmp r0, #0 + addne sp, sp, #8 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r1, #1 + bne _0223A328 + add r0, sp, #0 + mov r1, r2 + ldrsb r2, [r0, r5] + ldr r0, _0223A37C ; =0x04001050 + bl G2x_SetBlendBrightness_ + b _0223A33C +_0223A328: + add r0, sp, #0 + mov r1, r2 + ldrsb r2, [r0, r5] + ldr r0, _0223A380 ; =0x04000050 + bl G2x_SetBlendBrightness_ +_0223A33C: + ldr r1, _0223A384 ; =MOD13_0223A170 + mov r2, r6 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r6] + mov r0, #0 + strh r0, [r6, #4] + strb r5, [r6, #8] + strh r4, [r6, #6] + mov r0, #1 + strb r0, [r6, #9] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0223A374: .word 0x0223F74C +_0223A378: .word 0x022431A0 +_0223A37C: .word 0x04001050 +_0223A380: .word 0x04000050 +_0223A384: .word MOD13_0223A170 + + arm_func_start MOD13_0223A388 +MOD13_0223A388: ; 0x0223A388 + cmp r0, #1 + ldreq r0, _0223A3A8 ; =0x022431A0 + ldreq r0, [r0] + ldrne r0, _0223A3A8 ; =0x022431A0 + ldrne r0, [r0] + addne r0, r0, #0xc + ldrb r0, [r0, #9] + bx lr + .align 2, 0 +_0223A3A8: .word 0x022431A0 + + arm_func_start MOD13_0223A3AC +MOD13_0223A3AC: ; 0x0223A3AC + ldr ip, _0223A3B8 ; =MOD13_0223AF90 + ldr r0, _0223A3BC ; =0x022431A0 + bx ip + .align 2, 0 +_0223A3B8: .word MOD13_0223AF90 +_0223A3BC: .word 0x022431A0 + + arm_func_start MOD13_0223A3C0 +MOD13_0223A3C0: ; 0x0223A3C0 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x18 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r2, _0223A404 ; =0x022431A0 + mov r1, #0x3f + str r0, [r2] + ldr r0, _0223A408 ; =0x04000050 + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + ldr r0, _0223A40C ; =0x04001050 + mov r1, #0x3f + mov r2, #0x10 + bl G2x_SetBlendBrightness_ + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223A404: .word 0x022431A0 +_0223A408: .word 0x04000050 +_0223A40C: .word 0x04001050 + + arm_func_start MOD13_0223A410 +MOD13_0223A410: ; 0x0223A410 + ldr r2, _0223A438 ; =0x022431A4 + ldr r1, _0223A43C ; =0x00000718 + ldr r2, [r2] + add r1, r2, r1 + cmp r0, r1 + moveq r0, #1 + streqb r0, [r2, #0x794] + movne r0, #1 + strneb r0, [r2, #0x795] + bx lr + .align 2, 0 +_0223A438: .word 0x022431A4 +_0223A43C: .word 0x00000718 + + arm_func_start MOD13_0223A440 +MOD13_0223A440: ; 0x0223A440 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r6, r3 + mov r4, r0 + mov r8, r1 + mov r0, r6 + mov r1, #0 + mov r7, r2 + bl MOD13_02239ADC + mov r2, #0 + mov r5, r0 + mov r0, r6 + mvn r1, #0 + mov r3, r2 + bl MOD13_02239A1C + mov r0, r6 + mvn r1, #0 + mov r2, #0 + mov r3, #0xf + bl MOD13_02239994 + mov r0, r6 + mvn r1, #0 + ldr r2, [sp, #0x28] + bl MOD13_02239814 + str r7, [sp] + mov r0, r5 + mov r3, r8 + mov r1, #0 + str r1, [sp, #4] + ldrh r2, [r4, #0x34] + mov r1, #2 + str r2, [sp, #8] + str r1, [sp, #0xc] + ldrb r1, [r4, #0x36] + ldrb r2, [r4, #0x37] + bl FUN_020B5E50 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + + arm_func_start MOD13_0223A4D8 +MOD13_0223A4D8: ; 0x0223A4D8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, [r0, #0x18] + blx r2 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A4F0 +MOD13_0223A4F0: ; 0x0223A4F0 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, [sp, #0x1c] + str lr, [sp] + ldr lr, [sp, #0x20] + str ip, [sp, #4] + ldr ip, [sp, #0x24] + str lr, [sp, #8] + add r0, r0, #0x20 + str ip, [sp, #0xc] + bl FUN_020B7168 + add sp, sp, #0x14 + ldmia sp!, {pc} + + arm_func_start MOD13_0223A528 +MOD13_0223A528: ; 0x0223A528 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r7, [sp, #0x34] + mov sb, r1 + ldrh r1, [r7] + ldr r8, [sp, #0x30] + ldr r6, [sp, #0x38] + mov sl, r0 + mov fp, r2 + str r3, [sp, #8] + cmp r1, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0xc + mul r4, r6, r0 +_0223A564: + ldr r0, _0223A5E8 ; =0x022431A4 + ldr r0, [r0] + add r5, r0, r4 + mov r0, r5 + bl FUN_020B5CE4 + mov r1, r0 + ldr r0, _0223A5EC ; =0x0000FFFF + cmp r1, r0 + ldreq r0, [r5] + ldreqh r1, [r0, #2] + mov r0, r5 + bl FUN_020B5C88 + ldrh r1, [r5, #8] + ldrh r2, [r7] + ldr r3, [sp, #8] + cmp r1, #0 + ldrnesb r1, [r0] + ldrneb r0, [r0, #1] + addne r0, r1, r0 + ldreqsb r0, [r0, #2] + sub r1, r8, r0 + str r2, [sp] + mov r0, sl + mov r2, fp + add r1, sb, r1, asr #1 + str r6, [sp, #4] + bl MOD13_0223A5F0 + ldrh r1, [r7, #2]! + add sb, sb, r8 + cmp r1, #0 + bne _0223A564 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0223A5E8: .word 0x022431A4 +_0223A5EC: .word 0x0000FFFF + + arm_func_start MOD13_0223A5F0 +MOD13_0223A5F0: ; 0x0223A5F0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldrh ip, [sp, #0x10] + str r3, [sp] + ldr r3, _0223A630 ; =0x022431A4 + str ip, [sp, #4] + ldr lr, [r3] + ldr ip, [sp, #0x14] + mov r3, #0xc + mov r4, r1 + mla r1, ip, r3, lr + mov r3, r2 + mov r2, r4 + bl FUN_020B63CC + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A630: .word 0x022431A4 + + arm_func_start MOD13_0223A634 +MOD13_0223A634: ; 0x0223A634 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr lr, [sp, #0x10] + ldr ip, [sp, #0x14] + str lr, [sp] + add r0, r0, #0x20 + str ip, [sp, #4] + bl FUN_020B7218 + add sp, sp, #0xc + ldmia sp!, {pc} + + arm_func_start MOD13_0223A65C +MOD13_0223A65C: ; 0x0223A65C + ldr r2, _0223A67C ; =0x022431A4 + ldr r1, _0223A680 ; =0x00000718 + ldr r3, [r2] + mov r2, #0x38 + add r1, r3, r1 + mla r0, r2, r0, r1 + ldr ip, _0223A684 ; =MOD13_0223A688 + bx ip + .align 2, 0 +_0223A67C: .word 0x022431A4 +_0223A680: .word 0x00000718 +_0223A684: .word MOD13_0223A688 + + arm_func_start MOD13_0223A688 +MOD13_0223A688: ; 0x0223A688 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x34] + mov r0, #1 + bl MOD13_0223C104 + ldr r1, _0223A70C ; =0x022431A4 + ldr r0, _0223A710 ; =0x00000718 + ldr r1, [r1] + add r0, r1, r0 + cmp r4, r0 + bne _0223A6DC + bl G2_GetBG0CharPtr + ldr r2, _0223A714 ; =0x0223F754 + mov r1, r0 + ldrh r3, [r2] + ldrh r2, [r2, #2] + mov r0, #0 + mul r2, r3, r2 + mov r2, r2, lsl #5 + bl MIi_CpuClear16 + b _0223A700 +_0223A6DC: + bl G2_GetBG0CharPtr + ldr r2, _0223A714 ; =0x0223F754 + mov r1, r0 + ldrh r3, [r2, #4] + ldrh r2, [r2, #6] + mov r0, #0 + mul r2, r3, r2 + mov r2, r2, lsl #5 + bl MIi_CpuClear16 +_0223A700: + add r0, r4, #0x30 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A70C: .word 0x022431A4 +_0223A710: .word 0x00000718 +_0223A714: .word 0x0223F754 + + arm_func_start MOD13_0223A718 +MOD13_0223A718: ; 0x0223A718 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldrb r0, [r4] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7E4 ; =0x00000794 + ldr r2, [r1] + add r0, r2, r0 + cmp r4, r0 + bne _0223A790 + ldr r1, _0223A7E8 ; =0x0223F754 + ldr r0, [r2, #0x748] + ldrh r2, [r1] + ldrh r1, [r1, #2] + mul r1, r2, r1 + mov r5, r1, lsl #5 + mov r1, r5 + bl DC_FlushRange + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7EC ; =0x0223F750 + ldr r2, [r1] + ldrh r1, [r0] + ldr r0, [r2, #0x748] + mov r2, r5 + mov r1, r1, lsl #5 + bl GX_LoadBG0Char + b _0223A7D0 +_0223A790: + ldr r1, _0223A7E8 ; =0x0223F754 + ldr r0, [r2, #0x780] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mul r1, r2, r1 + mov r5, r1, lsl #5 + mov r1, r5 + bl DC_FlushRange + ldr r1, _0223A7E0 ; =0x022431A4 + ldr r0, _0223A7EC ; =0x0223F750 + ldr r2, [r1] + ldrh r1, [r0, #2] + ldr r0, [r2, #0x780] + mov r2, r5 + mov r1, r1, lsl #5 + bl GXS_LoadBG0Char +_0223A7D0: + mov r0, #0 + strb r0, [r4] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223A7E0: .word 0x022431A4 +_0223A7E4: .word 0x00000794 +_0223A7E8: .word 0x0223F754 +_0223A7EC: .word 0x0223F750 + + arm_func_start MOD13_0223A7F0 +MOD13_0223A7F0: ; 0x0223A7F0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r0, _0223A954 ; =0x022431A4 + ldr r3, _0223A958 ; =0x0223F756 + mov r4, r8, lsl #2 + ldr r2, _0223A95C ; =0x0223F754 + ldrh r5, [r3, r4] + ldrh r4, [r2, r4] + ldr r3, [r0] + ldr r0, _0223A960 ; =0x00000718 + mul r2, r4, r5 + mov r7, r1 + add r1, r3, r0 + mov r0, #0x38 + mla r6, r8, r0, r1 + mov r0, r2, lsl #5 + mov r1, #0x20 + bl MOD13_0223B004 + str r0, [r6, #0x30] + cmp r8, #1 + bne _0223A86C + ldr r1, _0223A964 ; =0x04001008 + ldrh r0, [r1] + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r1] + b _0223A88C +_0223A86C: + ldr r1, _0223A968 ; =0x04000008 + ldrh r0, [r1] + bic r0, r0, #0x40 + strh r0, [r1] + ldrh r0, [r1] + and r0, r0, #0x43 + orr r0, r0, #0xc00 + strh r0, [r1] +_0223A88C: + mov r0, #4 + str r0, [sp] + ldr r1, [r6, #0x30] + mov r0, r6 + mov r2, r4 + mov r3, r5 + bl FUN_020B6388 + ldr r1, _0223A954 ; =0x022431A4 + mov r0, #0xc + ldr r2, [r1] + mov r1, #1 + mla r0, r7, r0, r2 + str r6, [r6, #0x20] + str r0, [r6, #0x24] + str r1, [r6, #0x28] + str r1, [r6, #0x2c] + cmp r8, #1 + bne _0223A8DC + bl G2S_GetBG0ScrPtr + b _0223A8E0 +_0223A8DC: + bl G2_GetBG0ScrPtr +_0223A8E0: + mov r3, #0 + str r3, [sp] + mov r2, #0x20 + ldr r1, _0223A96C ; =0x0223F750 + str r2, [sp, #4] + mov r2, r8, lsl #1 + ldrh r7, [r1, r2] + mov r1, r4 + mov r2, r5 + str r7, [sp, #8] + mov r4, #0xf + str r4, [sp, #0xc] + bl FUN_020B6240 + mov r0, r6 + mov r1, #0 + bl MOD13_0223A4D8 + ldr r1, _0223A954 ; =0x022431A4 + ldr r0, _0223A970 ; =0x00000794 + ldr r2, [r1] + ldr r1, _0223A974 ; =MOD13_0223A718 + add r0, r2, r0 + add r2, r0, r8 + mov r0, #1 + mov r3, #0xc8 + bl MOD13_0223C1C4 + str r0, [r6, #0x34] + mov r0, r6 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223A954: .word 0x022431A4 +_0223A958: .word 0x0223F756 +_0223A95C: .word 0x0223F754 +_0223A960: .word 0x00000718 +_0223A964: .word 0x04001008 +_0223A968: .word 0x04000008 +_0223A96C: .word 0x0223F750 +_0223A970: .word 0x00000794 +_0223A974: .word MOD13_0223A718 + + arm_func_start MOD13_0223A978 +MOD13_0223A978: ; 0x0223A978 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x30] + bl MOD13_0223BB20 + ldr r0, _0223A9A0 ; =0x022431A4 + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, #0x788] + bl MOD13_02239FD0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223A9A0: .word 0x022431A4 + + arm_func_start MOD13_0223A9A4 +MOD13_0223A9A4: ; 0x0223A9A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r4, _0223AA7C ; =0x022431A4 + mov r7, r0 + ldr r0, [r4] + mov r6, r1 + ldr r0, [r0, #0x788] + mov r5, r2 + mov r8, r3 + bl MOD13_02239F78 + mov r4, r0 + strb r6, [r4, #0x36] + mul r1, r6, r5 + mov r2, r8 + strb r5, [r4, #0x37] + mov r0, r7 + add r3, sp, #4 + bl MOD13_0223BB68 + str r0, [r4, #0x30] + ldr r1, [sp, #4] + mov r0, r6 + strh r1, [r4, #0x34] + mov r1, r5 + bl FUN_020B6180 + ldr r1, [sp, #0x20] + cmp r7, #1 + str r0, [r1] + moveq ip, #0x6600000 + ldr r7, [sp, #4] + mov r1, #4 + movne ip, #0x6400000 + str r1, [sp] + mov r0, r4 + mov r2, r6 + mov r3, r5 + add r1, ip, r7, lsl #7 + bl FUN_020B62F8 + ldr r2, [r4, #0x18] + mov r0, r4 + mov r1, #0 + blx r2 + ldr r0, _0223AA7C ; =0x022431A4 + ldr r1, [sp, #0x24] + ldr r2, [r0] + mov r0, #0xc + mla r0, r1, r0, r2 + str r4, [r4, #0x20] + str r0, [r4, #0x24] + mov r1, #1 + str r1, [r4, #0x28] + mov r0, r4 + str r1, [r4, #0x2c] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223AA7C: .word 0x022431A4 + + arm_func_start MOD13_0223AA80 +MOD13_0223AA80: ; 0x0223AA80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _0223AACC ; =0x022431A4 + mov r5, #0 +_0223AA90: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + ldr r0, [r0, #0x78c] + bl MOD13_0223939C + add r5, r5, #1 + cmp r5, #2 + blt _0223AA90 + ldr r0, _0223AACC ; =0x022431A4 + ldr r0, [r0] + ldr r0, [r0, #0x788] + bl MOD13_0223A030 + ldr r0, _0223AACC ; =0x022431A4 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AACC: .word 0x022431A4 + + arm_func_start MOD13_0223AAD0 +MOD13_0223AAD0: ; 0x0223AAD0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #4 + ldr r0, _0223AB68 ; =0x00000798 + mov r1, #4 + bl MOD13_0223B004 + mov r4, r0 + ldr r3, _0223AB6C ; =0x022431A4 + add r1, r4, #0x18 + mov r0, #0x20 + mov r2, #0x38 + str r4, [r3] + bl MOD13_0223A054 + ldr sb, _0223AB6C ; =0x022431A4 + mov r8, #0 + ldr r1, [sb] + mov r7, r8 + str r0, [r1, #0x788] + ldr r6, _0223AB70 ; =0x02240A00 + mov r5, r8 + mov r4, #4 +_0223AB20: + ldr r0, [r6, r8, lsl #2] + mov r1, r5 + mov r2, r4 + bl MOD13_022393D8 + ldr r1, [sb] + add r1, r1, r8, lsl #2 + str r0, [r1, #0x78c] + ldr r2, [sb] + add r0, r2, r8, lsl #2 + ldr r1, [r0, #0x78c] + add r0, r2, r7 + bl FUN_020B5D3C + add r8, r8, #1 + cmp r8, #2 + add r7, r7, #0xc + blt _0223AB20 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0223AB68: .word 0x00000798 +_0223AB6C: .word 0x022431A4 +_0223AB70: .word 0x02240A00 + + arm_func_start MOD13_0223AB74 +MOD13_0223AB74: ; 0x0223AB74 + ldrh r3, [r0] + strh r3, [r2] + ldrh r3, [r0, #2] + strh r3, [r2, #2] + ldrh ip, [r0] + ldrh r3, [r1] + add r3, ip, r3 + strh r3, [r2, #4] + ldrh r3, [r0, #2] + ldrh r0, [r1, #2] + add r0, r3, r0 + strh r0, [r2, #6] + bx lr + + arm_func_start MOD13_0223ABA8 +MOD13_0223ABA8: ; 0x0223ABA8 + ldr ip, [sp] + strh r0, [ip] + strh r1, [ip, #2] + strh r2, [ip, #4] + strh r3, [ip, #6] + bx lr + + arm_func_start MOD13_0223ABC0 +MOD13_0223ABC0: ; 0x0223ABC0 + strh r0, [r2] + strh r1, [r2, #2] + bx lr + + arm_func_start MOD13_0223ABCC +MOD13_0223ABCC: ; 0x0223ABCC + cmp r1, #3 + addls pc, pc, r1, lsl #2 + bx lr +_0223ABD8: ; jump table + b _0223ABE8 ; case 0 + b _0223AC38 ; case 1 + b _0223AC88 ; case 2 + b _0223ACD8 ; case 3 +_0223ABE8: + cmp r0, #1 + bne _0223AC14 + ldr r0, _0223AD28 ; =0x04001048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD28 ; =0x04001048 + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AC14: + ldr r0, _0223AD2C ; =0x04000048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD2C ; =0x04000048 + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AC38: + cmp r0, #1 + bne _0223AC64 + ldr r0, _0223AD28 ; =0x04001048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD28 ; =0x04001048 + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223AC64: + ldr r0, _0223AD2C ; =0x04000048 + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD2C ; =0x04000048 + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223AC88: + cmp r0, #1 + bne _0223ACB4 + ldr r0, _0223AD30 ; =0x0400104A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD30 ; =0x0400104A + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223ACB4: + ldr r0, _0223AD34 ; =0x0400004A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f00 + orr r1, r0, r2, lsl #8 + ldr r0, _0223AD34 ; =0x0400004A + orrne r1, r1, #0x2000 + strh r1, [r0] + bx lr +_0223ACD8: + cmp r0, #1 + bne _0223AD04 + ldr r0, _0223AD30 ; =0x0400104A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD30 ; =0x0400104A + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr +_0223AD04: + ldr r0, _0223AD34 ; =0x0400004A + cmp r3, #0 + ldrh r0, [r0] + bic r0, r0, #0x3f + orr r1, r0, r2 + ldr r0, _0223AD34 ; =0x0400004A + orrne r1, r1, #0x20 + strh r1, [r0] + bx lr + .align 2, 0 +_0223AD28: .word 0x04001048 +_0223AD2C: .word 0x04000048 +_0223AD30: .word 0x0400104A +_0223AD34: .word 0x0400004A + + arm_func_start MOD13_0223AD38 +MOD13_0223AD38: ; 0x0223AD38 + stmdb sp!, {lr} + sub sp, sp, #4 + cmp r0, #1 + bne _0223ADE0 + cmp r1, #0 + bne _0223AD98 + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE78 ; =0x04001040 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE7C ; =0x04001044 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223AD98: + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE80 ; =0x04001042 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE84 ; =0x04001046 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223ADE0: + cmp r1, #0 + bne _0223AE30 + ldrh r0, [r2] + ldrh r1, [r2, #4] + ldrh r3, [r2, #2] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + orr ip, r2, r1 + ldr r3, _0223AE88 ; =0x04000040 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE8C ; =0x04000044 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223AE30: + ldrh r0, [r2] + ldrh r3, [r2, #2] + ldrh r1, [r2, #4] + ldrh lr, [r2, #6] + mov r2, r0, lsl #8 + mov r0, r3, lsl #8 + and r2, r2, #0xff00 + and r1, r1, #0xff + ldr r3, _0223AE90 ; =0x04000042 + orr ip, r2, r1 + and r2, r0, #0xff00 + and r1, lr, #0xff + ldr r0, _0223AE94 ; =0x04000046 + strh ip, [r3] + orr r1, r2, r1 + strh r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223AE78: .word 0x04001040 +_0223AE7C: .word 0x04001044 +_0223AE80: .word 0x04001042 +_0223AE84: .word 0x04001046 +_0223AE88: .word 0x04000040 +_0223AE8C: .word 0x04000044 +_0223AE90: .word 0x04000042 +_0223AE94: .word 0x04000046 + + arm_func_start MOD13_0223AE98 +MOD13_0223AE98: ; 0x0223AE98 + cmp r0, #1 + bne _0223AEC8 + ldr r3, _0223AEF0 ; =0x04001000 + mvn r0, r1 + ldr r2, [r3] + ldr r1, [r3] + and r2, r2, #0x1f00 + bic r1, r1, #0x1f00 + and r0, r0, r2, lsr #8 + orr r0, r1, r0, lsl #8 + str r0, [r3] + bx lr +_0223AEC8: + mov r3, #0x4000000 + ldr r0, [r3] + ldr r2, [r3] + and ip, r0, #0x1f00 + mvn r0, r1 + bic r1, r2, #0x1f00 + and r0, r0, ip, lsr #8 + orr r0, r1, r0, lsl #8 + str r0, [r3] + bx lr + .align 2, 0 +_0223AEF0: .word 0x04001000 + + arm_func_start MOD13_0223AEF4 +MOD13_0223AEF4: ; 0x0223AEF4 + cmp r0, #1 + bne _0223AF20 + ldr r3, _0223AF44 ; =0x04001000 + ldr r2, [r3] + ldr r0, [r3] + and ip, r2, #0x1f00 + bic r2, r0, #0x1f00 + orr r0, r1, ip, lsr #8 + orr r0, r2, r0, lsl #8 + str r0, [r3] + bx lr +_0223AF20: + mov r3, #0x4000000 + ldr r2, [r3] + ldr r0, [r3] + and ip, r2, #0x1f00 + bic r2, r0, #0x1f00 + orr r0, r1, ip, lsr #8 + orr r0, r2, r0, lsl #8 + str r0, [r3] + bx lr + .align 2, 0 +_0223AF44: .word 0x04001000 + + arm_func_start MOD13_0223AF48 +MOD13_0223AF48: ; 0x0223AF48 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl OS_DisableIrqMask + cmp r5, #0 + mov r4, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _0223AF8C ; =0x022431A8 + mov r1, r5 + ldr r0, [r0] + bl FUN_020ADDF0 + mov r0, r4 + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AF8C: .word 0x022431A8 + + arm_func_start MOD13_0223AF90 +MOD13_0223AF90: ; 0x0223AF90 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + bl OS_DisableIrqMask + ldr r1, [r5] + mov r4, r0 + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, pc} + ldr r0, _0223AFDC ; =0x022431A8 + ldr r0, [r0] + bl FUN_020ADDF0 + mov r0, r4 + bl OS_EnableIrqMask + mov r0, #0 + str r0, [r5] + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223AFDC: .word 0x022431A8 + + arm_func_start MOD13_0223AFE0 +MOD13_0223AFE0: ; 0x0223AFE0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl MOD13_0223B004 + mov r2, r4 + mov r1, #0 + mov r4, r0 + bl MI_CpuFill8 + mov r0, r4 + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223B004 +MOD13_0223B004: ; 0x0223B004 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #1 + mov r5, r1 + bl OS_DisableIrqMask + ldr r1, _0223B04C ; =0x022431A8 + mov r4, r0 + ldr r0, [r1] + mov r1, r6 + mov r2, r5 + bl tempName_NNS_FndAllocFromExpHeapEx + movs r5, r0 + bne _0223B03C + bl OS_Terminate +_0223B03C: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0223B04C: .word 0x022431A8 + + arm_func_start MOD13_0223B050 +MOD13_0223B050: ; 0x0223B050 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B078 ; =0x022431A8 + ldr r0, [r0] + bl thunk_FUN_020adc8c + ldr r0, _0223B078 ; =0x022431A8 + mov r1, #0 + str r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B078: .word 0x022431A8 + + arm_func_start MOD13_0223B07C +MOD13_0223B07C: ; 0x0223B07C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #0 + mov r2, #0x40000 + bl MI_CpuFill8 + mov r0, r4 + mov r1, #0x40000 + mov r2, #0 + bl tempName_NNS_FndCreateExpHeapEx + ldr r1, _0223B0B8 ; =0x022431A8 + cmp r0, #0 + str r0, [r1] + ldmneia sp!, {r4, pc} + bl OS_Terminate + ldmia sp!, {r4, pc} + .align 2, 0 +_0223B0B8: .word 0x022431A8 + + arm_func_start MOD13_0223B0BC +MOD13_0223B0BC: ; 0x0223B0BC + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B144 ; =0x022431AC + ldrb r0, [r0] + cmp r0, #0 + beq _0223B10C + ldr r0, _0223B148 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + addne sp, sp, #4 + ldmneia sp!, {pc} + mov r0, #1 + bl PM_SetLCDPower + cmp r0, #0 + ldrne r0, _0223B144 ; =0x022431AC + movne r1, #0 + strneb r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} +_0223B10C: + ldr r0, _0223B148 ; =0x027FFFA8 + ldrh r0, [r0] + and r0, r0, #0x8000 + movs r0, r0, asr #0xf + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0 + bl PM_SetLCDPower + cmp r0, #0 + ldrne r0, _0223B144 ; =0x022431AC + movne r1, #1 + strneb r1, [r0] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B144: .word 0x022431AC +_0223B148: .word 0x027FFFA8 + + arm_func_start MOD13_0223B14C +MOD13_0223B14C: ; 0x0223B14C + ldr r1, _0223B190 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + ldrneh r2, [r3, #0x28] + ldrneh r1, [r3, #0x2a] + strneh r2, [r0] + strneh r1, [r0, #2] + movne r0, #1 + bxne lr + ldrh r2, [r3, #0x2c] + ldrh r1, [r3, #0x2e] + strh r2, [r0] + strh r1, [r0, #2] + mov r0, #0 + bx lr + .align 2, 0 +_0223B190: .word 0x022431B4 + + arm_func_start MOD13_0223B194 +MOD13_0223B194: ; 0x0223B194 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldrh r1, [r0] + strh r1, [sp] + ldrh r1, [r0, #2] + strh r1, [sp, #2] + ldrh r2, [r0] + ldrh r1, [r0, #4] + add r1, r2, r1 + strh r1, [sp, #4] + ldrh r2, [r0, #2] + ldrh r1, [r0, #6] + add r0, sp, #0 + add r1, r2, r1 + strh r1, [sp, #6] + bl MOD13_0223B2B4 + add sp, sp, #0xc + ldmia sp!, {pc} + + arm_func_start MOD13_0223B1DC +MOD13_0223B1DC: ; 0x0223B1DC + ldr r1, _0223B244 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1c + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B244: .word 0x022431B4 + + arm_func_start MOD13_0223B248 +MOD13_0223B248: ; 0x0223B248 + ldr r1, _0223B2B0 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1d + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B2B0: .word 0x022431B4 + + arm_func_start MOD13_0223B2B4 +MOD13_0223B2B4: ; 0x0223B2B4 + ldr r1, _0223B31C ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1e + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B31C: .word 0x022431B4 + + arm_func_start MOD13_0223B320 +MOD13_0223B320: ; 0x0223B320 + ldr r1, _0223B388 ; =0x022431B4 + ldr r3, [r1] + ldrb r1, [r3, #0x38] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + moveq r0, #0 + bxeq lr + ldrh r2, [r3, #0x28] + ldrh r1, [r0] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r1, [r0, #4] + cmp r1, r2 + movlo r0, #0 + bxlo lr + ldrh r2, [r3, #0x2a] + ldrh r1, [r0, #2] + cmp r1, r2 + movhi r0, #0 + bxhi lr + ldrh r0, [r0, #6] + cmp r0, r2 + movhs r0, #1 + movlo r0, #0 + bx lr + .align 2, 0 +_0223B388: .word 0x022431B4 + + arm_func_start MOD13_0223B38C +MOD13_0223B38C: ; 0x0223B38C + ldr r1, _0223B3AC ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x36] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3AC: .word 0x022431B4 + + arm_func_start MOD13_0223B3B0 +MOD13_0223B3B0: ; 0x0223B3B0 + ldr r1, _0223B3D0 ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x34] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3D0: .word 0x022431B4 + + arm_func_start MOD13_0223B3D4 +MOD13_0223B3D4: ; 0x0223B3D4 + ldr r1, _0223B3F4 ; =0x022431B4 + ldr r1, [r1] + ldrh r1, [r1, #0x32] + and r1, r0, r1 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_0223B3F4: .word 0x022431B4 + + arm_func_start MOD13_0223B3F8 +MOD13_0223B3F8: ; 0x0223B3F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + ldr r0, _0223B598 ; =0x022431B4 + mov r4, #0 + ldr r0, [r0] + ldrb r0, [r0, #0x38] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + movne r6, #1 + moveq r6, #0 + bl TP_GetLatestIndexInAuto + ldr r7, _0223B598 ; =0x022431B4 + mov r5, r4 + ldr r3, [r7] + mov r8, #5 + ldrh r2, [r3, #0x28] + ldrh r1, [r3, #0x2a] + strh r2, [r3, #0x2c] + strh r1, [r3, #0x2e] +_0223B444: + ldr r1, [r7] + add r1, r1, r0, lsl #3 + ldrh r2, [r1, #4] + cmp r2, #1 + bne _0223B48C + ldrh r2, [r1, #6] + cmp r2, #0 + bne _0223B48C + add r0, sp, #0 + mov r4, #1 + bl TP_GetCalibratedPoint + ldr r1, _0223B598 ; =0x022431B4 + ldrh r0, [sp] + ldr r2, [r1] + ldrh r1, [sp, #2] + add r2, r2, #0x28 + bl MOD13_0223ABC0 + b _0223B4A4 +_0223B48C: + mov r1, r8 + add r5, r5, #1 + add r0, r0, #4 + bl FX_ModS32 + cmp r5, #4 + blt _0223B444 +_0223B4A4: + ldr r1, _0223B598 ; =0x022431B4 + eor r7, r4, r6 + ldr r5, [r1] + and r0, r4, r7 + ldrb r3, [r5, #0x38] + and r2, r0, #0xff + and r0, r6, r7 + bic r3, r3, #2 + and r2, r2, #1 + orr r2, r3, r2, lsl #1 + strb r2, [r5, #0x38] + ldr r5, [r1] + and r0, r0, #0xff + ldrb r3, [r5, #0x38] + and r2, r0, #1 + cmp r4, #0 + bic r3, r3, #8 + orr r2, r3, r2, lsl #3 + strb r2, [r5, #0x38] + ldr r3, [r1] + and r0, r4, #1 + ldrb r2, [r3, #0x38] + addeq sp, sp, #8 + bic r2, r2, #1 + orr r0, r2, r0 + strb r0, [r3, #0x38] + ldr r3, [r1] + moveq r1, #0 + ldrb r2, [r3, #0x38] + mov r0, r2, lsl #0x1e + mov r0, r0, lsr #0x1f + bic r2, r2, #4 + and r0, r0, #1 + orr r0, r2, r0, lsl #2 + strb r0, [r3, #0x38] + ldreq r0, _0223B59C ; =0x022431B0 + streqb r1, [r0] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _0223B59C ; =0x022431B0 + ldrb r2, [r0] + add r2, r2, #1 + strb r2, [r0] + ldrb r2, [r0] + cmp r2, #0x28 + ldreq r1, [r1] + addeq sp, sp, #8 + ldreqb r0, [r1, #0x38] + orreq r0, r0, #4 + streqb r0, [r1, #0x38] + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r2, #0x2f + addne sp, sp, #8 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r3, [r1] + mov r1, #0x28 + ldrb r2, [r3, #0x38] + orr r2, r2, #4 + strb r2, [r3, #0x38] + strb r1, [r0] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223B598: .word 0x022431B4 +_0223B59C: .word 0x022431B0 + + arm_func_start MOD13_0223B5A0 +MOD13_0223B5A0: ; 0x0223B5A0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r1, _0223B694 ; =0x04000130 + ldr r0, _0223B698 ; =0x027FFFA8 + ldrh r2, [r1] + ldrh r1, [r0] + ldr r4, _0223B69C ; =0x022431B4 + ldr r0, _0223B6A0 ; =0x00002FFF + ldr r5, [r4] + orr r1, r2, r1 + eor r1, r1, r0 + and r0, r1, r0 + mov r0, r0, lsl #0x10 + ldrh r1, [r5, #0x30] + mov r3, r0, lsr #0x10 + ldr ip, _0223B6A4 ; =0x022431B8 + eor r1, r1, r0, lsr #16 + and r1, r1, r0, lsr #16 + strh r1, [r5, #0x32] + ldrh r2, [r5, #0x30] + ldr r1, [r4] + mov lr, #0 + eor r0, r2, r0, lsr #16 + and r0, r2, r0 + strh r0, [r1, #0x36] + ldr r0, [r4] + strh r3, [r0, #0x30] + ldr r1, [r4] + ldrh r0, [r1, #0x32] + strh r0, [r1, #0x34] + mov r0, lr + mov r5, #0x28 + mov r2, #1 +_0223B624: + mov r1, r2, lsl lr + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r6, r3, r1 + streqb r0, [ip] + beq _0223B67C + ldrb r6, [ip] + add r6, r6, #1 + strb r6, [ip] + ldrb r6, [ip] + cmp r6, #0x28 + ldreq r7, [r4] + ldreqh r6, [r7, #0x34] + orreq r1, r6, r1 + streqh r1, [r7, #0x34] + beq _0223B67C + cmp r6, #0x2f + ldreq r7, [r4] + ldreqh r6, [r7, #0x34] + orreq r1, r6, r1 + streqh r1, [r7, #0x34] + streqb r5, [ip] +_0223B67C: + add lr, lr, #1 + cmp lr, #0xe + add ip, ip, #1 + blt _0223B624 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B694: .word 0x04000130 +_0223B698: .word 0x027FFFA8 +_0223B69C: .word 0x022431B4 +_0223B6A0: .word 0x00002FFF +_0223B6A4: .word 0x022431B8 + + arm_func_start MOD13_0223B6A8 +MOD13_0223B6A8: ; 0x0223B6A8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl MOD13_0223B5A0 + bl MOD13_0223B3F8 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223B6C0 +MOD13_0223B6C0: ; 0x0223B6C0 + stmdb sp!, {r4, lr} + mov r4, #4 +_0223B6C8: + bl TP_RequestAutoSamplingStopAsync + mov r0, r4 + bl TP_WaitBusy + mov r0, r4 + bl TP_CheckError + cmp r0, #0 + bne _0223B6C8 + ldr r0, _0223B6F0 ; =0x022431B4 + bl MOD13_0223AF90 + ldmia sp!, {r4, pc} + .align 2, 0 +_0223B6F0: .word 0x022431B4 + + arm_func_start MOD13_0223B6F4 +MOD13_0223B6F4: ; 0x0223B6F4 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r0, #0x3a + mov r1, #4 + bl MOD13_0223AFE0 + ldr r1, _0223B76C ; =0x022431B4 + str r0, [r1] + add r0, sp, #0 + bl TP_GetUserInfo + cmp r0, #0 + bne _0223B724 + bl OS_Terminate +_0223B724: + add r0, sp, #0 + bl TP_SetCalibrateParam + ldr r1, _0223B76C ; =0x022431B4 + mov r0, #0 + ldr r2, [r1] + mov r1, #4 + mov r3, #5 + bl TP_RequestAutoSamplingStartAsync + mov r0, #2 + bl TP_WaitBusy + mov r0, #2 + bl TP_CheckError + cmp r0, #0 + beq _0223B760 + bl OS_Terminate +_0223B760: + bl MOD13_0223B6A8 + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_0223B76C: .word 0x022431B4 + + arm_func_start MOD13_0223B770 +MOD13_0223B770: ; 0x0223B770 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #1 + bl MOD13_0223C1E0 + ldr r0, _0223B79C ; =0x027E0000 + add r0, r0, #0x3000 + ldr r1, [r0, #0xff8] + orr r1, r1, #1 + str r1, [r0, #0xff8] + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B79C: .word 0x027E0000 + + arm_func_start MOD13_0223B7A0 +MOD13_0223B7A0: ; 0x0223B7A0 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r2, _0223B7DC ; =0x04000208 + mov r1, #0 + ldrh r0, [r2] + ldr r0, _0223B7E0 ; =0x022431CC + strh r1, [r2] + ldr r0, [r0] + bl OS_SetIrqMask + ldr r1, _0223B7E4 ; =0x022431C8 + mov r0, #1 + ldr r1, [r1] + bl OS_SetIrqFunction + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B7DC: .word 0x04000208 +_0223B7E0: .word 0x022431CC +_0223B7E4: .word 0x022431C8 + + arm_func_start MOD13_0223B7E8 +MOD13_0223B7E8: ; 0x0223B7E8 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223B850 ; =0x04000210 + ldr r1, _0223B854 ; =0x022431CC + ldr r2, [r0] + ldr r0, _0223B858 ; =0x00040018 + str r2, [r1] + bl OS_SetIrqMask + mov r0, #1 + bl OS_EnableIrqMask + mov r0, #1 + bl OS_GetIrqFunction + ldr r2, _0223B85C ; =0x022431C8 + ldr r1, _0223B860 ; =MOD13_0223B770 + str r0, [r2] + mov r0, #1 + bl OS_SetIrqFunction + mov r0, #1 + bl OS_ResetRequestIrqMask + ldr r2, _0223B864 ; =0x04000208 + mov r0, #1 + ldrh r1, [r2] + strh r0, [r2] + bl OS_EnableInterrupts + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223B850: .word 0x04000210 +_0223B854: .word 0x022431CC +_0223B858: .word 0x00040018 +_0223B85C: .word 0x022431C8 +_0223B860: .word MOD13_0223B770 +_0223B864: .word 0x04000208 + + arm_func_start MOD13_0223B868 +MOD13_0223B868: ; 0x0223B868 + ldr ip, _0223B874 ; =MOD13_0223B888 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0223B874: .word MOD13_0223B888 + + arm_func_start MOD13_0223B878 +MOD13_0223B878: ; 0x0223B878 + ldr ip, _0223B884 ; =MOD13_0223B888 + add r0, r0, #8 + bx ip + .align 2, 0 +_0223B884: .word MOD13_0223B888 + + arm_func_start MOD13_0223B888 +MOD13_0223B888: ; 0x0223B888 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r0, #1 + mov r4, r1 + bl OS_DisableIrqMask + ldr r1, [r5] + str r4, [r1, #4] + ldr r1, [r5] + str r1, [r4] + str r5, [r4, #4] + str r4, [r5] + bl OS_EnableIrqMask + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + + arm_func_start MOD13_0223B8C4 +MOD13_0223B8C4: ; 0x0223B8C4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #1 + bl OS_DisableIrqMask + ldr r3, [r4, #4] + ldr r2, [r4] + mov r1, #0 + str r3, [r2, #4] + ldr r3, [r4] + ldr r2, [r4, #4] + str r3, [r2] + str r1, [r4, #4] + ldr r1, [r4, #4] + str r1, [r4] + bl OS_EnableIrqMask + ldmia sp!, {r4, pc} + + arm_func_start MOD13_0223B904 +MOD13_0223B904: ; 0x0223B904 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #8 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start MOD13_0223B928 +MOD13_0223B928: ; 0x0223B928 + stmdb sp!, {lr} + sub sp, sp, #4 + mov r0, #0x10 + mov r1, #4 + bl MOD13_0223B004 + mov r2, #0 + str r2, [r0] + add r1, r0, #8 + str r1, [r0, #4] + str r0, [r0, #8] + str r2, [r0, #0xc] + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223B95C +MOD13_0223B95C: ; 0x0223B95C + ldr r2, _0223B970 ; =0x022431D0 + ldr r2, [r2] + add r0, r2, r0, lsl #10 + add r0, r0, r1, lsl #3 + bx lr + .align 2, 0 +_0223B970: .word 0x022431D0 + + arm_func_start MOD13_0223B974 +MOD13_0223B974: ; 0x0223B974 + mov r1, r0 + ldr r3, [r1] + ldr r0, _0223B9B4 ; =0xC1FFFCFF + ldr r2, _0223B9B8 ; =0x022431D0 + and r0, r3, r0 + orr r0, r0, #0x200 + str r0, [r1] + ldr r2, [r2] + mov r3, #0 + add r0, r2, #0x400 + cmp r1, r0 + movhs r3, #1 + add r0, r2, r3, lsl #2 + ldr ip, _0223B9BC ; =MOD13_02239FD0 + ldr r0, [r0, #0x800] + bx ip + .align 2, 0 +_0223B9B4: .word 0xC1FFFCFF +_0223B9B8: .word 0x022431D0 +_0223B9BC: .word MOD13_02239FD0 + + arm_func_start MOD13_0223B9C0 +MOD13_0223B9C0: ; 0x0223B9C0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r2, _0223BA00 ; =0x022431D0 + mov r5, r1 + ldr r1, [r2] + add r0, r1, r0, lsl #2 + ldr r0, [r0, #0x800] + bl MOD13_02239F78 + mov r4, r0 + mov r0, r5 + mov r1, r4 + mov r2, #8 + bl MIi_CpuCopy32 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223BA00: .word 0x022431D0 + + arm_func_start MOD13_0223BA04 +MOD13_0223BA04: ; 0x0223BA04 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r1, _0223BA30 ; =0x022431D0 + mov r0, #1 + ldr r1, [r1] + ldr r1, [r1, #0x808] + bl MOD13_0223C104 + ldr r0, _0223BA30 ; =0x022431D0 + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BA30: .word 0x022431D0 + + arm_func_start MOD13_0223BA34 +MOD13_0223BA34: ; 0x0223BA34 + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0x800 + ldr r0, [r0] + bl DC_FlushRange + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x400 + bl GX_LoadOAM + ldr r0, _0223BA80 ; =0x022431D0 + mov r1, #0 + ldr r0, [r0] + mov r2, #0x400 + add r0, r0, #0x400 + bl GXS_LoadOAM + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BA80: .word 0x022431D0 + + arm_func_start MOD13_0223BA84 +MOD13_0223BA84: ; 0x0223BA84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r0, _0223BB14 ; =0x0000080C + mov r1, #4 + bl MOD13_0223B004 + mov r1, r0 + ldr r3, _0223BB18 ; =0x022431D0 + mov r0, #0x200 + mov r2, #0x800 + str r1, [r3] + bl MIi_CpuClearFast + mov r6, #0 + mov r5, r6 + ldr r7, _0223BB18 ; =0x022431D0 + mov r4, #0x40 + mov r8, #8 +_0223BAC0: + ldr r1, [r7] + mov r0, r4 + mov r2, r8 + add r1, r1, r5 + bl MOD13_0223A054 + ldr r1, [r7] + add r5, r5, #0x400 + add r1, r1, r6, lsl #2 + add r6, r6, #1 + str r0, [r1, #0x800] + cmp r6, #2 + blt _0223BAC0 + ldr r1, _0223BB1C ; =MOD13_0223BA34 + mov r0, #1 + mov r2, #0 + mov r3, #0xc8 + bl MOD13_0223C1C4 + ldr r1, _0223BB18 ; =0x022431D0 + ldr r1, [r1] + str r0, [r1, #0x808] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223BB14: .word 0x0000080C +_0223BB18: .word 0x022431D0 +_0223BB1C: .word MOD13_0223BA34 + + arm_func_start MOD13_0223BB20 +MOD13_0223BB20: ; 0x0223BB20 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r5, r0 + mov r4, #0 + bl MOD13_0223B8C4 + ldr r0, _0223BB64 ; =0x022431D4 + ldr r1, [r0] + add r0, r1, #0x1a0 + cmp r5, r0 + movhs r4, #1 + mov r0, #0x1a0 + mla r0, r4, r0, r1 + ldr r0, [r0, #0x19c] + mov r1, r5 + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223BB64: .word 0x022431D4 + + arm_func_start MOD13_0223BB68 +MOD13_0223BB68: ; 0x0223BB68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, r0 + mov r0, #0x1a0 + mul r7, r6, r0 + ldr r0, _0223BCE0 ; =0x022431D4 + mov r4, r1 + ldr r0, [r0] + mov sl, r2 + add r0, r0, r7 + ldr r0, [r0, #0x19c] + mov r5, r3 + bl MOD13_02239F78 + add r1, r4, #3 + bic r1, r1, #3 + mov r4, r0 + mov r8, r1, asr #2 + mov r0, #1 + strh r8, [r4, #0xa] + bl OS_DisableIrqMask + mov sb, r0 + cmp sl, #0 + beq _0223BC44 + ldr r1, _0223BCE0 ; =0x022431D4 + mov r0, #0x1a0 + ldr r1, [r1] + mla r0, r6, r0, r1 + add r6, r0, #0x180 + add r0, r0, #0x18c + cmp r6, r0 + beq _0223BC24 + add r0, r1, r7 + add r1, r0, #0x18c +_0223BBE8: + ldr r0, [r6, #4] + ldrh sl, [r6, #8] + ldrh r3, [r6, #0xa] + ldrh r2, [r0, #8] + add sl, sl, r3 + add r3, sl, r8 + cmp r3, r2 + bgt _0223BC18 + mov r1, r4 + strh sl, [r4, #8] + bl MOD13_0223B888 + b _0223BC24 +_0223BC18: + mov r6, r0 + cmp r0, r1 + bne _0223BBE8 +_0223BC24: + ldr r0, _0223BCE0 ; =0x022431D4 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x18c + cmp r6, r0 + bne _0223BCC8 + bl OS_Terminate + b _0223BCC8 +_0223BC44: + ldr r1, _0223BCE0 ; =0x022431D4 + mov r0, #0x1a0 + ldr r1, [r1] + mla r0, r6, r0, r1 + add r6, r0, #0x18c + add r0, r0, #0x180 + cmp r6, r0 + beq _0223BCAC + add r0, r1, r7 + add r0, r0, #0x180 +_0223BC6C: + ldr sl, [r6] + ldrh r3, [r6, #8] + ldrh r2, [sl, #8] + ldrh r1, [sl, #0xa] + sub r3, r3, r8 + add r1, r2, r1 + cmp r3, r1 + blt _0223BCA0 + mov r0, r6 + mov r1, r4 + strh r3, [r4, #8] + bl MOD13_0223B888 + b _0223BCAC +_0223BCA0: + mov r6, sl + cmp sl, r0 + bne _0223BC6C +_0223BCAC: + ldr r0, _0223BCE0 ; =0x022431D4 + ldr r0, [r0] + add r0, r0, r7 + add r0, r0, #0x180 + cmp r6, r0 + bne _0223BCC8 + bl OS_Terminate +_0223BCC8: + ldrh r1, [r4, #8] + mov r0, sb + str r1, [r5] + bl OS_EnableIrqMask + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0223BCE0: .word 0x022431D4 + + arm_func_start MOD13_0223BCE4 +MOD13_0223BCE4: ; 0x0223BCE4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r0, #0x340 + mov r1, #4 + bl MOD13_0223AFE0 + ldr r4, _0223BDA0 ; =0x022431D4 + mov sl, #0 + mov sb, sl + str r0, [r4] + mov r8, #0x20 + mov r7, #0xc + mov r6, #0x300 + mov r5, #0x400 +_0223BD14: + ldr r1, [r4] + mov r0, r8 + mov r2, r7 + add r1, r1, sb + bl MOD13_0223A054 + ldr r1, [r4] + add r1, r1, sb + str r0, [r1, #0x19c] + bl MOD13_0223B928 + ldr r1, [r4] + add r1, r1, sb + str r0, [r1, #0x198] + ldr r0, [r4] + add r0, r0, sb + add r0, r0, #0x100 + strh r6, [r0, #0x88] + ldr r0, [r4] + add r0, r0, sb + add r0, r0, #0x100 + strh r5, [r0, #0x94] + ldr r0, [r4] + add r1, r0, sb + ldr r0, [r1, #0x198] + add r1, r1, #0x180 + bl MOD13_0223B868 + ldr r0, [r4] + add r1, r0, sb + ldr r0, [r1, #0x198] + add r1, r1, #0x18c + bl MOD13_0223B878 + add sl, sl, #1 + cmp sl, #2 + add sb, sb, #0x1a0 + blt _0223BD14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0223BDA0: .word 0x022431D4 + + arm_func_start MOD13_0223BDA4 +MOD13_0223BDA4: ; 0x0223BDA4 + cmp r1, #0 + mov r3, #0 + ble _0223BDC8 +_0223BDB0: + ldrb r2, [r0, r3] + cmp r2, #0 + beq _0223BDC8 + add r3, r3, #1 + cmp r3, r1 + blt _0223BDB0 +_0223BDC8: + mov r0, r3 + bx lr + + arm_func_start MOD13_0223BDD0 +MOD13_0223BDD0: ; 0x0223BDD0 + ldr ip, _0223BDDC ; =0x020D4CAC + mov r0, #1 + bx ip + .align 2, 0 +_0223BDDC: .word 0x020D4CAC + + arm_func_start MOD13_0223BDE0 +MOD13_0223BDE0: ; 0x0223BDE0 + stmdb sp!, {lr} + sub sp, sp, #4 + add r0, sp, #0 + bl PM_GetLEDPattern + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {pc} + ldr r0, [sp] + cmp r0, #0xf + addeq sp, sp, #4 + ldmeqia sp!, {pc} + mov r0, #0xf + bl PMi_SendLEDPatternCommand + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223BE1C +MOD13_0223BE1C: ; 0x0223BE1C + stmdb sp!, {lr} + sub sp, sp, #4 + ldr r0, _0223BE98 ; =0x000001F3 + bl GX_SetBankForLCDC + mov r0, #0 + mov r1, #0x6800000 + mov r2, #0x40000 + bl MIi_CpuClearFast + ldr r1, _0223BE9C ; =0x06880000 + mov r0, #0 + mov r2, #0x24000 + bl MIi_CpuClearFast + bl GX_DisableBankForLCDC + mov r0, #0x200 + mov r1, #0x7000000 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0 + mov r1, #0x5000000 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0x200 + ldr r1, _0223BEA0 ; =0x07000400 + mov r2, #0x400 + bl MIi_CpuClearFast + mov r0, #0 + ldr r1, _0223BEA4 ; =0x05000400 + mov r2, #0x400 + bl MIi_CpuClearFast + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BE98: .word 0x000001F3 +_0223BE9C: .word 0x06880000 +_0223BEA0: .word 0x07000400 +_0223BEA4: .word 0x05000400 + + arm_func_start MOD13_0223BEA8 +MOD13_0223BEA8: ; 0x0223BEA8 + stmdb sp!, {lr} + sub sp, sp, #4 + bl disableBankForX_ + bl GX_DisableBankForOBJExtPltt_2 + bl GX_DisableBankForSubBGExtPltt + bl GX_DisableBankForSubOBJExtPltt_2 + bl MOD13_0223BE1C + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0] + bl GX_SetBankForBG + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #4] + bl GX_SetBankForOBJ + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #8] + bl GX_SetBankForBGExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0xc] + bl GX_SetBankForOBJExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x10] + bl GX_SetBankForTex + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x14] + bl GX_SetBankForTexPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x18] + bl GX_SetBankForClearImage + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x1c] + bl GX_SetBankForSubBG + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x20] + bl GX_SetBankForSubOBJ + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x24] + bl GX_SetBankForSubBGExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x28] + bl GX_SetBankForSubOBJExtPltt + ldr r0, _0223BFB8 ; =0x022431D8 + ldr r0, [r0, #0x30] + bl GX_SetBankForLCDC + mov r2, #0 + ldr r1, _0223BFBC ; =0x04000050 + ldr r0, _0223BFC0 ; =0x04001050 + strh r2, [r1] + strh r2, [r0] + ldr r1, _0223BFC4 ; =0x04000010 + ldr r0, _0223BFC8 ; =0x04000014 + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFCC ; =0x04000018 + ldr r0, _0223BFD0 ; =0x0400001C + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFD4 ; =0x04001010 + ldr r0, _0223BFD8 ; =0x04001014 + str r2, [r1] + str r2, [r0] + ldr r1, _0223BFDC ; =0x04001018 + ldr r0, _0223BFE0 ; =0x0400101C + str r2, [r1] + str r2, [r0] + mov r0, #1 + bl PM_SetLCDPower + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223BFB8: .word 0x022431D8 +_0223BFBC: .word 0x04000050 +_0223BFC0: .word 0x04001050 +_0223BFC4: .word 0x04000010 +_0223BFC8: .word 0x04000014 +_0223BFCC: .word 0x04000018 +_0223BFD0: .word 0x0400001C +_0223BFD4: .word 0x04001010 +_0223BFD8: .word 0x04001014 +_0223BFDC: .word 0x04001018 +_0223BFE0: .word 0x0400101C + + arm_func_start MOD13_0223BFE4 +MOD13_0223BFE4: ; 0x0223BFE4 + stmdb sp!, {lr} + sub sp, sp, #4 + bl disableBankForX_ + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1] + bl GX_DisableBankForOBJExtPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #4] + bl GX_DisableBankForBGExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #8] + bl GX_DisableBankForOBJExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0xc] + bl GX_DisableBankForTexPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x10] + bl GX_DisableBankForTexPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x14] + bl GX_DisableBankForClearImage + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x18] + bl GX_DisableBankForSubBGExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x1c] + bl GX_DisableBankForSubOBJExtPltt_2 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x20] + bl FUN_020C5E04 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x24] + bl GX_DisableBankForSubOBJExtPltt + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x28] + bl GX_DisableBankForARM7 + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x2c] + bl GX_DisableBankForLCDC + ldr r1, _0223C09C ; =0x022431D8 + str r0, [r1, #0x30] + ldr r0, [r1, #0x2c] + bl GX_SetBankForARM7 + bl MOD13_0223BE1C + add sp, sp, #4 + ldmia sp!, {pc} + .align 2, 0 +_0223C09C: .word 0x022431D8 + + arm_func_start MOD13_0223C0A0 +MOD13_0223C0A0: ; 0x0223C0A0 + ldr r2, _0223C0B4 ; =0x0224320C + ldr r2, [r2] + add r0, r2, r0, lsl #6 + strb r1, [r0, #0x38] + bx lr + .align 2, 0 +_0223C0B4: .word 0x0224320C + + arm_func_start MOD13_0223C0B8 +MOD13_0223C0B8: ; 0x0223C0B8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + mov r4, r1 + ldrb r1, [r4, #0x11] + mov r5, r0 + cmp r1, #0 + beq _0223C0DC + add r0, r4, #0xc + bl MOD13_0223AF90 +_0223C0DC: + mov r0, r4 + bl MOD13_0223B8C4 + ldr r0, _0223C100 ; =0x0224320C + mov r1, r4 + ldr r0, [r0] + ldr r0, [r0, r5, lsl #6] + bl MOD13_02239FD0 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223C100: .word 0x0224320C + + arm_func_start MOD13_0223C104 +MOD13_0223C104: ; 0x0223C104 + ldr ip, _0223C10C ; =MOD13_0223C0B8 + bx ip + .align 2, 0 +_0223C10C: .word MOD13_0223C0B8 + + arm_func_start MOD13_0223C110 +MOD13_0223C110: ; 0x0223C110 + ldr r2, _0223C128 ; =0x0224320C + ldr ip, _0223C12C ; =MOD13_02239FD0 + ldr r2, [r2] + add r0, r2, r0, lsl #6 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0223C128: .word 0x0224320C +_0223C12C: .word MOD13_02239FD0 + + arm_func_start MOD13_0223C130 +MOD13_0223C130: ; 0x0223C130 + str r1, [r0, #8] + bx lr + + arm_func_start MOD13_0223C138 +MOD13_0223C138: ; 0x0223C138 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, _0223C1C0 ; =0x0224320C + mov r7, r0 + ldr r0, [r4] + mov r8, r1 + ldr r0, [r0, r7, lsl #6] + mov r4, r2 + mov r6, r3 + bl MOD13_02239F78 + mov r5, r0 + str r8, [r5, #8] + str r4, [r5, #0xc] + ldrb r1, [sp, #0x18] + strb r6, [r5, #0x10] + mov r0, #1 + strb r1, [r5, #0x11] + bl OS_DisableIrqMask + ldr r1, _0223C1C0 ; =0x0224320C + mov r4, r0 + ldr r0, [r1] + add r0, r0, r7, lsl #6 + ldr r0, [r0, #0x10] +_0223C190: + ldrb r1, [r0, #0x10] + cmp r6, r1 + bhs _0223C1A8 + mov r1, r5 + bl MOD13_0223B888 + b _0223C1B0 +_0223C1A8: + ldr r0, [r0, #4] + b _0223C190 +_0223C1B0: + mov r0, r4 + bl OS_EnableIrqMask + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0223C1C0: .word 0x0224320C + + arm_func_start MOD13_0223C1C4 +MOD13_0223C1C4: ; 0x0223C1C4 + stmdb sp!, {lr} + sub sp, sp, #4 + mov ip, #0 + str ip, [sp] + bl MOD13_0223C138 + add sp, sp, #4 + ldmia sp!, {pc} + + arm_func_start MOD13_0223C1E0 +MOD13_0223C1E0: ; 0x0223C1E0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + ldr r7, _0223C2A4 ; =0x0224320C + mov r6, r0 + ldr r0, [r7] + mov r4, r6, lsl #6 + add r2, r0, r6, lsl #6 + ldrb r1, [r2, #0x38] + cmp r1, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldr r5, [r2, #0x10] + add r1, r2, #0x20 + cmp r5, r1 + beq _0223C244 +_0223C21C: + ldr r1, [r5, #0xc] + ldr r2, [r5, #8] + mov r0, r5 + blx r2 + ldr r0, [r7] + ldr r5, [r5, #4] + add r1, r0, r4 + add r1, r1, #0x20 + cmp r5, r1 + bne _0223C21C +_0223C244: + add r1, r0, r6, lsl #6 + ldr r1, [r1, #0x34] + mov r4, r6, lsl #6 + cmp r1, #0 + mov r5, #0 + addle sp, sp, #4 + ldmleia sp!, {r4, r5, r6, r7, pc} + ldr r7, _0223C2A4 ; =0x0224320C +_0223C264: + add r0, r4, r0 + ldr r0, [r0, #4] + bl MOD13_02239F78 + movs r1, r0 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, r6 + bl MOD13_0223C0B8 + ldr r0, [r7] + add r5, r5, #1 + add r1, r4, r0 + ldr r1, [r1, #0x34] + cmp r5, r1 + blt _0223C264 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C2A4: .word 0x0224320C + + arm_func_start MOD13_0223C2A8 +MOD13_0223C2A8: ; 0x0223C2A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #4 + ldr r4, _0223C2F0 ; =0x0224320C + mov r5, #0 +_0223C2B8: + ldr r0, [r4] + add r0, r0, r5, lsl #6 + ldr r0, [r0, #8] + bl MOD13_0223B904 + ldr r0, [r4] + ldr r0, [r0, r5, lsl #6] + bl MOD13_0223A030 + add r5, r5, #1 + cmp r5, #2 + blt _0223C2B8 + ldr r0, _0223C2F0 ; =0x0224320C + bl MOD13_0223AF90 + add sp, sp, #4 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0223C2F0: .word 0x0224320C + + arm_func_start MOD13_0223C2F4 +MOD13_0223C2F4: ; 0x0223C2F4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #4 + mov r0, #0x80 + mov r1, #4 + bl MOD13_0223B004 + ldr r4, _0223C418 ; =0x0224320C + mov sl, #0 + ldr sb, _0223C41C ; =0x0223F764 + mov r8, sl + str r0, [r4] + str sl, [sp] + mov r7, #4 + mov fp, #0x14 + mov r6, #0xff + mov r5, #1 +_0223C330: + ldr r0, [r4] + ldrb r2, [sb] + add r1, r0, sl, lsl #6 + mov r0, #0x14 + str r2, [r1, #0x34] + ldrb r2, [sb] + mov r1, r7 + mul r0, r2, r0 + bl MOD13_0223B004 + ldr r1, [r4] + mov r2, fp + add r1, r1, sl, lsl #6 + str r0, [r1, #0x3c] + ldr r1, [r4] + ldrb r0, [sb] + add r1, r1, sl, lsl #6 + ldr r1, [r1, #0x3c] + bl MOD13_0223A054 + ldr r1, [r4] + str r0, [r1, sl, lsl #6] + ldrb r0, [sb] + bl MOD13_0223A094 + ldr r1, [r4] + add r1, r1, sl, lsl #6 + str r0, [r1, #4] + bl MOD13_0223B928 + ldr r1, [r4] + add r1, r1, sl, lsl #6 + str r0, [r1, #8] + ldr r0, [r4] + add r1, r0, sl, lsl #6 + ldr r0, [sp] + strb r0, [r1, #0x1c] + ldr r0, [r4] + add r0, r0, sl, lsl #6 + strb r6, [r0, #0x30] + ldr r1, [r4] + add r0, r1, sl, lsl #6 + add r1, r1, r8 + ldr r0, [r0, #8] + add r1, r1, #0xc + bl MOD13_0223B868 + ldr r1, [r4] + add r0, r1, sl, lsl #6 + add r1, r1, r8 + ldr r0, [r0, #8] + add r1, r1, #0x20 + bl MOD13_0223B878 + ldr r0, [r4] + add sb, sb, #1 + add r0, r0, sl, lsl #6 + add sl, sl, #1 + strb r5, [r0, #0x38] + add r8, r8, #0x40 + cmp sl, #2 + blt _0223C330 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0223C418: .word 0x0224320C +_0223C41C: .word 0x0223F764 + + .section .data + ; 0x0223C420 + .incbin "baserom.nds", 0x2237C0, 0x4620 + + .section .bss + ; 0x02240A40 + .space 0x27E0 diff --git a/arm9/modules/13/asm/module_13_init.s b/arm9/modules/13/asm/module_13_init.s new file mode 100644 index 00000000..03402138 --- /dev/null +++ b/arm9/modules/13/asm/module_13_init.s @@ -0,0 +1,33 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD13_02211E60 +MOD13_02211E60: ; 0x02211E60 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0202E49C + bl OS_InitTick + bl OS_InitAlarm + bl OS_DisableInterrupts + mov r1, #1 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #0x12 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #1 + mov r2, #0 + bl MOD13_02223494 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl OS_RestoreInterrupts + ldr r1, _02211EA0 ; =0x04000208 + ldrh r0, [r1] + mov r0, #1 + strh r0, [r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_02211EA0: .word 0x04000208 diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s new file mode 100644 index 00000000..b180ff6b --- /dev/null +++ b/arm9/modules/13/asm/module_13_thumb.s @@ -0,0 +1,14779 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD13_022172DC +MOD13_022172DC: ; 0x022172DC + str r0, [r1] + mov r0, #1 + strh r0, [r1, #4] + bx lr + + thumb_func_start MOD13_022172E4 +MOD13_022172E4: ; 0x022172E4 + mov r1, #0 + str r1, [r0] + strh r1, [r0, #4] + strh r1, [r0, #6] + bx lr + .align 2, 0 + + thumb_func_start MOD13_022172F0 +MOD13_022172F0: ; 0x022172F0 + push {r4, lr} + sub sp, #0x10 + ldr r0, _02217358 ; =0x02240B3C + ldr r0, [r0] + cmp r0, #0 + bne _02217334 + mov r4, #0 + add r0, sp, #0 + add r1, r4, #0 + mov r2, #0xc + bl MOD13_022174C0 + add r0, sp, #0 + bl RTC_GetTime + cmp r0, #0 + bne _02217322 + ldr r0, [sp] + lsl r0, r0, #0xa + add r1, r4, r0 + ldr r0, [sp, #4] + lsl r0, r0, #3 + add r1, r1, r0 + ldr r0, [sp, #8] + add r4, r1, r0 +_02217322: + ldr r0, _0221735C ; =0x02240B54 + str r4, [r0] + ldr r1, _02217360 ; =0x5D588B65 + str r1, [r0, #4] + ldr r1, _02217364 ; =0x00269EC3 + str r1, [r0, #8] + mov r1, #1 + ldr r0, _02217358 ; =0x02240B3C + str r1, [r0] +_02217334: + ldr r0, _0221735C ; =0x02240B54 + ldr r3, [r0, #8] + ldr r2, [r0, #4] + ldr r1, [r0] + mul r2, r1 + add r1, r3, r2 + str r1, [r0] + lsr r1, r1, #0x10 + ldr r0, _02217368 ; =0x00007FFF + mul r1, r0 + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add sp, #0x10 + pop {r4} + pop {r3} + bx r3 + nop +_02217358: .word 0x02240B3C +_0221735C: .word 0x02240B54 +_02217360: .word 0x5D588B65 +_02217364: .word 0x00269EC3 +_02217368: .word 0x00007FFF + + thumb_func_start MOD13_0221736C +MOD13_0221736C: ; 0x0221736C + mov r2, #0 + ldrsb r1, [r0, r2] + cmp r1, #0 + beq _0221737C +_02217374: + add r2, r2, #1 + ldrsb r1, [r0, r2] + cmp r1, #0 + bne _02217374 +_0221737C: + add r0, r2, #0 + bx lr + + thumb_func_start MOD13_02217380 +MOD13_02217380: ; 0x02217380 + asr r2, r0, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r0, #8 + ldr r0, _02217394 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr + .align 2, 0 +_02217394: .word 0x0000FF00 + + thumb_func_start MOD13_02217398 +MOD13_02217398: ; 0x02217398 + push {r4} + sub sp, #4 + lsl r1, r0, #0x18 + ldr r2, _022173C4 ; =0xFF000000 + and r1, r2 + lsl r4, r0, #8 + ldr r2, _022173C8 ; =0x00FF0000 + and r4, r2 + lsr r3, r0, #0x18 + mov r2, #0xff + and r3, r2 + lsr r2, r0, #8 + ldr r0, _022173CC ; =0x0000FF00 + and r2, r0 + orr r3, r2 + orr r4, r3 + orr r1, r4 + add r0, r1, #0 + add sp, #4 + pop {r4} + bx lr + nop +_022173C4: .word 0xFF000000 +_022173C8: .word 0x00FF0000 +_022173CC: .word 0x0000FF00 + + thumb_func_start MOD13_022173D0 +MOD13_022173D0: ; 0x022173D0 + asr r2, r0, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r0, #8 + ldr r0, _022173E4 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr + .align 2, 0 +_022173E4: .word 0x0000FF00 + + thumb_func_start MOD13_022173E8 +MOD13_022173E8: ; 0x022173E8 + push {r4} + sub sp, #4 + lsl r1, r0, #0x18 + ldr r2, _02217414 ; =0xFF000000 + and r1, r2 + lsl r4, r0, #8 + ldr r2, _02217418 ; =0x00FF0000 + and r4, r2 + lsr r3, r0, #0x18 + mov r2, #0xff + and r3, r2 + lsr r2, r0, #8 + ldr r0, _0221741C ; =0x0000FF00 + and r2, r0 + orr r3, r2 + orr r4, r3 + orr r1, r4 + add r0, r1, #0 + add sp, #4 + pop {r4} + bx lr + nop +_02217414: .word 0xFF000000 +_02217418: .word 0x00FF0000 +_0221741C: .word 0x0000FF00 + + thumb_func_start MOD13_02217420 +MOD13_02217420: ; 0x02217420 + ldr r3, _02217424 ; =0x0209A7B8 + bx r3 + .align 2, 0 +_02217424: .word 0x0209A7B8 + + thumb_func_start MOD13_02217428 +MOD13_02217428: ; 0x02217428 + strb r2, [r1] + ldr r3, _02217430 ; =0x0209A9A4 + bx r3 + nop +_02217430: .word 0x0209A9A4 + + thumb_func_start MOD13_02217434 +MOD13_02217434: ; 0x02217434 + ldr r3, _02217438 ; =0x0209A9D0 + bx r3 + .align 2, 0 +_02217438: .word 0x0209A9D0 + + thumb_func_start MOD13_0221743C +MOD13_0221743C: ; 0x0221743C + bx lr + .align 2, 0 + + thumb_func_start MOD13_02217440 +MOD13_02217440: ; 0x02217440 + push {r4, r5, lr} + sub sp, #4 + ldr r5, [sp, #0x14] + ldr r4, [sp, #0x10] + strb r5, [r4] + str r4, [sp] + bl FUN_0209A7D0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217458 +MOD13_02217458: ; 0x02217458 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r5, [sp, #0x18] + mov r4, #0 + ldr r2, [r1] + ldr r0, [r1, #4] + str r2, [sp] + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, _022174A0 ; =0x01FF6210 + mul r0, r1 + mov r1, #0x40 + bl _s32_div_f + asr r1, r0, #0x1f + add r6, r4, r0 + adc r4, r1 + ldr r0, [r5, #4] + ldr r1, _022174A0 ; =0x01FF6210 + mul r0, r1 + mov r1, #0x40 + bl _s32_div_f + asr r1, r0, #0x1f + add r2, r6, r0 + adc r4, r1 + add r0, sp, #0 + mov r1, #1 + add r3, r4, #0 + bl FUN_0209A0AC + add sp, #8 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_022174A0: .word 0x01FF6210 + + thumb_func_start MOD13_022174A4 +MOD13_022174A4: ; 0x022174A4 + push {r4, r5, lr} + sub sp, #4 + ldr r4, [sp, #0x14] + ldr r5, [r4] + ldr r4, [sp, #0x10] + strb r5, [r4] + str r4, [sp] + bl FUN_0209A880 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_022174C0 +MOD13_022174C0: ; 0x022174C0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + ldr r3, _022174C8 ; =0x020CE34C + bx r3 + .align 2, 0 +_022174C8: .word 0x020CE34C + + thumb_func_start MOD13_022174CC +MOD13_022174CC: ; 0x022174CC + add r3, r0, #0 + add r0, r1, #0 + add r1, r3, #0 + ldr r3, _022174D8 ; =0x020CE3E0 + bx r3 + nop +_022174D8: .word 0x020CE3E0 + + thumb_func_start MOD13_022174DC +MOD13_022174DC: ; 0x022174DC + push {r4} + sub sp, #4 + mov r4, #0 + b _022174E8 +_022174E4: + add r0, r0, #1 + add r1, r1, #1 +_022174E8: + add r3, r2, #0 + sub r2, r2, #1 + cmp r3, #0 + ble _022174FA + ldrb r4, [r0] + ldrb r3, [r1] + sub r4, r4, r3 + cmp r4, #0 + beq _022174E4 +_022174FA: + add r0, r4, #0 + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_02217504 +MOD13_02217504: ; 0x02217504 + push {lr} + sub sp, #4 + bl THUNK_FUN_02099BC8 + cmp r0, #0 + bge _0221751A + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r3} + bx r3 +_0221751A: + bl MOD13_02219C60 + cmp r0, #0 + beq _02217526 + mov r0, #1 + b _02217528 +_02217526: + mov r0, #0 +_02217528: + neg r0, r0 + add sp, #4 + pop {r3} + bx r3 + + thumb_func_start MOD13_02217530 +MOD13_02217530: ; 0x02217530 + push {r4, r5, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r2, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x10] + add r0, r5, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x14] + add r0, r4, #0 + bl MOD13_022173E8 + ldr r1, _0221758C ; =0x0223F7C8 + str r0, [r1, #0x18] + add r0, r1, #0 + bl FUN_0209A2C0 + cmp r0, #0 + bge _0221756A + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_0221756A: + ldr r5, _02217590 ; =0x021C8F04 + ldr r0, [r5] + cmp r0, #0 + bne _02217580 + mov r4, #0x64 +_02217574: + add r0, r4, #0 + bl OS_Sleep + ldr r0, [r5] + cmp r0, #0 + beq _02217574 +_02217580: + mov r0, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221758C: .word 0x0223F7C8 +_02217590: .word 0x021C8F04 + + thumb_func_start MOD13_02217594 +MOD13_02217594: ; 0x02217594 + push {lr} + sub sp, #4 + add r0, r1, #0 + ldr r1, _022175A8 ; =0x0224190C + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + nop +_022175A8: .word 0x0224190C + + thumb_func_start MOD13_022175AC +MOD13_022175AC: ; 0x022175AC + push {lr} + sub sp, #4 + cmp r1, #0 + ble _022175C2 + add r0, r1, #0 + ldr r1, _022175CC ; =0x02241900 + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 +_022175C2: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 + nop +_022175CC: .word 0x02241900 + + thumb_func_start MOD13_022175D0 +MOD13_022175D0: ; 0x022175D0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r0, r6, #0 + mov r1, #2 + bl _s32_div_f + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, r7 + add r2, r7, #0 + bl MOD13_022174CC + add r0, r4, r7 + add r1, r5, #0 + add r2, r7, #0 + bl MOD13_022174CC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_022174CC + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221760C +MOD13_0221760C: ; 0x0221760C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, r2, #0 + mov r1, #2 + bl _s32_div_f + mov r6, #0 + cmp r0, #0 + ble _02217630 +_02217620: + add r3, r0, r6 + ldrb r2, [r4, r3] + ldrsb r1, [r5, r6] + eor r2, r1 + strb r2, [r4, r3] + add r6, r6, #1 + cmp r6, r0 + blt _02217620 +_02217630: + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217638 +MOD13_02217638: ; 0x02217638 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + str r3, [sp] + ldr r4, [sp, #0x18] + add r0, r2, #0 + mov r1, #2 + bl _s32_div_f + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl _s32_div_f + add r2, r1, #0 + mov r1, #0 + cmp r7, #0 + ble _0221767A + add r6, r1, #0 +_02217660: + strb r1, [r5, r1] + ldrsb r0, [r5, r1] + ldr r3, [sp] + ldrsb r3, [r3, r2] + add r2, r2, #1 + eor r0, r3 + strb r0, [r5, r1] + cmp r2, r4 + blt _02217674 + add r2, r6, #0 +_02217674: + add r1, r1, #1 + cmp r1, r7 + blt _02217660 +_0221767A: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217684 +MOD13_02217684: ; 0x02217684 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + bl MOD13_022198B4 + add r6, r0, #0 + cmp r6, #0 + bne _022176AE + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022176AE: + add r0, r5, #0 + bl MOD13_022198B4 + str r0, [sp, #0xc] + cmp r0, #0 + bne _022176CC + add r0, r6, #0 + bl MOD13_022198A0 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022176CC: + mov r4, #0 +_022176CE: + ldr r0, [sp, #8] + str r0, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + ldr r3, [sp, #4] + bl MOD13_02217638 + add r0, r6, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD13_0221760C + add r0, r7, #0 + add r1, r5, #0 + ldr r2, [sp, #0xc] + bl MOD13_022175D0 + add r4, r4, #1 + cmp r4, #2 + blt _022176CE + add r0, r6, #0 + bl MOD13_022198A0 + ldr r0, [sp, #0xc] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217710 +MOD13_02217710: ; 0x02217710 + push {r4, r5, r6, r7} + mov r6, #0 + add r4, r6, #0 + ldr r2, _02217744 ; =0xEDB88320 + mov r3, #1 +_0221771A: + add r7, r6, #0 + add r5, r4, #0 +_0221771E: + add r0, r7, #0 + and r0, r3 + cmp r0, #0 + beq _0221772C + lsr r7, r7, #1 + eor r7, r2 + b _0221772E +_0221772C: + lsr r7, r7, #1 +_0221772E: + add r5, r5, #1 + cmp r5, #8 + blt _0221771E + stmia r1!, {r7} + add r6, r6, #1 + ldr r0, _02217748 ; =0x00000100 + cmp r6, r0 + blt _0221771A + pop {r4, r5, r6, r7} + bx lr + nop +_02217744: .word 0xEDB88320 +_02217748: .word 0x00000100 + + thumb_func_start MOD13_0221774C +MOD13_0221774C: ; 0x0221774C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + add r4, r2, #0 + ldr r6, [sp, #0x18] + cmp r3, #0 + bne _02217764 + add r0, r3, #0 + add r1, r6, #0 + bl MOD13_02217710 +_02217764: + mov r1, #0 + cmp r4, #0 + ble _02217782 + mov r2, #0xff +_0221776C: + lsr r0, r5, #8 + ldrb r3, [r7, r1] + eor r5, r3 + and r5, r2 + lsl r3, r5, #2 + ldr r3, [r6, r3] + add r5, r0, #0 + eor r5, r3 + add r1, r1, #1 + cmp r1, r4 + blt _0221776C +_02217782: + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221778C +MOD13_0221778C: ; 0x0221778C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r2, r1, #0 + ldr r0, _022177B4 ; =0x02240E60 + str r0, [sp] + mov r3, #0 + mvn r0, r3 + add r1, r4, #0 + bl MOD13_0221774C + mov r1, #0 + mvn r1, r1 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add sp, #8 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_022177B4: .word 0x02240E60 + + thumb_func_start MOD13_022177B8 +MOD13_022177B8: ; 0x022177B8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + ldr r4, [r5, #8] + ldr r0, [r5, #0xc] + str r0, [sp] + ldr r0, [r5] + add r0, r0, #1 + ldr r1, [sp] + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r6, r0, #0x18 + ldrb r7, [r4, r6] + ldr r0, [r5, #4] + add r0, r7, r0 + ldr r1, [sp] + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r4, r1] + str r6, [r5] + str r1, [r5, #4] + strb r7, [r4, r1] + strb r0, [r4, r6] + add r0, r7, r0 + ldr r1, [r5, #0xc] + bl _u32_div_f + ldrb r0, [r4, r1] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217800 +MOD13_02217800: ; 0x02217800 + push {r4, r5, r6, r7, lr} + sub sp, #4 + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r4, #0 + cmp r7, #0 + bls _02217828 +_02217812: + ldr r0, [sp] + bl MOD13_022177B8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldrb r0, [r6, r4] + eor r1, r0 + strb r1, [r5, r4] + add r4, r4, #1 + cmp r4, r7 + blo _02217812 +_02217828: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217830 +MOD13_02217830: ; 0x02217830 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [r0, #8] + mov r0, #0 + ldr r1, [sp] + str r0, [r1, #4] + ldr r2, [r1, #4] + str r2, [r1] + lsl r2, r3, #0 + str r2, [r1, #0xc] + lsl r1, r3, #0 + cmp r1, #0 + bls _0221785C +_02217852: + strb r0, [r5, r0] + add r0, r0, #1 + ldr r1, [sp, #0xc] + cmp r0, r1 + blo _02217852 +_0221785C: + mov r1, #0 + add r6, r1, #0 + add r4, r1, #0 + ldr r0, [sp, #0xc] + cmp r0, #0 + bls _02217894 + str r1, [sp, #0x10] +_0221786A: + ldrb r7, [r5, r4] + ldr r0, [sp, #4] + ldrb r0, [r0, r6] + add r0, r1, r0 + add r0, r7, r0 + ldr r1, [sp] + ldr r1, [r1, #0xc] + bl _u32_div_f + ldrb r0, [r5, r1] + strb r7, [r5, r1] + strb r0, [r5, r4] + add r6, r6, #1 + ldr r0, [sp, #8] + cmp r6, r0 + blo _0221788C + ldr r6, [sp, #0x10] +_0221788C: + add r4, r4, #1 + ldr r0, [sp, #0xc] + cmp r4, r0 + blo _0221786A +_02217894: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221789C +MOD13_0221789C: ; 0x0221789C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r0, r4, #0 + bl MOD13_022198B4 + str r0, [sp, #8] + cmp r0, #0 + bne _022178C6 + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022178C6: + ldr r0, _02217928 ; =0x02240B7C + ldr r1, [sp, #0x28] + mov r2, #2 + bl MOD13_022174CC + ldr r0, _0221792C ; =0x02240B7E + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + bl MOD13_022174CC + add r0, sp, #0 + ldr r1, _02217928 ; =0x02240B7C + ldr r2, [sp, #0x30] + add r2, r2, #2 + add r3, r4, #0 + bl MOD13_02217830 + add r0, sp, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD13_02217800 + add r0, r5, #0 + add r1, r4, #0 + bl MOD13_0221778C + cmp r0, r6 + beq _02217918 + mov r0, #0x12 + bl MOD13_02218BF4 + ldr r0, [sp, #8] + bl MOD13_022198A0 + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217918: + ldr r0, [sp, #8] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217928: .word 0x02240B7C +_0221792C: .word 0x02240B7E + + thumb_func_start MOD13_02217930 +MOD13_02217930: ; 0x02217930 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + add r4, r3, #0 + add r1, r5, #0 + bl MOD13_0221778C + strb r0, [r4] + add r0, r5, #0 + bl MOD13_022198B4 + str r0, [sp, #0xc] + cmp r0, #0 + bne _0221795C + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221795C: + bl MOD13_022172F0 + add r1, sp, #0 + strh r0, [r1] + ldr r0, [sp, #0x28] + add r1, sp, #0 + mov r2, #2 + bl MOD13_022174CC + ldr r0, _022179AC ; =0x02240B7C + ldr r1, [sp, #0x28] + mov r2, #2 + bl MOD13_022174CC + ldr r0, _022179B0 ; =0x02240B7E + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + bl MOD13_022174CC + add r0, sp, #4 + ldr r1, _022179AC ; =0x02240B7C + ldr r2, [sp, #0x30] + add r2, r2, #2 + add r3, r5, #0 + bl MOD13_02217830 + add r0, sp, #4 + add r1, r7, #0 + add r2, r6, #0 + add r3, r5, #0 + bl MOD13_02217800 + ldr r0, [sp, #0xc] + bl MOD13_022198A0 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_022179AC: .word 0x02240B7C +_022179B0: .word 0x02240B7E + + thumb_func_start MOD13_022179B4 +MOD13_022179B4: ; 0x022179B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + add r0, sp, #8 + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #8 + strb r1, [r0, #1] + ldr r0, _02217A14 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #8 + strh r0, [r1, #2] + ldr r0, _02217A18 ; =0x02240B60 + ldr r0, [r0, #0x10] + bl MOD13_022173E8 + str r0, [sp, #0xc] + cmp r4, #0xff + beq _022179F2 + ldr r1, _02217A18 ; =0x02240B60 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _022179F8 +_022179F2: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0xc] +_022179F8: + add r0, sp, #8 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD13_02217440 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217A14: .word 0x00005790 +_02217A18: .word 0x02240B60 + + thumb_func_start MOD13_02217A1C +MOD13_02217A1C: ; 0x02217A1C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r0, #1 + bl MOD13_022173D0 + strh r0, [r5] + mov r0, #0 + strh r0, [r5, #2] + strh r0, [r5, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #6] + mov r0, #0 + strh r0, [r5, #8] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xa] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xc] + add r1, sp, #8 + mov r0, #0x10 + ldrsb r0, [r1, r0] + strb r0, [r5, #0xe] + mov r0, #0x14 + ldrsb r0, [r1, r0] + strb r0, [r5, #0xf] + add r5, #0x10 + add r0, r5, #0 + ldr r1, [sp, #0x20] + mov r2, #8 + bl MOD13_022174CC + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217A7C +MOD13_02217A7C: ; 0x02217A7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r4, r3, #0 + cmp r0, #1 + bne _02217AC0 + mov r1, #1 + ldr r0, [sp, #0x18] + strh r1, [r0] + add r0, r5, #2 + str r0, [sp] + ldr r0, _02217AD4 ; =0x02240B4C + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r2, #0 + add r1, r5, #4 + mov r2, #0 + ldrsh r2, [r4, r2] + ldr r3, [sp, #0x1c] + bl MOD13_02217930 + ldrh r0, [r4] + bl MOD13_022173D0 + strh r0, [r5] + mov r0, #0 + ldrsh r0, [r4, r0] + add r0, r0, #4 + strh r0, [r4] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_02217AC0: + add r0, r5, #0 + add r1, r2, #0 + mov r2, #0 + ldrsh r2, [r4, r2] + bl MOD13_022174CC + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 +_02217AD4: .word 0x02240B4C + + thumb_func_start MOD13_02217AD8 +MOD13_02217AD8: ; 0x02217AD8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + mov r6, #0 + ldr r1, _02217B60 ; =0x02240B60 + mov r0, #0x19 + ldrsb r0, [r1, r0] + strb r0, [r5] + mov r0, #1 + strb r0, [r5, #1] + ldr r0, [r1, #4] + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r5, #6 + ldr r1, [r1] + add r2, r4, #0 + bl MOD13_022174CC + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #2] + add r0, r4, #6 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, r0, #1 + mov r1, #2 + bl _s32_div_f + lsl r0, r0, #0x11 + asr r7, r0, #0x10 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #4] + add r0, r6, r7 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r4, r5, r7 + mov r0, #0x60 + strb r0, [r5, r7] + mov r0, #0 + strb r0, [r4, #1] + bl MOD13_022173D0 + strh r0, [r4, #4] + mov r0, #0xe + bl MOD13_022173E8 + str r0, [sp] + add r0, r4, #6 + add r1, sp, #0 + mov r2, #4 + bl MOD13_022174CC + mov r0, #4 + bl MOD13_022173D0 + strh r0, [r4, #2] + add r6, #0xa + lsl r0, r6, #0x10 + asr r0, r0, #0x10 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02217B60: .word 0x02240B60 + + thumb_func_start MOD13_02217B64 +MOD13_02217B64: ; 0x02217B64 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + add r6, r2, #0 + ldr r0, _02217BC4 ; =0x02240B48 + ldr r4, [r0] + add r0, r4, #0 + mov r1, #0 + ldr r2, _02217BC8 ; =0x000005DC + bl MOD13_022174C0 + add r0, sp, #0xc + add r5, #0x10 + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174CC + ldr r0, _02217BCC ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, sp, #0xc + mov r1, #8 + ldr r2, _02217BCC ; =0x0223F820 + bl MOD13_02217684 + mov r2, #0 + str r2, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0xc + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, _02217BD0 ; =0x00003000 + add r3, r2, #0 + bl MOD13_02217A1C + add r0, r4, #0 + mov r1, #0x18 + mov r2, #0 + add r3, r6, #0 + bl MOD13_022179B4 + mov r0, #0 + add sp, #0x18 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_02217BC4: .word 0x02240B48 +_02217BC8: .word 0x000005DC +_02217BCC: .word 0x0223F820 +_02217BD0: .word 0x00003000 + + thumb_func_start MOD13_02217BD4 +MOD13_02217BD4: ; 0x02217BD4 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0 + add r0, sp, #0xc + strb r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, _02217CB0 ; =0x02240B48 + ldr r4, [r0] + add r0, sp, #0x1c + mov r2, #8 + bl MOD13_022174C0 + add r0, r4, #0 + mov r1, #0 + ldr r2, _02217CB4 ; =0x000005DC + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0xc + strb r1, [r0, #0x10] + mov r1, #0 + strb r1, [r0, #0x11] + mov r0, #4 + bl MOD13_022173D0 + add r1, sp, #0xc + strh r0, [r1, #0x12] + ldr r0, _02217CB8 ; =0x02240B60 + ldr r0, [r0, #8] + str r0, [sp, #0x20] + bl MOD13_022173E8 + str r0, [sp, #0x20] + mov r1, #8 + add r0, sp, #0xc + strh r1, [r0, #2] + add r0, sp, #0x10 + str r0, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + ldr r0, _02217CBC ; =0x02240B34 + ldr r0, [r0] + add r1, r4, #0 + add r1, #0x18 + add r2, sp, #0x1c + add r3, sp, #0xc + add r3, #2 + bl MOD13_02217A7C + add r0, sp, #0x10 + add r0, #2 + add r5, #8 + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174CC + add r0, sp, #0x10 + add r0, #2 + mov r1, #8 + ldr r2, _02217CC0 ; =0x0223F820 + mov r3, #6 + bl MOD13_02217684 + cmp r0, #0 + beq _02217C6E + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217C6E: + add r3, sp, #0xc + mov r0, #0 + ldrsb r0, [r3, r0] + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0x10 + add r0, #2 + str r0, [sp, #8] + add r0, r4, #0 + ldr r1, _02217CC4 ; =0x00002000 + mov r2, #2 + ldrsh r2, [r3, r2] + mov r5, #4 + ldrsh r3, [r3, r5] + bl MOD13_02217A1C + add r2, sp, #0xc + mov r1, #2 + ldrsh r0, [r2, r1] + add r0, #0x18 + strh r0, [r2, #2] + add r0, r4, #0 + ldrsh r1, [r2, r1] + mov r2, #0 + add r3, r6, #0 + bl MOD13_022179B4 + mov r0, #0 + add sp, #0x28 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_02217CB0: .word 0x02240B48 +_02217CB4: .word 0x000005DC +_02217CB8: .word 0x02240B60 +_02217CBC: .word 0x02240B34 +_02217CC0: .word 0x0223F820 +_02217CC4: .word 0x00002000 + + thumb_func_start MOD13_02217CC8 +MOD13_02217CC8: ; 0x02217CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r1, #0 + str r2, [sp, #0xc] + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0] + strh r1, [r0, #2] + strh r1, [r0, #4] + ldr r0, _02217E08 ; =0x02240B48 + ldr r5, [r0] + add r0, r5, #0 + ldr r2, _02217E0C ; =0x000005DC + bl MOD13_022174C0 + ldr r0, _02217E10 ; =0x00000210 + bl MOD13_022198B4 + add r4, r0, #0 + cmp r4, #0 + bne _02217D04 + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217D04: + mov r1, #0 + ldr r2, _02217E10 ; =0x00000210 + bl MOD13_022174C0 + add r6, r5, #0 + add r6, #0x18 + ldr r0, _02217E14 ; =0x02240B4C + add r1, r7, #0 + mov r2, #8 + bl MOD13_022174CC + add r0, sp, #0x14 + add r0, #2 + ldr r1, _02217E14 ; =0x02240B4C + mov r2, #8 + bl MOD13_022174CC + add r0, r4, #4 + bl MOD13_02217AD8 + add r1, sp, #0x10 + strh r0, [r1, #2] + mov r0, #2 + ldrsh r0, [r1, r0] + cmp r0, #0 + bge _02217D54 + mov r0, #3 + bl MOD13_02218BF4 + cmp r4, #0 + beq _02217D48 + add r0, r4, #0 + bl MOD13_022198A0 +_02217D48: + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217D54: + mov r0, #0 + strb r0, [r4] + ldrh r0, [r1, #2] + bl MOD13_022173D0 + strh r0, [r4, #2] + add r1, sp, #0x10 + mov r0, #2 + ldrsh r0, [r1, r0] + add r0, r0, #4 + strh r0, [r1, #2] + add r0, sp, #0x14 + str r0, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + mov r0, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, sp, #0x10 + add r3, #2 + bl MOD13_02217A7C + add r1, sp, #0x10 + mov r0, #4 + ldrsh r2, [r1, r0] + mov r0, #0x10 + orr r2, r0 + strh r2, [r1, #4] + add r0, sp, #0x14 + add r0, #2 + mov r1, #8 + ldr r2, _02217E18 ; =0x0223F820 + mov r3, #6 + bl MOD13_02217684 + cmp r0, #0 + beq _02217DBA + mov r0, #2 + bl MOD13_02218BF4 + cmp r4, #0 + beq _02217DAE + add r0, r4, #0 + bl MOD13_022198A0 +_02217DAE: + mov r0, #0 + mvn r0, r0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217DBA: + add r3, sp, #0x10 + mov r0, #0 + ldrsb r0, [r3, r0] + str r0, [sp] + mov r0, #0x11 + str r0, [sp, #4] + add r0, sp, #0x14 + add r0, #2 + str r0, [sp, #8] + add r0, r5, #0 + ldr r1, _02217E1C ; =0x00001000 + mov r2, #2 + ldrsh r2, [r3, r2] + mov r6, #4 + ldrsh r3, [r3, r6] + bl MOD13_02217A1C + add r2, sp, #0x10 + mov r1, #2 + ldrsh r0, [r2, r1] + add r0, #0x18 + strh r0, [r2, #2] + add r0, r5, #0 + ldrsh r1, [r2, r1] + mov r2, #0xff + ldr r3, [sp, #0xc] + bl MOD13_022179B4 + cmp r4, #0 + beq _02217DFC + add r0, r4, #0 + bl MOD13_022198A0 +_02217DFC: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02217E08: .word 0x02240B48 +_02217E0C: .word 0x000005DC +_02217E10: .word 0x00000210 +_02217E14: .word 0x02240B4C +_02217E18: .word 0x0223F820 +_02217E1C: .word 0x00001000 + + thumb_func_start MOD13_02217E20 +MOD13_02217E20: ; 0x02217E20 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + cmp r0, #0 + beq _02217E36 + cmp r0, #1 + beq _02217E4C + cmp r0, #2 + beq _02217E62 + b _02217E78 +_02217E36: + mov r0, #2 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217CC8 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E4C: + mov r0, #3 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217BD4 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E62: + mov r0, #5 + bl MOD13_02218870 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_02217B64 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02217E78: + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02217E84 +MOD13_02217E84: ; 0x02217E84 + mov r2, #0 + mov r1, #0x10 + and r0, r1 + cmp r0, #0 + beq _02217E90 + mov r2, #1 +_02217E90: + add r0, r2, #0 + bx lr + + thumb_func_start MOD13_02217E94 +MOD13_02217E94: ; 0x02217E94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp, #4] + mov r5, #0 + cmp r6, #0 + bgt _02217EB2 + mov r0, #1 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217EB2: + ldr r1, _02217FA0 ; =0x0223F7B8 + add r7, r1, r0 +_02217EB6: + add r2, r4, #0 + ldrb r1, [r4] + ldrb r0, [r7] + cmp r1, r0 + beq _02217EDC + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r0, r0, #4 + add r4, r4, r0 + sub r6, r6, r0 + cmp r6, #0 + bgt _02217EB6 + mov r0, #3 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02217EDC: + add r4, r4, #4 + ldrh r0, [r2, #2] + bl MOD13_02217380 + add r7, r0, #0 + ldr r0, _02217FA4 ; =0x00000350 + ldr r1, [sp] + mul r1, r0 + ldr r0, [sp, #4] + add r6, r0, r1 + ldr r0, [sp, #0x28] + ldr r1, [sp] + add r1, r1, #3 + lsl r1, r1, #7 + add r0, r0, r1 + str r0, [sp, #8] + mov r0, #2 + mvn r0, r0 + str r0, [sp, #0xc] +_02217F02: + ldrb r0, [r4] + cmp r0, #0xa + bhi _02217F76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02217F16: ; jump table + .short _02217F76 - _02217F16 + 1 ; case 0 + .short _02217F76 - _02217F16 + 1 ; case 1 + .short _02217F76 - _02217F16 + 1 ; case 2 + .short _02217F2C - _02217F16 + 1 ; case 3 + .short _02217F3C - _02217F16 + 1 ; case 4 + .short _02217F4C - _02217F16 + 1 ; case 5 + .short _02217F5C - _02217F16 + 1 ; case 6 + .short _02217F76 - _02217F16 + 1 ; case 7 + .short _02217F76 - _02217F16 + 1 ; case 8 + .short _02217F76 - _02217F16 + 1 ; case 9 + .short _02217F6C - _02217F16 + 1 ; case 10 +_02217F2C: + add r0, r4, #0 + add r1, r6, #0 + add r1, #8 + bl MOD13_022180CC + mov r1, #1 + orr r5, r1 + b _02217F78 +_02217F3C: + add r0, r4, #0 + ldr r1, _02217FA8 ; =0x00000138 + add r1, r6, r1 + bl MOD13_022180CC + mov r1, #2 + orr r5, r1 + b _02217F78 +_02217F4C: + add r0, r4, #0 + ldr r1, _02217FAC ; =0x00000268 + add r1, r6, r1 + bl MOD13_02217FFC + mov r1, #4 + orr r5, r1 + b _02217F78 +_02217F5C: + add r0, r4, #0 + ldr r1, _02217FB0 ; =0x000002D8 + add r1, r6, r1 + bl MOD13_02217FFC + mov r1, #8 + orr r5, r1 + b _02217F78 +_02217F6C: + add r0, r4, #0 + ldr r1, [sp, #8] + bl MOD13_02217FB8 + b _02217F78 +_02217F76: + ldr r0, [sp, #0xc] +_02217F78: + cmp r0, #0 + bne _02217F96 + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r0, r0, #4 + add r4, r4, r0 + sub r7, r7, r0 + cmp r7, #0 + bgt _02217F02 + ldr r0, _02217FB4 ; =0x02240B60 + ldr r1, [r0, #0xc] + orr r1, r5 + str r1, [r0, #0xc] + mov r0, #0 +_02217F96: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02217FA0: .word 0x0223F7B8 +_02217FA4: .word 0x00000350 +_02217FA8: .word 0x00000138 +_02217FAC: .word 0x00000268 +_02217FB0: .word 0x000002D8 +_02217FB4: .word 0x02240B60 + + thumb_func_start MOD13_02217FB8 +MOD13_02217FB8: ; 0x02217FB8 + push {r4, r5, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r0, #6 + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r2, r0, #0 + cmp r2, #0 + bgt _02217FD8 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02217FD8: + ldrb r0, [r4] + cmp r0, #0x70 + beq _02217FEA + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02217FEA: + add r0, r5, #0 + add r1, r4, #6 + bl MOD13_022174CC + mov r0, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + + thumb_func_start MOD13_02217FFC +MOD13_02217FFC: ; 0x02217FFC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #6 +_02218006: + ldrh r0, [r5, #2] + bl MOD13_02217380 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0x35 + bgt _0221801E + cmp r0, #0x35 + bge _0221803E + cmp r0, #0x30 + beq _0221802E + b _0221804E +_0221801E: + cmp r0, #0x40 + bgt _02218028 + cmp r0, #0x40 + beq _0221802E + b _0221804E +_02218028: + cmp r0, #0x45 + beq _0221803E + b _0221804E +_0221802E: + cmp r4, #0x40 + bls _0221804E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221803E: + cmp r4, #0x21 + bls _0221804E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221804E: + cmp r0, #0x35 + bgt _0221805C + cmp r0, #0x35 + bge _0221807C + cmp r0, #0x30 + beq _0221806C + b _022180A4 +_0221805C: + cmp r0, #0x40 + bgt _02218066 + cmp r0, #0x40 + beq _0221806C + b _022180A4 +_02218066: + cmp r0, #0x45 + beq _0221807C + b _022180A4 +_0221806C: + add r0, r6, #0 + add r0, #0x30 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _022180B0 +_0221807C: + cmp r4, #0 + beq _02218096 + sub r0, r4, #1 + add r0, r5, r0 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _02218096 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218096: + add r0, r6, #0 + add r0, #8 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + b _022180B0 +_022180A4: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022180B0: + ldrh r0, [r5, #4] + cmp r0, #0 + beq _022180C0 + bl MOD13_02217380 + add r1, r7, #6 + add r5, r1, r0 + b _02218006 +_022180C0: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_022180CC +MOD13_022180CC: ; 0x022180CC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #6 +_022180D6: + ldrh r0, [r5, #2] + bl MOD13_02217380 + add r4, r0, #0 + ldrb r0, [r5] + cmp r0, #0x21 + bgt _02218114 + cmp r0, #0x21 + bge _02218138 + cmp r0, #0x15 + bgt _0221810E + add r1, r0, #0 + sub r1, #0x10 + cmp r1, #0 + blt _02218158 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_02218102: ; jump table + .short _02218128 - _02218102 + 1 ; case 0 + .short _02218128 - _02218102 + 1 ; case 1 + .short _02218128 - _02218102 + 1 ; case 2 + .short _02218128 - _02218102 + 1 ; case 3 + .short _02218158 - _02218102 + 1 ; case 4 + .short _02218148 - _02218102 + 1 ; case 5 +_0221810E: + cmp r0, #0x20 + beq _02218138 + b _02218158 +_02218114: + cmp r0, #0x23 + bgt _02218122 + cmp r0, #0x23 + bge _02218138 + cmp r0, #0x22 + beq _02218138 + b _02218158 +_02218122: + cmp r0, #0x25 + beq _02218148 + b _02218158 +_02218128: + cmp r4, #5 + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218138: + cmp r4, #0xd + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218148: + cmp r4, #0x21 + bls _02218158 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218158: + cmp r0, #0x21 + bgt _0221818C + cmp r0, #0x21 + bge _022181B0 + cmp r0, #0x15 + bgt _02218186 + add r1, r0, #0 + sub r1, #0x10 + cmp r1, #0 + blt _02218208 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221817A: ; jump table + .short _022181A0 - _0221817A + 1 ; case 0 + .short _022181B0 - _0221817A + 1 ; case 1 + .short _022181C0 - _0221817A + 1 ; case 2 + .short _022181D0 - _0221817A + 1 ; case 3 + .short _02218208 - _0221817A + 1 ; case 4 + .short _022181E0 - _0221817A + 1 ; case 5 +_02218186: + cmp r0, #0x20 + beq _022181A0 + b _02218208 +_0221818C: + cmp r0, #0x23 + bgt _0221819A + cmp r0, #0x23 + bge _022181D0 + cmp r0, #0x22 + beq _022181C0 + b _02218208 +_0221819A: + cmp r0, #0x25 + beq _022181E0 + b _02218208 +_022181A0: + add r0, r6, #0 + add r0, #0x30 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181B0: + add r0, r6, #0 + add r0, #0x70 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181C0: + add r0, r6, #0 + add r0, #0xb0 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181D0: + add r0, r6, #0 + add r0, #0xf0 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + str r4, [r6, #4] + b _02218214 +_022181E0: + cmp r4, #0 + beq _022181FA + sub r0, r4, #1 + add r0, r5, r0 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _022181FA + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022181FA: + add r0, r6, #0 + add r0, #8 + add r1, r5, #6 + add r2, r4, #0 + bl MOD13_022174CC + b _02218214 +_02218208: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218214: + ldrh r0, [r5, #4] + cmp r0, #0 + beq _02218224 + bl MOD13_02217380 + add r1, r7, #6 + add r5, r1, r0 + b _022180D6 +_02218224: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02218230 +MOD13_02218230: ; 0x02218230 + push {r4, r5} + mov r5, #0 + sub r2, r1, #1 + add r3, r0, r2 + add r4, r5, #0 + cmp r1, #0 + ble _0221824C +_0221823E: + lsl r2, r5, #8 + ldrb r0, [r3] + sub r3, r3, #1 + add r5, r2, r0 + add r4, r4, #1 + cmp r4, r1 + blt _0221823E +_0221824C: + add r0, r5, #0 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD13_02218254 +MOD13_02218254: ; 0x02218254 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218320 ; =0x00000104 + bl MOD13_022174C0 + add r4, r6, #0 + ldr r7, _02218324 ; =0x02240B60 +_0221826A: + ldrh r0, [r4, #2] + bl MOD13_02217380 + add r2, r0, #0 + cmp r2, #0 + bgt _02218282 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218282: + ldrb r0, [r4] + cmp r0, #6 + bhi _022182FC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02218296: ; jump table + .short _022182A4 - _02218296 + 1 ; case 0 + .short _022182AE - _02218296 + 1 ; case 1 + .short _022182BA - _02218296 + 1 ; case 2 + .short _022182C6 - _02218296 + 1 ; case 3 + .short _022182C6 - _02218296 + 1 ; case 4 + .short _022182DC - _02218296 + 1 ; case 5 + .short _022182EC - _02218296 + 1 ; case 6 +_022182A4: + add r0, r5, #0 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182AE: + add r0, r5, #0 + add r0, #0x80 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182BA: + ldr r0, _02218328 ; =0x00000100 + add r0, r5, r0 + add r1, r4, #6 + bl MOD13_022174CC + b _02218308 +_022182C6: + ldrb r0, [r4, #6] + bl MOD13_02217380 + cmp r0, #0 + bgt _02218308 + mov r0, #1 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022182DC: + add r0, r4, #6 + add r1, r2, #0 + bl MOD13_02218230 + bl MOD13_02217398 + str r0, [r7, #0x10] + b _02218308 +_022182EC: + add r0, r4, #6 + add r1, r2, #0 + bl MOD13_02218230 + bl MOD13_02217398 + str r0, [r7, #0x14] + b _02218308 +_022182FC: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218308: + ldrh r0, [r4, #4] + cmp r0, #0 + beq _02218316 + bl MOD13_02217380 + add r4, r6, r0 + b _0221826A +_02218316: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218320: .word 0x00000104 +_02218324: .word 0x02240B60 +_02218328: .word 0x00000100 + + thumb_func_start MOD13_0221832C +MOD13_0221832C: ; 0x0221832C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r4, #0 + ldr r0, _0221837C ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, r5, #0 + mov r1, #8 + ldr r2, _0221837C ; =0x0223F820 + bl MOD13_02217684 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #6 + bl MOD13_022174DC + cmp r0, #0 + beq _0221835A + lsl r0, r4, #0 + mvn r4, r0 + b _02218372 +_0221835A: + ldrh r0, [r6, #6] + bl MOD13_02217380 + add r6, r0, #0 + ldrh r0, [r5, #6] + bl MOD13_02217380 + add r1, r6, #1 + cmp r1, r0 + beq _02218372 + mov r0, #1 + mvn r4, r0 +_02218372: + add r0, r4, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_0221837C: .word 0x0223F820 + + thumb_func_start MOD13_02218380 +MOD13_02218380: ; 0x02218380 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r4, #0 + add r6, r4, #0 + ldr r3, _022183C0 ; =0x02240B4C +_0221838A: + ldrb r2, [r3] + cmp r2, #0 + beq _02218394 + mov r5, #1 + b _0221839C +_02218394: + add r3, r3, #1 + add r6, r6, #1 + cmp r6, #6 + blt _0221838A +_0221839C: + cmp r5, #0 + beq _022183B0 + ldr r0, _022183C0 ; =0x02240B4C + mov r2, #6 + bl MOD13_022174DC + cmp r0, #0 + beq _022183B8 + mov r4, #1 + b _022183B8 +_022183B0: + ldr r1, _022183C4 ; =0x00001000 + cmp r0, r1 + beq _022183B8 + mov r4, #2 +_022183B8: + add r0, r4, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_022183C0: .word 0x02240B4C +_022183C4: .word 0x00001000 + + thumb_func_start MOD13_022183C8 +MOD13_022183C8: ; 0x022183C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x18 + add r0, sp, #0xc + add r1, r5, #0 + add r1, #0x10 + mov r2, #8 + bl MOD13_022174CC + ldr r0, _022184CC ; =0x0223F820 + bl MOD13_0221736C + add r3, r0, #0 + add r0, sp, #0xc + mov r1, #8 + ldr r2, _022184CC ; =0x0223F820 + bl MOD13_02217684 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221840A + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0x63 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221840A: + ldrh r0, [r5, #6] + bl MOD13_02217380 + add r1, sp, #0xc + bl MOD13_02218380 + cmp r0, #0 + bne _022184C4 + ldrh r0, [r5, #6] + bl MOD13_02217380 + ldr r1, _022184D0 ; =0x00001000 + cmp r0, r1 + bne _02218430 + ldr r0, _022184D4 ; =0x02240B4C + add r1, sp, #0xc + mov r2, #8 + bl MOD13_022174CC +_02218430: + ldrh r0, [r5, #0xc] + bl MOD13_02217380 + mov r1, #0xf + and r0, r1 + cmp r0, #0 + bne _02218448 + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218448: + ldrh r0, [r4] + bl MOD13_02217380 + add r6, r0, #0 + bl MOD13_022198B4 + add r7, r0, #0 + cmp r7, #0 + bne _0221846A + mov r0, #2 + bl MOD13_02218BF4 + mov r0, #0x64 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221846A: + add r0, r4, #2 + str r0, [sp] + ldr r0, _022184D4 ; =0x02240B4C + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + add r0, r4, #4 + add r1, r7, #0 + add r2, r6, #0 + ldrb r3, [r5, #0xe] + bl MOD13_0221789C + cmp r0, #0 + bge _022184A8 + add r0, r7, #0 + bl MOD13_022198A0 + bl MOD13_02218BE8 + cmp r0, #2 + bne _0221849E + mov r0, #0x64 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221849E: + mov r0, #0xc8 + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022184A8: + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD13_022174CC + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl MOD13_022173D0 + strh r0, [r5, #0xa] + add r0, r7, #0 + bl MOD13_022198A0 + mov r0, #0 +_022184C4: + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_022184CC: .word 0x0223F820 +_022184D0: .word 0x00001000 +_022184D4: .word 0x02240B4C + + thumb_func_start MOD13_022184D8 +MOD13_022184D8: ; 0x022184D8 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #2 + beq _022184EE + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + pop {r4, r5, r6} + pop {r3} + bx r3 +_022184EE: + add r4, r1, #0 + add r4, #0x24 + add r3, #0x10 + add r0, r3, #0 + add r1, #0xc + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _02218510 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02218510: + ldrb r0, [r4] + cmp r0, #7 + beq _02218524 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_02218524: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _0221853C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221853C: + ldr r0, [r4, #4] + bl MOD13_02217398 + cmp r0, #0 + bne _0221854E + mov r0, #0x64 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221854E: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221856C + mov r0, #0x14 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221856C: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _0221858A + mov r0, #0x15 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221858A: + mov r0, #0x18 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221859C +MOD13_0221859C: ; 0x0221859C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #1 + beq _022185B6 + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185B6: + add r7, r1, #0 + add r7, #0xc + add r4, r1, #0 + add r4, #0x24 + add r3, #8 + add r0, r3, #0 + add r1, r7, #0 + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _022185DE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185DE: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _022185F8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022185F8: + ldrb r0, [r4] + cmp r0, #7 + bne _0221863C + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _02218614 + mov r0, #0x14 + bl MOD13_02218BF4 + b _02218630 +_02218614: + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _0221862A + mov r0, #0x15 + bl MOD13_02218BF4 + b _02218630 +_0221862A: + mov r0, #0x18 + bl MOD13_02218BF4 +_02218630: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221863C: + ldr r0, _02218694 ; =0x02241260 + mov r1, #0 + ldr r2, _02218698 ; =0x000006A0 + bl MOD13_022174C0 + ldrh r0, [r7, #0xa] + bl MOD13_02217380 + add r2, r0, #0 + ldr r0, _0221869C ; =0x02240BE0 + str r0, [sp] + mov r0, #0 + add r1, r4, #0 + ldr r3, _02218694 ; =0x02241260 + bl MOD13_02217E94 + cmp r0, #0 + bge _02218670 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218670: + ldr r0, _022186A0 ; =0x02240B60 + ldr r1, [r0, #0xc] + ldr r0, [r0, #8] + and r1, r0 + cmp r1, #0 + bne _02218686 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218686: + mov r0, #0 + str r0, [r5] + mov r0, #2 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218694: .word 0x02241260 +_02218698: .word 0x000006A0 +_0221869C: .word 0x02240BE0 +_022186A0: .word 0x02240B60 + + thumb_func_start MOD13_022186A4 +MOD13_022186A4: ; 0x022186A4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r2, #0 + cmp r6, #0 + beq _022186BE + ldr r1, [r5] + add r1, r1, #1 + str r1, [r5] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186BE: + add r7, r1, #0 + add r7, #0xc + add r4, r1, #0 + add r4, #0x24 + add r0, r3, #0 + add r1, r7, #0 + add r1, #0x10 + bl MOD13_0221832C + cmp r0, #0 + bge _022186E4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186E4: + ldrh r0, [r4, #2] + bl MOD13_02217380 + cmp r0, #0 + bne _022186FE + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022186FE: + ldrb r0, [r4] + cmp r0, #7 + bne _02218744 + add r5, r4, #4 + ldr r0, [r4, #4] + bl MOD13_02217398 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221871C + mov r0, #0x14 + bl MOD13_02218BF4 + b _02218738 +_0221871C: + ldr r0, [r5] + bl MOD13_02217398 + mov r1, #2 + mvn r1, r1 + cmp r0, r1 + bne _02218732 + mov r0, #0x15 + bl MOD13_02218BF4 + b _02218738 +_02218732: + mov r0, #0x18 + bl MOD13_02218BF4 +_02218738: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218744: + cmp r0, #1 + beq _02218758 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218758: + add r0, r4, #4 + ldr r1, _022187AC ; =0x02240BE0 + bl MOD13_02218254 + cmp r0, #0 + bge _0221878E + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0221877E + mov r0, #0x16 + bl MOD13_02218BF4 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221877E: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221878E: + ldrh r0, [r7, #0xc] + bl MOD13_02217380 + bl MOD13_02217E84 + ldr r1, _022187B0 ; =0x02240B34 + str r0, [r1] + mov r0, #0 + str r0, [r5] + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_022187AC: .word 0x02240BE0 +_022187B0: .word 0x02240B34 + + thumb_func_start MOD13_022187B4 +MOD13_022187B4: ; 0x022187B4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + str r3, [sp] + add r7, r6, #0 + add r7, #0xc + ldrh r0, [r6, #0xc] + bl MOD13_02217380 + cmp r0, #1 + bhs _022187DE + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022187DE: + ldrb r0, [r7, #0xf] + cmp r0, #0x11 + beq _022187F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022187F4: + add r0, r6, #0 + add r0, #0xc + bl MOD13_022183C8 + cmp r0, #0 + ble _02218810 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218810: + ldrh r0, [r7, #6] + bl MOD13_02217380 + ldr r1, _02218864 ; =0x00001010 + cmp r0, r1 + beq _0221882A + ldr r1, _02218868 ; =0x00002010 + cmp r0, r1 + beq _0221883A + ldr r1, _0221886C ; =0x00003010 + cmp r0, r1 + beq _0221884A + b _02218858 +_0221882A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_022186A4 + add r5, r0, #0 + b _02218858 +_0221883A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_0221859C + add r5, r0, #0 + b _02218858 +_0221884A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + ldr r3, [sp] + bl MOD13_022184D8 + add r5, r0, #0 +_02218858: + add r0, r5, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02218864: .word 0x00001010 +_02218868: .word 0x00002010 +_0221886C: .word 0x00003010 + + thumb_func_start MOD13_02218870 +MOD13_02218870: ; 0x02218870 + push {lr} + sub sp, #4 + mov r3, #0 + mvn r1, r3 + cmp r0, r1 + bne _02218888 + ldr r1, _022188A4 ; =0x0223F7C4 + str r0, [r1] + add r0, r3, #0 + add sp, #4 + pop {r3} + bx r3 +_02218888: + ldr r1, _022188A4 ; =0x0223F7C4 + ldr r2, [r1] + cmp r2, r0 + beq _0221889C + str r0, [r1] + bl MOD13_022198C8 + add sp, #4 + pop {r3} + bx r3 +_0221889C: + add r0, r3, #0 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022188A4: .word 0x0223F7C4 + + thumb_func_start MOD13_022188A8 +MOD13_022188A8: ; 0x022188A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r4, #0 + cmp r6, #0 + ble _022188D8 +_022188B8: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #6 + bl MOD13_022174CC + bl MOD13_022172F0 + strh r0, [r5, #6] + ldrh r0, [r5, #6] + bl MOD13_022173D0 + strh r0, [r5, #6] + add r5, #8 + add r4, r4, #1 + cmp r4, r6 + blt _022188B8 +_022188D8: + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_022188E0 +MOD13_022188E0: ; 0x022188E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218924 ; =0x0223F828 + bl MOD13_0221736C + str r0, [r4] + add r0, r4, #4 + ldr r1, _02218924 ; =0x0223F828 + ldr r2, [r4] + bl MOD13_022174CC + mov r0, #1 + str r0, [r4, #0x24] + ldr r0, _02218928 ; =0x0223F820 + bl MOD13_0221736C + str r0, [r4, #0x28] + ldr r2, [r4, #0x28] + cmp r2, #0xd + bls _02218912 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_02218912: + add r4, #0x2c + add r0, r4, #0 + ldr r1, _02218928 ; =0x0223F820 + bl MOD13_022174CC + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02218924: .word 0x0223F828 +_02218928: .word 0x0223F820 + + thumb_func_start MOD13_0221892C +MOD13_0221892C: ; 0x0221892C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r4, #0 + str r4, [sp, #4] + ldr r0, [r5] + str r0, [sp] + cmp r0, #0 + bne _02218948 + mov r0, #5 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218948: + cmp r0, #0x40 + bls _02218950 + mov r0, #0x40 + str r0, [sp] +_02218950: + mov r7, #0 + ldr r0, [sp] + cmp r0, #0 + ble _02218994 + add r6, r5, #0 + add r6, #8 +_0221895C: + ldr r1, [r5, #0x54] + mov r0, #1 + and r1, r0 + cmp r1, #0 + beq _02218988 + ldr r0, _022189B0 ; =0x0223F828 + bl MOD13_0221736C + ldr r1, [r5, #4] + cmp r1, r0 + bne _02218988 + ldr r0, _022189B0 ; =0x0223F828 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r6, #0 + ldr r1, _022189B0 ; =0x0223F828 + bl MOD13_022174DC + cmp r0, #0 + bne _02218988 + add r4, r4, #1 +_02218988: + add r5, #0x54 + add r6, #0x54 + add r7, r7, #1 + ldr r0, [sp] + cmp r7, r0 + blt _0221895C +_02218994: + cmp r4, #1 + ble _0221899C + mov r0, #4 + str r0, [sp, #4] +_0221899C: + cmp r4, #0 + bne _022189A4 + mov r0, #5 + str r0, [sp, #4] +_022189A4: + ldr r0, [sp, #4] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_022189B0: .word 0x0223F828 + + thumb_func_start MOD13_022189B4 +MOD13_022189B4: ; 0x022189B4 + mov r3, #0 + cmp r1, #0 + ble _022189D2 +_022189BA: + ldrb r2, [r0] + add r0, r0, #1 + cmp r2, #0x20 + blo _022189C6 + cmp r2, #0x7f + bls _022189CC +_022189C6: + mov r0, #0 + mvn r0, r0 + bx lr +_022189CC: + add r3, r3, #1 + cmp r3, r1 + blt _022189BA +_022189D2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD13_022189D8 +MOD13_022189D8: ; 0x022189D8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, _02218BC4 ; =0x00000117 + add r5, r7, r0 + ldr r4, _02218BC8 ; =0x02241268 + ldr r6, _02218BCC ; =0x02241398 + ldr r0, _02218BD0 ; =0x022414C8 + str r0, [sp] + ldr r0, _02218BD4 ; =0x02241538 + str r0, [sp, #4] + cmp r5, #0 + bne _022189FE + mov r0, #0 + mvn r0, r0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022189FE: + ldr r0, _02218BD8 ; =0x02240B60 + ldr r1, [r0, #8] + ldr r0, [r0, #0xc] + and r1, r0 + strh r1, [r7] + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218BDC ; =0x00000154 + bl MOD13_022174C0 + ldrh r1, [r7] + mov r0, #1 + and r1, r0 + cmp r1, #0 + beq _02218A7E + add r0, r5, #0 + add r1, r4, #0 + add r1, #0x30 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #6 + add r1, r4, #0 + add r1, #0x70 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0xc + add r1, r4, #0 + add r1, #0xb0 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x12 + add r1, r4, #0 + add r1, #0xf0 + ldr r2, [r4, #4] + bl MOD13_022174CC + add r0, r4, #0 + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + add r0, r4, #0 + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + beq _02218A68 + b _02218BAE +_02218A68: + add r0, r4, #0 + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x18 + add r4, #8 + add r1, r4, #0 + bl MOD13_022174CC +_02218A7E: + ldrh r1, [r7] + mov r0, #2 + and r1, r0 + cmp r1, #0 + beq _02218AEC + add r0, r5, #0 + add r0, #0x39 + add r1, r6, #0 + add r1, #0x30 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x47 + add r1, r6, #0 + add r1, #0x70 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x55 + add r1, r6, #0 + add r1, #0xb0 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r5, #0 + add r0, #0x63 + add r1, r6, #0 + add r1, #0xf0 + ldr r2, [r6, #4] + bl MOD13_022174CC + add r0, r6, #0 + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + add r0, r6, #0 + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r6, #0 + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x71 + add r6, #8 + add r1, r6, #0 + bl MOD13_022174CC +_02218AEC: + ldrh r1, [r7] + mov r0, #4 + and r1, r0 + cmp r1, #0 + beq _02218B46 + ldr r0, [sp] + add r0, #0x30 + ldr r1, [sp] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r5, #0 + add r0, #0x92 + ldr r1, [sp] + add r1, #0x30 + ldr r2, [sp] + ldr r2, [r2, #4] + bl MOD13_022174CC + ldr r0, [sp] + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + ldr r0, [sp] + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + ldr r0, [sp] + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0xd2 + ldr r1, [sp] + add r1, #8 + str r1, [sp] + bl MOD13_022174CC +_02218B46: + ldrh r1, [r7] + mov r0, #8 + and r1, r0 + cmp r1, #0 + beq _02218BA0 + ldr r0, [sp, #4] + add r0, #0x30 + ldr r1, [sp, #4] + ldr r1, [r1, #4] + sub r1, r1, #1 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + add r0, r5, #0 + add r0, #0xf3 + ldr r1, [sp, #4] + add r1, #0x30 + ldr r2, [sp, #4] + ldr r2, [r2, #4] + bl MOD13_022174CC + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_0221736C + add r1, r0, #0 + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_022189B4 + cmp r0, #0 + bne _02218BAE + ldr r0, [sp, #4] + add r0, #8 + bl MOD13_0221736C + add r2, r0, #0 + ldr r0, _02218BE0 ; =0x00000133 + add r0, r5, r0 + ldr r1, [sp, #4] + add r1, #8 + str r1, [sp, #4] + bl MOD13_022174CC +_02218BA0: + mov r0, #0 + ldr r1, _02218BE4 ; =0x00000116 + strb r0, [r7, r1] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218BAE: + add r0, r5, #0 + mov r1, #0 + ldr r2, _02218BDC ; =0x00000154 + bl MOD13_022174C0 + mov r0, #0 + mvn r0, r0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02218BC4: .word 0x00000117 +_02218BC8: .word 0x02241268 +_02218BCC: .word 0x02241398 +_02218BD0: .word 0x022414C8 +_02218BD4: .word 0x02241538 +_02218BD8: .word 0x02240B60 +_02218BDC: .word 0x00000154 +_02218BE0: .word 0x00000133 +_02218BE4: .word 0x00000116 + + thumb_func_start MOD13_02218BE8 +MOD13_02218BE8: ; 0x02218BE8 + ldr r0, _02218BF0 ; =0x02240B44 + ldr r0, [r0] + bx lr + nop +_02218BF0: .word 0x02240B44 + + thumb_func_start MOD13_02218BF4 +MOD13_02218BF4: ; 0x02218BF4 + ldr r1, _02218BFC ; =0x02240B44 + str r0, [r1] + bx lr + nop +_02218BFC: .word 0x02240B44 + + thumb_func_start MOD13_02218C00 +MOD13_02218C00: ; 0x02218C00 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02218C44 ; =0x02240B4C + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #1 + ldr r0, _02218C48 ; =0x02240B44 + str r1, [r0] + ldr r0, _02218C4C ; =0x02240B60 + mov r1, #0 + mov r2, #0x1c + bl MOD13_022174C0 + add r0, r4, #6 + ldr r1, _02218C4C ; =0x02240B60 + str r0, [r1] + ldrh r0, [r4, #4] + str r0, [r1, #4] + ldrh r2, [r4] + mov r0, #0xf + and r2, r0 + str r2, [r1, #8] + ldrb r0, [r4, #2] + strb r0, [r1, #0x19] + mov r2, #0 + str r2, [r1, #0xc] + ldr r0, _02218C50 ; =0xC0A80B01 + str r0, [r1, #0x10] + strb r2, [r1, #0x18] + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02218C44: .word 0x02240B4C +_02218C48: .word 0x02240B44 +_02218C4C: .word 0x02240B60 +_02218C50: .word 0xC0A80B01 + + thumb_func_start MOD13_02218C54 +MOD13_02218C54: ; 0x02218C54 + push {lr} + sub sp, #4 + ldr r0, _02218C84 ; =0x02240B40 + ldr r0, [r0] + cmp r0, #0 + beq _02218C6A + bl MOD13_022198A0 + mov r1, #0 + ldr r0, _02218C84 ; =0x02240B40 + str r1, [r0] +_02218C6A: + ldr r0, _02218C88 ; =0x02240B38 + ldr r0, [r0] + cmp r0, #0 + beq _02218C7C + bl MOD13_022198A0 + mov r1, #0 + ldr r0, _02218C88 ; =0x02240B38 + str r1, [r0] +_02218C7C: + add sp, #4 + pop {r3} + bx r3 + nop +_02218C84: .word 0x02240B40 +_02218C88: .word 0x02240B38 + + thumb_func_start MOD13_02218C8C +MOD13_02218C8C: ; 0x02218C8C + add r3, r0, #0 + and r3, r1 + mvn r2, r1 + bic r0, r1 + add r1, r0, #1 + add r0, r3, #0 + orr r0, r1 + add r1, r3, #0 + orr r1, r2 + cmp r0, r1 + blo _02218CA8 + mov r1, #1 + add r0, r3, #0 + orr r0, r1 +_02218CA8: + bx lr + .align 2, 0 + + thumb_func_start MOD13_02218CAC +MOD13_02218CAC: ; 0x02218CAC + push {r4, r5, r6, r7, lr} + sub sp, #0xcc + str r0, [sp, #8] + ldr r1, _02219044 ; =0x0223F7C0 + ldrh r2, [r1] + add r0, sp, #0x30 + strh r2, [r0] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + add r1, sp, #0x34 + mov r0, #0 + str r0, [sp, #0x14] + strh r0, [r1] + strh r0, [r1, #2] + mov r0, #1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + str r0, [sp, #0x3c] + str r0, [sp, #0x1c] + add r0, sp, #0x64 + ldr r1, [sp, #0x14] + mov r2, #0x18 + bl MOD13_022174C0 + ldr r1, _02219048 ; =0x00000106 + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1] + mov r0, #0 + ldrsh r2, [r1, r0] + mvn r0, r0 + cmp r2, r0 + bne _02218CF4 + mov r0, #0xa + strh r0, [r1] +_02218CF4: + ldr r1, _0221904C ; =0x0000010A + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #4] + mov r0, #4 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D0E + mov r0, #0xa + strh r0, [r1, #4] +_02218D0E: + ldr r1, _02219050 ; =0x00000108 + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #2] + mov r0, #2 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D28 + mov r0, #0x64 + strh r0, [r1, #2] +_02218D28: + ldr r1, _02219054 ; =0x0000010C + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + add r1, sp, #0x30 + strh r0, [r1, #6] + mov r0, #6 + ldrsh r2, [r1, r0] + mov r0, #0 + mvn r0, r0 + cmp r2, r0 + bne _02218D42 + mov r0, #0x64 + strh r0, [r1, #6] +_02218D42: + ldr r1, _02219058 ; =0x0000010E + ldr r0, [sp, #8] + ldrsh r0, [r0, r1] + str r0, [sp, #0x10] + mov r0, #0 + mvn r1, r0 + ldr r0, [sp, #0x10] + cmp r0, r1 + bne _02218D58 + ldr r0, _0221905C ; =0x000007D0 + str r0, [sp, #0x10] +_02218D58: + ldr r0, [sp, #8] + bl MOD13_02218C00 + ldr r0, _02219060 ; =0x02240B60 + ldr r1, [r0, #8] + mov r0, #1 + and r1, r0 + cmp r1, #1 + beq _02218D88 + mov r0, #0x13 + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218D88: + mov r4, #0 + add r0, r4, #0 + bl MOD13_02218870 + mov r1, #2 + add r0, sp, #0x30 + ldrsh r7, [r0, r1] + lsl r6, r4, #0 + ldr r5, _02219068 ; =0x02240B38 +_02218D9A: + ldr r0, [r5] + cmp r0, #0 + beq _02218DA6 + bl MOD13_022198A0 + str r6, [r5] +_02218DA6: + add r0, r5, #0 + bl MOD13_02219AD0 + mvn r1, r6 + cmp r0, r1 + bne _02218DCA + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218DCA: + ldr r0, [r5] + bl MOD13_0221892C + cmp r0, #4 + bne _02218DEC + mov r2, #2 + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218DEC: + cmp r0, #0 + beq _02218E1E + add r0, sp, #0x30 + ldrsh r0, [r0, r6] + cmp r4, r0 + blt _02218E10 + mov r2, #1 + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E10: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _02218D9A +_02218E1E: + mov r0, #1 + bl MOD13_02218870 + add r0, sp, #0x7c + mov r1, #0 + mov r2, #0x3c + bl MOD13_022174C0 + add r0, sp, #0x7c + bl MOD13_022188E0 + cmp r0, #0 + beq _02218E50 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E50: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _0221906C ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _02218E76 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218E76: + mov r1, #0 + mov r2, #0x58 + bl MOD13_022174C0 + mov r4, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r4] + cmp r0, #0 + ble _02218EDA + add r6, r4, #0 + add r5, r4, #0 +_02218E8C: + add r0, sp, #0x7c + ldr r1, _0221906C ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _02218EB4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218EB4: + cmp r0, #0 + bne _02218EC6 + cmp r0, #0 + bne _02218EDA + ldr r0, _0221906C ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _02218EDA +_02218EC6: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r6] + cmp r4, r0 + blt _02218E8C +_02218EDA: + add r1, sp, #0x30 + mov r0, #0 + ldrsh r0, [r1, r0] + cmp r4, r0 + bne _02218EFC + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218EFC: + ldr r0, _02219070 ; =0xC0A80B65 + mov r1, #0xff + mvn r1, r1 + add r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _02218F2A + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F2A: + bl MOD13_02218C54 + mov r0, #3 + add r1, sp, #0x64 + ldr r3, _02219074 ; =0x00000110 + ldr r2, [sp, #8] + add r2, r2, r3 + bl MOD13_022188A8 + mov r0, #2 + add r1, r0, #0 + mov r2, #0 + bl MOD13_02217434 + ldr r1, _02219078 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02218F66 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F66: + mov r1, #4 + str r1, [sp] + ldr r1, _0221907C ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _02218F96 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218F96: + add r0, sp, #0x5c + mov r1, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, _02219070 ; =0xC0A80B65 + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219080 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219078 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _02218FE0 + mov r2, #0xf + ldr r1, _02219064 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02218FE0: + mov r5, #0 + ldr r6, _02219068 ; =0x02240B38 + mvn r0, r5 + str r0, [sp, #0x28] +_02218FE8: + ldr r0, _02219084 ; =0x02240B48 + ldr r0, [r0] + str r0, [sp, #0x20] + add r0, sp, #0xb8 + add r1, r5, #0 + mov r2, #0x14 + bl MOD13_022174C0 + ldr r0, _02219070 ; =0xC0A80B65 + str r0, [sp, #0xc8] + ldr r0, _02219088 ; =0xC0A80B01 + str r0, [sp, #0xb8] + ldr r0, [sp, #0x10] + ldr r1, _0221908C ; =0x000003E8 + bl _s32_div_f + str r0, [sp, #0x24] + ldr r0, [sp, #0x10] + ldr r1, _0221908C ; =0x000003E8 + bl _s32_div_f + str r1, [sp, #0xc] + ldr r0, _0221908C ; =0x000003E8 + mul r1, r0 + str r1, [sp, #0xc] +_0221901A: + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _02219022 + b _0221930A +_02219022: + ldr r1, _02219060 ; =0x02240B60 + mov r0, #0x18 + ldrsb r0, [r1, r0] + cmp r0, #1 + bne _0221902E + b _0221930A +_0221902E: + ldr r0, _02219078 ; =0x0223F7BC + ldr r0, [r0] + mvn r1, r5 + cmp r0, r1 + beq _0221903C + bl MOD13_02217420 +_0221903C: + ldr r1, [sp, #0x28] + ldr r0, _02219078 ; =0x0223F7BC + b _02219090 + nop +_02219044: .word 0x0223F7C0 +_02219048: .word 0x00000106 +_0221904C: .word 0x0000010A +_02219050: .word 0x00000108 +_02219054: .word 0x0000010C +_02219058: .word 0x0000010E +_0221905C: .word 0x000007D0 +_02219060: .word 0x02240B60 +_02219064: .word 0x00000116 +_02219068: .word 0x02240B38 +_0221906C: .word 0x02240B40 +_02219070: .word 0xC0A80B65 +_02219074: .word 0x00000110 +_02219078: .word 0x0223F7BC +_0221907C: .word 0x0000FFFF +_02219080: .word 0x00005790 +_02219084: .word 0x02240B48 +_02219088: .word 0xC0A80B01 +_0221908C: .word 0x000003E8 +_02219090: + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _022190B2 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022190B2: + mov r0, #0x58 + bl MOD13_022198B4 + str r0, [r6] + cmp r0, #0 + bne _022190D6 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022190D6: + ldr r0, [r6] + cmp r0, #0 + beq _022190E2 + bl MOD13_022198A0 + str r5, [r6] +_022190E2: + add r0, r6, #0 + bl MOD13_02219AD0 + str r0, [sp, #0x2c] + mvn r1, r5 + cmp r0, r1 + bne _02219108 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219108: + ldr r0, [r6] + bl MOD13_0221892C + cmp r0, #4 + bne _0221912A + mov r2, #2 + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221912A: + cmp r0, #0 + beq _0221915C + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _0221914E + mov r2, #1 + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221914E: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022190D6 +_0221915C: + mvn r1, r5 + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _0221917C + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221917C: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _02219418 ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _022191A2 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022191A2: + add r1, r5, #0 + mov r2, #0x58 + bl MOD13_022174C0 + add r4, r5, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r0, #0 + ble _02219202 +_022191B4: + add r0, sp, #0x7c + ldr r1, _02219418 ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _022191DC + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022191DC: + cmp r0, #0 + bne _022191EE + cmp r0, #0 + bne _02219202 + ldr r0, _02219418 ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _02219202 +_022191EE: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _022191B4 +_02219202: + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + bne _02219222 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219222: + ldr r0, _0221941C ; =0x02240B60 + ldr r0, [r0, #0x10] + ldr r1, _0221941C ; =0x02240B60 + ldr r1, [r1, #0x14] + bl MOD13_02218C8C + str r0, [sp, #0x1c] + ldr r1, _0221941C ; =0x02240B60 + ldr r1, [r1, #0x14] + lsl r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _0221925C + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221925C: + mov r1, #1 + ldr r0, _0221941C ; =0x02240B60 + strb r1, [r0, #0x18] + bl MOD13_02218C54 + mov r0, #2 + lsl r1, r0, #0 + add r2, r5, #0 + bl MOD13_02217434 + ldr r1, _02219420 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02219290 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219290: + mov r1, #4 + str r1, [sp] + ldr r1, _02219424 ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _022192C0 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022192C0: + add r0, sp, #0x5c + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, [sp, #0x1c] + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219428 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _0221930A + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221930A: + ldr r0, [sp, #0x14] + add r1, sp, #0xb8 + add r2, sp, #0x64 + ldr r3, _02219420 ; =0x0223F7BC + ldr r3, [r3] + bl MOD13_02217E20 + mvn r1, r5 + cmp r0, r1 + bne _02219340 + ldr r1, _0221942C ; =0x00001000 + ldr r0, [sp, #0x14] + add r0, r0, r1 + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219414 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219340: + ldr r0, [sp, #0x20] + add r1, r5, #0 + ldr r2, _02219430 ; =0x000005F8 + bl MOD13_022174C0 + add r0, sp, #0x4c + bl MOD13_022172E4 + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x4c + bl MOD13_022172DC + ldr r0, [sp, #0x24] + str r0, [sp, #0x54] + ldr r0, [sp, #0xc] + str r0, [sp, #0x58] + add r0, sp, #0x54 + str r0, [sp] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + add r0, r0, #1 + add r1, sp, #0x4c + add r2, r5, #0 + add r3, r5, #0 + bl MOD13_02217458 + cmp r0, #0 + bgt _022193BA + ldr r0, [sp, #0x3c] + add r2, r0, #1 + str r2, [sp, #0x3c] + add r1, sp, #0x30 + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r2, r0 + ble _022193B0 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219398 + mov r0, #0xf + bl MOD13_02218BF4 + b _022193AA +_02219398: + cmp r0, #1 + bne _022193A4 + mov r0, #0x10 + bl MOD13_02218BF4 + b _022193AA +_022193A4: + mov r0, #0x11 + bl MOD13_02218BF4 +_022193AA: + mov r0, #0 + mvn r4, r0 + b _022196C6 +_022193B0: + mov r0, #6 + ldrsh r0, [r1, r0] + bl MOD13_022198E4 + b _0221901A +_022193BA: + mov r0, #8 + str r0, [sp, #0x48] + add r0, sp, #0x40 + str r0, [sp] + add r0, sp, #0x48 + str r0, [sp, #4] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + ldr r1, [sp, #0x20] + add r1, #0xc + ldr r2, _02219434 ; =0x000005DC + add r3, r5, #0 + bl MOD13_022174A4 + add r2, r0, #0 + ldr r0, _02219420 ; =0x0223F7BC + ldr r1, [r0] + ldr r0, [sp, #0x20] + str r1, [r0] + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bl MOD13_02217380 + ldr r1, [sp, #0x20] + str r0, [r1, #4] + ldr r0, _02219420 ; =0x0223F7BC + ldr r0, [r0] + str r0, [sp] + ldr r0, [sp, #0x14] + add r2, sp, #0x3c + add r3, sp, #0x64 + bl MOD13_022187B4 + str r0, [sp, #0x18] + cmp r0, #0x64 + bne _02219406 + mov r4, #0 + b _022196C6 +_02219406: + mvn r1, r5 + cmp r0, r1 + bne _02219438 + mov r0, #0 + mvn r4, r0 + b _022196C6 + nop +_02219414: .word 0x00000116 +_02219418: .word 0x02240B40 +_0221941C: .word 0x02240B60 +_02219420: .word 0x0223F7BC +_02219424: .word 0x0000FFFF +_02219428: .word 0x00005790 +_0221942C: .word 0x00001000 +_02219430: .word 0x000005F8 +_02219434: .word 0x000005DC +_02219438: + ldr r1, [sp, #0x14] + cmp r1, r0 + bne _02219440 + b _02219688 +_02219440: + cmp r0, #2 + beq _02219446 + b _02219682 +_02219446: + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + mvn r1, r5 + cmp r0, r1 + beq _02219454 + bl MOD13_02217420 +_02219454: + ldr r1, [sp, #0x28] + ldr r0, _02219780 ; =0x0223F7BC + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _0221947A + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221947A: + add r4, r5, #0 + mov r0, #4 + bl MOD13_02218870 +_02219482: + ldr r0, [r6] + cmp r0, #0 + beq _0221948E + bl MOD13_022198A0 + str r5, [r6] +_0221948E: + add r0, r6, #0 + bl MOD13_02219AD0 + mvn r1, r5 + cmp r0, r1 + bne _022194B2 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194B2: + ldr r0, [r6] + bl MOD13_0221892C + cmp r0, #4 + bne _022194D4 + mov r2, #2 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194D4: + cmp r0, #0 + beq _02219506 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _022194F8 + mov r2, #1 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022194F8: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _02219482 +_02219506: + mov r0, #0x58 + bl MOD13_022198B4 + ldr r1, _02219788 ; =0x02240B40 + str r0, [r1] + cmp r0, #0 + bne _0221952C + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221952C: + add r1, r5, #0 + mov r2, #0x58 + bl MOD13_022174C0 + add r4, r5, #0 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r0, #0 + ble _0221958C +_0221953E: + add r0, sp, #0x7c + ldr r1, _02219788 ; =0x02240B40 + ldr r1, [r1] + bl MOD13_022198EC + mvn r1, r5 + cmp r0, r1 + bne _02219566 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219566: + cmp r0, #0 + bne _02219578 + cmp r0, #0 + bne _0221958C + ldr r0, _02219788 ; =0x02240B40 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #1 + beq _0221958C +_02219578: + add r0, r7, #0 + bl MOD13_022198E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + blt _0221953E +_0221958C: + add r0, sp, #0x30 + ldrsh r0, [r0, r5] + cmp r4, r0 + bne _022195AC + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022195AC: + ldr r0, [sp, #0x1c] + ldr r1, _0221978C ; =0x02240B60 + ldr r1, [r1, #0x14] + lsl r2, r0, #0 + bl MOD13_02217530 + cmp r0, #0 + beq _022195DA + mov r0, #0xc + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022195DA: + bl MOD13_02218C54 + mov r0, #2 + lsl r1, r0, #0 + add r2, r5, #0 + bl MOD13_02217434 + ldr r1, _02219780 ; =0x0223F7BC + str r0, [r1] + cmp r0, #0 + bge _02219608 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219608: + mov r1, #4 + str r1, [sp] + ldr r1, _02219790 ; =0x0000FFFF + mov r2, #1 + add r3, sp, #0x38 + bl MOD13_0221743C + cmp r0, #0 + bge _02219638 + mov r0, #0xb + bl MOD13_02218BF4 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219638: + add r0, sp, #0x5c + add r1, r5, #0 + mov r2, #8 + bl MOD13_022174C0 + mov r1, #2 + add r0, sp, #0x5c + strb r1, [r0, #1] + ldr r0, [sp, #0x1c] + bl MOD13_022173E8 + str r0, [sp, #0x60] + ldr r0, _02219794 ; =0x00005790 + bl MOD13_022173D0 + add r1, sp, #0x30 + strh r0, [r1, #0x2e] + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + add r1, sp, #0x5c + mov r2, #8 + bl MOD13_02217428 + cmp r0, #0 + bge _02219682 + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219682: + ldr r0, [sp, #0x18] + str r0, [sp, #0x14] + b _02218FE8 +_02219688: + str r0, [sp, #0x14] + ldr r2, [sp, #0x3c] + add r1, sp, #0x30 + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r2, r0 + ble _022196BC + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _022196A4 + mov r0, #0xf + bl MOD13_02218BF4 + b _022196B6 +_022196A4: + cmp r0, #1 + bne _022196B0 + mov r0, #0x10 + bl MOD13_02218BF4 + b _022196B6 +_022196B0: + mov r0, #0x11 + bl MOD13_02218BF4 +_022196B6: + mov r0, #0 + mvn r4, r0 + b _022196C6 +_022196BC: + mov r0, #6 + ldrsh r0, [r1, r0] + bl MOD13_022198E4 + b _02218FE8 +_022196C6: + ldr r0, _02219780 ; =0x0223F7BC + ldr r0, [r0] + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022196D6 + bl MOD13_02217420 +_022196D6: + mov r0, #0 + mvn r1, r0 + ldr r0, _02219780 ; =0x0223F7BC + str r1, [r0] + bl MOD13_02217504 + cmp r0, #0 + beq _022196FE + mov r2, #0xf + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_022196FE: + cmp r4, #0 + beq _02219754 + bl MOD13_02218BE8 + sub r0, #0xf + cmp r0, #6 + bhi _0221973C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221971A: ; jump table + .short _02219728 - _0221971A + 1 ; case 0 + .short _0221972C - _0221971A + 1 ; case 1 + .short _02219730 - _0221971A + 1 ; case 2 + .short _0221973C - _0221971A + 1 ; case 3 + .short _0221973C - _0221971A + 1 ; case 4 + .short _02219734 - _0221971A + 1 ; case 5 + .short _02219738 - _0221971A + 1 ; case 6 +_02219728: + mov r2, #3 + b _0221973E +_0221972C: + mov r2, #4 + b _0221973E +_02219730: + mov r2, #5 + b _0221973E +_02219734: + mov r2, #7 + b _0221973E +_02219738: + mov r2, #8 + b _0221973E +_0221973C: + mov r2, #0xf +_0221973E: + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219754: + ldr r0, [sp, #8] + bl MOD13_022189D8 + cmp r0, #0 + beq _02219776 + mov r2, #6 + ldr r1, _02219784 ; =0x00000116 + ldr r0, [sp, #8] + strb r2, [r0, r1] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219776: + mov r0, #0 + add sp, #0xcc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219780: .word 0x0223F7BC +_02219784: .word 0x00000116 +_02219788: .word 0x02240B40 +_0221978C: .word 0x02240B60 +_02219790: .word 0x0000FFFF +_02219794: .word 0x00005790 + + thumb_func_start MOD13_02219798 +MOD13_02219798: ; 0x02219798 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02219870 ; =0x00000106 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _022197E6 + mov r0, #0 + mvn r2, r0 + cmp r1, r2 + blt _022197E6 + ldr r1, _02219874 ; =0x00000108 + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldr r1, _02219878 ; =0x0000010A + ldrsh r1, [r4, r1] + cmp r1, #0 + beq _022197E6 + cmp r1, r2 + blt _022197E6 + ldr r1, _0221987C ; =0x0000010C + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldr r1, _02219880 ; =0x0000010E + ldrsh r1, [r4, r1] + cmp r1, r2 + blt _022197E6 + ldrh r2, [r4, #4] + cmp r2, #0 + beq _022197E6 + ldr r1, _02219884 ; =0x00000100 + cmp r2, r1 + bhi _022197E6 + sub r1, r2, #1 + add r1, r4, r1 + ldrb r1, [r1, #6] + cmp r1, #0 + beq _022197EA +_022197E6: + mov r0, #0 + mvn r0, r0 +_022197EA: + ldr r1, _02219888 ; =0x02241900 + ldr r1, [r1] + cmp r1, #0 + beq _022197FA + ldr r1, _0221988C ; =0x0224190C + ldr r1, [r1] + cmp r1, #0 + bne _022197FE +_022197FA: + mov r0, #0 + mvn r0, r0 +_022197FE: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221981A + mov r1, #0xf + ldr r0, _02219890 ; =0x00000116 + strb r1, [r4, r0] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_0221981A: + ldr r0, _02219894 ; =0x000005F8 + bl MOD13_022198B4 + ldr r1, _02219898 ; =0x02240B48 + str r0, [r1] + cmp r0, #0 + bne _0221983C + mov r1, #0xf + ldr r0, _02219890 ; =0x00000116 + strb r1, [r4, r0] + bl MOD13_02218C54 + mov r0, #0 + mvn r0, r0 + pop {r4} + pop {r3} + bx r3 +_0221983C: + mov r0, #0 + mvn r0, r0 + bl MOD13_02218870 + add r0, r4, #0 + bl MOD13_02218CAC + add r4, r0, #0 + ldr r0, _02219898 ; =0x02240B48 + ldr r0, [r0] + bl MOD13_022198A0 + bl MOD13_02218C54 + ldr r0, _0221989C ; =0x0223F7BC + ldr r0, [r0] + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02219868 + bl MOD13_02217420 +_02219868: + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_02219870: .word 0x00000106 +_02219874: .word 0x00000108 +_02219878: .word 0x0000010A +_0221987C: .word 0x0000010C +_02219880: .word 0x0000010E +_02219884: .word 0x00000100 +_02219888: .word 0x02241900 +_0221988C: .word 0x0224190C +_02219890: .word 0x00000116 +_02219894: .word 0x000005F8 +_02219898: .word 0x02240B48 +_0221989C: .word 0x0223F7BC + + thumb_func_start MOD13_022198A0 +MOD13_022198A0: ; 0x022198A0 + push {lr} + sub sp, #4 + ldr r1, _022198B0 ; =0x0224190C + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022198B0: .word 0x0224190C + + thumb_func_start MOD13_022198B4 +MOD13_022198B4: ; 0x022198B4 + push {lr} + sub sp, #4 + ldr r1, _022198C4 ; =0x02241900 + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_022198C4: .word 0x02241900 + + thumb_func_start MOD13_022198C8 +MOD13_022198C8: ; 0x022198C8 + push {lr} + sub sp, #4 + ldr r1, _022198E0 ; =0x02241904 + ldr r1, [r1] + cmp r1, #0 + beq _022198D6 + blx r1 +_022198D6: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 + nop +_022198E0: .word 0x02241904 + + thumb_func_start MOD13_022198E4 +MOD13_022198E4: ; 0x022198E4 + ldr r3, _022198E8 ; =0x020CAFC0 + bx r3 + .align 2, 0 +_022198E8: .word 0x020CAFC0 + + thumb_func_start MOD13_022198EC +MOD13_022198EC: ; 0x022198EC + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + str r0, [sp, #4] + str r1, [sp, #8] + mov r4, #1 + mov r0, #0 + str r0, [sp, #0x14] + mvn r0, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0221990A + ldr r6, _02219AA8 ; =0x00080000 + b _02219910 +_0221990A: + cmp r0, #1 + bne _02219910 + ldr r6, _02219AAC ; =0x000C0000 +_02219910: + ldr r0, _02219AB0 ; =0x02241940 + mov r1, #0 + mov r2, #0x60 + bl MI_CpuFill8 + ldr r0, [sp, #4] + ldr r0, [r0, #0x28] + cmp r0, #5 + bne _0221992A + mov r1, #1 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_0221992A: + cmp r0, #0xd + bne _02219936 + mov r1, #2 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_02219936: + cmp r0, #0x10 + bne _02219942 + mov r1, #3 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0] + b _0221994E +_02219942: + mov r0, #0 + mvn r0, r0 + add sp, #0x4c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221994E: + mov r1, #0 + ldr r0, _02219AB0 ; =0x02241940 + strb r1, [r0, #1] + ldr r0, [sp, #4] + add r0, #0x2c + ldr r1, _02219AB4 ; =0x02241942 + ldr r2, [sp, #4] + ldr r2, [r2, #0x28] + bl MI_CpuCopy8 + bl FUN_020A84D8 + mov r0, #0 + ldr r1, [sp, #4] + add r1, r1, #4 + ldr r2, [sp, #4] + ldr r2, [r2] + ldr r3, _02219AB8 ; =0x0030BFFE + bl MOD13_0221A1E8 + cmp r0, #0 + bne _0221997C + b _02219A8A +_0221997C: + mov r0, #0 + str r0, [sp, #0x10] + add r0, sp, #0x1c + bl OS_CreateAlarm + mov r0, #0x12 + str r0, [sp] + add r0, sp, #0x1c + ldr r1, _02219ABC ; =0x003FEC42 + mov r2, #0 + ldr r3, _02219AC0 ; =MOD13_02219E48 + bl OS_SetAlarm + ldr r0, _02219AC4 ; =0x00030000 + orr r6, r0 + ldr r7, _02219AC8 ; =0x022419A0 + mov r5, #0 +_0221999E: + ldr r0, _02219ACC ; =0x02241920 + add r1, sp, #0x18 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp, #0x18] + cmp r0, #0x13 + bhi _02219A6A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_022199BC: ; jump table + .short _02219A6A - _022199BC + 1 ; case 0 + .short _02219A6A - _022199BC + 1 ; case 1 + .short _02219A6A - _022199BC + 1 ; case 2 + .short _02219A6A - _022199BC + 1 ; case 3 + .short _02219A6C - _022199BC + 1 ; case 4 + .short _022199EE - _022199BC + 1 ; case 5 + .short _02219A6A - _022199BC + 1 ; case 6 + .short _02219A6A - _022199BC + 1 ; case 7 + .short _02219A6C - _022199BC + 1 ; case 8 + .short _02219A6A - _022199BC + 1 ; case 9 + .short _02219A2A - _022199BC + 1 ; case 10 + .short _02219A6A - _022199BC + 1 ; case 11 + .short _02219A44 - _022199BC + 1 ; case 12 + .short _02219A4A - _022199BC + 1 ; case 13 + .short _02219A6A - _022199BC + 1 ; case 14 + .short _02219A6A - _022199BC + 1 ; case 15 + .short _02219A6A - _022199BC + 1 ; case 16 + .short _02219A6A - _022199BC + 1 ; case 17 + .short _022199E4 - _022199BC + 1 ; case 18 + .short _02219A6C - _022199BC + 1 ; case 19 +_022199E4: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_022199EE: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02219A6C + add r0, sp, #0x1c + bl OS_CancelAlarm + add r0, r7, #0 + mov r1, #1 + bl MOD13_0221A2FC + cmp r0, #1 + beq _02219A0A + add r4, r5, #0 + b _02219A6C +_02219A0A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD13_02219E80 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A24 + add r4, r5, #0 + b _02219A6C +_02219A24: + mov r0, #1 + str r0, [sp, #0x14] + b _02219A6C +_02219A2A: + ldr r0, [sp, #4] + add r1, r7, #0 + bl MOD13_02219E80 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_02219A44: + str r5, [sp, #0xc] + add r4, r5, #0 + b _02219A6C +_02219A4A: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #3 + bge _02219A66 + add r0, r7, #0 + ldr r1, _02219AB0 ; =0x02241940 + add r2, r6, #0 + bl MOD13_0221A04C + cmp r0, #0 + bne _02219A6C + add r4, r5, #0 + b _02219A6C +_02219A66: + add r4, r5, #0 + b _02219A6C +_02219A6A: + add r4, r5, #0 +_02219A6C: + cmp r4, #0 + bne _0221999E + add r0, sp, #0x1c + bl OS_CancelAlarm + ldr r5, _02219ACC ; =0x02241920 + add r4, sp, #0x18 + mov r6, #0 +_02219A7C: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl OS_ReceiveMessage + cmp r0, #1 + beq _02219A7C +_02219A8A: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _02219A94 + mov r2, #1 + b _02219A96 +_02219A94: + mov r2, #0 +_02219A96: + ldr r0, [sp, #8] + ldr r1, _02219AC8 ; =0x022419A0 + bl MOD13_02219E70 + ldr r0, [sp, #0xc] + add sp, #0x4c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219AA8: .word 0x00080000 +_02219AAC: .word 0x000C0000 +_02219AB0: .word 0x02241940 +_02219AB4: .word 0x02241942 +_02219AB8: .word 0x0030BFFE +_02219ABC: .word 0x003FEC42 +_02219AC0: .word MOD13_02219E48 +_02219AC4: .word 0x00030000 +_02219AC8: .word 0x022419A0 +_02219ACC: .word 0x02241920 + + thumb_func_start MOD13_02219AD0 +MOD13_02219AD0: ; 0x02219AD0 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #4] + mov r6, #0 + mvn r0, r6 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r7, r6, #0 + add r5, r6, #0 + ldr r0, _02219C44 ; =0x02241900 + ldr r1, [r0] + cmp r1, #0 + beq _02219AF4 + ldr r0, _02219C48 ; =0x0224190C + ldr r0, [r0] + cmp r0, #0 + bne _02219B00 +_02219AF4: + mov r0, #0 + mvn r0, r0 + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219B00: + ldr r0, _02219C4C ; =0x00003000 + blx r1 + add r4, r0, #0 + cmp r4, #0 + bne _02219B16 + lsl r0, r6, #0 + mvn r0, r0 + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219B16: + str r4, [sp, #0x10] + lsl r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + ldr r3, _02219C50 ; =0x0030BFFE + bl MOD13_0221A1E8 + cmp r0, #0 + bne _02219B2A + b _02219C30 +_02219B2A: + add r0, sp, #0x18 + bl OS_CreateAlarm + mov r0, #0x13 + str r0, [sp] + add r0, sp, #0x18 + ldr r1, _02219C54 ; =0x003FEC42 + lsl r2, r6, #0 + ldr r3, _02219C58 ; =MOD13_02219E48 + bl OS_SetAlarm +_02219B40: + ldr r0, _02219C5C ; =0x02241920 + add r1, sp, #0x14 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp, #0x14] + cmp r0, #0x13 + bhi _02219C16 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219B5E: ; jump table + .short _02219C16 - _02219B5E + 1 ; case 0 + .short _02219C16 - _02219B5E + 1 ; case 1 + .short _02219C16 - _02219B5E + 1 ; case 2 + .short _02219C16 - _02219B5E + 1 ; case 3 + .short _02219BCC - _02219B5E + 1 ; case 4 + .short _02219BA4 - _02219B5E + 1 ; case 5 + .short _02219C16 - _02219B5E + 1 ; case 6 + .short _02219C16 - _02219B5E + 1 ; case 7 + .short _02219BCC - _02219B5E + 1 ; case 8 + .short _02219C16 - _02219B5E + 1 ; case 9 + .short _02219BC6 - _02219B5E + 1 ; case 10 + .short _02219C16 - _02219B5E + 1 ; case 11 + .short _02219C16 - _02219B5E + 1 ; case 12 + .short _02219C16 - _02219B5E + 1 ; case 13 + .short _02219C16 - _02219B5E + 1 ; case 14 + .short _02219C16 - _02219B5E + 1 ; case 15 + .short _02219C16 - _02219B5E + 1 ; case 16 + .short _02219C16 - _02219B5E + 1 ; case 17 + .short _02219BCC - _02219B5E + 1 ; case 18 + .short _02219B86 - _02219B5E + 1 ; case 19 +_02219B86: + cmp r6, #0 + bne _02219BCC + cmp r5, #0 + beq _02219B98 + add r0, r4, #0 + mov r1, #0x40 + bl MOD13_0221A2FC + add r7, r0, #0 +_02219B98: + bl MOD13_0221A1A4 + cmp r0, #0 + beq _02219C16 + mov r6, #1 + b _02219BCC +_02219BA4: + cmp r6, #0 + bne _02219BCC + cmp r5, #8 + bge _02219BB0 + add r5, r5, #1 + b _02219BCC +_02219BB0: + add r0, r4, #0 + mov r1, #0x40 + bl MOD13_0221A2FC + add r7, r0, #0 + bl MOD13_0221A1A4 + cmp r0, #0 + beq _02219C16 + mov r6, #1 + b _02219BCC +_02219BC6: + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #8] +_02219BCC: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _02219B40 + cmp r7, #0 + beq _02219BEA + sub r0, r7, #1 + mov r1, #0x54 + mul r0, r1 + add r0, #0x58 + ldr r1, _02219C44 ; =0x02241900 + ldr r1, [r1] + blx r1 + cmp r0, #0 + bne _02219BF6 + b _02219C16 +_02219BEA: + mov r0, #0x58 + ldr r1, _02219C44 ; =0x02241900 + ldr r1, [r1] + blx r1 + cmp r0, #0 + beq _02219C16 +_02219BF6: + ldr r1, [sp, #4] + str r0, [r1] + str r7, [r0] + mov r6, #0 + cmp r7, #0 + ble _02219C16 + add r5, r0, #4 +_02219C04: + add r0, r4, #0 + add r1, r5, #0 + bl MOD13_02219EB4 + add r4, #0xc0 + add r5, #0x54 + add r6, r6, #1 + cmp r6, r7 + blt _02219C04 +_02219C16: + add r0, sp, #0x18 + bl OS_CancelAlarm + ldr r5, _02219C5C ; =0x02241920 + add r4, sp, #0x14 + mov r6, #0 +_02219C22: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl OS_ReceiveMessage + cmp r0, #1 + beq _02219C22 +_02219C30: + ldr r0, [sp, #0x10] + ldr r1, _02219C48 ; =0x0224190C + ldr r1, [r1] + blx r1 + ldr r0, [sp, #8] + add sp, #0x44 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219C44: .word 0x02241900 +_02219C48: .word 0x0224190C +_02219C4C: .word 0x00003000 +_02219C50: .word 0x0030BFFE +_02219C54: .word 0x003FEC42 +_02219C58: .word MOD13_02219E48 +_02219C5C: .word 0x02241920 + + thumb_func_start MOD13_02219C60 +MOD13_02219C60: ; 0x02219C60 + push {r4, r5, r6, r7, lr} + sub sp, #4 + mov r0, #0 + mvn r4, r0 + bl MOD13_0221A164 + cmp r0, #0 + beq _02219C8C + mov r5, #0 + ldr r6, _02219C98 ; =0x02241920 + add r7, sp, #0 +_02219C76: + add r0, r6, #0 + add r1, r7, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0xe + bne _02219C88 + add r4, r5, #0 +_02219C88: + cmp r5, #0 + bne _02219C76 +_02219C8C: + add r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219C98: .word 0x02241920 + + thumb_func_start MOD13_02219C9C +MOD13_02219C9C: ; 0x02219C9C + push {r4, r5, lr} + sub sp, #4 + mov r4, #1 + mov r0, #0 + mvn r5, r0 + ldr r0, _02219D48 ; =0x0224190C + ldr r0, [r0] + cmp r0, #0 + bne _02219CB8 + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02219CB8: + bl MOD13_0221A0FC + cmp r0, #0 + bne _02219CCC + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 +_02219CCC: + ldr r0, _02219D4C ; =0x02241920 + add r1, sp, #0 + mov r2, #1 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0x14 + bhi _02219D24 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219CEA: ; jump table + .short _02219D24 - _02219CEA + 1 ; case 0 + .short _02219D24 - _02219CEA + 1 ; case 1 + .short _02219D24 - _02219CEA + 1 ; case 2 + .short _02219D24 - _02219CEA + 1 ; case 3 + .short _02219D26 - _02219CEA + 1 ; case 4 + .short _02219D26 - _02219CEA + 1 ; case 5 + .short _02219D24 - _02219CEA + 1 ; case 6 + .short _02219D24 - _02219CEA + 1 ; case 7 + .short _02219D24 - _02219CEA + 1 ; case 8 + .short _02219D24 - _02219CEA + 1 ; case 9 + .short _02219D24 - _02219CEA + 1 ; case 10 + .short _02219D24 - _02219CEA + 1 ; case 11 + .short _02219D24 - _02219CEA + 1 ; case 12 + .short _02219D24 - _02219CEA + 1 ; case 13 + .short _02219D24 - _02219CEA + 1 ; case 14 + .short _02219D24 - _02219CEA + 1 ; case 15 + .short _02219D24 - _02219CEA + 1 ; case 16 + .short _02219D24 - _02219CEA + 1 ; case 17 + .short _02219D24 - _02219CEA + 1 ; case 18 + .short _02219D24 - _02219CEA + 1 ; case 19 + .short _02219D14 - _02219CEA + 1 ; case 20 +_02219D14: + mov r4, #0 + add r5, r4, #0 + ldr r0, _02219D50 ; =0x02241908 + ldr r0, [r0] + ldr r1, _02219D48 ; =0x0224190C + ldr r1, [r1] + blx r1 + b _02219D26 +_02219D24: + mov r4, #0 +_02219D26: + cmp r4, #0 + bne _02219CCC + bl OS_DisableInterrupts + mov r2, #0 + ldr r1, _02219D54 ; =0x02241900 + str r2, [r1] + ldr r1, _02219D48 ; =0x0224190C + str r2, [r1] + bl OS_RestoreInterrupts + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + nop +_02219D48: .word 0x0224190C +_02219D4C: .word 0x02241920 +_02219D50: .word 0x02241908 +_02219D54: .word 0x02241900 + + thumb_func_start MOD13_02219D58 +MOD13_02219D58: ; 0x02219D58 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + mov r4, #1 + ldr r0, _02219E2C ; =0x02241920 + ldr r1, _02219E30 ; =0x02241910 + mov r2, #4 + bl OS_InitMessageQueue + cmp r5, #0 + beq _02219D74 + cmp r6, #0 + bne _02219D80 +_02219D74: + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219D80: + bl OS_DisableInterrupts + ldr r1, _02219E34 ; =0x02241900 + str r5, [r1] + ldr r1, _02219E38 ; =0x0224190C + str r6, [r1] + bl OS_RestoreInterrupts + ldr r0, _02219E3C ; =0x00005890 + ldr r1, _02219E34 ; =0x02241900 + ldr r1, [r1] + blx r1 + add r1, r0, #0 + ldr r0, _02219E40 ; =0x02241908 + str r1, [r0] + cmp r1, #0 + bne _02219DAE + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219DAE: + ldr r0, _02219E44 ; =MOD13_02219E5C + ldr r2, _02219E3C ; =0x00005890 + bl MOD13_02219F54 + cmp r0, #0 + bne _02219DBC + mov r4, #0 +_02219DBC: + cmp r4, #0 + beq _02219E14 + ldr r5, _02219E2C ; =0x02241920 + add r6, sp, #0 + mov r7, #1 +_02219DC6: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl OS_ReceiveMessage + ldr r0, [sp] + cmp r0, #0xf + bhi _02219E0E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_02219DE4: ; jump table + .short _02219E0E - _02219DE4 + 1 ; case 0 + .short _02219E0E - _02219DE4 + 1 ; case 1 + .short _02219E0E - _02219DE4 + 1 ; case 2 + .short _02219E0E - _02219DE4 + 1 ; case 3 + .short _02219E10 - _02219DE4 + 1 ; case 4 + .short _02219E10 - _02219DE4 + 1 ; case 5 + .short _02219E04 - _02219DE4 + 1 ; case 6 + .short _02219E0E - _02219DE4 + 1 ; case 7 + .short _02219E0E - _02219DE4 + 1 ; case 8 + .short _02219E0E - _02219DE4 + 1 ; case 9 + .short _02219E0E - _02219DE4 + 1 ; case 10 + .short _02219E0E - _02219DE4 + 1 ; case 11 + .short _02219E0E - _02219DE4 + 1 ; case 12 + .short _02219E0E - _02219DE4 + 1 ; case 13 + .short _02219E0E - _02219DE4 + 1 ; case 14 + .short _02219E0E - _02219DE4 + 1 ; case 15 +_02219E04: + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219E0E: + mov r4, #0 +_02219E10: + cmp r4, #0 + bne _02219DC6 +_02219E14: + ldr r0, _02219E40 ; =0x02241908 + ldr r0, [r0] + ldr r1, _02219E38 ; =0x0224190C + ldr r1, [r1] + blx r1 + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_02219E2C: .word 0x02241920 +_02219E30: .word 0x02241910 +_02219E34: .word 0x02241900 +_02219E38: .word 0x0224190C +_02219E3C: .word 0x00005890 +_02219E40: .word 0x02241908 +_02219E44: .word MOD13_02219E5C + + thumb_func_start MOD13_02219E48 +MOD13_02219E48: ; 0x02219E48 + add r1, r0, #0 + ldr r0, _02219E54 ; =0x02241920 + mov r2, #0 + ldr r3, _02219E58 ; =0x020CBDC4 + bx r3 + nop +_02219E54: .word 0x02241920 +_02219E58: .word 0x020CBDC4 + + thumb_func_start MOD13_02219E5C +MOD13_02219E5C: ; 0x02219E5C + add r1, r0, #0 + ldr r0, _02219E68 ; =0x02241920 + mov r2, #0 + ldr r3, _02219E6C ; =0x020CBDC4 + bx r3 + nop +_02219E68: .word 0x02241920 +_02219E6C: .word 0x020CBDC4 + + thumb_func_start MOD13_02219E70 +MOD13_02219E70: ; 0x02219E70 + add r3, r0, #0 + str r2, [r3] + add r0, r1, #0 + add r1, r3, #4 + ldr r3, _02219E7C ; =MOD13_02219EB4 + bx r3 + .align 2, 0 +_02219E7C: .word MOD13_02219EB4 + + thumb_func_start MOD13_02219E80 +MOD13_02219E80: ; 0x02219E80 + push {r4, r5, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r0, sp, #0 + strh r1, [r0] + ldrh r0, [r0] + add r1, r4, #0 + add r1, #0xc + mov r2, #0x20 + bl MIi_CpuClear16 + ldr r0, [r5] + strh r0, [r4, #0xa] + add r0, r5, #4 + add r1, r4, #0 + add r1, #0xc + ldrh r2, [r4, #0xa] + bl MI_CpuCopy8 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_02219EB4 +MOD13_02219EB4: ; 0x02219EB4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + ldrh r0, [r5, #0xa] + str r0, [r4] + add r0, r5, #0 + add r0, #0xc + add r1, r4, #4 + mov r2, #0x20 + bl MIi_CpuCopy16 + ldrh r0, [r5, #0x36] + str r0, [r4, #0x24] + add r0, r5, #4 + add r1, r4, #0 + add r1, #0x30 + mov r2, #6 + bl MIi_CpuCopy16 + mov r2, #0 + add r3, r2, #0 + ldr r1, _02219F50 ; =0x0223F834 +_02219EE2: + ldrh r6, [r5, #0x30] + ldrh r0, [r1] + and r6, r0 + cmp r6, #0 + beq _02219F10 + add r0, r4, r2 + ldrb r7, [r1, #2] + add r6, r0, #0 + add r6, #0x3c + strb r7, [r6] + ldrh r7, [r5, #0x2e] + ldrh r6, [r1] + and r7, r6 + cmp r7, #0 + beq _02219F0E + add r6, r0, #0 + add r6, #0x3c + ldrb r7, [r6] + mov r6, #0x80 + orr r7, r6 + add r0, #0x3c + strb r7, [r0] +_02219F0E: + add r2, r2, #1 +_02219F10: + add r1, r1, #4 + add r3, r3, #1 + cmp r3, #0xc + blt _02219EE2 + str r2, [r4, #0x38] + ldrh r0, [r5, #0x32] + str r0, [r4, #0x4c] + ldrh r1, [r5, #0x2c] + mov r0, #3 + and r1, r0 + cmp r1, #1 + bne _02219F34 + mov r0, #1 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219F34: + cmp r1, #2 + bne _02219F44 + mov r0, #2 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219F44: + mov r0, #0 + str r0, [r4, #0x50] + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_02219F50: .word 0x0223F834 + + thumb_func_start MOD13_02219F54 +MOD13_02219F54: ; 0x02219F54 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A028 ; =0x02241A84 + str r5, [r0] + add r2, r5, #0 + add r2, #0x53 + mov r0, #3 + bic r2, r0 + ldr r0, _0221A02C ; =0x02241A68 + str r2, [r0] + add r1, r2, #0 + add r1, #0x2f + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221A030 ; =0x02241A60 + str r1, [r3] + ldr r3, _0221A034 ; =0x0000231F + add r1, r1, r3 + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221A038 ; =0x02241A80 + str r1, [r3] + add r1, #0xdf + mov r3, #0x1f + bic r1, r3 + str r1, [r2, #4] + ldr r1, [r0] + add r3, r5, r7 + ldr r2, [r1, #4] + sub r2, r3, r2 + str r2, [r1, #8] + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0xc] + ldr r1, [r0] + mov r0, #3 + str r0, [r1] + ldr r0, _0221A03C ; =0x02241A7C + str r6, [r0] + ldr r0, _0221A040 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #0 + bne _02219FDA + ldr r0, _0221A030 ; =0x02241A60 + ldr r0, [r0] + ldr r1, _0221A044 ; =0x00002300 + bl FUN_020A7E80 + cmp r0, #0 + beq _02219FD4 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_02219FD4: + mov r1, #1 + ldr r0, _0221A040 ; =0x02241A78 + str r1, [r0] +_02219FDA: + ldr r0, _0221A040 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #1 + bne _0221A016 + ldr r0, _0221A02C ; =0x02241A68 + ldr r0, [r0] + ldr r1, _0221A048 ; =MOD13_0221A3CC + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221A000 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A000: + mov r1, #4 + ldr r0, _0221A040 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A016: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221A028: .word 0x02241A84 +_0221A02C: .word 0x02241A68 +_0221A030: .word 0x02241A60 +_0221A034: .word 0x0000231F +_0221A038: .word 0x02241A80 +_0221A03C: .word 0x02241A7C +_0221A040: .word 0x02241A78 +_0221A044: .word 0x00002300 +_0221A048: .word MOD13_0221A3CC + + thumb_func_start MOD13_0221A04C +MOD13_0221A04C: ; 0x0221A04C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A0EC ; =0x02241A6C + str r6, [r0] + cmp r5, #0 + beq _0221A072 + add r0, r5, #0 + ldr r1, _0221A0F0 ; =0x02241A84 + ldr r1, [r1] + mov r2, #0x50 + bl MI_CpuCopy8 + b _0221A07E +_0221A072: + ldr r0, _0221A0F0 ; =0x02241A84 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x50 + bl MI_CpuFill8 +_0221A07E: + add r0, r7, #0 + ldr r1, _0221A0F4 ; =0x02241A80 + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopy32 + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A0A8 + mov r1, #8 + ldr r0, _0221A0F8 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A0A8: + ldr r0, _0221A0F8 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A0DA + ldr r0, _0221A0F4 ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A0F0 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A0EC ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A0DA + mov r1, #8 + ldr r0, _0221A0F8 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A0DA: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221A0EC: .word 0x02241A6C +_0221A0F0: .word 0x02241A84 +_0221A0F4: .word 0x02241A80 +_0221A0F8: .word 0x02241A78 + + thumb_func_start MOD13_0221A0FC +MOD13_0221A0FC: ; 0x0221A0FC + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A160 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A136 + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221A122 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 +_0221A122: + mov r1, #2 + ldr r0, _0221A160 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A136: + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A152 + mov r1, #2 + ldr r0, _0221A160 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A152: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A160: .word 0x02241A78 + + thumb_func_start MOD13_0221A164 +MOD13_0221A164: ; 0x0221A164 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A1A0 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #7 + bne _0221A190 + bl FUN_020A7488 + cmp r0, #3 + bne _0221A190 + mov r1, #4 + ldr r0, _0221A1A0 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A190: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221A1A0: .word 0x02241A78 + + thumb_func_start MOD13_0221A1A4 +MOD13_0221A1A4: ; 0x0221A1A4 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221A1E4 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #5 + bne _0221A1D6 + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A1D6 + mov r1, #4 + ldr r0, _0221A1E4 ; =0x02241A78 + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221A1D6: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A1E4: .word 0x02241A78 + + thumb_func_start MOD13_0221A1E8 +MOD13_0221A1E8: ; 0x0221A1E8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl OS_DisableInterrupts + add r7, r0, #0 + ldr r1, _0221A2DC ; =0x02241A64 + ldr r0, [sp] + str r0, [r1] + cmp r5, #0 + beq _0221A21E + mov r2, #0 + ldr r1, _0221A2E0 ; =0x02241A88 +_0221A208: + ldrb r0, [r5] + add r5, r5, #1 + strb r0, [r1] + add r1, r1, #1 + add r2, r2, #1 + cmp r2, #6 + blt _0221A208 + ldr r1, _0221A2E0 ; =0x02241A88 + ldr r0, _0221A2E4 ; =0x02241A70 + str r1, [r0] + b _0221A22E +_0221A21E: + ldr r0, _0221A2E0 ; =0x02241A88 + mov r1, #0xff + mov r2, #6 + bl MI_CpuFill8 + ldr r1, _0221A2E8 ; =0x020FF590 + ldr r0, _0221A2E4 ; =0x02241A70 + str r1, [r0] +_0221A22E: + cmp r4, #0 + beq _0221A26C + cmp r6, #0 + ble _0221A26C + cmp r6, #0x20 + bgt _0221A26C + mov r1, #0 + cmp r6, #0 + ble _0221A250 + ldr r2, _0221A2EC ; =0x02241A90 +_0221A242: + ldrb r0, [r4] + add r4, r4, #1 + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, r6 + blt _0221A242 +_0221A250: + cmp r1, #0x20 + bge _0221A264 + ldr r0, _0221A2EC ; =0x02241A90 + add r2, r0, r1 + mov r0, #0 +_0221A25A: + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, #0x20 + blt _0221A25A +_0221A264: + ldr r1, _0221A2EC ; =0x02241A90 + ldr r0, _0221A2F0 ; =0x02241A74 + str r1, [r0] + b _0221A27C +_0221A26C: + ldr r0, _0221A2EC ; =0x02241A90 + mov r1, #0xff + mov r2, #0x20 + bl MI_CpuFill8 + ldr r1, _0221A2F4 ; =0x020FF598 + ldr r0, _0221A2F0 ; =0x02241A74 + str r1, [r0] +_0221A27C: + ldr r0, _0221A2F8 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #3 + bne _0221A2AE + ldr r0, _0221A2E4 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A2F0 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A2DC ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A2CC + mov r1, #6 + ldr r0, _0221A2F8 ; =0x02241A78 + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A2AE: + bl MOD13_0221A348 + cmp r0, #1 + bne _0221A2CC + mov r1, #6 + ldr r0, _0221A2F8 ; =0x02241A78 + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221A2CC: + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221A2DC: .word 0x02241A64 +_0221A2E0: .word 0x02241A88 +_0221A2E4: .word 0x02241A70 +_0221A2E8: .word 0x020FF590 +_0221A2EC: .word 0x02241A90 +_0221A2F0: .word 0x02241A74 +_0221A2F4: .word 0x020FF598 +_0221A2F8: .word 0x02241A78 + + thumb_func_start MOD13_0221A2FC +MOD13_0221A2FC: ; 0x0221A2FC + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + bl FUN_020A83D0 + bl FUN_020A846C + add r6, r0, #0 + cmp r6, #0 + ble _0221A336 + mov r4, #0 + cmp r6, #0 + ble _0221A336 +_0221A31A: + cmp r4, r7 + bge _0221A336 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020A8358 + add r1, r5, #0 + mov r2, #0xc0 + bl MIi_CpuCopy32 + add r4, r4, #1 + add r5, #0xc0 + cmp r4, r6 + blt _0221A31A +_0221A336: + mov r0, #0 + bl FUN_020A83D0 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221A348 +MOD13_0221A348: ; 0x0221A348 + push {lr} + sub sp, #4 + ldr r0, _0221A3C0 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #8 + bhi _0221A3B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221A362: ; jump table + .short _0221A3B0 - _0221A362 + 1 ; case 0 + .short _0221A39A - _0221A362 + 1 ; case 1 + .short _0221A3B0 - _0221A362 + 1 ; case 2 + .short _0221A3B0 - _0221A362 + 1 ; case 3 + .short _0221A3B0 - _0221A362 + 1 ; case 4 + .short _0221A374 - _0221A362 + 1 ; case 5 + .short _0221A3B0 - _0221A362 + 1 ; case 6 + .short _0221A38A - _0221A362 + 1 ; case 7 + .short _0221A3B0 - _0221A362 + 1 ; case 8 +_0221A374: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A38A: + bl FUN_020A7488 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A39A: + ldr r0, _0221A3C4 ; =0x02241A68 + ldr r0, [r0] + ldr r1, _0221A3C8 ; =MOD13_0221A3CC + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221A3B8 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A3B0: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221A3B8: + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221A3C0: .word 0x02241A78 +_0221A3C4: .word 0x02241A68 +_0221A3C8: .word MOD13_0221A3CC + + thumb_func_start MOD13_0221A3CC +MOD13_0221A3CC: ; 0x0221A3CC + push {lr} + sub sp, #4 + cmp r0, #0 + bne _0221A3D6 + b _0221A750 +_0221A3D6: + mov r1, #0 + ldrsh r2, [r0, r1] + cmp r2, #7 + bls _0221A3E0 + b _0221A742 +_0221A3E0: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #8] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r2, pc + bx r2 +_0221A3EE: ; jump table + .short _0221A742 - _0221A3EE + 1 ; case 0 + .short _0221A3FE - _0221A3EE + 1 ; case 1 + .short _0221A6E4 - _0221A3EE + 1 ; case 2 + .short _0221A4AE - _0221A3EE + 1 ; case 3 + .short _0221A536 - _0221A3EE + 1 ; case 4 + .short _0221A4F2 - _0221A3EE + 1 ; case 5 + .short _0221A610 - _0221A3EE + 1 ; case 6 + .short _0221A728 - _0221A3EE + 1 ; case 7 +_0221A3FE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A494 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A426 + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A41C + b _0221A750 +_0221A41C: + mov r0, #6 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A426: + cmp r2, #6 + bne _0221A45C + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A440 + b _0221A750 +_0221A440: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A450 + b _0221A750 +_0221A450: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A45C: + cmp r2, #8 + beq _0221A462 + b _0221A750 +_0221A462: + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A478 + b _0221A750 +_0221A478: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A488 + b _0221A750 +_0221A488: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A494: + mov r3, #1 + ldr r0, _0221A758 ; =0x02241A78 + str r3, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r3, [r0] + cmp r3, #0 + bne _0221A4A4 + b _0221A750 +_0221A4A4: + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221A4AE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A4D8 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #6 + beq _0221A4C0 + b _0221A750 +_0221A4C0: + mov r2, #5 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A4CE + b _0221A750 +_0221A4CE: + mov r0, #8 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A4D8: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A4E8 + b _0221A750 +_0221A4E8: + mov r0, #9 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A4F2: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A51C + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #8 + beq _0221A504 + b _0221A750 +_0221A504: + mov r2, #7 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A512 + b _0221A750 +_0221A512: + mov r0, #0xc + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A51C: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A52C + b _0221A750 +_0221A52C: + mov r0, #0xd + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A536: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A5F6 + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A55E + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A554 + b _0221A750 +_0221A554: + mov r0, #0xa + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A55E: + cmp r2, #6 + bne _0221A594 + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221A578 + b _0221A750 +_0221A578: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A588 + b _0221A750 +_0221A588: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A594: + cmp r2, #2 + bne _0221A5BE + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221A5A2 + b _0221A750 +_0221A5A2: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A5B2 + b _0221A750 +_0221A5B2: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A5BE: + cmp r2, #8 + beq _0221A5C4 + b _0221A750 +_0221A5C4: + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221A5DA + b _0221A750 +_0221A5DA: + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A5EA + b _0221A750 +_0221A5EA: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A5F6: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A606 + b _0221A750 +_0221A606: + mov r0, #0xb + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A610: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A6CC + ldr r0, _0221A758 ; =0x02241A78 + ldr r2, [r0] + cmp r2, #4 + bne _0221A638 + mov r2, #3 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + bne _0221A62E + b _0221A750 +_0221A62E: + mov r0, #0xe + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A638: + cmp r2, #6 + bne _0221A66A + ldr r0, _0221A760 ; =0x02241A70 + ldr r0, [r0] + ldr r1, _0221A764 ; =0x02241A74 + ldr r1, [r1] + ldr r2, _0221A768 ; =0x02241A64 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A66A: + cmp r2, #2 + bne _0221A690 + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A690: + cmp r2, #8 + bne _0221A6C2 + ldr r0, _0221A76C ; =0x02241A80 + ldr r0, [r0] + ldr r1, _0221A770 ; =0x02241A84 + ldr r1, [r1] + ldr r2, _0221A774 ; =0x02241A6C + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + beq _0221A750 + mov r1, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A6C2: + mov r1, #3 + str r1, [r0] + add sp, #4 + pop {r3} + bx r3 +_0221A6CC: + mov r2, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r2, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #0xf + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A6E4: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221A710 + ldr r0, _0221A758 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #2 + bne _0221A750 + bl FUN_020A7E0C + mov r1, #0 + ldr r0, _0221A758 ; =0x02241A78 + str r1, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #0x14 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A710: + mov r3, #3 + ldr r0, _0221A758 ; =0x02241A78 + str r3, [r0] + ldr r0, _0221A75C ; =0x02241A7C + ldr r3, [r0] + cmp r3, #0 + beq _0221A750 + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221A728: + ldr r0, _0221A758 ; =0x02241A78 + ldr r0, [r0] + cmp r0, #5 + bne _0221A750 + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #5 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221A742: + ldr r0, _0221A75C ; =0x02241A7C + ldr r2, [r0] + cmp r2, #0 + beq _0221A750 + mov r0, #1 + mov r1, #0 + blx r2 +_0221A750: + add sp, #4 + pop {r3} + bx r3 + nop +_0221A758: .word 0x02241A78 +_0221A75C: .word 0x02241A7C +_0221A760: .word 0x02241A70 +_0221A764: .word 0x02241A74 +_0221A768: .word 0x02241A64 +_0221A76C: .word 0x02241A80 +_0221A770: .word 0x02241A84 +_0221A774: .word 0x02241A6C + + thumb_func_start MOD13_0221A778 +MOD13_0221A778: ; 0x0221A778 + push {lr} + sub sp, #0xc + add r0, sp, #0 + bl MOD13_0221A7AC + add r0, sp, #0 + ldr r1, _0221A790 ; =0x02241B2C + ldr r1, [r1] + blx r1 + add sp, #0xc + pop {r3} + bx r3 + .align 2, 0 +_0221A790: .word 0x02241B2C + + thumb_func_start MOD13_0221A794 +MOD13_0221A794: ; 0x0221A794 + push {lr} + sub sp, #4 + ldr r1, _0221A7A8 ; =0x02241CA8 + mov r2, #0xe8 + bl memcpy + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221A7A8: .word 0x02241CA8 + + thumb_func_start MOD13_0221A7AC +MOD13_0221A7AC: ; 0x0221A7AC + push {r4, lr} + add r4, r0, #0 + ldr r0, _0221A7E0 ; =0x02241AE8 + ldr r0, [r0] + str r0, [r4] + ldr r0, _0221A7E4 ; =0x0223F870 + ldr r1, [r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _0221A7C6 + str r0, [r4, #4] + b _0221A7D2 +_0221A7C6: + bl MOD13_0221AA90 + ldr r1, _0221A7E4 ; =0x0223F870 + ldr r1, [r1] + sub r0, r1, r0 + str r0, [r4, #4] +_0221A7D2: + ldr r0, _0221A7E8 ; =0x02241B28 + ldr r0, [r0] + str r0, [r4, #8] + mov r0, #1 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221A7E0: .word 0x02241AE8 +_0221A7E4: .word 0x0223F870 +_0221A7E8: .word 0x02241B28 + + thumb_func_start MOD13_0221A7EC +MOD13_0221A7EC: ; 0x0221A7EC + push {r4, r5, r6, lr} + ldr r0, _0221A884 ; =0x02241B14 + ldr r0, [r0] + cmp r0, #0 + beq _0221A862 + ldr r4, _0221A888 ; =0x02241AE8 + ldr r6, [r4] + mov r1, #1 + ldr r0, _0221A88C ; =0x02241AC0 + str r1, [r0] + mov r5, #0x64 + b _0221A80A +_0221A804: + add r0, r5, #0 + bl OS_Sleep +_0221A80A: + ldr r0, [r4] + cmp r0, #1 + blt _0221A814 + cmp r0, #5 + ble _0221A804 +_0221A814: + ldr r0, _0221A890 ; =0x000001F4 + bl OS_Sleep + ldr r0, _0221A894 ; =0x02241BE8 + bl OS_IsThreadTerminated + cmp r0, #0 + bne _0221A83C + ldr r4, _0221A894 ; =0x02241BE8 +_0221A826: + add r0, r4, #0 + bl OS_WakeupThreadDirect + add r0, r4, #0 + bl OS_JoinThread + add r0, r4, #0 + bl OS_IsThreadTerminated + cmp r0, #0 + beq _0221A826 +_0221A83C: + ldr r0, _0221A898 ; =0x02241AE0 + ldr r0, [r0] + cmp r0, #0 + beq _0221A850 + ldr r1, _0221A89C ; =0x02241ABC + ldr r1, [r1] + blx r1 + mov r1, #0 + ldr r0, _0221A898 ; =0x02241AE0 + str r1, [r0] +_0221A850: + mov r1, #0 + ldr r0, _0221A884 ; =0x02241B14 + str r1, [r0] + ldr r0, _0221A888 ; =0x02241AE8 + ldr r0, [r0] + cmp r6, r0 + beq _0221A862 + bl MOD13_0221A778 +_0221A862: + ldr r0, _0221A8A0 ; =0x02241B24 + ldr r0, [r0] + cmp r0, #0 + ble _0221A87A + bl MOD13_0221DAF4 + mov r2, #0 + ldr r1, _0221A8A0 ; =0x02241B24 + str r2, [r1] + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221A87A: + mov r0, #9 + mvn r0, r0 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221A884: .word 0x02241B14 +_0221A888: .word 0x02241AE8 +_0221A88C: .word 0x02241AC0 +_0221A890: .word 0x000001F4 +_0221A894: .word 0x02241BE8 +_0221A898: .word 0x02241AE0 +_0221A89C: .word 0x02241ABC +_0221A8A0: .word 0x02241B24 + + thumb_func_start MOD13_0221A8A4 +MOD13_0221A8A4: ; 0x0221A8A4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _0221A998 ; =0x02241AE8 + ldr r0, [r0] + cmp r0, #1 + blt _0221A8C2 + cmp r0, #5 + bgt _0221A8C2 + mov r0, #9 + mvn r0, r0 + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A8C2: + ldr r0, _0221A99C ; =0x0223F874 + str r1, [r0] + mov r5, #7 + ldr r0, _0221A998 ; =0x02241AE8 + str r5, [r0] + ldr r0, _0221A9A0 ; =0x02241B2C + str r2, [r0] + ldr r0, _0221A9A4 ; =0x02241AB4 + str r3, [r0] + ldr r2, [sp, #0x18] + ldr r0, _0221A9A8 ; =0x02241ABC + str r2, [r0] + ldr r2, [sp, #0x1c] + ldr r0, _0221A9AC ; =0x0223F86C + str r2, [r0] + add r0, r1, #0 + bl MOD13_0221DB54 + mov r2, #1 + ldr r1, _0221A9B0 ; =0x02241B24 + str r2, [r1] + cmp r0, #0 + bge _0221A8FC + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A8FC: + ldr r0, _0221A9AC ; =0x0223F86C + ldr r0, [r0] + ldr r1, _0221A9A4 ; =0x02241AB4 + ldr r1, [r1] + blx r1 + ldr r1, _0221A9B8 ; =0x02241AE0 + str r0, [r1] + cmp r0, #0 + bne _0221A91E + mov r0, #0 + mvn r0, r0 + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A91E: + bl OS_IsThreadAvailable + cmp r0, #1 + beq _0221A936 + mov r0, #8 + mvn r0, r0 + ldr r1, _0221A9B4 ; =0x02241B28 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 +_0221A936: + ldr r0, _0221A9AC ; =0x0223F86C + ldr r3, [r0] + str r3, [sp] + str r4, [sp, #4] + ldr r0, _0221A9BC ; =0x02241BE8 + ldr r1, _0221A9C0 ; =MOD13_0221C618 + mov r2, #0 + ldr r4, _0221A9B8 ; =0x02241AE0 + ldr r5, [r4] + mov r4, #7 + bic r3, r4 + add r3, r5, r3 + bl OS_CreateThread + mov r1, #1 + ldr r0, _0221A998 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221AA90 + ldr r1, _0221A9C4 ; =0x0000EA60 + add r1, r0, r1 + ldr r0, _0221A9C8 ; =0x0223F870 + str r1, [r0] + mov r0, #0 + ldr r1, _0221A9CC ; =0x02241AC0 + str r0, [r1] + ldr r5, _0221A9D0 ; =0x02241CA8 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 +_0221A972: + stmia r5!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + sub r4, r4, #1 + cmp r4, #0 + bne _0221A972 + stmia r5!, {r0, r1} + bl MOD13_0221A778 + ldr r0, _0221A9BC ; =0x02241BE8 + bl OS_WakeupThreadDirect + mov r0, #1 + ldr r1, _0221A9D4 ; =0x02241B14 + str r0, [r1] + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221A998: .word 0x02241AE8 +_0221A99C: .word 0x0223F874 +_0221A9A0: .word 0x02241B2C +_0221A9A4: .word 0x02241AB4 +_0221A9A8: .word 0x02241ABC +_0221A9AC: .word 0x0223F86C +_0221A9B0: .word 0x02241B24 +_0221A9B4: .word 0x02241B28 +_0221A9B8: .word 0x02241AE0 +_0221A9BC: .word 0x02241BE8 +_0221A9C0: .word MOD13_0221C618 +_0221A9C4: .word 0x0000EA60 +_0221A9C8: .word 0x0223F870 +_0221A9CC: .word 0x02241AC0 +_0221A9D0: .word 0x02241CA8 +_0221A9D4: .word 0x02241B14 + + thumb_func_start MOD13_0221A9D8 +MOD13_0221A9D8: ; 0x0221A9D8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + str r0, [sp] + add r6, r1, #0 + lsl r5, r0, #0 + mov r4, #0 + add r7, r4, #0 +_0221A9E6: + add r0, r5, #0 + ldrsb r1, [r6, r7] + add r6, r6, #1 + bl MOD13_0221AA14 + add r1, r5, r0 + add r5, r1, #0 + cmp r4, #5 + bge _0221A9FE + add r5, r1, #1 + mov r0, #0x3a + strb r0, [r1] +_0221A9FE: + add r4, r4, #1 + cmp r4, #6 + blt _0221A9E6 + mov r0, #0 + strb r0, [r5] + ldr r0, [sp] + sub r0, r5, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221AA14 +MOD13_0221AA14: ; 0x0221AA14 + push {r4, r5} + add r2, r0, #0 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + mov r1, #0xf0 + add r3, r4, #0 + and r3, r1 + asr r3, r3, #4 + mov r5, #0 + mov r1, #0xf + and r4, r1 +_0221AA2A: + cmp r3, #9 + bgt _0221AA36 + add r3, #0x30 + strb r3, [r2] + add r2, r2, #1 + b _0221AA3C +_0221AA36: + add r3, #0x37 + strb r3, [r2] + add r2, r2, #1 +_0221AA3C: + add r3, r4, #0 + add r5, r5, #1 + cmp r5, #2 + blt _0221AA2A + mov r1, #0 + strb r1, [r2] + sub r0, r2, r0 + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AA50 +MOD13_0221AA50: ; 0x0221AA50 + push {lr} + sub sp, #4 + ldr r1, _0221AA60 ; =0x02241ABC + ldr r1, [r1] + blx r1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221AA60: .word 0x02241ABC + + thumb_func_start MOD13_0221AA64 +MOD13_0221AA64: ; 0x0221AA64 + push {r4, r5, lr} + sub sp, #4 + add r4, r0, #0 + mul r4, r1 + add r0, r4, #0 + ldr r1, _0221AA8C ; =0x02241AB4 + ldr r1, [r1] + blx r1 + add r5, r0, #0 + cmp r5, #0 + beq _0221AA82 + mov r1, #0 + add r2, r4, #0 + bl Call_FillMemWithValue +_0221AA82: + add r0, r5, #0 + add sp, #4 + pop {r4, r5} + pop {r3} + bx r3 + .align 2, 0 +_0221AA8C: .word 0x02241AB4 + + thumb_func_start MOD13_0221AA90 +MOD13_0221AA90: ; 0x0221AA90 + push {lr} + sub sp, #4 + bl OS_GetTick + lsr r2, r0, #0x1a + lsl r1, r1, #6 + orr r1, r2 + lsl r0, r0, #6 + ldr r2, _0221AAB0 ; =0x000082EA + mov r3, #0 + bl _ll_udiv + add sp, #4 + pop {r3} + bx r3 + nop +_0221AAB0: .word 0x000082EA + + thumb_func_start MOD13_0221AAB4 +MOD13_0221AAB4: ; 0x0221AAB4 + push {r4, r5, r6, lr} + sub sp, #0x58 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r0, sp, #0 + bl MOD13_0221B4AC + add r0, sp, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD13_0221B42C + add r0, r5, #0 + add r1, sp, #0 + bl MOD13_0221B3D0 + add sp, #0x58 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221AAE0 +MOD13_0221AAE0: ; 0x0221AAE0 + mov r3, #0 + cmp r2, #0 + bls _0221AAF4 + lsl r1, r1, #0x18 + asr r1, r1, #0x18 +_0221AAEA: + strb r1, [r0] + add r0, r0, #1 + add r3, r3, #1 + cmp r3, r2 + blo _0221AAEA +_0221AAF4: + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AAF8 +MOD13_0221AAF8: ; 0x0221AAF8 + push {r4} + sub sp, #4 + mov r4, #0 + cmp r2, #0 + bls _0221AB0C +_0221AB02: + ldrb r3, [r1, r4] + strb r3, [r0, r4] + add r4, r4, #1 + cmp r4, r2 + blo _0221AB02 +_0221AB0C: + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AB14 +MOD13_0221AB14: ; 0x0221AB14 + push {r4, r5, r6, r7} + mov r6, #0 + cmp r2, #0 + bls _0221AB3E +_0221AB1C: + add r3, r6, #3 + ldrb r3, [r1, r3] + lsl r5, r3, #0x18 + add r3, r6, #2 + ldrb r3, [r1, r3] + lsl r4, r3, #0x10 + ldrb r3, [r1, r6] + add r7, r6, #1 + ldrb r7, [r1, r7] + lsl r7, r7, #8 + orr r3, r7 + orr r4, r3 + orr r5, r4 + stmia r0!, {r5} + add r6, r6, #4 + cmp r6, r2 + blo _0221AB1C +_0221AB3E: + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221AB44 +MOD13_0221AB44: ; 0x0221AB44 + push {r4, r5} + mov r3, #0 + cmp r2, #0 + bls _0221AB70 +_0221AB4C: + ldr r4, [r1] + strb r4, [r0, r3] + ldr r4, [r1] + lsr r5, r4, #8 + add r4, r3, #1 + strb r5, [r0, r4] + ldr r4, [r1] + lsr r5, r4, #0x10 + add r4, r3, #2 + strb r5, [r0, r4] + ldr r4, [r1] + lsr r5, r4, #0x18 + add r4, r3, #3 + strb r5, [r0, r4] + add r1, r1, #4 + add r3, r3, #4 + cmp r3, r2 + blo _0221AB4C +_0221AB70: + pop {r4, r5} + bx lr + + thumb_func_start MOD13_0221AB74 +MOD13_0221AB74: ; 0x0221AB74 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r5, r0, #0 + ldr r0, [r5] + str r0, [sp] + ldr r4, [r5, #4] + ldr r6, [r5, #8] + ldr r7, [r5, #0xc] + add r0, sp, #0x40 + mov r2, #0x40 + bl MOD13_0221AB14 + ldr r0, [sp, #0x40] + str r0, [sp, #4] + add r1, r4, #0 + and r1, r6 + mvn r0, r4 + and r0, r7 + orr r1, r0 + ldr r0, [sp, #4] + add r1, r0, r1 + ldr r0, _0221AF8C ; =0x28955B88 + sub r1, r1, r0 + ldr r0, [sp] + add r0, r0, r1 + lsl r1, r0, #7 + lsr r0, r0, #0x19 + orr r1, r0 + add r0, r1, r4 + ldr r1, [sp, #0x44] + str r1, [sp, #8] + add r1, r0, #0 + and r1, r4 + mvn r2, r0 + and r2, r6 + orr r1, r2 + ldr r2, [sp, #8] + add r2, r2, r1 + ldr r1, _0221AF90 ; =0x173848AA + sub r1, r2, r1 + add r1, r7, r1 + lsl r2, r1, #0xc + lsr r1, r1, #0x14 + orr r2, r1 + add r3, r2, r0 + ldr r1, [sp, #0x48] + str r1, [sp, #0xc] + add r1, r3, #0 + and r1, r0 + mvn r2, r3 + and r2, r4 + orr r1, r2 + ldr r2, [sp, #0xc] + add r2, r2, r1 + ldr r1, _0221AF94 ; =0x242070DB + add r1, r2, r1 + add r1, r6, r1 + lsl r2, r1, #0x11 + lsr r1, r1, #0xf + orr r2, r1 + add r2, r2, r3 + ldr r1, [sp, #0x4c] + str r1, [sp, #0x10] + add r1, r2, #0 + and r1, r3 + mvn r6, r2 + and r6, r0 + orr r1, r6 + ldr r6, [sp, #0x10] + add r6, r6, r1 + ldr r1, _0221AF98 ; =0x3E423112 + sub r1, r6, r1 + add r1, r4, r1 + lsl r4, r1, #0x16 + lsr r1, r1, #0xa + orr r4, r1 + add r1, r4, r2 + ldr r4, [sp, #0x50] + str r4, [sp, #0x14] + add r4, r1, #0 + and r4, r2 + mvn r6, r1 + and r6, r3 + orr r4, r6 + ldr r6, [sp, #0x14] + add r6, r6, r4 + ldr r4, _0221AF9C ; =0x0A83F051 + sub r4, r6, r4 + add r0, r0, r4 + lsl r4, r0, #7 + lsr r0, r0, #0x19 + orr r4, r0 + add r4, r4, r1 + ldr r0, [sp, #0x54] + str r0, [sp, #0x18] + add r0, r4, #0 + and r0, r1 + mvn r6, r4 + and r6, r2 + orr r0, r6 + ldr r6, [sp, #0x18] + add r6, r6, r0 + ldr r0, _0221AFA0 ; =0x4787C62A + add r0, r6, r0 + add r0, r3, r0 + lsl r3, r0, #0xc + lsr r0, r0, #0x14 + orr r3, r0 + add r3, r3, r4 + ldr r0, [sp, #0x58] + str r0, [sp, #0x1c] + add r0, r3, #0 + and r0, r4 + mvn r6, r3 + and r6, r1 + orr r0, r6 + ldr r6, [sp, #0x1c] + add r6, r6, r0 + ldr r0, _0221AFA4 ; =0x57CFB9ED + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x11 + lsr r0, r0, #0xf + orr r2, r0 + add r0, r2, r3 + ldr r2, [sp, #0x5c] + str r2, [sp, #0x20] + add r2, r0, #0 + and r2, r3 + mvn r6, r0 + and r6, r4 + orr r2, r6 + ldr r6, [sp, #0x20] + add r6, r6, r2 + ldr r2, _0221AFA8 ; =0x02B96AFF + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x16 + lsr r1, r1, #0xa + orr r2, r1 + add r6, r2, r0 + ldr r1, [sp, #0x60] + str r1, [sp, #0x24] + add r1, r6, #0 + and r1, r0 + mvn r2, r6 + and r2, r3 + orr r1, r2 + ldr r2, [sp, #0x24] + add r2, r2, r1 + ldr r1, _0221AFAC ; =0x698098D8 + add r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #7 + lsr r1, r1, #0x19 + orr r2, r1 + add r2, r2, r6 + ldr r1, [sp, #0x64] + str r1, [sp, #0x28] + add r1, r2, #0 + and r1, r6 + mvn r4, r2 + and r4, r0 + orr r1, r4 + ldr r4, [sp, #0x28] + add r4, r4, r1 + ldr r1, _0221AFB0 ; =0x74BB0851 + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xc + lsr r1, r1, #0x14 + orr r3, r1 + add r1, r3, r2 + ldr r3, [sp, #0x68] + str r3, [sp, #0x2c] + add r3, r1, #0 + and r3, r2 + mvn r4, r1 + and r4, r6 + orr r3, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r3 + ldr r3, _0221AFB4 ; =0x0000A44F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x11 + lsr r0, r0, #0xf + orr r3, r0 + add r4, r3, r1 + ldr r0, [sp, #0x6c] + str r0, [sp, #0x30] + add r0, r4, #0 + and r0, r1 + mvn r3, r4 + and r3, r2 + orr r0, r3 + ldr r3, [sp, #0x30] + add r3, r3, r0 + ldr r0, _0221AFB8 ; =0x76A32842 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x16 + lsr r0, r0, #0xa + orr r3, r0 + add r3, r3, r4 + ldr r0, [sp, #0x70] + str r0, [sp, #0x34] + add r0, r3, #0 + and r0, r4 + mvn r6, r3 + and r6, r1 + orr r0, r6 + ldr r6, [sp, #0x34] + add r6, r6, r0 + ldr r0, _0221AFBC ; =0x6B901122 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #7 + lsr r0, r0, #0x19 + orr r2, r0 + add r0, r2, r3 + ldr r2, [sp, #0x74] + str r2, [sp, #0x38] + add r2, r0, #0 + and r2, r3 + mvn r6, r0 + and r6, r4 + orr r2, r6 + ldr r6, [sp, #0x38] + add r6, r6, r2 + ldr r2, _0221AFC0 ; =0x02678E6D + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xc + lsr r1, r1, #0x14 + orr r2, r1 + add r6, r2, r0 + mvn r2, r6 + ldr r7, [sp, #0x78] + add r1, r6, #0 + and r1, r0 + and r2, r3 + orr r1, r2 + add r2, r7, r1 + ldr r1, _0221AFC4 ; =0x5986BC72 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x11 + lsr r1, r1, #0xf + orr r2, r1 + add r2, r2, r6 + mvn r4, r2 + ldr r1, [sp, #0x7c] + str r1, [sp, #0x3c] + add r1, r2, #0 + and r1, r6 + and r4, r0 + orr r1, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r1 + ldr r1, _0221AFC8 ; =0x49B40821 + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x16 + lsr r1, r1, #0xa + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #8] + add r4, r4, r3 + ldr r3, _0221AFCC ; =0x09E1DA9E + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #5 + lsr r0, r0, #0x1b + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0x1c] + add r3, r3, r0 + ldr r0, _0221AFD0 ; =0x3FBF4CC0 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #9 + lsr r0, r0, #0x17 + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x30] + add r6, r6, r0 + ldr r0, _0221AFD4 ; =0x265E5A51 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0xe + lsr r0, r0, #0x12 + orr r2, r0 + add r0, r2, r3 + add r2, r0, #0 + and r2, r4 + add r6, r3, #0 + bic r6, r4 + orr r2, r6 + ldr r6, [sp, #4] + add r6, r6, r2 + ldr r2, _0221AFD8 ; =0x16493856 + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x14 + lsr r1, r1, #0xc + orr r2, r1 + add r6, r2, r0 + add r1, r6, #0 + and r1, r3 + add r2, r0, #0 + bic r2, r3 + orr r1, r2 + ldr r2, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0221AFDC ; =0x29D0EFA3 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #5 + lsr r1, r1, #0x1b + orr r2, r1 + add r2, r2, r6 + add r1, r2, #0 + and r1, r0 + add r4, r6, #0 + bic r4, r0 + orr r1, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r1 + ldr r1, _0221AFE0 ; =0x02441453 + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #9 + lsr r1, r1, #0x17 + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r3 + ldr r3, _0221AFE4 ; =0x275E197F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0xe + lsr r0, r0, #0x12 + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0x14] + add r3, r3, r0 + ldr r0, _0221AFE8 ; =0x182C0438 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x14 + lsr r0, r0, #0xc + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x28] + add r6, r6, r0 + ldr r0, _0221AFEC ; =0x21E1CDE6 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #5 + lsr r0, r0, #0x1b + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + and r6, r4 + add r2, r3, #0 + bic r2, r4 + orr r6, r2 + add r6, r7, r6 + ldr r2, _0221AFF0 ; =0x3CC8F82A + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #9 + lsr r1, r1, #0x17 + orr r2, r1 + add r6, r2, r0 + add r1, r6, #0 + and r1, r3 + add r2, r0, #0 + bic r2, r3 + orr r1, r2 + ldr r2, [sp, #0x10] + add r2, r2, r1 + ldr r1, _0221AFF4 ; =0x0B2AF279 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0xe + lsr r1, r1, #0x12 + orr r2, r1 + add r2, r2, r6 + add r1, r2, #0 + and r1, r0 + add r4, r6, #0 + bic r4, r0 + orr r1, r4 + ldr r4, [sp, #0x24] + add r4, r4, r1 + ldr r1, _0221AFF8 ; =0x455A14ED + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x14 + lsr r1, r1, #0xc + orr r3, r1 + add r1, r3, r2 + add r3, r1, #0 + and r3, r6 + add r4, r2, #0 + bic r4, r6 + orr r3, r4 + ldr r4, [sp, #0x38] + add r4, r4, r3 + ldr r3, _0221AFFC ; =0x561C16FB + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #5 + lsr r0, r0, #0x1b + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + and r0, r2 + add r3, r1, #0 + bic r3, r2 + orr r0, r3 + ldr r3, [sp, #0xc] + add r3, r3, r0 + ldr r0, _0221B000 ; =0x03105C08 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #9 + lsr r0, r0, #0x17 + orr r3, r0 + add r3, r3, r4 + add r0, r3, #0 + and r0, r1 + add r6, r4, #0 + bic r6, r1 + orr r0, r6 + ldr r6, [sp, #0x20] + add r6, r6, r0 + ldr r0, _0221B004 ; =0x676F02D9 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0xe + lsr r0, r0, #0x12 + orr r2, r0 + add r0, r2, r3 + add r2, r0, #0 + and r2, r4 + add r6, r3, #0 + bic r6, r4 + orr r2, r6 + ldr r6, [sp, #0x34] + add r6, r6, r2 + ldr r2, _0221B008 ; =0x72D5B376 + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x14 + lsr r1, r1, #0xc + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x18] + add r2, r2, r1 + ldr r1, _0221B00C ; =0x0005C6BE + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #4 + lsr r1, r1, #0x1c + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x24] + add r4, r4, r1 + ldr r1, _0221B010 ; =0x788E097F + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xb + lsr r1, r1, #0x15 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x30] + add r4, r4, r3 + ldr r3, _0221B014 ; =0x6D9D6122 + b _0221B018 + .align 2, 0 +_0221AF8C: .word 0x28955B88 +_0221AF90: .word 0x173848AA +_0221AF94: .word 0x242070DB +_0221AF98: .word 0x3E423112 +_0221AF9C: .word 0x0A83F051 +_0221AFA0: .word 0x4787C62A +_0221AFA4: .word 0x57CFB9ED +_0221AFA8: .word 0x02B96AFF +_0221AFAC: .word 0x698098D8 +_0221AFB0: .word 0x74BB0851 +_0221AFB4: .word 0x0000A44F +_0221AFB8: .word 0x76A32842 +_0221AFBC: .word 0x6B901122 +_0221AFC0: .word 0x02678E6D +_0221AFC4: .word 0x5986BC72 +_0221AFC8: .word 0x49B40821 +_0221AFCC: .word 0x09E1DA9E +_0221AFD0: .word 0x3FBF4CC0 +_0221AFD4: .word 0x265E5A51 +_0221AFD8: .word 0x16493856 +_0221AFDC: .word 0x29D0EFA3 +_0221AFE0: .word 0x02441453 +_0221AFE4: .word 0x275E197F +_0221AFE8: .word 0x182C0438 +_0221AFEC: .word 0x21E1CDE6 +_0221AFF0: .word 0x3CC8F82A +_0221AFF4: .word 0x0B2AF279 +_0221AFF8: .word 0x455A14ED +_0221AFFC: .word 0x561C16FB +_0221B000: .word 0x03105C08 +_0221B004: .word 0x676F02D9 +_0221B008: .word 0x72D5B376 +_0221B00C: .word 0x0005C6BE +_0221B010: .word 0x788E097F +_0221B014: .word 0x6D9D6122 +_0221B018: + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x10 + lsr r0, r0, #0x10 + orr r3, r0 + add r4, r3, r1 + add r0, r4, #0 + eor r0, r1 + add r3, r2, #0 + eor r3, r0 + add r3, r7, r3 + ldr r0, _0221B35C ; =0x021AC7F4 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x17 + lsr r0, r0, #9 + orr r3, r0 + add r3, r3, r4 + add r6, r3, #0 + eor r6, r4 + add r0, r1, #0 + eor r0, r6 + ldr r6, [sp, #8] + add r6, r6, r0 + ldr r0, _0221B360 ; =0x5B4115BC + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #4 + lsr r0, r0, #0x1c + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + eor r6, r3 + add r2, r4, #0 + eor r2, r6 + ldr r6, [sp, #0x14] + add r6, r6, r2 + ldr r2, _0221B364 ; =0x4BDECFA9 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xb + lsr r1, r1, #0x15 + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x20] + add r2, r2, r1 + ldr r1, _0221B368 ; =0x0944B4A0 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x10 + lsr r1, r1, #0x10 + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x2c] + add r4, r4, r1 + ldr r1, _0221B36C ; =0x41404390 + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0x17 + lsr r1, r1, #9 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x38] + add r4, r4, r3 + ldr r3, _0221B370 ; =0x289B7EC6 + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #4 + lsr r0, r0, #0x1c + orr r3, r0 + add r4, r3, r1 + add r3, r4, #0 + eor r3, r1 + add r0, r2, #0 + eor r0, r3 + ldr r3, [sp, #4] + add r3, r3, r0 + ldr r0, _0221B374 ; =0x155ED806 + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0xb + lsr r0, r0, #0x15 + orr r3, r0 + add r3, r3, r4 + add r6, r3, #0 + eor r6, r4 + add r0, r1, #0 + eor r0, r6 + ldr r6, [sp, #0x10] + add r6, r6, r0 + ldr r0, _0221B378 ; =0x2B10CF7B + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x10 + lsr r0, r0, #0x10 + orr r2, r0 + add r0, r2, r3 + add r6, r0, #0 + eor r6, r3 + add r2, r4, #0 + eor r2, r6 + ldr r6, [sp, #0x1c] + add r6, r6, r2 + ldr r2, _0221B37C ; =0x04881D05 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0x17 + lsr r1, r1, #9 + orr r2, r1 + add r6, r2, r0 + add r2, r6, #0 + eor r2, r0 + add r1, r3, #0 + eor r1, r2 + ldr r2, [sp, #0x28] + add r2, r2, r1 + ldr r1, _0221B380 ; =0x262B2FC7 + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #4 + lsr r1, r1, #0x1c + orr r2, r1 + add r2, r2, r6 + add r4, r2, #0 + eor r4, r6 + add r1, r0, #0 + eor r1, r4 + ldr r4, [sp, #0x34] + add r4, r4, r1 + ldr r1, _0221B384 ; =0x1924661B + sub r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xb + lsr r1, r1, #0x15 + orr r3, r1 + add r1, r3, r2 + add r4, r1, #0 + eor r4, r2 + add r3, r6, #0 + eor r3, r4 + ldr r4, [sp, #0x3c] + add r4, r4, r3 + ldr r3, _0221B388 ; =0x1FA27CF8 + add r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x10 + lsr r0, r0, #0x10 + orr r3, r0 + add r4, r3, r1 + add r3, r4, #0 + eor r3, r1 + add r0, r2, #0 + eor r0, r3 + ldr r3, [sp, #0xc] + add r3, r3, r0 + ldr r0, _0221B38C ; =0x3B53A99B + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0x17 + lsr r0, r0, #9 + orr r3, r0 + add r3, r3, r4 + mvn r6, r1 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #4] + add r6, r0, r6 + ldr r0, _0221B390 ; =0x0BD6DDBC + sub r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #6 + lsr r0, r0, #0x1a + orr r2, r0 + add r0, r2, r3 + mvn r6, r4 + add r2, r0, #0 + orr r2, r6 + add r6, r3, #0 + eor r6, r2 + ldr r2, [sp, #0x20] + add r6, r2, r6 + ldr r2, _0221B394 ; =0x432AFF97 + add r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #0xa + lsr r1, r1, #0x16 + orr r2, r1 + add r1, r2, r0 + mvn r2, r3 + add r6, r1, #0 + orr r6, r2 + add r2, r0, #0 + eor r2, r6 + add r6, r7, r2 + ldr r2, _0221B398 ; =0x546BDC59 + sub r2, r6, r2 + add r2, r4, r2 + lsl r4, r2, #0xf + lsr r2, r2, #0x11 + orr r4, r2 + add r2, r4, r1 + mvn r6, r0 + add r4, r2, #0 + orr r4, r6 + add r6, r1, #0 + eor r6, r4 + ldr r4, [sp, #0x18] + add r6, r4, r6 + ldr r4, _0221B39C ; =0x036C5FC7 + sub r4, r6, r4 + add r3, r3, r4 + lsl r4, r3, #0x15 + lsr r3, r3, #0xb + orr r4, r3 + add r4, r4, r2 + mvn r6, r1 + add r3, r4, #0 + orr r3, r6 + add r6, r2, #0 + eor r6, r3 + ldr r3, [sp, #0x34] + add r6, r3, r6 + ldr r3, _0221B3A0 ; =0x655B59C3 + add r3, r6, r3 + add r0, r0, r3 + lsl r3, r0, #6 + lsr r0, r0, #0x1a + orr r3, r0 + add r3, r3, r4 + mvn r6, r2 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #0x10] + add r6, r0, r6 + ldr r0, _0221B3A4 ; =0x70F3336E + sub r0, r6, r0 + add r0, r1, r0 + lsl r1, r0, #0xa + lsr r0, r0, #0x16 + orr r1, r0 + add r0, r1, r3 + mvn r6, r4 + add r1, r0, #0 + orr r1, r6 + add r6, r3, #0 + eor r6, r1 + ldr r1, [sp, #0x2c] + add r6, r1, r6 + ldr r1, _0221B3A8 ; =0x00100B83 + sub r1, r6, r1 + add r1, r2, r1 + lsl r2, r1, #0xf + lsr r1, r1, #0x11 + orr r2, r1 + add r6, r2, r0 + mvn r2, r3 + add r1, r6, #0 + orr r1, r2 + add r2, r0, #0 + eor r2, r1 + ldr r1, [sp, #8] + add r2, r1, r2 + ldr r1, _0221B3AC ; =0x7A7BA22F + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0x15 + lsr r1, r1, #0xb + orr r2, r1 + add r2, r2, r6 + mvn r4, r0 + add r1, r2, #0 + orr r1, r4 + add r4, r6, #0 + eor r4, r1 + ldr r1, [sp, #0x24] + add r4, r1, r4 + ldr r1, _0221B3B0 ; =0x6FA87E4F + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #6 + lsr r1, r1, #0x1a + orr r3, r1 + add r1, r3, r2 + mvn r4, r6 + add r3, r1, #0 + orr r3, r4 + add r4, r2, #0 + eor r4, r3 + ldr r3, [sp, #0x3c] + add r4, r3, r4 + ldr r3, _0221B3B4 ; =0x01D31920 + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0xa + lsr r0, r0, #0x16 + orr r3, r0 + add r4, r3, r1 + mvn r3, r2 + add r0, r4, #0 + orr r0, r3 + add r3, r1, #0 + eor r3, r0 + ldr r0, [sp, #0x1c] + add r3, r0, r3 + ldr r0, _0221B3B8 ; =0x5CFEBCEC + sub r0, r3, r0 + add r0, r6, r0 + lsl r3, r0, #0xf + lsr r0, r0, #0x11 + orr r3, r0 + add r3, r3, r4 + mvn r6, r1 + add r0, r3, #0 + orr r0, r6 + add r6, r4, #0 + eor r6, r0 + ldr r0, [sp, #0x38] + add r6, r0, r6 + ldr r0, _0221B3BC ; =0x4E0811A1 + add r0, r6, r0 + add r0, r2, r0 + lsl r2, r0, #0x15 + lsr r0, r0, #0xb + orr r2, r0 + add r0, r2, r3 + mvn r6, r4 + add r2, r0, #0 + orr r2, r6 + add r6, r3, #0 + eor r6, r2 + ldr r2, [sp, #0x14] + add r6, r2, r6 + ldr r2, _0221B3C0 ; =0x08AC817E + sub r2, r6, r2 + add r1, r1, r2 + lsl r2, r1, #6 + lsr r1, r1, #0x1a + orr r2, r1 + add r6, r2, r0 + mvn r2, r3 + add r1, r6, #0 + orr r1, r2 + add r2, r0, #0 + eor r2, r1 + ldr r1, [sp, #0x30] + add r2, r1, r2 + ldr r1, _0221B3C4 ; =0x42C50DCB + sub r1, r2, r1 + add r1, r4, r1 + lsl r2, r1, #0xa + lsr r1, r1, #0x16 + orr r2, r1 + add r2, r2, r6 + mvn r4, r0 + add r1, r2, #0 + orr r1, r4 + add r4, r6, #0 + eor r4, r1 + ldr r1, [sp, #0xc] + add r4, r1, r4 + ldr r1, _0221B3C8 ; =0x2AD7D2BB + add r1, r4, r1 + add r1, r3, r1 + lsl r3, r1, #0xf + lsr r1, r1, #0x11 + orr r3, r1 + add r1, r3, r2 + mvn r4, r6 + add r3, r1, #0 + orr r3, r4 + add r4, r2, #0 + eor r4, r3 + ldr r3, [sp, #0x28] + add r4, r3, r4 + ldr r3, _0221B3CC ; =0x14792C6F + sub r3, r4, r3 + add r0, r0, r3 + lsl r3, r0, #0x15 + lsr r0, r0, #0xb + orr r3, r0 + add r0, r3, r1 + ldr r3, [r5] + add r3, r3, r6 + str r3, [r5] + ldr r3, [r5, #4] + add r0, r3, r0 + str r0, [r5, #4] + ldr r0, [r5, #8] + add r0, r0, r1 + str r0, [r5, #8] + ldr r0, [r5, #0xc] + add r0, r0, r2 + str r0, [r5, #0xc] + add r0, sp, #0x40 + mov r1, #0 + mov r2, #0x40 + bl MOD13_0221AAE0 + add sp, #0x84 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221B35C: .word 0x021AC7F4 +_0221B360: .word 0x5B4115BC +_0221B364: .word 0x4BDECFA9 +_0221B368: .word 0x0944B4A0 +_0221B36C: .word 0x41404390 +_0221B370: .word 0x289B7EC6 +_0221B374: .word 0x155ED806 +_0221B378: .word 0x2B10CF7B +_0221B37C: .word 0x04881D05 +_0221B380: .word 0x262B2FC7 +_0221B384: .word 0x1924661B +_0221B388: .word 0x1FA27CF8 +_0221B38C: .word 0x3B53A99B +_0221B390: .word 0x0BD6DDBC +_0221B394: .word 0x432AFF97 +_0221B398: .word 0x546BDC59 +_0221B39C: .word 0x036C5FC7 +_0221B3A0: .word 0x655B59C3 +_0221B3A4: .word 0x70F3336E +_0221B3A8: .word 0x00100B83 +_0221B3AC: .word 0x7A7BA22F +_0221B3B0: .word 0x6FA87E4F +_0221B3B4: .word 0x01D31920 +_0221B3B8: .word 0x5CFEBCEC +_0221B3BC: .word 0x4E0811A1 +_0221B3C0: .word 0x08AC817E +_0221B3C4: .word 0x42C50DCB +_0221B3C8: .word 0x2AD7D2BB +_0221B3CC: .word 0x14792C6F + + thumb_func_start MOD13_0221B3D0 +MOD13_0221B3D0: ; 0x0221B3D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + add r1, #0x10 + mov r2, #8 + bl MOD13_0221AB44 + ldr r0, [r4, #0x10] + lsr r1, r0, #3 + mov r0, #0x3f + and r1, r0 + cmp r1, #0x38 + bhs _0221B3F4 + mov r0, #0x38 + sub r2, r0, r1 + b _0221B3F8 +_0221B3F4: + mov r0, #0x78 + sub r2, r0, r1 +_0221B3F8: + add r0, r4, #0 + ldr r1, _0221B428 ; =0x0223F894 + bl MOD13_0221B42C + add r0, r4, #0 + add r1, sp, #0 + mov r2, #8 + bl MOD13_0221B42C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x10 + bl MOD13_0221AB44 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x58 + bl MOD13_0221AAE0 + add sp, #0xc + pop {r4, r5} + pop {r3} + bx r3 + nop +_0221B428: .word 0x0223F894 + + thumb_func_start MOD13_0221B42C +MOD13_0221B42C: ; 0x0221B42C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + ldr r3, [r5, #0x10] + lsr r0, r3, #3 + mov r1, #0x3f + and r0, r1 + lsl r2, r6, #3 + add r1, r3, r2 + str r1, [r5, #0x10] + ldr r1, [r5, #0x10] + cmp r1, r2 + bhs _0221B450 + ldr r1, [r5, #0x14] + add r1, r1, #1 + str r1, [r5, #0x14] +_0221B450: + ldr r2, [r5, #0x14] + lsr r1, r6, #0x1d + add r1, r2, r1 + str r1, [r5, #0x14] + mov r1, #0x40 + sub r4, r1, r0 + cmp r6, r4 + blo _0221B496 + add r1, r5, #0 + add r1, #0x18 + add r0, r1, r0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD13_0221AAF8 + add r0, r5, #0 + add r1, r5, #0 + add r1, #0x18 + bl MOD13_0221AB74 + add r0, r4, #0 + add r0, #0x3f + cmp r0, r6 + bhs _0221B492 +_0221B480: + add r0, r5, #0 + add r1, r7, r4 + bl MOD13_0221AB74 + add r4, #0x40 + add r0, r4, #0 + add r0, #0x3f + cmp r0, r6 + blo _0221B480 +_0221B492: + mov r0, #0 + b _0221B498 +_0221B496: + mov r4, #0 +_0221B498: + add r5, #0x18 + add r0, r5, r0 + add r1, r7, r4 + sub r2, r6, r4 + bl MOD13_0221AAF8 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221B4AC +MOD13_0221B4AC: ; 0x0221B4AC + mov r1, #0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + str r1, [r0, #0x10] + ldr r1, _0221B4C8 ; =0x67452301 + str r1, [r0] + ldr r1, _0221B4CC ; =0xEFCDAB89 + str r1, [r0, #4] + ldr r1, _0221B4D0 ; =0x98BADCFE + str r1, [r0, #8] + ldr r1, _0221B4D4 ; =0x10325476 + str r1, [r0, #0xc] + bx lr + nop +_0221B4C8: .word 0x67452301 +_0221B4CC: .word 0xEFCDAB89 +_0221B4D0: .word 0x98BADCFE +_0221B4D4: .word 0x10325476 + + thumb_func_start MOD13_0221B4D8 +MOD13_0221B4D8: ; 0x0221B4D8 + push {r4, r5, r6, r7} + sub sp, #0x60 + add r4, r1, #0 + add r1, r2, #0 + str r3, [sp] + ldr r2, [r0] + str r2, [sp, #4] + ldrb r5, [r1, #3] + ldrb r2, [r1, #2] + lsl r3, r2, #8 + ldrb r2, [r1] + lsl r2, r2, #0x18 + ldrb r6, [r1, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #4] + eor r2, r5 + str r2, [sp, #4] + ldr r2, [r0, #4] + str r2, [sp, #8] + ldrb r5, [r1, #7] + ldrb r2, [r1, #6] + lsl r3, r2, #8 + ldrb r2, [r1, #4] + lsl r2, r2, #0x18 + ldrb r6, [r1, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #8] + eor r2, r5 + str r2, [sp, #8] + ldr r2, [r0, #8] + str r2, [sp, #0x2c] + ldrb r5, [r1, #0xb] + ldrb r2, [r1, #0xa] + lsl r3, r2, #8 + ldrb r2, [r1, #8] + lsl r2, r2, #0x18 + ldrb r6, [r1, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #0x2c] + eor r2, r5 + str r2, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldrb r5, [r1, #0xf] + ldrb r2, [r1, #0xe] + lsl r3, r2, #8 + ldrb r2, [r1, #0xc] + lsl r2, r2, #0x18 + ldrb r1, [r1, #0xd] + lsl r1, r1, #0x10 + eor r2, r1 + eor r3, r2 + eor r5, r3 + eor r6, r5 + asr r1, r4, #1 + str r1, [sp, #0xc] + mov r2, #0xff +_0221B55A: + ldr r1, [r0, #0x10] + str r1, [sp, #0x10] + ldr r1, [sp, #8] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r5, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + lsr r1, r6, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x10] + eor r1, r5 + str r1, [sp, #0x10] + ldr r1, [r0, #0x14] + str r1, [sp, #0x14] + ldr r1, [sp, #0x2c] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r5, [r1, r3] + lsr r1, r6, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r4, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x14] + eor r1, r5 + str r1, [sp, #0x14] + ldr r5, [r0, #0x18] + add r1, r6, #0 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E0 ; =0x0223C86C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8E4 ; =0x0223C46C + ldr r1, [r1, r3] + str r1, [sp, #0x18] + ldr r1, [sp, #0x2c] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r7, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221B8EC ; =0x0223E86C + ldr r1, [r1, r3] + eor r7, r1 + ldr r1, [sp, #0x18] + eor r1, r7 + str r1, [sp, #0x18] + eor r4, r1 + eor r5, r4 + ldr r1, [r0, #0x1c] + ldr r3, [sp, #4] + and r3, r2 + str r3, [sp, #4] + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r3, [r3, r4] + str r3, [sp, #0x30] + ldr r3, [sp, #8] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r7, [r3, r4] + lsr r3, r6, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r6, [r3, r4] + ldr r3, [sp, #0x2c] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r6, r3 + eor r7, r6 + ldr r3, [sp, #0x30] + eor r3, r7 + str r3, [sp, #0x30] + eor r1, r3 + add r0, #0x20 + ldr r3, [sp, #0xc] + sub r3, r3, #1 + str r3, [sp, #0xc] + cmp r3, #0 + beq _0221B746 + ldr r3, [r0] + str r3, [sp, #4] + ldr r3, [sp, #0x14] + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + lsr r3, r5, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x34] + ldr r3, [sp, #0x10] + lsr r3, r3, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + lsr r3, r1, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x34] + eor r3, r7 + str r3, [sp, #0x34] + eor r6, r3 + ldr r3, [sp, #4] + eor r3, r6 + str r3, [sp, #4] + ldr r3, [r0, #4] + str r3, [sp, #8] + add r3, r5, #0 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + lsr r3, r1, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x38] + ldr r3, [sp, #0x14] + lsr r3, r3, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + ldr r3, [sp, #0x10] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x38] + eor r3, r7 + str r3, [sp, #0x38] + eor r6, r3 + ldr r3, [sp, #8] + eor r3, r6 + str r3, [sp, #8] + ldr r3, [r0, #8] + str r3, [sp, #0x2c] + add r3, r1, #0 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r6, [r3, r4] + ldr r3, [sp, #0x10] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + str r3, [sp, #0x1c] + lsr r3, r5, #0x18 + lsl r4, r3, #2 + ldr r3, _0221B8E8 ; =0x0223E46C + ldr r7, [r3, r4] + ldr r3, [sp, #0x14] + lsr r3, r3, #0x10 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8EC ; =0x0223E86C + ldr r3, [r3, r4] + eor r7, r3 + ldr r3, [sp, #0x1c] + eor r3, r7 + str r3, [sp, #0x1c] + eor r6, r3 + ldr r3, [sp, #0x2c] + eor r3, r6 + str r3, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldr r3, [sp, #0x10] + and r3, r2 + str r3, [sp, #0x10] + lsl r4, r3, #2 + ldr r3, _0221B8E0 ; =0x0223C86C + ldr r7, [r3, r4] + ldr r3, [sp, #0x14] + lsr r3, r3, #8 + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221B8E4 ; =0x0223C46C + ldr r3, [r3, r4] + lsr r1, r1, #0x18 + lsl r4, r1, #2 + ldr r1, _0221B8E8 ; =0x0223E46C + ldr r1, [r1, r4] + lsr r4, r5, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221B8EC ; =0x0223E86C + ldr r4, [r4, r5] + eor r1, r4 + eor r3, r1 + eor r7, r3 + eor r6, r7 + b _0221B55A +_0221B746: + ldr r3, [r0] + ldr r4, [sp, #0x14] + mov r2, #0xff + and r4, r2 + lsl r4, r4, #2 + ldr r2, _0221B8F0 ; =0x0223CC6C + ldr r6, [r2, r4] + str r6, [sp, #0x20] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x20] + lsr r6, r5, #8 + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + ldr r4, [sp, #0x10] + lsr r4, r4, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x54] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x54] + lsr r4, r1, #0x10 + str r4, [sp, #0x40] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x40] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x3c] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x3c] + and r6, r4 + str r6, [sp, #0x3c] + ldr r4, [sp, #0x54] + eor r4, r6 + str r4, [sp, #0x54] + eor r7, r4 + ldr r4, [sp, #0x20] + eor r4, r7 + str r4, [sp, #0x20] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4] + lsr r6, r3, #0x10 + strb r6, [r4, #1] + lsr r6, r3, #8 + strb r6, [r4, #2] + strb r3, [r4, #3] + ldr r3, [r0, #4] + add r6, r5, #0 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r6, [r2, r4] + str r6, [sp, #0x24] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x24] + lsr r6, r1, #8 + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + ldr r4, [sp, #0x14] + lsr r4, r4, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x58] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x58] + ldr r4, [sp, #0x10] + lsr r4, r4, #0x10 + str r4, [sp, #0x48] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x48] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x44] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x44] + and r6, r4 + str r6, [sp, #0x44] + ldr r4, [sp, #0x58] + eor r4, r6 + str r4, [sp, #0x58] + eor r7, r4 + ldr r4, [sp, #0x24] + eor r4, r7 + str r4, [sp, #0x24] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4, #4] + lsr r6, r3, #0x10 + strb r6, [r4, #5] + lsr r6, r3, #8 + strb r6, [r4, #6] + strb r3, [r4, #7] + ldr r3, [r0, #8] + add r6, r1, #0 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r6, [r2, r4] + str r6, [sp, #0x28] + mov r4, #0xff + and r6, r4 + str r6, [sp, #0x28] + ldr r4, [sp, #0x10] + lsr r6, r4, #8 + mov r4, #0xff + and r6, r4 + lsl r4, r6, #2 + ldr r7, [r2, r4] + ldr r4, _0221B8F4 ; =0x0000FF00 + and r7, r4 + lsr r4, r5, #0x18 + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x5c] + ldr r6, _0221B8F8 ; =0xFF000000 + and r4, r6 + str r4, [sp, #0x5c] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x10 + str r4, [sp, #0x50] + mov r6, #0xff + and r4, r6 + str r4, [sp, #0x50] + lsl r4, r4, #2 + ldr r4, [r2, r4] + str r4, [sp, #0x4c] + ldr r4, _0221B8FC ; =0x00FF0000 + ldr r6, [sp, #0x4c] + and r6, r4 + str r6, [sp, #0x4c] + ldr r4, [sp, #0x5c] + eor r4, r6 + str r4, [sp, #0x5c] + eor r7, r4 + ldr r4, [sp, #0x28] + eor r4, r7 + str r4, [sp, #0x28] + eor r3, r4 + lsr r6, r3, #0x18 + ldr r4, [sp] + strb r6, [r4, #8] + lsr r6, r3, #0x10 + strb r6, [r4, #9] + lsr r6, r3, #8 + strb r6, [r4, #0xa] + strb r3, [r4, #0xb] + ldr r6, [r0, #0xc] + ldr r3, [sp, #0x10] + mov r0, #0xff + and r3, r0 + str r3, [sp, #0x10] + lsl r0, r3, #2 + ldr r4, [r2, r0] + mov r0, #0xff + and r4, r0 + ldr r0, [sp, #0x14] + lsr r3, r0, #8 + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r3, [r2, r0] + ldr r0, _0221B8F4 ; =0x0000FF00 + and r3, r0 + lsr r0, r1, #0x18 + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r1, _0221B8F8 ; =0xFF000000 + and r0, r1 + lsr r5, r5, #0x10 + mov r1, #0xff + and r5, r1 + lsl r1, r5, #2 + ldr r2, [r2, r1] + ldr r1, _0221B8FC ; =0x00FF0000 + and r2, r1 + eor r0, r2 + eor r3, r0 + eor r4, r3 + eor r6, r4 + lsr r1, r6, #0x18 + ldr r0, [sp] + strb r1, [r0, #0xc] + lsr r1, r6, #0x10 + strb r1, [r0, #0xd] + lsr r1, r6, #8 + strb r1, [r0, #0xe] + strb r6, [r0, #0xf] + add sp, #0x60 + pop {r4, r5, r6, r7} + bx lr + nop +_0221B8E0: .word 0x0223C86C +_0221B8E4: .word 0x0223C46C +_0221B8E8: .word 0x0223E46C +_0221B8EC: .word 0x0223E86C +_0221B8F0: .word 0x0223CC6C +_0221B8F4: .word 0x0000FF00 +_0221B8F8: .word 0xFF000000 +_0221B8FC: .word 0x00FF0000 + + thumb_func_start MOD13_0221B900 +MOD13_0221B900: ; 0x0221B900 + push {r4, r5, r6, r7} + sub sp, #0x60 + add r4, r1, #0 + add r1, r2, #0 + str r3, [sp] + ldr r2, [r0] + str r2, [sp, #4] + ldrb r5, [r1, #3] + ldrb r2, [r1, #2] + lsl r3, r2, #8 + ldrb r2, [r1] + lsl r2, r2, #0x18 + ldrb r6, [r1, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #4] + eor r2, r5 + str r2, [sp, #4] + ldr r2, [r0, #4] + str r2, [sp, #8] + ldrb r5, [r1, #7] + ldrb r2, [r1, #6] + lsl r3, r2, #8 + ldrb r2, [r1, #4] + lsl r2, r2, #0x18 + ldrb r6, [r1, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #8] + eor r2, r5 + str r2, [sp, #8] + ldr r2, [r0, #8] + str r2, [sp, #0x2c] + ldrb r5, [r1, #0xb] + ldrb r2, [r1, #0xa] + lsl r3, r2, #8 + ldrb r2, [r1, #8] + lsl r2, r2, #0x18 + ldrb r6, [r1, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r3, r2 + eor r5, r3 + ldr r2, [sp, #0x2c] + eor r2, r5 + str r2, [sp, #0x2c] + ldr r6, [r0, #0xc] + ldrb r5, [r1, #0xf] + ldrb r2, [r1, #0xe] + lsl r3, r2, #8 + ldrb r2, [r1, #0xc] + lsl r2, r2, #0x18 + ldrb r1, [r1, #0xd] + lsl r1, r1, #0x10 + eor r2, r1 + eor r3, r2 + eor r5, r3 + eor r6, r5 + asr r1, r4, #1 + str r1, [sp, #0xc] + mov r2, #0xff +_0221B982: + ldr r1, [r0, #0x10] + str r1, [sp, #0x10] + add r1, r6, #0 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r5, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD04 ; =0x0223D86C + ldr r4, [r1, r3] + ldr r1, [sp, #4] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r7, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x10] + eor r1, r5 + str r1, [sp, #0x10] + ldr r1, [r0, #0x14] + str r1, [sp, #0x14] + ldr r1, [sp, #4] + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r5, [r1, r3] + lsr r1, r6, #8 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD04 ; =0x0223D86C + ldr r4, [r1, r3] + ldr r1, [sp, #8] + lsr r1, r1, #0x18 + lsl r3, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r7, [r1, r3] + ldr r1, [sp, #0x2c] + lsr r1, r1, #0x10 + and r1, r2 + lsl r3, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r3] + eor r7, r1 + eor r4, r7 + eor r5, r4 + ldr r1, [sp, #0x14] + eor r1, r5 + str r1, [sp, #0x14] + ldr r3, [r0, #0x18] + ldr r1, [sp, #8] + and r1, r2 + lsl r4, r1, #2 + ldr r1, _0221BD00 ; =0x0223DC6C + ldr r1, [r1, r4] + ldr r4, [sp, #4] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + ldr r4, [sp, #0x2c] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r4, [r4, r5] + str r4, [sp, #0x18] + lsr r4, r6, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r5, [r4, r5] + ldr r4, [sp, #0x18] + eor r4, r5 + str r4, [sp, #0x18] + eor r7, r4 + eor r1, r7 + eor r3, r1 + ldr r1, [r0, #0x1c] + ldr r4, [sp, #0x2c] + and r4, r2 + str r4, [sp, #0x2c] + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r4, [r4, r5] + str r4, [sp, #0x30] + ldr r4, [sp, #8] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + lsr r4, r6, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r6, [r4, r5] + ldr r4, [sp, #4] + lsr r4, r4, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r6, r4 + eor r7, r6 + ldr r4, [sp, #0x30] + eor r4, r7 + str r4, [sp, #0x30] + eor r1, r4 + add r0, #0x20 + ldr r4, [sp, #0xc] + sub r4, r4, #1 + str r4, [sp, #0xc] + cmp r4, #0 + beq _0221BB6A + ldr r4, [r0] + str r4, [sp, #4] + add r4, r1, #0 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r6, [r4, r5] + lsr r4, r3, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r4, [r4, r5] + str r4, [sp, #0x34] + ldr r4, [sp, #0x10] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r7, [r4, r5] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r7, r4 + ldr r4, [sp, #0x34] + eor r4, r7 + str r4, [sp, #0x34] + eor r6, r4 + ldr r4, [sp, #4] + eor r4, r6 + str r4, [sp, #4] + ldr r4, [r0, #4] + str r4, [sp, #8] + ldr r4, [sp, #0x10] + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r6, [r4, r5] + lsr r4, r1, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r4, [r4, r5] + str r4, [sp, #0x38] + ldr r4, [sp, #0x14] + lsr r4, r4, #0x18 + lsl r5, r4, #2 + ldr r4, _0221BD08 ; =0x0223D06C + ldr r7, [r4, r5] + lsr r4, r3, #0x10 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD0C ; =0x0223D46C + ldr r4, [r4, r5] + eor r7, r4 + ldr r4, [sp, #0x38] + eor r4, r7 + str r4, [sp, #0x38] + eor r6, r4 + ldr r4, [sp, #8] + eor r4, r6 + str r4, [sp, #8] + ldr r4, [r0, #8] + str r4, [sp, #0x2c] + ldr r4, [sp, #0x14] + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD00 ; =0x0223DC6C + ldr r4, [r4, r5] + ldr r5, [sp, #0x10] + lsr r5, r5, #8 + and r5, r2 + lsl r6, r5, #2 + ldr r5, _0221BD04 ; =0x0223D86C + ldr r7, [r5, r6] + lsr r5, r3, #0x18 + lsl r6, r5, #2 + ldr r5, _0221BD08 ; =0x0223D06C + ldr r5, [r5, r6] + str r5, [sp, #0x1c] + lsr r5, r1, #0x10 + and r5, r2 + lsl r6, r5, #2 + ldr r5, _0221BD0C ; =0x0223D46C + ldr r6, [r5, r6] + ldr r5, [sp, #0x1c] + eor r5, r6 + str r5, [sp, #0x1c] + eor r7, r5 + eor r4, r7 + ldr r5, [sp, #0x2c] + eor r5, r4 + str r5, [sp, #0x2c] + ldr r6, [r0, #0xc] + and r3, r2 + lsl r4, r3, #2 + ldr r3, _0221BD00 ; =0x0223DC6C + ldr r3, [r3, r4] + ldr r4, [sp, #0x14] + lsr r4, r4, #8 + and r4, r2 + lsl r5, r4, #2 + ldr r4, _0221BD04 ; =0x0223D86C + ldr r7, [r4, r5] + lsr r1, r1, #0x18 + lsl r4, r1, #2 + ldr r1, _0221BD08 ; =0x0223D06C + ldr r5, [r1, r4] + ldr r1, [sp, #0x10] + lsr r1, r1, #0x10 + and r1, r2 + lsl r4, r1, #2 + ldr r1, _0221BD0C ; =0x0223D46C + ldr r1, [r1, r4] + eor r5, r1 + eor r7, r5 + eor r3, r7 + eor r6, r3 + b _0221B982 +_0221BB6A: + ldr r4, [r0] + add r5, r1, #0 + mov r2, #0xff + and r5, r2 + lsl r5, r5, #2 + ldr r2, _0221BD10 ; =0x0223E06C + ldr r6, [r2, r5] + str r6, [sp, #0x20] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x20] + lsr r6, r3, #8 + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + ldr r5, [sp, #0x10] + lsr r5, r5, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x54] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x54] + ldr r5, [sp, #0x14] + lsr r5, r5, #0x10 + str r5, [sp, #0x40] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x40] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x3c] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x3c] + and r6, r5 + str r6, [sp, #0x3c] + ldr r5, [sp, #0x54] + eor r5, r6 + str r5, [sp, #0x54] + eor r7, r5 + ldr r5, [sp, #0x20] + eor r5, r7 + str r5, [sp, #0x20] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5] + lsr r6, r4, #0x10 + strb r6, [r5, #1] + lsr r6, r4, #8 + strb r6, [r5, #2] + strb r4, [r5, #3] + ldr r4, [r0, #4] + ldr r6, [sp, #0x10] + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r6, [r2, r5] + str r6, [sp, #0x24] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x24] + lsr r6, r1, #8 + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + ldr r5, [sp, #0x14] + lsr r5, r5, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x58] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x58] + lsr r5, r3, #0x10 + str r5, [sp, #0x48] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x48] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x44] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x44] + and r6, r5 + str r6, [sp, #0x44] + ldr r5, [sp, #0x58] + eor r5, r6 + str r5, [sp, #0x58] + eor r7, r5 + ldr r5, [sp, #0x24] + eor r5, r7 + str r5, [sp, #0x24] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5, #4] + lsr r6, r4, #0x10 + strb r6, [r5, #5] + lsr r6, r4, #8 + strb r6, [r5, #6] + strb r4, [r5, #7] + ldr r4, [r0, #8] + ldr r6, [sp, #0x14] + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r6, [r2, r5] + str r6, [sp, #0x28] + mov r5, #0xff + and r6, r5 + str r6, [sp, #0x28] + ldr r5, [sp, #0x10] + lsr r6, r5, #8 + mov r5, #0xff + and r6, r5 + lsl r5, r6, #2 + ldr r7, [r2, r5] + ldr r5, _0221BD14 ; =0x0000FF00 + and r7, r5 + lsr r5, r3, #0x18 + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x5c] + ldr r6, _0221BD18 ; =0xFF000000 + and r5, r6 + str r5, [sp, #0x5c] + lsr r5, r1, #0x10 + str r5, [sp, #0x50] + mov r6, #0xff + and r5, r6 + str r5, [sp, #0x50] + lsl r5, r5, #2 + ldr r5, [r2, r5] + str r5, [sp, #0x4c] + ldr r5, _0221BD1C ; =0x00FF0000 + ldr r6, [sp, #0x4c] + and r6, r5 + str r6, [sp, #0x4c] + ldr r5, [sp, #0x5c] + eor r5, r6 + str r5, [sp, #0x5c] + eor r7, r5 + ldr r5, [sp, #0x28] + eor r5, r7 + str r5, [sp, #0x28] + eor r4, r5 + lsr r6, r4, #0x18 + ldr r5, [sp] + strb r6, [r5, #8] + lsr r6, r4, #0x10 + strb r6, [r5, #9] + lsr r6, r4, #8 + strb r6, [r5, #0xa] + strb r4, [r5, #0xb] + ldr r5, [r0, #0xc] + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r4, [r2, r0] + mov r0, #0xff + and r4, r0 + ldr r0, [sp, #0x14] + lsr r3, r0, #8 + mov r0, #0xff + and r3, r0 + lsl r0, r3, #2 + ldr r3, [r2, r0] + ldr r0, _0221BD14 ; =0x0000FF00 + and r3, r0 + lsr r0, r1, #0x18 + lsl r0, r0, #2 + ldr r0, [r2, r0] + ldr r1, _0221BD18 ; =0xFF000000 + and r0, r1 + ldr r1, [sp, #0x10] + lsr r6, r1, #0x10 + mov r1, #0xff + and r6, r1 + lsl r1, r6, #2 + ldr r2, [r2, r1] + ldr r1, _0221BD1C ; =0x00FF0000 + and r2, r1 + eor r0, r2 + eor r3, r0 + eor r4, r3 + eor r5, r4 + lsr r1, r5, #0x18 + ldr r0, [sp] + strb r1, [r0, #0xc] + lsr r1, r5, #0x10 + strb r1, [r0, #0xd] + lsr r1, r5, #8 + strb r1, [r0, #0xe] + strb r5, [r0, #0xf] + add sp, #0x60 + pop {r4, r5, r6, r7} + bx lr + nop +_0221BD00: .word 0x0223DC6C +_0221BD04: .word 0x0223D86C +_0221BD08: .word 0x0223D06C +_0221BD0C: .word 0x0223D46C +_0221BD10: .word 0x0223E06C +_0221BD14: .word 0x0000FF00 +_0221BD18: .word 0xFF000000 +_0221BD1C: .word 0x00FF0000 + + thumb_func_start MOD13_0221BD20 +MOD13_0221BD20: ; 0x0221BD20 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD13_0221BEE4 + str r0, [sp] + mov r6, #0 + lsl r5, r0, #2 + cmp r5, #0 + ble _0221BD84 + str r4, [sp, #4] + lsl r0, r5, #2 + add r3, r4, r0 +_0221BD3A: + ldr r0, [sp, #4] + ldr r2, [r0] + ldr r1, [r3] + str r1, [r0] + str r2, [r3] + add r0, r6, #1 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #1 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + add r0, r6, #2 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #2 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + add r0, r6, #3 + lsl r2, r0, #2 + ldr r1, [r4, r2] + add r0, r5, #3 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r0, [r4, r2] + str r1, [r4, r7] + ldr r0, [sp, #4] + add r0, #0x10 + str r0, [sp, #4] + add r6, r6, #4 + sub r3, #0x10 + sub r5, r5, #4 + cmp r6, r5 + blt _0221BD3A +_0221BD84: + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp] + cmp r0, #1 + bgt _0221BD90 + b _0221BEC4 +_0221BD90: + ldr r2, _0221BED0 ; =0x0223E06C + mov r0, #0xff +_0221BD94: + add r4, #0x10 + ldr r5, [r4] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4] + ldr r5, [r4, #4] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #4] + ldr r5, [r4, #8] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #8] + ldr r5, [r4, #0xc] + add r1, r5, #0 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r3, r1, #2 + ldr r1, _0221BED4 ; =0x0223C86C + ldr r3, [r1, r3] + lsr r1, r5, #8 + and r1, r0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BED8 ; =0x0223C46C + ldr r7, [r1, r6] + lsr r1, r5, #0x18 + lsl r1, r1, #2 + ldr r1, [r2, r1] + and r1, r0 + lsl r6, r1, #2 + ldr r1, _0221BEDC ; =0x0223E46C + ldr r1, [r1, r6] + lsr r5, r5, #0x10 + and r5, r0 + lsl r5, r5, #2 + ldr r5, [r2, r5] + and r5, r0 + lsl r6, r5, #2 + ldr r5, _0221BEE0 ; =0x0223E86C + ldr r5, [r5, r6] + eor r1, r5 + eor r7, r1 + eor r3, r7 + str r3, [r4, #0xc] + ldr r1, [sp, #8] + add r3, r1, #1 + str r3, [sp, #8] + ldr r1, [sp] + cmp r3, r1 + bge _0221BEC4 + b _0221BD94 +_0221BEC4: + ldr r0, [sp] + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221BED0: .word 0x0223E06C +_0221BED4: .word 0x0223C86C +_0221BED8: .word 0x0223C46C +_0221BEDC: .word 0x0223E46C +_0221BEE0: .word 0x0223E86C + + thumb_func_start MOD13_0221BEE4 +MOD13_0221BEE4: ; 0x0221BEE4 + push {r4, r5, r6, r7} + sub sp, #0x20 + add r3, r1, #0 + add r1, r2, #0 + mov r2, #0 + str r2, [sp] + ldrb r5, [r3, #3] + ldrb r2, [r3, #2] + lsl r4, r2, #8 + ldrb r2, [r3] + lsl r2, r2, #0x18 + ldrb r6, [r3, #1] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0] + ldrb r5, [r3, #7] + ldrb r2, [r3, #6] + lsl r4, r2, #8 + ldrb r2, [r3, #4] + lsl r2, r2, #0x18 + ldrb r6, [r3, #5] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #4] + ldrb r5, [r3, #0xb] + ldrb r2, [r3, #0xa] + lsl r4, r2, #8 + ldrb r2, [r3, #8] + lsl r2, r2, #0x18 + ldrb r6, [r3, #9] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #8] + ldrb r5, [r3, #0xf] + ldrb r2, [r3, #0xe] + lsl r4, r2, #8 + ldrb r2, [r3, #0xc] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0xd] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0xc] + cmp r1, #0x80 + bne _0221BFD0 + ldr r6, _0221C1B4 ; =0x0223C444 +_0221BF4E: + ldr r5, [r0, #0xc] + ldr r1, [r6] + str r1, [sp, #0xc] + lsr r1, r5, #0x18 + lsl r2, r1, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r4, [r1, r2] + mov r1, #0xff + and r4, r1 + add r2, r5, #0 + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r7, [r1, r2] + ldr r1, _0221C1BC ; =0x0000FF00 + and r7, r1 + ldr r3, [r0] + lsr r2, r5, #0x10 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C0 ; =0xFF000000 + and r2, r1 + eor r3, r2 + lsr r2, r5, #8 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r7, r3 + eor r4, r7 + ldr r1, [sp, #0xc] + eor r1, r4 + str r1, [sp, #0xc] + str r1, [r0, #0x10] + ldr r2, [r0, #4] + ldr r1, [r0, #0x10] + eor r2, r1 + str r2, [r0, #0x14] + ldr r2, [r0, #8] + ldr r1, [r0, #0x14] + eor r2, r1 + str r2, [r0, #0x18] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x18] + eor r2, r1 + str r2, [r0, #0x1c] + add r6, r6, #4 + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #0xa + blt _0221BFCC + mov r0, #0xa + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221BFCC: + add r0, #0x10 + b _0221BF4E +_0221BFD0: + ldrb r5, [r3, #0x13] + ldrb r2, [r3, #0x12] + lsl r4, r2, #8 + ldrb r2, [r3, #0x10] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x11] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x10] + ldrb r5, [r3, #0x17] + ldrb r2, [r3, #0x16] + lsl r4, r2, #8 + ldrb r2, [r3, #0x14] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x15] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x14] + cmp r1, #0xc0 + bne _0221C094 + ldr r6, _0221C1B4 ; =0x0223C444 +_0221C002: + ldr r5, [r0, #0x14] + ldr r1, [r6] + str r1, [sp, #0x10] + lsr r1, r5, #0x18 + lsl r2, r1, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r4, [r1, r2] + mov r1, #0xff + and r4, r1 + add r2, r5, #0 + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r7, [r1, r2] + ldr r1, _0221C1BC ; =0x0000FF00 + and r7, r1 + ldr r3, [r0] + lsr r2, r5, #0x10 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C0 ; =0xFF000000 + and r2, r1 + eor r3, r2 + lsr r2, r5, #8 + mov r1, #0xff + and r2, r1 + lsl r2, r2, #2 + ldr r1, _0221C1B8 ; =0x0223E06C + ldr r2, [r1, r2] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r7, r3 + eor r4, r7 + ldr r1, [sp, #0x10] + eor r1, r4 + str r1, [sp, #0x10] + str r1, [r0, #0x18] + ldr r2, [r0, #4] + ldr r1, [r0, #0x18] + eor r2, r1 + str r2, [r0, #0x1c] + ldr r2, [r0, #8] + ldr r1, [r0, #0x1c] + eor r2, r1 + str r2, [r0, #0x20] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x20] + eor r2, r1 + str r2, [r0, #0x24] + add r6, r6, #4 + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #8 + blt _0221C080 + mov r0, #0xc + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221C080: + ldr r2, [r0, #0x10] + ldr r1, [r0, #0x24] + eor r2, r1 + str r2, [r0, #0x28] + ldr r2, [r0, #0x14] + ldr r1, [r0, #0x28] + eor r2, r1 + str r2, [r0, #0x2c] + add r0, #0x18 + b _0221C002 +_0221C094: + ldrb r5, [r3, #0x1b] + ldrb r2, [r3, #0x1a] + lsl r4, r2, #8 + ldrb r2, [r3, #0x18] + lsl r2, r2, #0x18 + ldrb r6, [r3, #0x19] + lsl r6, r6, #0x10 + eor r2, r6 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x18] + ldrb r5, [r3, #0x1f] + ldrb r2, [r3, #0x1e] + lsl r4, r2, #8 + ldrb r2, [r3, #0x1c] + lsl r2, r2, #0x18 + ldrb r3, [r3, #0x1d] + lsl r3, r3, #0x10 + eor r2, r3 + eor r4, r2 + eor r5, r4 + str r5, [r0, #0x1c] + ldr r2, _0221C1C8 ; =0x00000100 + cmp r1, r2 + bne _0221C1AC + ldr r1, _0221C1B4 ; =0x0223C444 + str r1, [sp, #4] + ldr r7, _0221C1B8 ; =0x0223E06C +_0221C0CC: + ldr r6, [r0, #0x1c] + ldr r1, [sp, #4] + ldr r1, [r1] + str r1, [sp, #8] + lsr r1, r6, #0x18 + lsl r1, r1, #2 + ldr r5, [r7, r1] + mov r1, #0xff + and r5, r1 + add r2, r6, #0 + and r2, r1 + lsl r1, r2, #2 + ldr r4, [r7, r1] + ldr r1, _0221C1BC ; =0x0000FF00 + and r4, r1 + ldr r3, [r0] + lsr r2, r6, #0x10 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r1, [r7, r1] + str r1, [sp, #0x14] + ldr r2, _0221C1C0 ; =0xFF000000 + and r1, r2 + str r1, [sp, #0x14] + eor r3, r1 + lsr r2, r6, #8 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r2, [r7, r1] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r4, r3 + eor r5, r4 + ldr r1, [sp, #8] + eor r1, r5 + str r1, [sp, #8] + str r1, [r0, #0x20] + ldr r2, [r0, #4] + ldr r1, [r0, #0x20] + eor r2, r1 + str r2, [r0, #0x24] + ldr r2, [r0, #8] + ldr r1, [r0, #0x24] + eor r2, r1 + str r2, [r0, #0x28] + ldr r2, [r0, #0xc] + ldr r1, [r0, #0x28] + eor r2, r1 + str r2, [r0, #0x2c] + ldr r1, [sp, #4] + add r1, r1, #4 + str r1, [sp, #4] + ldr r1, [sp] + add r1, r1, #1 + str r1, [sp] + cmp r1, #7 + blt _0221C14C + mov r0, #0xe + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr +_0221C14C: + ldr r6, [r0, #0x2c] + add r2, r6, #0 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r5, [r7, r1] + mov r1, #0xff + and r5, r1 + lsr r2, r6, #8 + and r2, r1 + lsl r1, r2, #2 + ldr r4, [r7, r1] + ldr r1, _0221C1BC ; =0x0000FF00 + and r4, r1 + ldr r3, [r0, #0x10] + lsr r1, r6, #0x18 + lsl r1, r1, #2 + ldr r1, [r7, r1] + str r1, [sp, #0x18] + ldr r2, _0221C1C0 ; =0xFF000000 + and r1, r2 + str r1, [sp, #0x18] + eor r3, r1 + lsr r2, r6, #0x10 + mov r1, #0xff + and r2, r1 + lsl r1, r2, #2 + ldr r2, [r7, r1] + ldr r1, _0221C1C4 ; =0x00FF0000 + and r2, r1 + eor r3, r2 + eor r4, r3 + eor r5, r4 + str r5, [r0, #0x30] + ldr r2, [r0, #0x14] + ldr r1, [r0, #0x30] + eor r2, r1 + str r2, [r0, #0x34] + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x34] + eor r2, r1 + str r2, [r0, #0x38] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x38] + eor r2, r1 + str r2, [r0, #0x3c] + add r0, #0x20 + b _0221C0CC +_0221C1AC: + ldr r0, [sp] + add sp, #0x20 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221C1B4: .word 0x0223C444 +_0221C1B8: .word 0x0223E06C +_0221C1BC: .word 0x0000FF00 +_0221C1C0: .word 0xFF000000 +_0221C1C4: .word 0x00FF0000 +_0221C1C8: .word 0x00000100 + + thumb_func_start MOD13_0221C1CC +MOD13_0221C1CC: ; 0x0221C1CC + push {r4} + sub sp, #4 + ldrb r4, [r0] + ldrb r3, [r1] + eor r4, r3 + strb r4, [r2] + ldrb r4, [r0, #1] + ldrb r3, [r1, #1] + eor r4, r3 + strb r4, [r2, #1] + ldrb r4, [r0, #2] + ldrb r3, [r1, #2] + eor r4, r3 + strb r4, [r2, #2] + ldrb r4, [r0, #3] + ldrb r3, [r1, #3] + eor r4, r3 + strb r4, [r2, #3] + ldrb r4, [r0, #4] + ldrb r3, [r1, #4] + eor r4, r3 + strb r4, [r2, #4] + ldrb r4, [r0, #5] + ldrb r3, [r1, #5] + eor r4, r3 + strb r4, [r2, #5] + ldrb r4, [r0, #6] + ldrb r3, [r1, #6] + eor r4, r3 + strb r4, [r2, #6] + ldrb r3, [r0, #7] + ldrb r0, [r1, #7] + eor r3, r0 + strb r3, [r2, #7] + add sp, #4 + pop {r4} + bx lr + .align 2, 0 + + thumb_func_start MOD13_0221C218 +MOD13_0221C218: ; 0x0221C218 + push {r4, r5, r6, r7, lr} + sub sp, #0x1b4 + str r0, [sp] + add r5, r1, #0 + add r4, r2, #0 + mov r0, #1 + str r0, [sp, #0x1c] + ldr r0, _0221C3FC ; =0xA6A6A6A6 + str r0, [sp, #0x58] + str r0, [sp, #0x5c] + mov r0, #7 + add r1, r4, #0 + and r1, r0 + cmp r1, #0 + bne _0221C240 + ldr r2, [sp, #0x1c8] + add r1, r2, #0 + and r1, r0 + cmp r1, #0 + beq _0221C24A +_0221C240: + mov r0, #0 + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C24A: + sub r0, r4, #1 + lsr r0, r0, #3 + str r0, [sp, #0x14] + cmp r0, #2 + bge _0221C25E + mov r0, #0 + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C25E: + add r0, sp, #0x70 + add r1, r3, #0 + lsl r2, r2, #3 + bl MOD13_0221BD20 + str r0, [sp, #0x18] + add r3, sp, #0x60 + add r2, r5, #0 + mov r1, #8 +_0221C270: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C270 + ldr r0, [sp] + add r5, #8 + add r1, r5, #0 + sub r2, r4, #1 + bl memcpy + mov r0, #5 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x24] +_0221C294: + ldr r0, [sp, #0x14] + str r0, [sp, #0xc] + cmp r0, #0 + bgt _0221C29E + b _0221C3D4 +_0221C29E: + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x10] + asr r3, r2, #0x1f + bl _ll_mul + str r0, [sp, #0x28] + str r1, [sp, #8] +_0221C2AC: + ldr r0, [sp, #0xc] + asr r1, r0, #0x1f + lsl r2, r0, #0 + ldr r0, [sp, #0x28] + add r6, r2, r0 + ldr r0, [sp, #8] + adc r1, r0 + add r2, r1, #0 + ldr r0, _0221C400 ; =0xFF000000 + and r2, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x30] + add r2, r1, #0 + ldr r0, _0221C404 ; =0x00FF0000 + and r2, r0 + lsr r0, r2, #8 + str r0, [sp, #0x48] + add r2, r1, #0 + ldr r0, _0221C408 ; =0x0000FF00 + and r2, r0 + add r3, r6, #0 + mov r0, #0 + and r3, r0 + lsl r0, r2, #8 + lsr r5, r3, #0x18 + orr r5, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x34] + add r0, r1, #0 + mov r2, #0xff + and r0, r2 + add r3, r6, #0 + mov r2, #0 + and r3, r2 + lsl r2, r0, #0x18 + lsr r4, r3, #8 + orr r4, r2 + lsr r0, r0, #8 + str r0, [sp, #0x38] + add r3, r1, #0 + mov r0, #0 + and r3, r0 + add r0, r6, #0 + ldr r2, _0221C400 ; =0xFF000000 + and r0, r2 + lsr r2, r0, #0x18 + lsl r3, r3, #8 + orr r3, r2 + lsl r0, r0, #8 + str r0, [sp, #0x4c] + mov r0, #0 + and r1, r0 + add r0, r6, #0 + ldr r2, _0221C404 ; =0x00FF0000 + and r0, r2 + lsr r2, r0, #8 + str r2, [sp, #0x44] + lsl r2, r1, #0x18 + ldr r1, [sp, #0x44] + orr r2, r1 + lsl r7, r0, #0x18 + add r1, r6, #0 + str r1, [sp, #0x40] + mov r0, #0xff + and r1, r0 + str r1, [sp, #0x40] + lsl r0, r1, #0x18 + str r0, [sp, #0x3c] + ldr r0, _0221C408 ; =0x0000FF00 + and r6, r0 + lsl r1, r6, #8 + ldr r0, [sp, #0x3c] + orr r0, r1 + str r0, [sp, #0x3c] + mov r0, #0 + lsl r1, r0, #0 + orr r0, r1 + ldr r1, [sp, #0x3c] + orr r2, r1 + orr r7, r0 + orr r3, r2 + ldr r0, [sp, #0x4c] + orr r0, r7 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x38] + orr r0, r3 + str r0, [sp, #0x38] + ldr r0, [sp, #0x4c] + orr r4, r0 + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x38] + orr r1, r0 + str r1, [sp, #0x34] + orr r5, r4 + mov r1, #0 + ldr r0, [sp, #0x34] + orr r1, r0 + ldr r0, [sp, #0x48] + orr r0, r5 + str r0, [sp, #0x48] + mov r2, #0 + orr r2, r1 + ldr r1, [sp, #0x30] + orr r1, r0 + str r1, [sp, #0x30] + str r1, [sp, #0x50] + str r2, [sp, #0x54] + add r0, sp, #0x60 + add r1, sp, #0x50 + lsl r2, r0, #0 + bl MOD13_0221C1CC + ldr r0, [sp, #0xc] + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, [sp] + add r4, r0, r1 + add r3, r4, #0 + add r2, sp, #0x68 + mov r1, #8 +_0221C39C: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C39C + add r0, sp, #0x70 + ldr r1, [sp, #0x18] + add r2, sp, #0x60 + lsl r3, r2, #0 + bl MOD13_0221B4D8 + add r2, sp, #0x68 + mov r1, #8 +_0221C3BA: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C3BA + ldr r0, [sp, #0xc] + sub r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0 + ble _0221C3D4 + b _0221C2AC +_0221C3D4: + ldr r0, [sp, #0x10] + sub r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #0 + blt _0221C3E0 + b _0221C294 +_0221C3E0: + add r0, sp, #0x58 + add r1, sp, #0x60 + mov r2, #8 + bl memcmp + cmp r0, #0 + beq _0221C3F2 + mov r0, #0 + str r0, [sp, #0x1c] +_0221C3F2: + ldr r0, [sp, #0x1c] + add sp, #0x1b4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221C3FC: .word 0xA6A6A6A6 +_0221C400: .word 0xFF000000 +_0221C404: .word 0x00FF0000 +_0221C408: .word 0x0000FF00 + + thumb_func_start MOD13_0221C40C +MOD13_0221C40C: ; 0x0221C40C + push {r4, r5, r6, r7, lr} + sub sp, #0x1d4 + str r0, [sp] + add r5, r1, #0 + add r4, r2, #0 + ldr r0, _0221C608 ; =0xA6A6A6A6 + str r0, [sp, #0x78] + str r0, [sp, #0x7c] + mov r0, #7 + add r1, r4, #0 + and r1, r0 + cmp r1, #0 + bne _0221C430 + ldr r2, [sp, #0x1e8] + add r1, r2, #0 + and r1, r0 + cmp r1, #0 + beq _0221C43A +_0221C430: + mov r0, #0 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C43A: + lsr r0, r4, #3 + str r0, [sp, #0x14] + cmp r0, #2 + bge _0221C44C + mov r0, #0 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221C44C: + add r0, sp, #0x90 + add r1, r3, #0 + lsl r2, r2, #3 + bl MOD13_0221BEE4 + str r0, [sp, #0x18] + ldr r0, [sp] + add r0, #8 + add r1, r5, #0 + add r2, r4, #0 + bl memcpy + add r3, sp, #0x80 + add r2, sp, #0x78 + mov r1, #8 +_0221C46A: + ldrb r0, [r2] + add r2, r2, #1 + strb r0, [r3] + add r3, r3, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C46A + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x20] + ldr r0, [sp, #0x10] + str r0, [sp, #0x34] + str r0, [sp, #0x38] + str r0, [sp, #0x64] + str r0, [sp, #0x60] + str r0, [sp, #0x5c] + str r0, [sp, #0x58] + str r0, [sp, #0x48] + str r0, [sp, #0x50] +_0221C494: + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r0, #1 + bge _0221C4A0 + b _0221C5DA +_0221C4A0: + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x10] + asr r3, r2, #0x1f + bl _ll_mul + str r0, [sp, #0x24] + str r1, [sp, #8] +_0221C4AE: + ldr r0, [sp, #0xc] + lsl r1, r0, #3 + ldr r0, [sp] + add r3, r0, r1 + str r3, [sp, #0x2c] + add r2, sp, #0x88 + mov r1, #8 +_0221C4BC: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C4BC + add r0, sp, #0x90 + ldr r1, [sp, #0x18] + add r2, sp, #0x80 + lsl r3, r2, #0 + bl MOD13_0221B900 + ldr r0, [sp, #0xc] + asr r1, r0, #0x1f + lsl r2, r0, #0 + ldr r0, [sp, #0x24] + add r6, r2, r0 + ldr r0, [sp, #8] + adc r1, r0 + add r2, r1, #0 + ldr r0, _0221C60C ; =0xFF000000 + and r2, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x30] + add r2, r1, #0 + ldr r0, _0221C610 ; =0x00FF0000 + and r2, r0 + lsr r0, r2, #8 + str r0, [sp, #0x68] + add r2, r1, #0 + ldr r0, _0221C614 ; =0x0000FF00 + and r2, r0 + add r3, r6, #0 + ldr r0, [sp, #0x64] + and r3, r0 + lsl r0, r2, #8 + lsr r5, r3, #0x18 + orr r5, r0 + lsr r0, r2, #0x18 + str r0, [sp, #0x3c] + add r0, r1, #0 + mov r2, #0xff + and r0, r2 + add r3, r6, #0 + ldr r2, [sp, #0x60] + and r3, r2 + lsl r2, r0, #0x18 + lsr r4, r3, #8 + orr r4, r2 + lsr r0, r0, #8 + str r0, [sp, #0x40] + add r3, r1, #0 + ldr r0, [sp, #0x5c] + and r3, r0 + add r0, r6, #0 + ldr r2, _0221C60C ; =0xFF000000 + and r0, r2 + lsr r2, r0, #0x18 + lsl r3, r3, #8 + orr r3, r2 + lsl r0, r0, #8 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r6, #0 + ldr r2, _0221C610 ; =0x00FF0000 + and r0, r2 + lsr r2, r0, #8 + str r2, [sp, #0x54] + lsl r2, r1, #0x18 + ldr r1, [sp, #0x54] + orr r2, r1 + lsl r7, r0, #0x18 + add r1, r6, #0 + str r1, [sp, #0x4c] + mov r0, #0xff + and r1, r0 + str r1, [sp, #0x4c] + lsl r0, r1, #0x18 + str r0, [sp, #0x44] + ldr r0, _0221C614 ; =0x0000FF00 + and r6, r0 + lsl r1, r6, #8 + ldr r0, [sp, #0x44] + orr r0, r1 + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x50] + orr r0, r1 + ldr r1, [sp, #0x44] + orr r2, r1 + orr r7, r0 + orr r3, r2 + ldr r0, [sp, #0x6c] + orr r0, r7 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x40] + orr r0, r3 + str r0, [sp, #0x40] + ldr r0, [sp, #0x6c] + orr r4, r0 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #0x40] + orr r1, r0 + str r1, [sp, #0x3c] + orr r5, r4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + orr r1, r0 + ldr r0, [sp, #0x68] + orr r0, r5 + str r0, [sp, #0x68] + ldr r2, [sp, #0x34] + orr r2, r1 + ldr r1, [sp, #0x30] + orr r1, r0 + str r1, [sp, #0x30] + str r1, [sp, #0x70] + str r2, [sp, #0x74] + add r0, sp, #0x80 + add r1, sp, #0x70 + lsl r2, r0, #0 + bl MOD13_0221C1CC + add r3, sp, #0x88 + mov r2, #8 +_0221C5BA: + ldrb r1, [r3] + add r3, r3, #1 + ldr r0, [sp, #0x2c] + strb r1, [r0] + add r0, r0, #1 + str r0, [sp, #0x2c] + sub r2, r2, #1 + cmp r2, #0 + bne _0221C5BA + ldr r0, [sp, #0xc] + add r1, r0, #1 + str r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0221C5DA + b _0221C4AE +_0221C5DA: + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + bge _0221C5E6 + b _0221C494 +_0221C5E6: + add r3, sp, #0x80 + mov r2, #8 +_0221C5EA: + ldrb r1, [r3] + add r3, r3, #1 + ldr r0, [sp] + strb r1, [r0] + add r0, r0, #1 + str r0, [sp] + sub r2, r2, #1 + cmp r2, #0 + bne _0221C5EA + mov r0, #1 + add sp, #0x1d4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221C608: .word 0xA6A6A6A6 +_0221C60C: .word 0xFF000000 +_0221C610: .word 0x00FF0000 +_0221C614: .word 0x0000FF00 + + thumb_func_start MOD13_0221C618 +MOD13_0221C618: ; 0x0221C618 + push {r4, lr} + bl MOD13_0221C658 + add r4, r0, #0 + ldr r0, _0221C64C ; =0x02241B28 + str r4, [r0] + bl MOD13_0221D938 + cmp r4, #1 + bne _0221C634 + mov r1, #6 + ldr r0, _0221C650 ; =0x02241AE8 + str r1, [r0] + b _0221C63A +_0221C634: + mov r1, #7 + ldr r0, _0221C650 ; =0x02241AE8 + str r1, [r0] +_0221C63A: + mov r0, #0 + mvn r1, r0 + ldr r0, _0221C654 ; =0x0223F870 + str r1, [r0] + bl MOD13_0221A778 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221C64C: .word 0x02241B28 +_0221C650: .word 0x02241AE8 +_0221C654: .word 0x0223F870 + + thumb_func_start MOD13_0221C658 +MOD13_0221C658: ; 0x0221C658 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + mov r4, #0 + mov r0, #4 + mvn r0, r0 + str r0, [sp, #4] + str r4, [sp, #0x40] + str r4, [sp, #8] + str r4, [sp, #0xc] + ldr r6, _0221C9E0 ; =0x02241ACC + mov r0, #1 + str r0, [r6] + str r4, [sp, #0x10] + str r4, [sp, #0x18] + str r4, [sp, #0x2c] + str r4, [sp, #0x34] + mvn r0, r0 + str r0, [sp, #0x14] + str r4, [sp, #0x38] + str r4, [sp, #0x24] + mvn r0, r4 + str r0, [sp, #0x28] + mov r0, #3 + mvn r0, r0 + str r0, [sp, #0x20] + mov r0, #2 + mvn r0, r0 + str r0, [sp, #0x1c] + str r4, [sp, #0x3c] + b _0221CA3C +_0221C694: + ldr r0, _0221C9E4 ; =0x000001F4 + bl OS_Sleep + ldr r0, [r6] + cmp r0, #0xa + bls _0221C6A2 + b _0221CA3C +_0221C6A2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221C6B0: ; jump table + .short _0221CA3C - _0221C6B0 + 1 ; case 0 + .short _0221C6C6 - _0221C6B0 + 1 ; case 1 + .short _0221C6E6 - _0221C6B0 + 1 ; case 2 + .short _0221C6FC - _0221C6B0 + 1 ; case 3 + .short _0221C74C - _0221C6B0 + 1 ; case 4 + .short _0221C7B6 - _0221C6B0 + 1 ; case 5 + .short _0221C7D8 - _0221C6B0 + 1 ; case 6 + .short _0221C880 - _0221C6B0 + 1 ; case 7 + .short _0221C8DE - _0221C6B0 + 1 ; case 8 + .short _0221C960 - _0221C6B0 + 1 ; case 9 + .short _0221C9BA - _0221C6B0 + 1 ; case 10 +_0221C6C6: + bl MOD13_0221D478 + str r0, [sp, #4] + cmp r0, #1 + beq _0221C6D6 + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C6D6: + mov r1, #3 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + mov r0, #2 + str r0, [r6] + b _0221CA3C +_0221C6E6: + bl MOD13_0221D9A0 + str r0, [sp, #4] + cmp r0, #1 + beq _0221C6F6 + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C6F6: + mov r0, #3 + str r0, [r6] + b _0221CA3C +_0221C6FC: + mov r0, #2 + lsl r1, r0, #0 + ldr r2, [sp, #0x10] + bl FUN_0209A9D0 + add r4, r0, #0 + cmp r4, #0 + bge _0221C716 + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C716: + ldr r2, [sp, #0x18] + add r1, sp, #0x44 + str r2, [r1] + str r2, [r1, #4] + mov r2, #8 + add r1, sp, #0x44 + strb r2, [r1] + mov r2, #2 + strb r2, [r1, #1] + ldr r2, _0221C9EC ; =0x000001E6 + strh r2, [r1, #2] + ldr r1, [sp, #0x18] + str r1, [sp, #0x48] + add r1, sp, #0x44 + bl FUN_0209A9A4 + str r0, [sp, #4] + cmp r0, #0 + bge _0221C746 + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C746: + mov r0, #4 + str r0, [r6] + b _0221CA3C +_0221C74C: + bl MOD13_0221AA90 + ldr r1, _0221C9F0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221C768 + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x1c] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C768: + mov r1, #8 + add r0, sp, #0x44 + strb r1, [r0, #8] + ldr r0, _0221C9F4 ; =0x02241B5C + add r1, sp, #0x4c + bl MOD13_0221CEA4 + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + bgt _0221C78C + b _0221CA3C +_0221C78C: + ldr r0, _0221C9F8 ; =0x022427E4 + ldr r1, _0221CA00 ; =0x02241B00 + bl MOD13_0221D0D4 + cmp r0, #0 + bne _0221C79A + b _0221CA3C +_0221C79A: + bl MOD13_0221AA90 + ldr r1, _0221CA04 ; =0x00007530 + add r1, r0, r1 + ldr r0, _0221C9F0 ; =0x0223F870 + str r1, [r0] + mov r0, #5 + str r0, [r6] + mov r1, #4 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + b _0221CA3C +_0221C7B6: + ldr r0, _0221C9F8 ; =0x022427E4 + bl MOD13_0221CFD0 + add r3, r0, #0 + ldr r0, _0221CA08 ; =0x02241AC4 + str r3, [r0] + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + mov r0, #6 + str r0, [r6] + b _0221CA3C +_0221C7D8: + bl MOD13_0221AA90 + ldr r1, _0221C9F0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221C7F4 + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x20] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C7F4: + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + ble _0221C86A + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #3 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221C9F4 ; =0x02241B5C + bl MOD13_0221D074 + cmp r0, #0 + beq _0221C86A + ldr r0, _0221CA0C ; =0x02241FE4 + add r1, sp, #0x54 + add r2, sp, #0x58 + bl MOD13_0221D30C + add r5, r0, #0 + ldr r1, [sp, #0x54] + ldr r0, _0221CA10 ; =0x00000101 + cmp r1, r0 + beq _0221C82E + b _0221CA3C +_0221C82E: + bl MOD13_0221AA90 + str r0, [sp, #0x5c] + ldr r2, _0221CA14 ; =0x02241B84 + mov r1, #8 +_0221C838: + ldrb r0, [r5] + add r5, r5, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221C838 + ldr r0, _0221CA18 ; =0x02241B8C + add r1, sp, #0x5c + mov r2, #4 + bl MOD13_0221AAB4 + ldr r0, [sp, #0x24] + str r0, [sp, #8] + mov r0, #7 + str r0, [r6] + mov r1, #5 + ldr r0, _0221C9E8 ; =0x02241AE8 + str r1, [r0] + ldr r1, [sp, #0x28] + ldr r0, _0221C9F0 ; =0x0223F870 + str r1, [r0] + bl MOD13_0221A778 + b _0221CA3C +_0221C86A: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + bhs _0221C87A + b _0221CA3C +_0221C87A: + mov r0, #5 + str r0, [r6] + b _0221CA3C +_0221C880: + ldr r0, _0221CA0C ; =0x02241FE4 + ldr r1, _0221CA20 ; =0x00000102 + ldr r2, _0221CA18 ; =0x02241B8C + mov r3, #8 + bl MOD13_0221D1B4 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + ldr r0, _0221C9F4 ; =0x02241B5C + str r0, [sp] + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #4 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA24 ; =0x02241AE4 + ldr r3, [r3] + bl MOD13_0221D248 + add r3, r0, #0 + ldr r0, _0221CA08 ; =0x02241AC4 + str r3, [r0] + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + ldr r7, _0221CA28 ; =0x02241D90 + ldr r0, [sp, #0x2c] + lsl r1, r0, #0 + lsl r2, r0, #0 + lsl r3, r0, #0 + mov r5, #0x12 + str r5, [sp, #0x30] +_0221C8C6: + stmia r7!, {r0, r1, r2, r3} + stmia r7!, {r0, r1, r2, r3} + ldr r5, [sp, #0x30] + sub r5, r5, #1 + str r5, [sp, #0x30] + cmp r5, #0 + bne _0221C8C6 + stmia r7!, {r0, r1, r2, r3} + str r0, [r7] + mov r0, #8 + str r0, [r6] + b _0221CA3C +_0221C8DE: + add r0, sp, #0x4c + str r0, [sp] + add r0, r4, #0 + ldr r1, _0221C9F8 ; =0x022427E4 + ldr r2, _0221C9FC ; =0x00000800 + mov r3, #4 + bl FUN_0209A880 + cmp r0, #0 + ble _0221C932 + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #5 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA14 ; =0x02241B84 + bl MOD13_0221D074 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + cmp r0, #0 + beq _0221C932 + ldr r0, _0221CA0C ; =0x02241FE4 + bl MOD13_0221CCD8 + cmp r0, #0 + beq _0221C932 + ldr r1, _0221CA2C ; =0x02241E90 + ldr r0, [sp, #0x3c] + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0221C922 + mov r1, #1 + ldr r0, _0221CA30 ; =0x02241AB0 + strb r1, [r0] + b _0221C928 +_0221C922: + ldr r1, [sp, #0x34] + ldr r0, _0221CA30 ; =0x02241AB0 + strb r1, [r0] +_0221C928: + ldr r0, [sp, #0x38] + str r0, [sp, #8] + mov r0, #9 + str r0, [r6] + b _0221CA3C +_0221C932: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + blo _0221CA3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0xa + blt _0221C95A + add r0, r4, #0 + bl thunk_FUN_0209996c + ldr r0, [sp, #0x14] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0xc] + b _0221CA3C +_0221C95A: + mov r0, #7 + str r0, [r6] + b _0221CA3C +_0221C960: + ldr r0, _0221CA0C ; =0x02241FE4 + ldr r1, _0221CA34 ; =0x00000301 + ldr r2, _0221CA30 ; =0x02241AB0 + mov r3, #1 + bl MOD13_0221D1B4 + ldr r1, _0221CA24 ; =0x02241AE4 + str r0, [r1] + ldr r0, _0221CA14 ; =0x02241B84 + str r0, [sp] + ldr r0, _0221C9F8 ; =0x022427E4 + mov r1, #6 + ldr r2, _0221CA0C ; =0x02241FE4 + ldr r3, _0221CA24 ; =0x02241AE4 + ldr r3, [r3] + bl MOD13_0221D248 + ldr r1, _0221CA08 ; =0x02241AC4 + str r0, [r1] + bl MOD13_0221DD40 + cmp r0, #7 + beq _0221C9A0 + bl MOD13_0221AA90 + ldr r1, _0221CA1C ; =0x000003E8 + add r0, r0, r1 + str r0, [sp, #0x40] + mov r0, #0xa + str r0, [sp, #8] + str r0, [r6] + b _0221CA3C +_0221C9A0: + add r0, r4, #0 + add r1, sp, #0x4c + ldr r2, _0221C9F8 ; =0x022427E4 + ldr r3, _0221CA08 ; =0x02241AC4 + ldr r3, [r3] + bl MOD13_0221D408 + bl MOD13_0221AA90 + str r0, [sp, #0x40] + mov r0, #0xa + str r0, [r6] + b _0221CA3C +_0221C9BA: + bl MOD13_0221AA90 + ldr r2, _0221CA1C ; =0x000003E8 + ldr r1, [sp, #0x40] + add r1, r1, r2 + cmp r0, r1 + blo _0221CA3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0xa + blt _0221CA38 + mov r0, #1 + str r0, [sp, #0xc] + bl MOD13_0221CA74 + str r0, [sp, #4] + b _0221CA3C + nop +_0221C9E0: .word 0x02241ACC +_0221C9E4: .word 0x000001F4 +_0221C9E8: .word 0x02241AE8 +_0221C9EC: .word 0x000001E6 +_0221C9F0: .word 0x0223F870 +_0221C9F4: .word 0x02241B5C +_0221C9F8: .word 0x022427E4 +_0221C9FC: .word 0x00000800 +_0221CA00: .word 0x02241B00 +_0221CA04: .word 0x00007530 +_0221CA08: .word 0x02241AC4 +_0221CA0C: .word 0x02241FE4 +_0221CA10: .word 0x00000101 +_0221CA14: .word 0x02241B84 +_0221CA18: .word 0x02241B8C +_0221CA1C: .word 0x000003E8 +_0221CA20: .word 0x00000102 +_0221CA24: .word 0x02241AE4 +_0221CA28: .word 0x02241D90 +_0221CA2C: .word 0x02241E90 +_0221CA30: .word 0x02241AB0 +_0221CA34: .word 0x00000301 +_0221CA38: + mov r0, #9 + str r0, [r6] +_0221CA3C: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221CA4C + ldr r0, _0221CA70 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221CA4C + b _0221C694 +_0221CA4C: + cmp r4, #0 + beq _0221CA56 + add r0, r4, #0 + bl thunk_FUN_0209996c +_0221CA56: + ldr r0, _0221CA70 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221CA64 + mov r0, #7 + mvn r0, r0 + str r0, [sp, #4] +_0221CA64: + ldr r0, [sp, #4] + add sp, #0x64 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221CA70: .word 0x02241AC0 + + thumb_func_start MOD13_0221CA74 +MOD13_0221CA74: ; 0x0221CA74 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r0, #1 + str r0, [sp] + ldr r0, _0221CBF0 ; =0x02241CA8 + ldr r1, _0221CBF4 ; =0x02241E90 + bl strcpy + ldr r1, _0221CBF4 ; =0x02241E90 + ldr r0, [r1, #0x2c] + cmp r0, #3 + bls _0221CA8E + b _0221CBE0 +_0221CA8E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221CA9C: ; jump table + .short _0221CAA4 - _0221CA9C + 1 ; case 0 + .short _0221CAAC - _0221CA9C + 1 ; case 1 + .short _0221CBB0 - _0221CA9C + 1 ; case 2 + .short _0221CBC8 - _0221CA9C + 1 ; case 3 +_0221CAA4: + mov r1, #0 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + b _0221CBE6 +_0221CAAC: + ldr r0, [r1, #0x30] + cmp r0, #0 + bne _0221CABA + mov r0, #6 + mvn r0, r0 + str r0, [sp] + b _0221CBE6 +_0221CABA: + ldr r6, _0221CBF0 ; =0x02241CA8 + str r0, [r6, #0x24] + mov r0, #0 + str r0, [sp, #4] + add r5, sp, #0x10 + ldr r7, _0221CBF8 ; =0x02241EF4 + ldr r4, _0221CBFC ; =0x02241CD0 + mov r0, #6 + mvn r0, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + str r0, [sp, #8] +_0221CAD2: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0x20 + bl memcpy + ldr r1, [sp, #8] + add r0, sp, #0x30 + strb r1, [r0] + add r0, r5, #0 + bl strlen + cmp r0, #0x10 + bhi _0221CB0E + cmp r0, #0xa + blo _0221CAFE + cmp r0, #0xa + beq _0221CB38 + cmp r0, #0xd + beq _0221CB48 + cmp r0, #0x10 + beq _0221CB72 + b _0221CB9C +_0221CAFE: + cmp r0, #0 + bhi _0221CB08 + cmp r0, #0 + beq _0221CBA0 + b _0221CB9C +_0221CB08: + cmp r0, #5 + beq _0221CB1E + b _0221CB9C +_0221CB0E: + cmp r0, #0x1a + bhi _0221CB18 + cmp r0, #0x1a + beq _0221CB62 + b _0221CB9C +_0221CB18: + cmp r0, #0x20 + beq _0221CB8C + b _0221CB9C +_0221CB1E: + mov r0, #1 + str r0, [r6, #0x20] + ldrb r0, [r5] + strb r0, [r4] + ldrb r0, [r5, #1] + strb r0, [r4, #1] + ldrb r0, [r5, #2] + strb r0, [r4, #2] + ldrb r0, [r5, #3] + strb r0, [r4, #3] + ldrb r0, [r5, #4] + strb r0, [r4, #4] + b _0221CBA0 +_0221CB38: + mov r0, #1 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0xa + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB48: + mov r0, #2 + str r0, [r6, #0x20] + add r3, r5, #0 + add r2, r4, #0 + mov r1, #0xd +_0221CB52: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CB52 + b _0221CBA0 +_0221CB62: + mov r0, #2 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x1a + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB72: + mov r0, #3 + str r0, [r6, #0x20] + add r3, r5, #0 + add r2, r4, #0 + mov r1, #0x10 +_0221CB7C: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CB7C + b _0221CBA0 +_0221CB8C: + mov r0, #3 + str r0, [r6, #0x20] + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x20 + bl MOD13_0221CC08 + b _0221CBA0 +_0221CB9C: + ldr r0, [sp, #0xc] + str r0, [sp] +_0221CBA0: + add r7, #0x28 + add r4, #0x20 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _0221CAD2 + b _0221CBE6 +_0221CBB0: + mov r1, #4 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + ldr r4, _0221CC00 ; =0x02241D50 + ldr r3, _0221CC04 ; =0x02241F8C + mov r2, #8 +_0221CBBC: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + cmp r2, #0 + bne _0221CBBC + b _0221CBE6 +_0221CBC8: + mov r1, #5 + ldr r0, _0221CBF0 ; =0x02241CA8 + str r1, [r0, #0x20] + ldr r4, _0221CC00 ; =0x02241D50 + ldr r3, _0221CC04 ; =0x02241F8C + mov r2, #8 +_0221CBD4: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + cmp r2, #0 + bne _0221CBD4 + b _0221CBE6 +_0221CBE0: + mov r0, #6 + mvn r0, r0 + str r0, [sp] +_0221CBE6: + ldr r0, [sp] + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221CBF0: .word 0x02241CA8 +_0221CBF4: .word 0x02241E90 +_0221CBF8: .word 0x02241EF4 +_0221CBFC: .word 0x02241CD0 +_0221CC00: .word 0x02241D50 +_0221CC04: .word 0x02241F8C + + thumb_func_start MOD13_0221CC08 +MOD13_0221CC08: ; 0x0221CC08 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp] + mov r4, #0 + add r5, r4, #0 + lsl r0, r2, #0 + cmp r0, #0 + ble _0221CCCE + str r4, [sp, #4] +_0221CC1E: + ldrsb r0, [r7, r5] + cmp r0, #0x63 + bgt _0221CC7A + cmp r0, #0x63 + bge _0221CC94 + cmp r0, #0x61 + bgt _0221CC74 + cmp r0, #0x61 + bge _0221CC94 + add r1, r0, #0 + sub r1, #0x30 + cmp r1, #0x16 + bhi _0221CCA0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221CC46: ; jump table + .short _0221CC8E - _0221CC46 + 1 ; case 0 + .short _0221CC8E - _0221CC46 + 1 ; case 1 + .short _0221CC8E - _0221CC46 + 1 ; case 2 + .short _0221CC8E - _0221CC46 + 1 ; case 3 + .short _0221CC8E - _0221CC46 + 1 ; case 4 + .short _0221CC8E - _0221CC46 + 1 ; case 5 + .short _0221CC8E - _0221CC46 + 1 ; case 6 + .short _0221CC8E - _0221CC46 + 1 ; case 7 + .short _0221CC8E - _0221CC46 + 1 ; case 8 + .short _0221CC8E - _0221CC46 + 1 ; case 9 + .short _0221CCA0 - _0221CC46 + 1 ; case 10 + .short _0221CCA0 - _0221CC46 + 1 ; case 11 + .short _0221CCA0 - _0221CC46 + 1 ; case 12 + .short _0221CCA0 - _0221CC46 + 1 ; case 13 + .short _0221CCA0 - _0221CC46 + 1 ; case 14 + .short _0221CCA0 - _0221CC46 + 1 ; case 15 + .short _0221CCA0 - _0221CC46 + 1 ; case 16 + .short _0221CC9A - _0221CC46 + 1 ; case 17 + .short _0221CC9A - _0221CC46 + 1 ; case 18 + .short _0221CC9A - _0221CC46 + 1 ; case 19 + .short _0221CC9A - _0221CC46 + 1 ; case 20 + .short _0221CC9A - _0221CC46 + 1 ; case 21 + .short _0221CC9A - _0221CC46 + 1 ; case 22 +_0221CC74: + cmp r0, #0x62 + beq _0221CC94 + b _0221CCA0 +_0221CC7A: + cmp r0, #0x65 + bgt _0221CC88 + cmp r0, #0x65 + bge _0221CC94 + cmp r0, #0x64 + beq _0221CC94 + b _0221CCA0 +_0221CC88: + cmp r0, #0x66 + beq _0221CC94 + b _0221CCA0 +_0221CC8E: + sub r0, #0x30 + add r4, r4, r0 + b _0221CCAA +_0221CC94: + sub r0, #0x57 + add r4, r4, r0 + b _0221CCAA +_0221CC9A: + sub r0, #0x37 + add r4, r4, r0 + b _0221CCAA +_0221CCA0: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221CCAA: + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + cmp r1, #0 + bne _0221CCBA + lsl r4, r4, #4 + b _0221CCC6 +_0221CCBA: + add r0, r5, #0 + mov r1, #2 + bl _s32_div_f + strb r4, [r6, r0] + ldr r4, [sp, #4] +_0221CCC6: + add r5, r5, #1 + ldr r0, [sp] + cmp r5, r0 + blt _0221CC1E +_0221CCCE: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221CCD8 +MOD13_0221CCD8: ; 0x0221CCD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r1, r0, #0 + add r1, #8 + str r1, [sp, #8] + mov r2, #0 + str r2, [sp, #4] + ldrh r2, [r0] + asr r3, r2, #8 + mov r0, #0xff + and r3, r0 + lsl r2, r2, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r2, r0 + orr r3, r2 + lsl r0, r3, #0x10 + lsr r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp] + add r0, sp, #8 + ldr r1, [sp] + add r2, sp, #0xc + add r3, sp, #0x10 + bl MOD13_0221D344 + add r5, r0, #0 + cmp r5, #0 + bne _0221CD12 + b _0221CE76 +_0221CD12: + mov r7, #0 +_0221CD14: + ldr r0, [sp, #0xc] + ldr r1, _0221CE84 ; =0x00000201 + sub r1, r0, r1 + cmp r1, #9 + bls _0221CD20 + b _0221CE62 +_0221CD20: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #8] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r1, pc + bx r1 +_0221CD2E: ; jump table + .short _0221CD42 - _0221CD2E + 1 ; case 0 + .short _0221CD60 - _0221CD2E + 1 ; case 1 + .short _0221CD7A - _0221CD2E + 1 ; case 2 + .short _0221CDA0 - _0221CD2E + 1 ; case 3 + .short _0221CDC6 - _0221CD2E + 1 ; case 4 + .short _0221CDE0 - _0221CD2E + 1 ; case 5 + .short _0221CDE0 - _0221CD2E + 1 ; case 6 + .short _0221CDE0 - _0221CD2E + 1 ; case 7 + .short _0221CDE0 - _0221CD2E + 1 ; case 8 + .short _0221CE40 - _0221CD2E + 1 ; case 9 +_0221CD42: + ldr r2, _0221CE88 ; =0x02241E90 + add r0, r7, #0 + add r1, r7, #0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0221CE88 ; =0x02241E90 + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy + mov r0, #1 + str r0, [sp, #4] + b _0221CE62 +_0221CD60: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0221CE88 ; =0x02241E90 + str r1, [r0, #0x2c] + b _0221CE62 +_0221CD7A: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + add r3, r7, #0 + ldr r2, _0221CE8C ; =0x02241D90 +_0221CD92: + ldr r0, _0221CE90 ; =0x0000015C + str r1, [r2, r0] + add r2, #0x28 + add r3, r3, #1 + cmp r3, #4 + blt _0221CD92 + b _0221CE62 +_0221CDA0: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r2, r0, #0x10 + add r1, r7, #0 + ldr r3, _0221CE8C ; =0x02241D90 +_0221CDB8: + ldr r0, _0221CE94 ; =0x00000160 + str r2, [r3, r0] + add r3, #0x28 + add r1, r1, #1 + cmp r1, #4 + blt _0221CDB8 + b _0221CE62 +_0221CDC6: + ldrh r1, [r5] + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221CE80 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + lsl r0, r2, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0221CE88 ; =0x02241E90 + str r1, [r0, #0x30] + b _0221CE62 +_0221CDE0: + ldr r1, _0221CE98 ; =0x00000206 + sub r1, r0, r1 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r0, r0, r1 + add r1, r7, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r0, _0221CE88 ; =0x02241E90 + ldr r0, [r0, #0x5c] + cmp r0, #1 + bne _0221CE28 + ldr r1, [sp, #0xc] + ldr r0, _0221CE98 ; =0x00000206 + sub r1, r1, r0 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r4, r0, r1 + add r6, r7, #0 + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _0221CE62 +_0221CE12: + add r0, r4, #0 + ldrsb r1, [r5, r7] + add r5, r5, #1 + bl MOD13_0221AA14 + add r4, r4, r0 + add r6, r6, #1 + ldr r0, [sp, #0x10] + cmp r6, r0 + blt _0221CE12 + b _0221CE62 +_0221CE28: + ldr r1, [sp, #0xc] + ldr r0, _0221CE98 ; =0x00000206 + sub r1, r1, r0 + mov r0, #0x28 + mul r1, r0 + ldr r0, _0221CE9C ; =0x02241EF4 + add r0, r0, r1 + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy + b _0221CE62 +_0221CE40: + ldr r2, _0221CEA0 ; =0x02241F8C + add r0, r7, #0 + add r1, r7, #0 + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0221CEA0 ; =0x02241F8C + add r1, r5, #0 + ldr r2, [sp, #0x10] + bl memcpy +_0221CE62: + add r0, sp, #8 + ldr r1, [sp] + add r2, sp, #0xc + add r3, sp, #0x10 + bl MOD13_0221D344 + add r5, r0, #0 + cmp r5, #0 + beq _0221CE76 + b _0221CD14 +_0221CE76: + ldr r0, [sp, #4] + add sp, #0x14 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221CE80: .word 0x0000FF00 +_0221CE84: .word 0x00000201 +_0221CE88: .word 0x02241E90 +_0221CE8C: .word 0x02241D90 +_0221CE90: .word 0x0000015C +_0221CE94: .word 0x00000160 +_0221CE98: .word 0x00000206 +_0221CE9C: .word 0x02241EF4 +_0221CEA0: .word 0x02241F8C + + thumb_func_start MOD13_0221CEA4 +MOD13_0221CEA4: ; 0x0221CEA4 + push {r4, lr} + sub sp, #0x50 + add r4, r0, #0 + add r2, r4, #0 + add r2, #0xc + ldr r1, _0221CFB0 ; =0x0223F92C + ldrb r0, [r1] + strb r0, [r4, #0xc] + ldrb r0, [r1, #1] + strb r0, [r2, #1] + ldrb r0, [r1, #2] + strb r0, [r2, #2] + ldrb r0, [r1, #3] + strb r0, [r2, #3] + add r1, sp, #0 + ldr r0, _0221CFB4 ; =0x02241B3C + ldrb r2, [r0] + strb r2, [r1] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + add r1, sp, #0 + ldrb r2, [r1] + mov r0, #0xfd + and r2, r0 + strb r2, [r1] + add r0, sp, #4 + add r0, #2 + bl MOD13_0221CFC0 + ldr r0, _0221CFB8 ; =0x02241B34 + add r1, sp, #4 + add r1, #2 + ldrb r2, [r1] + strb r2, [r0] + ldrb r2, [r1, #1] + strb r2, [r0, #1] + ldrb r2, [r1, #2] + strb r2, [r0, #2] + ldrb r2, [r1, #3] + strb r2, [r0, #3] + ldrb r2, [r1, #4] + strb r2, [r0, #4] + ldrb r2, [r1, #5] + strb r2, [r0, #5] + add r0, sp, #0 + mov r2, #6 + bl memcmp + cmp r0, #0 + bgt _0221CF52 + add r1, sp, #4 + add r1, #2 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #2] + strb r0, [r4, #2] + ldrb r0, [r1, #3] + strb r0, [r4, #3] + ldrb r0, [r1, #4] + strb r0, [r4, #4] + ldrb r0, [r1, #5] + strb r0, [r4, #5] + add r1, r4, #6 + add r0, sp, #0 + ldrb r2, [r0] + strb r2, [r4, #6] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + b _0221CF8A +_0221CF52: + add r1, sp, #0 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #2] + strb r0, [r4, #2] + ldrb r0, [r1, #3] + strb r0, [r4, #3] + ldrb r0, [r1, #4] + strb r0, [r4, #4] + ldrb r0, [r1, #5] + strb r0, [r4, #5] + add r1, r4, #6 + add r0, sp, #4 + add r0, #2 + ldrb r2, [r0] + strb r2, [r4, #6] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] +_0221CF8A: + ldr r0, _0221CFBC ; =0x0223F868 + ldr r0, [r0] + cmp r0, #0 + beq _0221CFA4 + add r0, sp, #0xc + add r1, sp, #4 + add r1, #2 + bl MOD13_0221A9D8 + add r0, sp, #0x2c + add r1, sp, #0 + bl MOD13_0221A9D8 +_0221CFA4: + mov r0, #1 + add sp, #0x50 + pop {r4} + pop {r3} + bx r3 + nop +_0221CFB0: .word 0x0223F92C +_0221CFB4: .word 0x02241B3C +_0221CFB8: .word 0x02241B34 +_0221CFBC: .word 0x0223F868 + + thumb_func_start MOD13_0221CFC0 +MOD13_0221CFC0: ; 0x0221CFC0 + push {lr} + sub sp, #4 + bl OS_GetMacAddress + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + + thumb_func_start MOD13_0221CFD0 +MOD13_0221CFD0: ; 0x0221CFD0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r1, _0221D05C ; =0x00000100 + add r0, sp, #4 + strh r1, [r0] + ldr r3, _0221D060 ; =0x0223F880 + add r2, sp, #4 + add r2, #2 + mov r1, #7 +_0221CFE4: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221CFE4 + ldr r0, _0221D064 ; =0x0223F864 + ldr r0, [r0] + mov r1, #1 + add r2, sp, #4 + mov r3, #2 + bl MOD13_0221D1E0 + mov r1, #2 + add r2, sp, #4 + add r3, r1, #0 + bl MOD13_0221D1E0 + ldr r1, _0221D068 ; =0x02241B00 + ldr r1, [r1] + cmp r1, #0 + beq _0221D01C + mov r1, #5 + add r2, sp, #4 + mov r3, #2 + bl MOD13_0221D1E0 +_0221D01C: + mov r1, #3 + add r2, sp, #4 + add r2, #2 + mov r3, #7 + bl MOD13_0221D1E0 + add r3, r0, #0 + ldr r1, _0221D068 ; =0x02241B00 + ldr r1, [r1] + cmp r1, #0 + beq _0221D03E + mov r1, #4 + ldr r2, _0221D06C ; =0x02241B34 + mov r3, #6 + bl MOD13_0221D1E0 + add r3, r0, #0 +_0221D03E: + mov r0, #0 + str r0, [sp] + add r0, r4, #0 + mov r1, #2 + ldr r2, _0221D070 ; =0x02241FE4 + ldr r4, _0221D064 ; =0x0223F864 + ldr r4, [r4] + sub r3, r3, r4 + add r3, #8 + bl MOD13_0221D248 + add sp, #0x10 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221D05C: .word 0x00000100 +_0221D060: .word 0x0223F880 +_0221D064: .word 0x0223F864 +_0221D068: .word 0x02241B00 +_0221D06C: .word 0x02241B34 +_0221D070: .word 0x02241FE4 + + thumb_func_start MOD13_0221D074 +MOD13_0221D074: ; 0x0221D074 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r2, #0 + add r4, r3, #0 + add r1, sp, #4 + add r2, sp, #8 + bl MOD13_0221D398 + add r1, r0, #0 + cmp r1, #0 + bne _0221D096 + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221D096: + ldr r0, [sp, #4] + cmp r0, r5 + beq _0221D0A6 + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 +_0221D0A6: + cmp r4, #0 + beq _0221D0C0 + mov r0, #0x10 + str r0, [sp] + add r0, r6, #0 + ldr r2, [sp, #8] + add r3, r4, #0 + bl MOD13_0221C218 + ldr r0, [sp, #8] + sub r0, #8 + str r0, [sp, #8] + b _0221D0C8 +_0221D0C0: + add r0, r6, #0 + ldr r2, [sp, #8] + bl memcpy +_0221D0C8: + ldr r0, [sp, #8] + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221D0D4 +MOD13_0221D0D4: ; 0x0221D0D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r1, [sp] + add r1, sp, #0xc + add r2, sp, #0x10 + bl MOD13_0221D398 + str r0, [sp, #0x1c] + mov r7, #0 + str r7, [sp, #4] + str r7, [sp, #8] + cmp r0, #0 + bne _0221D0F8 + add r0, r7, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D0F8: + ldr r1, [sp, #0xc] + cmp r1, #1 + beq _0221D108 + add r0, r7, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D108: + ldr r1, [sp, #0x10] + add r6, r0, r1 + add r0, #8 + str r0, [sp, #0x1c] + add r0, sp, #0x1c + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x18 + bl MOD13_0221D344 + cmp r0, #0 + beq _0221D17C + mov r4, #0xff + ldr r5, _0221D1B0 ; =0x0000FF00 +_0221D124: + ldr r1, [sp, #0x14] + cmp r1, #1 + beq _0221D134 + cmp r1, #2 + beq _0221D146 + cmp r1, #5 + beq _0221D15A + b _0221D16C +_0221D134: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r7, r0, #0x10 + b _0221D16C +_0221D146: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + b _0221D16C +_0221D15A: + ldrh r0, [r0] + asr r1, r0, #8 + and r1, r4 + lsl r0, r0, #8 + and r0, r5 + orr r1, r0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] +_0221D16C: + add r0, sp, #0x1c + add r1, r6, #0 + add r2, sp, #0x14 + add r3, sp, #0x18 + bl MOD13_0221D344 + cmp r0, #0 + bne _0221D124 +_0221D17C: + cmp r7, #1 + bne _0221D186 + ldr r0, [sp, #4] + cmp r0, #1 + beq _0221D190 +_0221D186: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D190: + ldr r0, [sp, #8] + cmp r0, #1 + blt _0221D19E + mov r1, #1 + ldr r0, [sp] + str r1, [r0] + b _0221D1A4 +_0221D19E: + mov r1, #0 + ldr r0, [sp] + str r1, [r0] +_0221D1A4: + mov r0, #1 + add sp, #0x24 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D1B0: .word 0x0000FF00 + + thumb_func_start MOD13_0221D1B4 +MOD13_0221D1B4: ; 0x0221D1B4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r4, #0 + add r0, #8 + bl MOD13_0221D1E0 + sub r0, r0, r4 + add r1, r0, #0 + sub r1, #8 + strh r1, [r4] + pop {r4} + pop {r3} + bx r3 + + thumb_func_start MOD13_0221D1E0 +MOD13_0221D1E0: ; 0x0221D1E0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r2, #0 + add r4, r3, #0 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + strb r0, [r5, #3] + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + asr r2, r0, #8 + mov r3, #0xff + and r2, r3 + lsl r1, r0, #8 + ldr r0, _0221D244 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + strh r2, [r5] + add r2, r4, #0 + add r2, #0xb + mov r1, #7 + bic r2, r1 + sub r6, r2, #4 + lsl r1, r4, #0x10 + lsr r2, r1, #0x10 + asr r1, r2, #8 + and r1, r3 + lsl r2, r2, #8 + and r2, r0 + orr r1, r2 + strh r1, [r5, #2] + add r5, r5, #4 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl memcpy + add r0, r5, r6 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D244: .word 0x0000FF00 + + thumb_func_start MOD13_0221D248 +MOD13_0221D248: ; 0x0221D248 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + str r1, [sp, #4] + add r1, r2, #0 + add r7, r3, #0 + add r5, r6, #0 + mov r4, #0 + strb r4, [r1] + strb r4, [r1, #1] + strb r4, [r1, #2] + strb r4, [r1, #3] + strb r4, [r1, #4] + strb r4, [r1, #5] + strb r4, [r1, #6] + strb r4, [r1, #7] + add r0, r7, #0 + sub r0, #8 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + asr r2, r3, #8 + mov r0, #0xff + and r2, r0 + lsl r3, r3, #8 + ldr r0, _0221D308 ; =0x0000FF00 + and r3, r0 + orr r2, r3 + strh r2, [r1] + ldr r3, [sp, #0x20] + cmp r3, #0 + beq _0221D296 + mov r0, #0x10 + str r0, [sp] + add r0, r6, #6 + add r2, r7, #0 + bl MOD13_0221C40C + add r7, #8 + b _0221D29E +_0221D296: + add r0, r6, #6 + add r2, r7, #0 + bl memcpy +_0221D29E: + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + strb r0, [r6, #4] + strb r0, [r6, #5] + ldr r0, [sp, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r3, r0, #8 + mov r1, #0xff + and r3, r1 + lsl r0, r0, #8 + ldr r2, _0221D308 ; =0x0000FF00 + and r0, r2 + orr r3, r0 + strh r3, [r6] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + asr r3, r0, #8 + and r3, r1 + lsl r0, r0, #8 + and r0, r2 + orr r3, r0 + strh r3, [r6, #2] + add r0, r5, #6 + add r5, r0, r7 + add r1, r6, #0 + cmp r6, r5 + bhs _0221D2E6 +_0221D2DC: + ldrb r0, [r1] + add r4, r4, r0 + add r1, r1, #1 + cmp r1, r5 + blo _0221D2DC +_0221D2E6: + lsl r0, r4, #0x10 + lsr r1, r0, #0x10 + asr r2, r1, #8 + mov r0, #0xff + and r2, r0 + lsl r1, r1, #8 + ldr r0, _0221D308 ; =0x0000FF00 + and r1, r0 + orr r2, r1 + strh r2, [r5] + add r0, r5, #2 + sub r0, r0, r6 + add sp, #0xc + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D308: .word 0x0000FF00 + + thumb_func_start MOD13_0221D30C +MOD13_0221D30C: ; 0x0221D30C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r3, r2, #0 + add r2, r0, #0 + add r2, #8 + str r2, [sp] + ldrh r6, [r0] + add r0, sp, #0 + asr r1, r6, #8 + mov r5, #0xff + and r1, r5 + lsl r6, r6, #8 + ldr r5, _0221D340 ; =0x0000FF00 + and r6, r5 + orr r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r1, r2, r1 + add r2, r4, #0 + bl MOD13_0221D344 + add sp, #8 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221D340: .word 0x0000FF00 + + thumb_func_start MOD13_0221D344 +MOD13_0221D344: ; 0x0221D344 + push {r4, r5, r6, r7} + add r5, r0, #0 + add r4, r2, #0 + add r2, r3, #0 + ldr r0, [r5] + cmp r0, r1 + blo _0221D358 + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_0221D358: + ldrh r1, [r0] + asr r7, r1, #8 + mov r3, #0xff + and r7, r3 + lsl r1, r1, #8 + ldr r6, _0221D394 ; =0x0000FF00 + and r1, r6 + orr r7, r1 + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + str r1, [r4] + ldrh r1, [r0, #2] + asr r4, r1, #8 + and r4, r3 + lsl r1, r1, #8 + and r1, r6 + orr r4, r1 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [r2] + add r0, r0, #4 + ldr r2, [r2] + add r2, #0xb + mov r1, #7 + bic r2, r1 + sub r1, r2, #4 + add r1, r0, r1 + str r1, [r5] + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_0221D394: .word 0x0000FF00 + + thumb_func_start MOD13_0221D398 +MOD13_0221D398: ; 0x0221D398 + push {r4, r5, r6, r7} + mov r3, #0 + ldrh r4, [r0] + asr r7, r4, #8 + mov r5, #0xff + and r7, r5 + lsl r4, r4, #8 + ldr r6, _0221D404 ; =0x0000FF00 + and r4, r6 + orr r7, r4 + lsl r4, r7, #0x10 + lsr r4, r4, #0x10 + str r4, [r1] + ldrh r1, [r0, #2] + asr r4, r1, #8 + and r4, r5 + lsl r1, r1, #8 + and r1, r6 + orr r4, r1 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [r2] + add r4, r0, #6 + ldr r1, [r2] + add r4, r4, r1 + add r2, r0, #0 + cmp r0, r4 + bhs _0221D3DA +_0221D3D0: + ldrb r1, [r2] + add r3, r3, r1 + add r2, r2, #1 + cmp r2, r4 + blo _0221D3D0 +_0221D3DA: + ldrh r2, [r4] + lsl r1, r3, #0x10 + lsr r4, r1, #0x10 + asr r3, r2, #8 + mov r1, #0xff + and r3, r1 + lsl r2, r2, #8 + ldr r1, _0221D404 ; =0x0000FF00 + and r2, r1 + orr r3, r2 + lsl r1, r3, #0x10 + lsr r1, r1, #0x10 + cmp r4, r1 + beq _0221D3FC + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_0221D3FC: + add r0, r0, #6 + pop {r4, r5, r6, r7} + bx lr + nop +_0221D404: .word 0x0000FF00 + + thumb_func_start MOD13_0221D408 +MOD13_0221D408: ; 0x0221D408 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _0221D410 ; =MOD13_0221D414 + bx r3 + .align 2, 0 +_0221D410: .word MOD13_0221D414 + + thumb_func_start MOD13_0221D414 +MOD13_0221D414: ; 0x0221D414 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + mov r0, #8 + add r1, sp, #4 + strb r0, [r1] + mov r0, #2 + strb r0, [r1, #1] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #8] + ldr r0, _0221D454 ; =0x000001E6 + strh r0, [r1, #2] + bl FUN_02099C78 + add r1, sp, #0xc + bl FUN_0209A174 + str r4, [sp] + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0xc + add r3, r6, #0 + bl MOD13_0221D458 + add sp, #0x10 + pop {r4, r5, r6} + pop {r3} + bx r3 + nop +_0221D454: .word 0x000001E6 + + thumb_func_start MOD13_0221D458 +MOD13_0221D458: ; 0x0221D458 + push {lr} + sub sp, #4 + str r1, [sp] + add r1, r3, #0 + ldr r2, [sp, #8] + mov r3, #0 + bl FUN_0209A7D0 + cmp r0, #0 + bge _0221D470 + mov r0, #3 + mvn r0, r0 +_0221D470: + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221D478 +MOD13_0221D478: ; 0x0221D478 + push {r4, r5, r6, r7, lr} + sub sp, #0x9c + mov r0, #0 + str r0, [sp, #0x18] + mvn r4, r0 + str r0, [sp, #0x48] + ldr r0, _0221D738 ; =0x02241B20 + ldr r0, [r0] + str r0, [sp, #0x10] + mov r1, #0x30 + mul r0, r1 + str r0, [sp, #0x10] + add r0, #0x34 + str r0, [sp, #0x10] + mov r0, #1 + ldr r1, [sp, #0x10] + bl MOD13_0221AA64 + str r0, [sp, #0x14] + cmp r0, #0 + bne _0221D4A4 + b _0221D718 +_0221D4A4: + mov r0, #1 + ldr r1, [sp, #0x10] + bl MOD13_0221AA64 + str r0, [sp, #0x18] + cmp r0, #0 + bne _0221D4B4 + b _0221D718 +_0221D4B4: + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x44] + str r0, [sp, #0x3c] + str r0, [sp, #0x38] + add r6, sp, #0x6c + str r0, [sp, #0x34] + lsl r7, r0, #0 + str r0, [sp, #0x28] + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + str r0, [sp, #0x40] + b _0221D6E0 +_0221D4CE: + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221D4DC + b _0221D6F0 +_0221D4DC: + ldr r0, [sp, #0x28] + lsl r1, r0, #0 + lsl r2, r0, #0 + ldr r3, _0221D740 ; =0x0030BFFE + bl MOD13_0221DF9C + cmp r0, #0 + bne _0221D4F2 + mov r0, #1 + mvn r4, r0 + b _0221D718 +_0221D4F2: + add r0, r6, #0 + bl OS_CreateAlarm + mov r0, #0x13 + str r0, [sp] + add r0, r6, #0 + ldr r1, _0221D744 ; =0x000FFB10 + ldr r2, [sp, #0x2c] + ldr r3, _0221D748 ; =MOD13_0221DC1C + bl OS_SetAlarm + mov r5, #1 + ldr r4, [sp, #0x30] +_0221D50C: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + bhs _0221D5A8 + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221D5A8 + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221D5A4 +_0221D52E: + cmp r0, #0x13 + bhi _0221D59A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221D540: ; jump table + .short _0221D59A - _0221D540 + 1 ; case 0 + .short _0221D59A - _0221D540 + 1 ; case 1 + .short _0221D59A - _0221D540 + 1 ; case 2 + .short _0221D59A - _0221D540 + 1 ; case 3 + .short _0221D59C - _0221D540 + 1 ; case 4 + .short _0221D56C - _0221D540 + 1 ; case 5 + .short _0221D59A - _0221D540 + 1 ; case 6 + .short _0221D59A - _0221D540 + 1 ; case 7 + .short _0221D59C - _0221D540 + 1 ; case 8 + .short _0221D59A - _0221D540 + 1 ; case 9 + .short _0221D596 - _0221D540 + 1 ; case 10 + .short _0221D59A - _0221D540 + 1 ; case 11 + .short _0221D59A - _0221D540 + 1 ; case 12 + .short _0221D59A - _0221D540 + 1 ; case 13 + .short _0221D59A - _0221D540 + 1 ; case 14 + .short _0221D59A - _0221D540 + 1 ; case 15 + .short _0221D59A - _0221D540 + 1 ; case 16 + .short _0221D59A - _0221D540 + 1 ; case 17 + .short _0221D59C - _0221D540 + 1 ; case 18 + .short _0221D568 - _0221D540 + 1 ; case 19 +_0221D568: + add r5, r7, #0 + b _0221D59C +_0221D56C: + ldr r0, _0221D750 ; =0x02241B0C + ldr r0, [r0] + ldr r1, _0221D738 ; =0x02241B20 + ldr r1, [r1] + bl MOD13_0221E0A8 + cmp r0, r4 + ble _0221D59C + add r4, r0, #0 + add r0, r6, #0 + bl OS_CancelAlarm + mov r0, #0x13 + str r0, [sp] + add r0, r6, #0 + ldr r1, _0221D744 ; =0x000FFB10 + ldr r2, [sp, #0x34] + ldr r3, _0221D748 ; =MOD13_0221DC1C + bl OS_SetAlarm + b _0221D59C +_0221D596: + ldr r5, [sp, #0x38] + b _0221D59C +_0221D59A: + ldr r5, [sp, #0x3c] +_0221D59C: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D52E +_0221D5A4: + cmp r5, #0 + bne _0221D50C +_0221D5A8: + add r0, r6, #0 + bl OS_CancelAlarm +_0221D5AE: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D5AE + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D5C0 + b _0221D6F0 +_0221D5C0: + ldr r0, [sp, #0x40] + str r0, [sp, #0xc] + ldr r0, _0221D738 ; =0x02241B20 + ldr r0, [r0] + cmp r4, r0 + blt _0221D5D2 + mov r0, #5 + mvn r4, r0 + b _0221D718 +_0221D5D2: + ldr r0, [sp, #0x40] + str r0, [sp, #8] + ldr r0, _0221D750 ; =0x02241B0C + ldr r0, [r0] + str r0, [sp, #0x1c] + cmp r4, #0 + ble _0221D66A + ldr r0, [sp, #0x14] + str r0, [sp, #0x20] + add r0, #8 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + str r0, [sp, #0x24] + lsl r5, r0, #0 + add r5, #0x2c +_0221D5F0: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + add r1, #0xc + mov r2, #0x20 + bl memcpy + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0xa] + ldr r0, [sp, #0x24] + str r1, [r0, #4] + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0xa] + ldr r0, [sp, #0x24] + add r1, r0, r1 + ldr r0, [sp, #0x44] + strb r0, [r1, #8] + ldr r0, [sp, #0x1c] + ldrh r1, [r0, #0x2c] + mov r0, #0x10 + and r1, r0 + cmp r1, #0 + beq _0221D620 + mov r1, #1 + b _0221D622 +_0221D620: + ldr r1, [sp, #0x44] +_0221D622: + ldr r0, [sp, #0x24] + strh r1, [r0, #0x32] + ldr r0, [sp, #0x1c] + add r0, r0, #4 + ldr r1, [sp, #0x1c] + ldrb r1, [r1, #4] + strb r1, [r5] + ldrb r1, [r0, #1] + strb r1, [r5, #1] + ldrb r1, [r0, #2] + strb r1, [r5, #2] + ldrb r1, [r0, #3] + strb r1, [r5, #3] + ldrb r1, [r0, #4] + strb r1, [r5, #4] + ldrb r0, [r0, #5] + strb r0, [r5, #5] + ldr r0, [sp, #0x20] + add r0, #0x30 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r0, #0x30 + str r0, [sp, #0x24] + add r5, #0x30 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r0, #0xc0 + str r0, [sp, #0x1c] + ldr r0, [sp, #8] + cmp r0, r4 + blt _0221D5F0 +_0221D66A: + ldr r0, [sp, #0x14] + str r4, [r0] + ldr r0, _0221D754 ; =0x02241AE8 + ldr r0, [r0] + cmp r0, #1 + beq _0221D6C6 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + add r2, sp, #0x48 + bl MOD13_0221D764 + cmp r0, #0 + beq _0221D6C6 + ldr r3, [sp, #0x48] + ldr r0, [sp, #0x14] + add r2, r0, #4 + mov r0, #0x30 + add r1, r3, #0 + mul r1, r0 + add r4, r2, r1 + ldr r0, _0221D758 ; =0x02241AC8 + str r3, [r0] + ldr r0, _0221D75C ; =0x02241BC4 + add r1, r4, #4 + bl strcpy + ldr r1, _0221D760 ; =0x02241B3C + add r0, r4, #0 + add r0, #0x28 + add r4, #0x28 + ldrb r2, [r4] + strb r2, [r1] + ldrb r2, [r0, #1] + strb r2, [r1, #1] + ldrb r2, [r0, #2] + strb r2, [r1, #2] + ldrb r2, [r0, #3] + strb r2, [r1, #3] + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r0, [r0, #5] + strb r0, [r1, #5] + add r0, sp, #0x4c + bl MOD13_0221A9D8 + b _0221D6F0 +_0221D6C6: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + bl memcpy + mov r1, #2 + ldr r0, _0221D754 ; =0x02241AE8 + str r1, [r0] + bl MOD13_0221A778 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_0221D6E0: + ldr r0, [sp, #4] + cmp r0, #0x1e + bge _0221D6F0 + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + bne _0221D6F0 + b _0221D4CE +_0221D6F0: + ldr r0, [sp, #4] + cmp r0, #0x1e + bge _0221D702 + bl MOD13_0221AA90 + ldr r1, _0221D73C ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + bls _0221D708 +_0221D702: + mov r0, #2 + mvn r4, r0 + b _0221D718 +_0221D708: + ldr r0, _0221D74C ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D716 + mov r0, #7 + mvn r4, r0 + b _0221D718 +_0221D716: + mov r4, #1 +_0221D718: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0221D722 + bl MOD13_0221AA50 +_0221D722: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _0221D72C + bl MOD13_0221AA50 +_0221D72C: + add r0, r4, #0 + add sp, #0x9c + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221D738: .word 0x02241B20 +_0221D73C: .word 0x0223F870 +_0221D740: .word 0x0030BFFE +_0221D744: .word 0x000FFB10 +_0221D748: .word MOD13_0221DC1C +_0221D74C: .word 0x02241AC0 +_0221D750: .word 0x02241B0C +_0221D754: .word 0x02241AE8 +_0221D758: .word 0x02241AC8 +_0221D75C: .word 0x02241BC4 +_0221D760: .word 0x02241B3C + + thumb_func_start MOD13_0221D764 +MOD13_0221D764: ; 0x0221D764 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp] + add r5, r0, #4 + lsl r0, r1, #0 + add r4, r0, #4 + ldr r0, [sp, #0xc] + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bls _0221D832 + ldr r0, [sp, #0xc] + str r0, [sp, #0x28] + str r0, [sp, #0x24] +_0221D78E: + add r2, sp, #0x30 + mov r1, #0x22 +_0221D792: + ldr r0, [sp, #0x24] + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221D792 + add r0, sp, #0x30 + add r1, r5, #4 + mov r2, #0x20 + bl memcpy + ldr r2, [r5] + ldr r1, [sp, #0x28] + add r0, sp, #0x30 + strb r1, [r0, r2] + lsl r7, r1, #0 + ldr r0, [sp, #4] + ldr r0, [r0] + str r0, [sp, #0x1c] + cmp r0, #0 + bls _0221D816 + ldr r6, [r5] +_0221D7BE: + cmp r6, #0 + beq _0221D816 + cmp r6, #0x20 + bhi _0221D816 + cmp r6, #1 + bne _0221D7D4 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0221D816 + cmp r0, #0x20 + beq _0221D816 +_0221D7D4: + add r0, sp, #0x30 + bl strlen + add r2, r0, #0 + add r0, sp, #0x30 + add r1, r4, #4 + bl memcmp + cmp r0, #0 + bne _0221D80C + add r0, r5, #0 + add r0, #0x28 + add r1, r4, #0 + add r1, #0x28 + mov r2, #4 + bl memcmp + cmp r0, #0 + bne _0221D80C + ldrh r1, [r5, #0x2e] + ldrh r0, [r4, #0x2e] + cmp r1, r0 + beq _0221D80C + cmp r1, #0 + bne _0221D80C + mov r0, #1 + str r0, [sp, #0xc] + b _0221D816 +_0221D80C: + add r4, #0x30 + add r7, r7, #1 + ldr r0, [sp, #0x1c] + cmp r7, r0 + blo _0221D7BE +_0221D816: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221D832 + add r5, #0x30 + ldr r0, [sp, #4] + add r4, r0, #4 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r1, [r0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blo _0221D78E +_0221D832: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0221D91A + add r2, sp, #0x50 + add r2, #2 + mov r1, #0x22 + mov r0, #0 +_0221D840: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + cmp r1, #0 + bne _0221D840 + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [sp] + add r5, r0, #4 + ldr r0, [sp, #4] + add r4, r0, #4 + ldr r6, [sp, #0x14] + ldr r0, [r0] + cmp r0, #0 + bls _0221D8A0 + add r7, sp, #0x50 + add r7, #2 +_0221D864: + add r0, r7, #0 + add r1, r4, #4 + mov r2, #0x20 + bl memcpy + ldr r1, [r4] + ldr r0, [sp, #0x14] + strb r0, [r7, r1] + ldr r0, _0221D934 ; =0x0223F878 + bl strlen + add r2, r0, #0 + add r0, r7, #0 + ldr r1, _0221D934 ; =0x0223F878 + bl memcmp + cmp r0, #0 + bne _0221D894 + ldrh r0, [r4, #0x2e] + cmp r0, #0 + bne _0221D894 + mov r0, #1 + str r0, [sp, #0x18] + b _0221D8A0 +_0221D894: + add r4, #0x30 + add r6, r6, #1 + ldr r0, [sp, #4] + ldr r0, [r0] + cmp r6, r0 + blo _0221D864 +_0221D8A0: + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bls _0221D90A + ldr r7, _0221D934 ; =0x0223F878 + add r4, sp, #0x50 + add r4, #2 + ldr r0, [sp, #0x20] + str r0, [sp, #0x2c] +_0221D8B6: + add r0, r4, #0 + add r1, r5, #4 + mov r2, #0x20 + bl memcpy + ldr r1, [r5] + ldr r0, [sp, #0x2c] + strb r0, [r4, r1] + add r0, r4, #0 + bl strlen + add r6, r0, #0 + add r0, r7, #0 + bl strlen + cmp r6, r0 + bne _0221D8F8 + add r0, r7, #0 + bl strlen + add r2, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + bl memcmp + cmp r0, #0 + bne _0221D8F8 + ldrh r0, [r5, #0x2e] + cmp r0, #0 + bne _0221D8F8 + mov r0, #1 + str r0, [sp, #0x14] + b _0221D90A +_0221D8F8: + add r5, #0x30 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp] + ldr r1, [r0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blo _0221D8B6 +_0221D90A: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0221D91A + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0221D91A + mov r0, #1 + str r0, [sp, #0xc] +_0221D91A: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0221D92A + ldr r1, [sp, #0x20] + ldr r0, [sp, #8] + str r1, [r0] + mov r0, #1 + str r0, [sp, #0x10] +_0221D92A: + ldr r0, [sp, #0x10] + add sp, #0x74 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221D934: .word 0x0223F878 + + thumb_func_start MOD13_0221D938 +MOD13_0221D938: ; 0x0221D938 + push {r4, r5, r6, lr} + mov r5, #1 + ldr r0, _0221D998 ; =0x02241AD0 + ldr r0, [r0] + cmp r0, #0 + beq _0221D982 + bl MOD13_0221DF5C + cmp r0, #0 + beq _0221D97C + mov r4, #0 + mov r6, #0xa +_0221D950: + add r0, r6, #0 + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221D978 +_0221D95E: + cmp r0, #4 + beq _0221D970 + cmp r0, #5 + beq _0221D970 + cmp r0, #0xe + bne _0221D96E + add r5, r4, #0 + b _0221D970 +_0221D96E: + add r5, r4, #0 +_0221D970: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221D95E +_0221D978: + cmp r5, #0 + bne _0221D950 +_0221D97C: + mov r1, #0 + ldr r0, _0221D998 ; =0x02241AD0 + str r1, [r0] +_0221D982: + ldr r0, _0221D99C ; =0x02241AD4 + ldr r1, [r0] + cmp r1, #0 + beq _0221D992 + mov r1, #0 + str r1, [r0] + bl THUNK_FUN_02099BC8 +_0221D992: + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221D998: .word 0x02241AD0 +_0221D99C: .word 0x02241AD4 + + thumb_func_start MOD13_0221D9A0 +MOD13_0221D9A0: ; 0x0221D9A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r5, #1 + mvn r6, r5 + ldr r0, _0221DACC ; =0x02241B0C + ldr r2, [r0] + ldr r0, _0221DAD0 ; =0x02241AC8 + ldr r1, [r0] + mov r0, #0xc0 + mul r1, r0 + add r7, r2, r1 + cmp r7, #0 + bne _0221D9C4 + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D9C4: + add r0, r7, #0 + mov r1, #0 + ldr r2, _0221DAD4 ; =0x00030000 + bl MOD13_0221DE44 + cmp r0, #0 + bne _0221D9DE + lsl r0, r5, #0 + mvn r0, r0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221D9DE: + add r0, sp, #8 + bl OS_CreateAlarm + mov r0, #0x12 + str r0, [sp] + add r0, sp, #8 + ldr r1, _0221DAD8 ; =0x003FEC42 + mov r2, #0 + ldr r3, _0221DADC ; =MOD13_0221DC1C + bl OS_SetAlarm + mov r4, #0 + mov r0, #7 + mvn r0, r0 + str r0, [sp, #4] +_0221D9FC: + bl MOD13_0221AA90 + ldr r1, _0221DAE0 ; =0x0223F870 + ldr r1, [r1] + cmp r0, r1 + blo _0221DA0E + mov r0, #2 + mvn r6, r0 + b _0221DA94 +_0221DA0E: + ldr r0, _0221DAE4 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221DA1C + mov r0, #7 + mvn r6, r0 + b _0221DA94 +_0221DA1C: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DA90 +_0221DA2A: + cmp r0, #0xc + bgt _0221DA44 + cmp r0, #0xc + bge _0221DA5A + cmp r0, #5 + bgt _0221DA86 + cmp r0, #4 + blt _0221DA86 + cmp r0, #4 + beq _0221DA88 + cmp r0, #5 + beq _0221DA88 + b _0221DA86 +_0221DA44: + cmp r0, #0x13 + bgt _0221DA86 + cmp r0, #0xd + blt _0221DA86 + cmp r0, #0xd + beq _0221DA60 + cmp r0, #0x12 + beq _0221DA88 + cmp r0, #0x13 + beq _0221DA88 + b _0221DA86 +_0221DA5A: + add r5, r4, #0 + mov r6, #1 + b _0221DA88 +_0221DA60: + ldr r0, _0221DAE4 ; =0x02241AC0 + ldr r0, [r0] + cmp r0, #0 + beq _0221DA6E + add r5, r4, #0 + ldr r6, [sp, #4] + b _0221DA88 +_0221DA6E: + add r0, r7, #0 + add r1, r4, #0 + ldr r2, _0221DAD4 ; =0x00030000 + bl MOD13_0221DE44 + cmp r0, #0 + bne _0221DA88 + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DA86: + add r5, r4, #0 +_0221DA88: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DA2A +_0221DA90: + cmp r5, #0 + bne _0221D9FC +_0221DA94: + add r0, sp, #8 + bl OS_CancelAlarm +_0221DA9A: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DA9A + cmp r6, #0 + ble _0221DAC2 + mov r1, #1 + ldr r0, _0221DAE8 ; =0x02241AD0 + str r1, [r0] + ldr r0, _0221DAEC ; =0x0223F8D4 + bl FUN_0209A2C0 + cmp r0, #0 + bge _0221DABC + mov r0, #1 + mvn r6, r0 + b _0221DAC2 +_0221DABC: + mov r1, #1 + ldr r0, _0221DAF0 ; =0x02241AD4 + str r1, [r0] +_0221DAC2: + add r0, r6, #0 + add sp, #0x34 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221DACC: .word 0x02241B0C +_0221DAD0: .word 0x02241AC8 +_0221DAD4: .word 0x00030000 +_0221DAD8: .word 0x003FEC42 +_0221DADC: .word MOD13_0221DC1C +_0221DAE0: .word 0x0223F870 +_0221DAE4: .word 0x02241AC0 +_0221DAE8: .word 0x02241AD0 +_0221DAEC: .word 0x0223F8D4 +_0221DAF0: .word 0x02241AD4 + + thumb_func_start MOD13_0221DAF4 +MOD13_0221DAF4: ; 0x0221DAF4 + push {r4, r5, r6, lr} + mov r5, #1 + bl MOD13_0221DEF4 + cmp r0, #0 + beq _0221DB30 + mov r4, #0 + mov r6, #0xa +_0221DB04: + add r0, r6, #0 + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DB2C +_0221DB12: + cmp r0, #4 + beq _0221DB24 + cmp r0, #5 + beq _0221DB24 + cmp r0, #0x14 + bne _0221DB22 + add r5, r4, #0 + b _0221DB24 +_0221DB22: + add r5, r4, #0 +_0221DB24: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DB12 +_0221DB2C: + cmp r5, #0 + bne _0221DB04 +_0221DB30: + ldr r0, _0221DB4C ; =0x02241B04 + ldr r0, [r0] + cmp r0, #0 + beq _0221DB44 + ldr r1, _0221DB50 ; =0x02241ABC + ldr r1, [r1] + blx r1 + mov r1, #0 + ldr r0, _0221DB4C ; =0x02241B04 + str r1, [r0] +_0221DB44: + mov r0, #1 + pop {r4, r5, r6} + pop {r3} + bx r3 + .align 2, 0 +_0221DB4C: .word 0x02241B04 +_0221DB50: .word 0x02241ABC + + thumb_func_start MOD13_0221DB54 +MOD13_0221DB54: ; 0x0221DB54 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + mov r5, #1 + ldr r0, _0221DBFC ; =0x02241B20 + str r6, [r0] + bl MOD13_0221DCA4 + mov r0, #0xd0 + add r7, r6, #0 + mul r7, r0 + ldr r0, _0221DC00 ; =0x000024D0 + add r1, r7, r0 + mov r0, #0xc0 + mul r6, r0 + add r0, r1, r6 + ldr r1, _0221DC04 ; =0x02241AB4 + ldr r1, [r1] + blx r1 + ldr r1, _0221DC08 ; =0x02241B04 + str r0, [r1] + cmp r0, #0 + bne _0221DB8E + mov r0, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DB8E: + mov r3, #0x1f + add r1, r0, r3 + bic r1, r3 + ldr r0, _0221DC0C ; =0x02241AF0 + str r1, [r0] + ldr r0, _0221DC10 ; =0x00002490 + add r2, r7, r0 + add r0, r1, r2 + add r6, r0, r3 + bic r6, r3 + ldr r0, _0221DC14 ; =0x02241B0C + str r6, [r0] + ldr r0, _0221DC18 ; =MOD13_0221DC28 + bl MOD13_0221DD4C + cmp r0, #0 + bne _0221DBBC + lsl r0, r5, #0 + mvn r0, r0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DBBC: + mov r0, #0xa + bl OS_Sleep + bl MOD13_0221DC64 + cmp r0, #0 + beq _0221DBEE + mov r7, #0 + mov r1, #1 + mvn r6, r1 +_0221DBD0: + cmp r0, #4 + beq _0221DBE6 + cmp r0, #5 + beq _0221DBE6 + cmp r0, #6 + bne _0221DBE2 + add r5, r7, #0 + mov r4, #1 + b _0221DBE6 +_0221DBE2: + add r5, r7, #0 + add r4, r6, #0 +_0221DBE6: + bl MOD13_0221DC64 + cmp r0, #0 + bne _0221DBD0 +_0221DBEE: + cmp r5, #0 + bne _0221DBBC + add r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221DBFC: .word 0x02241B20 +_0221DC00: .word 0x000024D0 +_0221DC04: .word 0x02241AB4 +_0221DC08: .word 0x02241B04 +_0221DC0C: .word 0x02241AF0 +_0221DC10: .word 0x00002490 +_0221DC14: .word 0x02241B0C +_0221DC18: .word MOD13_0221DC28 + + thumb_func_start MOD13_0221DC1C +MOD13_0221DC1C: ; 0x0221DC1C + mov r1, #0 + ldr r3, _0221DC24 ; =MOD13_0221DC28 + bx r3 + nop +_0221DC24: .word MOD13_0221DC28 + + thumb_func_start MOD13_0221DC28 +MOD13_0221DC28: ; 0x0221DC28 + push {r4} + sub sp, #4 + ldr r1, _0221DC58 ; =0x02241B1C + ldr r2, [r1] + ldr r1, _0221DC5C ; =0x02241B18 + ldr r3, [r1] + add r4, r3, #1 + cmp r4, r2 + beq _0221DC50 + add r2, r2, #3 + cmp r3, r2 + beq _0221DC50 + lsl r3, r3, #2 + ldr r2, _0221DC60 ; =0x02241B4C + str r0, [r2, r3] + str r4, [r1] + cmp r4, #4 + blt _0221DC50 + mov r0, #0 + str r0, [r1] +_0221DC50: + add sp, #4 + pop {r4} + bx lr + nop +_0221DC58: .word 0x02241B1C +_0221DC5C: .word 0x02241B18 +_0221DC60: .word 0x02241B4C + + thumb_func_start MOD13_0221DC64 +MOD13_0221DC64: ; 0x0221DC64 + push {r4, lr} + bl OS_DisableInterrupts + ldr r3, _0221DC98 ; =0x02241B1C + ldr r1, [r3] + ldr r2, _0221DC9C ; =0x02241B18 + ldr r2, [r2] + cmp r2, r1 + bne _0221DC7A + mov r4, #0 + b _0221DC8C +_0221DC7A: + lsl r4, r1, #2 + ldr r2, _0221DCA0 ; =0x02241B4C + ldr r4, [r2, r4] + add r1, r1, #1 + str r1, [r3] + cmp r1, #4 + blt _0221DC8C + mov r1, #0 + str r1, [r3] +_0221DC8C: + bl OS_RestoreInterrupts + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221DC98: .word 0x02241B1C +_0221DC9C: .word 0x02241B18 +_0221DCA0: .word 0x02241B4C + + thumb_func_start MOD13_0221DCA4 +MOD13_0221DCA4: ; 0x0221DCA4 + push {lr} + sub sp, #4 + bl OS_DisableInterrupts + mov r3, #0 + ldr r1, _0221DCCC ; =0x02241B18 + str r3, [r1] + ldr r1, _0221DCD0 ; =0x02241B1C + str r3, [r1] + ldr r2, _0221DCD4 ; =0x02241B4C + add r1, r3, #0 +_0221DCBA: + stmia r2!, {r1} + add r3, r3, #1 + cmp r3, #4 + blt _0221DCBA + bl OS_RestoreInterrupts + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221DCCC: .word 0x02241B18 +_0221DCD0: .word 0x02241B1C +_0221DCD4: .word 0x02241B4C + + thumb_func_start MOD13_0221DCD8 +MOD13_0221DCD8: ; 0x0221DCD8 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0 + beq _0221DCF8 + cmp r2, #0 + ble _0221DCF8 + ldr r0, _0221DD00 ; =0x02241B6C + bl OS_LockMutex + add r0, r4, #0 + ldr r1, _0221DD04 ; =0x02241ABC + ldr r1, [r1] + blx r1 + ldr r0, _0221DD00 ; =0x02241B6C + bl OS_UnlockMutex +_0221DCF8: + pop {r4} + pop {r3} + bx r3 + nop +_0221DD00: .word 0x02241B6C +_0221DD04: .word 0x02241ABC + + thumb_func_start MOD13_0221DD08 +MOD13_0221DD08: ; 0x0221DD08 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0 + ble _0221DD2E + ldr r0, _0221DD38 ; =0x02241B6C + bl OS_LockMutex + add r0, r4, #0 + ldr r1, _0221DD3C ; =0x02241AB4 + ldr r1, [r1] + blx r1 + add r4, r0, #0 + ldr r0, _0221DD38 ; =0x02241B6C + bl OS_UnlockMutex + add r0, r4, #0 + pop {r4} + pop {r3} + bx r3 +_0221DD2E: + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221DD38: .word 0x02241B6C +_0221DD3C: .word 0x02241AB4 + + thumb_func_start MOD13_0221DD40 +MOD13_0221DD40: ; 0x0221DD40 + ldr r0, _0221DD48 ; =0x02241ADC + ldr r0, [r0] + bx lr + nop +_0221DD48: .word 0x02241ADC + + thumb_func_start MOD13_0221DD4C +MOD13_0221DD4C: ; 0x0221DD4C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DE20 ; =0x02241AD8 + str r5, [r0] + add r2, r5, #0 + add r2, #0x63 + mov r0, #3 + bic r2, r0 + ldr r0, _0221DE24 ; =0x02241AB8 + str r2, [r0] + add r1, r2, #0 + add r1, #0x2f + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221DE28 ; =0x02241AEC + str r1, [r3] + ldr r3, _0221DE2C ; =0x0000231F + add r1, r1, r3 + mov r3, #0x1f + bic r1, r3 + ldr r3, _0221DE30 ; =0x02241AFC + str r1, [r3] + add r1, #0xdf + mov r3, #0x1f + bic r1, r3 + str r1, [r2, #4] + ldr r1, [r0] + add r3, r5, r7 + ldr r2, [r1, #4] + sub r2, r3, r2 + str r2, [r1, #8] + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0xc] + ldr r1, [r0] + mov r0, #3 + str r0, [r1] + ldr r0, _0221DE34 ; =0x02241B30 + str r6, [r0] + ldr r0, _0221DE38 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #0 + bne _0221DDD2 + ldr r0, _0221DE28 ; =0x02241AEC + ldr r0, [r0] + ldr r1, _0221DE3C ; =0x00002300 + bl FUN_020A7E80 + cmp r0, #0 + beq _0221DDCC + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DDCC: + mov r1, #1 + ldr r0, _0221DE38 ; =0x02241ADC + str r1, [r0] +_0221DDD2: + ldr r0, _0221DE38 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #1 + bne _0221DE0E + ldr r0, _0221DE24 ; =0x02241AB8 + ldr r0, [r0] + ldr r1, _0221DE40 ; =MOD13_0221E178 + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221DDF8 + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DDF8: + mov r1, #4 + ldr r0, _0221DE38 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DE0E: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221DE20: .word 0x02241AD8 +_0221DE24: .word 0x02241AB8 +_0221DE28: .word 0x02241AEC +_0221DE2C: .word 0x0000231F +_0221DE30: .word 0x02241AFC +_0221DE34: .word 0x02241B30 +_0221DE38: .word 0x02241ADC +_0221DE3C: .word 0x00002300 +_0221DE40: .word MOD13_0221E178 + + thumb_func_start MOD13_0221DE44 +MOD13_0221DE44: ; 0x0221DE44 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DEE4 ; =0x02241B08 + str r6, [r0] + cmp r5, #0 + beq _0221DE6A + add r0, r5, #0 + ldr r1, _0221DEE8 ; =0x02241AD8 + ldr r1, [r1] + mov r2, #0x60 + bl MI_CpuCopy8 + b _0221DE76 +_0221DE6A: + ldr r0, _0221DEE8 ; =0x02241AD8 + ldr r0, [r0] + mov r1, #0 + mov r2, #0x60 + bl MI_CpuFill8 +_0221DE76: + add r0, r7, #0 + ldr r1, _0221DEEC ; =0x02241AFC + ldr r1, [r1] + mov r2, #0xc0 + bl MIi_CpuCopy32 + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221DEA0 + mov r1, #8 + ldr r0, _0221DEF0 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DEA0: + ldr r0, _0221DEF0 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221DED2 + ldr r0, _0221DEEC ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221DEE8 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221DEE4 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221DED2 + mov r1, #8 + ldr r0, _0221DEF0 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221DED2: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + nop +_0221DEE4: .word 0x02241B08 +_0221DEE8: .word 0x02241AD8 +_0221DEEC: .word 0x02241AFC +_0221DEF0: .word 0x02241ADC + + thumb_func_start MOD13_0221DEF4 +MOD13_0221DEF4: ; 0x0221DEF4 + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DF58 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221DF2E + bl FUN_020A7AC8 + cmp r0, #3 + beq _0221DF1A + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 +_0221DF1A: + mov r1, #2 + ldr r0, _0221DF58 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF2E: + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221DF4A + mov r1, #2 + ldr r0, _0221DF58 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF4A: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + .align 2, 0 +_0221DF58: .word 0x02241ADC + + thumb_func_start MOD13_0221DF5C +MOD13_0221DF5C: ; 0x0221DF5C + push {r4, lr} + bl OS_DisableInterrupts + add r4, r0, #0 + ldr r0, _0221DF98 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #7 + bne _0221DF88 + bl FUN_020A7488 + cmp r0, #3 + bne _0221DF88 + mov r1, #4 + ldr r0, _0221DF98 ; =0x02241ADC + str r1, [r0] + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #1 + pop {r4} + pop {r3} + bx r3 +_0221DF88: + add r0, r4, #0 + bl OS_RestoreInterrupts + mov r0, #0 + pop {r4} + pop {r3} + bx r3 + nop +_0221DF98: .word 0x02241ADC + + thumb_func_start MOD13_0221DF9C +MOD13_0221DF9C: ; 0x0221DF9C + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl OS_DisableInterrupts + add r7, r0, #0 + ldr r1, _0221E088 ; =0x02241B10 + ldr r0, [sp] + str r0, [r1] + ldr r0, _0221E08C ; =0x02241B44 + ldr r1, _0221E090 ; =0x02241AF4 + str r0, [r1] + cmp r5, #0 + beq _0221DFD0 + mov r2, #0 +_0221DFC0: + ldrb r1, [r5] + add r5, r5, #1 + strb r1, [r0] + add r0, r0, #1 + add r2, r2, #1 + cmp r2, #6 + blt _0221DFC0 + b _0221DFDE +_0221DFD0: + mov r1, #0xff + mov r2, #6 + bl MI_CpuFill8 + ldr r1, _0221E094 ; =0x020FF590 + ldr r0, _0221E090 ; =0x02241AF4 + str r1, [r0] +_0221DFDE: + ldr r2, _0221E098 ; =0x02241BA4 + ldr r0, _0221E09C ; =0x02241AF8 + str r2, [r0] + cmp r4, #0 + beq _0221E01A + cmp r6, #0 + ble _0221E01A + cmp r6, #0x20 + bge _0221E01A + mov r1, #0 + cmp r6, #0 + ble _0221E004 +_0221DFF6: + ldrb r0, [r4] + add r4, r4, #1 + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, r6 + blt _0221DFF6 +_0221E004: + cmp r1, #0x20 + bge _0221E02A + ldr r0, _0221E098 ; =0x02241BA4 + add r2, r0, r1 + mov r0, #0 +_0221E00E: + strb r0, [r2] + add r2, r2, #1 + add r1, r1, #1 + cmp r1, #0x20 + blt _0221E00E + b _0221E02A +_0221E01A: + ldr r0, _0221E098 ; =0x02241BA4 + mov r1, #0xff + mov r2, #0x20 + bl MI_CpuFill8 + ldr r1, _0221E0A0 ; =0x020FF598 + ldr r0, _0221E09C ; =0x02241AF8 + str r1, [r0] +_0221E02A: + ldr r0, _0221E0A4 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #3 + bne _0221E05A + ldr r0, _0221E08C ; =0x02241B44 + ldr r1, _0221E09C ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E088 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E078 + mov r1, #6 + ldr r0, _0221E0A4 ; =0x02241ADC + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221E05A: + bl MOD13_0221E0F4 + cmp r0, #1 + bne _0221E078 + mov r1, #6 + ldr r0, _0221E0A4 ; =0x02241ADC + str r1, [r0] + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #1 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 +_0221E078: + add r0, r7, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 +_0221E088: .word 0x02241B10 +_0221E08C: .word 0x02241B44 +_0221E090: .word 0x02241AF4 +_0221E094: .word 0x020FF590 +_0221E098: .word 0x02241BA4 +_0221E09C: .word 0x02241AF8 +_0221E0A0: .word 0x020FF598 +_0221E0A4: .word 0x02241ADC + + thumb_func_start MOD13_0221E0A8 +MOD13_0221E0A8: ; 0x0221E0A8 + push {r4, r5, r6, r7, lr} + sub sp, #4 + add r5, r0, #0 + add r7, r1, #0 + mov r0, #1 + bl FUN_020A83D0 + bl FUN_020A846C + add r6, r0, #0 + cmp r6, #0 + ble _0221E0E2 + mov r4, #0 + cmp r6, #0 + ble _0221E0E2 +_0221E0C6: + cmp r4, r7 + bge _0221E0E2 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020A8358 + add r1, r5, #0 + mov r2, #0xc0 + bl MIi_CpuCopy32 + add r4, r4, #1 + add r5, #0xc0 + cmp r4, r6 + blt _0221E0C6 +_0221E0E2: + mov r0, #0 + bl FUN_020A83D0 + add r0, r6, #0 + add sp, #4 + pop {r4, r5, r6, r7} + pop {r3} + bx r3 + .align 2, 0 + + thumb_func_start MOD13_0221E0F4 +MOD13_0221E0F4: ; 0x0221E0F4 + push {lr} + sub sp, #4 + ldr r0, _0221E16C ; =0x02241ADC + ldr r0, [r0] + cmp r0, #8 + bhi _0221E15C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #8] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, pc + bx r0 +_0221E10E: ; jump table + .short _0221E15C - _0221E10E + 1 ; case 0 + .short _0221E146 - _0221E10E + 1 ; case 1 + .short _0221E15C - _0221E10E + 1 ; case 2 + .short _0221E15C - _0221E10E + 1 ; case 3 + .short _0221E15C - _0221E10E + 1 ; case 4 + .short _0221E120 - _0221E10E + 1 ; case 5 + .short _0221E15C - _0221E10E + 1 ; case 6 + .short _0221E136 - _0221E10E + 1 ; case 7 + .short _0221E15C - _0221E10E + 1 ; case 8 +_0221E120: + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + bl FUN_020A7A90 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E136: + bl FUN_020A7488 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E146: + ldr r0, _0221E170 ; =0x02241AB8 + ldr r0, [r0] + ldr r1, _0221E174 ; =MOD13_0221E178 + bl FUN_020A7BD4 + cmp r0, #3 + beq _0221E164 + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E15C: + mov r0, #0 + add sp, #4 + pop {r3} + bx r3 +_0221E164: + mov r0, #1 + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221E16C: .word 0x02241ADC +_0221E170: .word 0x02241AB8 +_0221E174: .word MOD13_0221E178 + + thumb_func_start MOD13_0221E178 +MOD13_0221E178: ; 0x0221E178 + push {lr} + sub sp, #4 + cmp r0, #0 + bne _0221E182 + b _0221E556 +_0221E182: + mov r1, #0 + ldrsh r2, [r0, r1] + cmp r2, #9 + bls _0221E18C + b _0221E548 +_0221E18C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #8] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add r2, pc + bx r2 +_0221E19A: ; jump table + .short _0221E548 - _0221E19A + 1 ; case 0 + .short _0221E1AE - _0221E19A + 1 ; case 1 + .short _0221E4A0 - _0221E19A + 1 ; case 2 + .short _0221E25E - _0221E19A + 1 ; case 3 + .short _0221E2E6 - _0221E19A + 1 ; case 4 + .short _0221E2A2 - _0221E19A + 1 ; case 5 + .short _0221E3C0 - _0221E19A + 1 ; case 6 + .short _0221E4E4 - _0221E19A + 1 ; case 7 + .short _0221E4FE - _0221E19A + 1 ; case 8 + .short _0221E510 - _0221E19A + 1 ; case 9 +_0221E1AE: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E244 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E1D6 + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E1CC + b _0221E556 +_0221E1CC: + mov r0, #6 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E1D6: + cmp r2, #6 + bne _0221E20C + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E1F0 + b _0221E556 +_0221E1F0: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E200 + b _0221E556 +_0221E200: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E20C: + cmp r2, #8 + beq _0221E212 + b _0221E556 +_0221E212: + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221E228 + b _0221E556 +_0221E228: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E238 + b _0221E556 +_0221E238: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E244: + mov r3, #1 + ldr r0, _0221E518 ; =0x02241ADC + str r3, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r3, [r0] + cmp r3, #0 + bne _0221E254 + b _0221E556 +_0221E254: + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221E25E: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E288 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #6 + beq _0221E270 + b _0221E556 +_0221E270: + mov r2, #5 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E27E + b _0221E556 +_0221E27E: + mov r0, #8 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E288: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E298 + b _0221E556 +_0221E298: + mov r0, #9 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2A2: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E2CC + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #8 + beq _0221E2B4 + b _0221E556 +_0221E2B4: + mov r2, #7 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E2C2 + b _0221E556 +_0221E2C2: + mov r0, #0xc + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2CC: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E2DC + b _0221E556 +_0221E2DC: + mov r0, #0xd + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E2E6: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E3A6 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E30E + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E304 + b _0221E556 +_0221E304: + mov r0, #0xa + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E30E: + cmp r2, #6 + bne _0221E344 + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E328 + b _0221E556 +_0221E328: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E338 + b _0221E556 +_0221E338: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E344: + cmp r2, #2 + bne _0221E36E + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221E352 + b _0221E556 +_0221E352: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E362 + b _0221E556 +_0221E362: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E36E: + cmp r2, #8 + beq _0221E374 + b _0221E556 +_0221E374: + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + bne _0221E38A + b _0221E556 +_0221E38A: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E39A + b _0221E556 +_0221E39A: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3A6: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E3B6 + b _0221E556 +_0221E3B6: + mov r0, #0xb + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3C0: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E488 + ldr r0, _0221E518 ; =0x02241ADC + ldr r2, [r0] + cmp r2, #4 + bne _0221E3E8 + mov r2, #3 + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E3DE + b _0221E556 +_0221E3DE: + mov r0, #0xe + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E3E8: + cmp r2, #6 + bne _0221E41E + ldr r0, _0221E520 ; =0x02241AF4 + ldr r0, [r0] + ldr r1, _0221E524 ; =0x02241AF8 + ldr r1, [r1] + ldr r2, _0221E528 ; =0x02241B10 + ldr r2, [r2] + bl FUN_020A7A90 + cmp r0, #3 + bne _0221E402 + b _0221E556 +_0221E402: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E412 + b _0221E556 +_0221E412: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E41E: + cmp r2, #2 + bne _0221E448 + bl FUN_020A7AC8 + cmp r0, #3 + bne _0221E42C + b _0221E556 +_0221E42C: + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + bne _0221E43C + b _0221E556 +_0221E43C: + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E448: + cmp r2, #8 + bne _0221E47A + ldr r0, _0221E52C ; =0x02241AFC + ldr r0, [r0] + ldr r1, _0221E530 ; =0x02241AD8 + ldr r1, [r1] + ldr r2, _0221E534 ; =0x02241B08 + ldr r2, [r2] + bl FUN_020A75C0 + cmp r0, #3 + beq _0221E556 + mov r1, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #2 + mov r1, #0 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E47A: + cmp r2, #7 + bne _0221E556 + mov r1, #3 + str r1, [r0] + add sp, #4 + pop {r3} + bx r3 +_0221E488: + mov r2, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r2, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #0xf + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4A0: + mov r2, #2 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _0221E4CC + ldr r0, _0221E518 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #2 + bne _0221E556 + bl FUN_020A7E0C + mov r1, #0 + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #0x14 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4CC: + mov r3, #3 + ldr r0, _0221E518 ; =0x02241ADC + str r3, [r0] + ldr r0, _0221E51C ; =0x02241B30 + ldr r3, [r0] + cmp r3, #0 + beq _0221E556 + add r0, r2, #0 + blx r3 + add sp, #4 + pop {r3} + bx r3 +_0221E4E4: + ldr r0, _0221E518 ; =0x02241ADC + ldr r0, [r0] + cmp r0, #5 + bne _0221E556 + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #5 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E4FE: + ldr r0, _0221E51C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #4 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E510: + ldr r0, _0221E518 ; =0x02241ADC + str r1, [r0] + ldr r0, _0221E51C ; =0x02241B30 + b _0221E538 + .align 2, 0 +_0221E518: .word 0x02241ADC +_0221E51C: .word 0x02241B30 +_0221E520: .word 0x02241AF4 +_0221E524: .word 0x02241AF8 +_0221E528: .word 0x02241B10 +_0221E52C: .word 0x02241AFC +_0221E530: .word 0x02241AD8 +_0221E534: .word 0x02241B08 +_0221E538: + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #3 + blx r2 + add sp, #4 + pop {r3} + bx r3 +_0221E548: + ldr r0, _0221E55C ; =0x02241B30 + ldr r2, [r0] + cmp r2, #0 + beq _0221E556 + mov r0, #1 + mov r1, #0 + blx r2 +_0221E556: + add sp, #4 + pop {r3} + bx r3 + .align 2, 0 +_0221E55C: .word 0x02241B30 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s new file mode 100644 index 00000000..42e1c73b --- /dev/null +++ b/arm9/modules/14/asm/module_14.s @@ -0,0 +1,30403 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD14_021D74E0 +MOD14_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #9 + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r1, #0x87 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #9 + bl FUN_02006268 + add r4, r0, #0 + beq _021D7544 + add r0, r5, #0 + bl FUN_0200628C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DB220 + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD14_021D762C + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, _021D7548 ; =MOD14_021D7680 + add r0, r4, #0 + bl MOD14_021D7610 +_021D7544: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7548: .word MOD14_021D7680 + + thumb_func_start MOD14_021D754C +MOD14_021D754C: ; 0x021D754C + push {r4, lr} + bl FUN_02006278 + mov r1, #0x6b + add r4, r0, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7568 + add r1, #8 + add r1, r4, r1 + blx r2 + mov r0, #0 + pop {r4, pc} +_021D7568: + sub r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D75AA + ldr r0, _021D75B4 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #2 + lsl r0, r0, #0xa + tst r0, r2 + beq _021D759E + sub r1, #0x98 + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #1 + bne _021D759E + add r0, r4, #0 + bl MOD14_021DC394 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2b + bl MOD14_021DCB2C + mov r0, #0 + pop {r4, pc} +_021D759E: + mov r1, #0x6a + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + blx r1 + pop {r4, pc} +_021D75AA: + bl ErrorHandling + mov r0, #1 + pop {r4, pc} + nop +_021D75B4: .word 0x021C48B8 + + thumb_func_start MOD14_021D75B8 +MOD14_021D75B8: ; 0x021D75B8 + push {r4, lr} + bl FUN_02006278 + mov r1, #0x49 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x95 + bl FUN_0206BAE4 + cmp r0, #0 + bne _021D75DE + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02029EF8 + bl FUN_02029F08 +_021D75DE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + add r0, r4, #0 + bl MOD14_021DB398 + mov r0, #9 + bl FUN_020168D0 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021D7600 +MOD14_021D7600: ; 0x021D7600 + mov r2, #0x6a + lsl r2, r2, #2 + str r1, [r0, r2] + mov r1, #0 + add r2, #8 + str r1, [r0, r2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D7610 +MOD14_021D7610: ; 0x021D7610 + mov r2, #0x6b + lsl r2, r2, #2 + str r1, [r0, r2] + mov r1, #0 + add r2, #8 + str r1, [r0, r2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D7620 +MOD14_021D7620: ; 0x021D7620 + mov r1, #0x6b + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021D762C +MOD14_021D762C: ; 0x021D762C + push {r3, lr} + bl MOD14_021DC3CC + cmp r0, #4 + bhi _021D764C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7642: ; jump table + .short _021D764C - _021D7642 - 2 ; case 0 + .short _021D7650 - _021D7642 - 2 ; case 1 + .short _021D7654 - _021D7642 - 2 ; case 2 + .short _021D765C - _021D7642 - 2 ; case 3 + .short _021D7658 - _021D7642 - 2 ; case 4 +_021D764C: + ldr r0, _021D7660 ; =MOD14_021D7750 + pop {r3, pc} +_021D7650: + ldr r0, _021D7664 ; =MOD14_021D79D0 + pop {r3, pc} +_021D7654: + ldr r0, _021D7668 ; =MOD14_021D7D20 + pop {r3, pc} +_021D7658: + ldr r0, _021D766C ; =MOD14_021D7F0C + pop {r3, pc} +_021D765C: + ldr r0, _021D7670 ; =MOD14_021D8118 + pop {r3, pc} + .align 2, 0 +_021D7660: .word MOD14_021D7750 +_021D7664: .word MOD14_021D79D0 +_021D7668: .word MOD14_021D7D20 +_021D766C: .word MOD14_021D7F0C +_021D7670: .word MOD14_021D8118 + + thumb_func_start MOD14_021D7674 +MOD14_021D7674: ; 0x021D7674 + mov r1, #0x46 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r2, #1 + str r2, [r0, #8] + bx lr + + thumb_func_start MOD14_021D7680 +MOD14_021D7680: ; 0x021D7680 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D7696 + cmp r0, #1 + beq _021D76AA + cmp r0, #2 + beq _021D76CE + pop {r3, r4, r5, pc} +_021D7696: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76AA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D76E4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76CE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D76E4 + add r0, r5, #0 + bl MOD14_021D7620 +_021D76E4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D76E8 +MOD14_021D76E8: ; 0x021D76E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D76FE + cmp r0, #1 + beq _021D7712 + cmp r0, #2 + beq _021D7736 + pop {r3, r4, r5, pc} +_021D76FE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D7712: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D774C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D7736: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D774C + add r0, r5, #0 + bl MOD14_021D7620 +_021D774C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D7750 +MOD14_021D7750: ; 0x021D7750 + push {r4, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D776C + cmp r2, #1 + bne _021D7764 + b _021D793E +_021D7764: + cmp r2, #2 + bne _021D776A + b _021D795C +_021D776A: + b _021D7970 +_021D776C: + ldr r1, _021D7974 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #1 + tst r1, r2 + beq _021D779C + bl MOD14_021DC408 + cmp r0, #0 + beq _021D779C + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7792 + ldr r1, _021D7978 ; =MOD14_021D8804 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D7792: + ldr r1, _021D797C ; =MOD14_021D8A68 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D779C: + ldr r0, _021D7974 ; =0x021C48B8 + mov r2, #2 + ldr r1, [r0, #0x48] + tst r1, r2 + beq _021D77B0 + ldr r1, _021D7980 ; =MOD14_021D86BC + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77B0: + ldr r0, [r0, #0x44] + lsl r1, r2, #8 + tst r1, r0 + beq _021D77C8 + add r0, r4, #0 + bl MOD14_021DC2A4 + ldr r1, _021D7984 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77C8: + add r2, #0xfe + add r1, r0, #0 + tst r1, r2 + beq _021D77E0 + add r0, r4, #0 + bl MOD14_021DC278 + ldr r1, _021D7984 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7970 +_021D77E0: + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7818 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D780C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D780C: + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021D7970 +_021D7818: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D783A + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7862 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D783C + cmp r0, #1 + beq _021D7846 +_021D783A: + b _021D792E +_021D783C: + ldr r1, _021D7988 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D792E +_021D7846: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D785A + ldr r1, _021D798C ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D792E +_021D785A: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D7862: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7876 + cmp r0, #1 + beq _021D78C4 + cmp r0, #2 + beq _021D7912 + b _021D792E +_021D7876: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D78BC + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D78BC + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D78BC: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D78C4: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D790A + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D790A + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D790A: + ldr r0, _021D7990 ; =0x000005F3 + bl FUN_020054C8 + b _021D792E +_021D7912: + ldr r0, _021D7994 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7930 +_021D792E: + mov r0, #0 +_021D7930: + cmp r0, #0 + beq _021D7970 + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7970 +_021D793E: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7970 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D7970 +_021D795C: + sub r1, #0x9c + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D7970 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D7970: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021D7974: .word 0x021C48B8 +_021D7978: .word MOD14_021D8804 +_021D797C: .word MOD14_021D8A68 +_021D7980: .word MOD14_021D86BC +_021D7984: .word MOD14_021DABE8 +_021D7988: .word MOD14_021DAC80 +_021D798C: .word MOD14_021DAF78 +_021D7990: .word 0x000005F3 +_021D7994: .word 0x000005DD + + thumb_func_start MOD14_021D7998 +MOD14_021D7998: ; 0x021D7998 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D79B6 + mov r0, #0x1e + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D79B6: + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D79CC + mov r0, #0x1d + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D79CC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D79D0 +MOD14_021D79D0: ; 0x021D79D0 + push {r3, r4, lr} + sub sp, #4 + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #6 + bhi _021D7A20 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D79EC: ; jump table + .short _021D79FA - _021D79EC - 2 ; case 0 + .short _021D7BD4 - _021D79EC - 2 ; case 1 + .short _021D7BEE - _021D79EC - 2 ; case 2 + .short _021D7C58 - _021D79EC - 2 ; case 3 + .short _021D7C98 - _021D79EC - 2 ; case 4 + .short _021D7CB6 - _021D79EC - 2 ; case 5 + .short _021D7CE4 - _021D79EC - 2 ; case 6 +_021D79FA: + ldr r1, _021D7D00 ; =0x021C48B8 + mov r2, #1 + ldr r1, [r1, #0x48] + tst r2, r1 + beq _021D7A40 + bl MOD14_021DC3E8 + cmp r0, #6 + bne _021D7A16 + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7A16: + add r0, r4, #0 + bl MOD14_021DC408 + cmp r0, #0 + bne _021D7A22 +_021D7A20: + b _021D7CF8 +_021D7A22: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7A36 + ldr r1, _021D7D04 ; =MOD14_021D8804 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7CF8 +_021D7A36: + ldr r1, _021D7D08 ; =MOD14_021D8A68 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7CF8 +_021D7A40: + mov r2, #2 + tst r2, r1 + bne _021D7A6A + mov r2, #0x10 + tst r1, r2 + beq _021D7A56 + bl MOD14_021DC3E8 + mov r1, #1 + tst r0, r1 + bne _021D7A6A +_021D7A56: + ldr r0, _021D7D00 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021D7A74 + add r0, r4, #0 + bl MOD14_021DC3E8 + cmp r0, #6 + bne _021D7A74 +_021D7A6A: + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7A74: + ldr r0, _021D7D00 ; =0x021C48B8 + add r1, r4, #0 + ldr r0, [r0, #0x44] + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7AAE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7AA4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7AA4: + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7AAE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7AD0 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7AF8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7AD2 + cmp r0, #1 + beq _021D7ADC +_021D7AD0: + b _021D7BC4 +_021D7AD2: + ldr r1, _021D7D0C ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7BC4 +_021D7ADC: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7AF0 + ldr r1, _021D7D10 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7BC4 +_021D7AF0: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7AF8: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7B0C + cmp r0, #1 + beq _021D7B5A + cmp r0, #2 + beq _021D7BA8 + b _021D7BC4 +_021D7B0C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D7B52 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7B52 + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7B52: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7B5A: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D7BA0 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7BA0 + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7BA0: + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + b _021D7BC4 +_021D7BA8: + ldr r0, _021D7D18 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + mov r0, #1 + b _021D7BC6 +_021D7BC4: + mov r0, #0 +_021D7BC6: + cmp r0, #0 + beq _021D7BE2 + mov r0, #0x1b + mov r1, #6 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7BD4: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021D7BE4 +_021D7BE2: + b _021D7CF8 +_021D7BE4: + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7BEE: + bl MOD14_021DC3C4 + cmp r0, #0 + bne _021D7C08 + ldr r1, _021D7D1C ; =MOD14_021D86BC + add r0, r4, #0 + bl MOD14_021D7610 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C08: + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D7C42 + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021D7998 + cmp r0, #0 + beq _021D7C42 + ldr r0, _021D7D14 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C42: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #3 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C58: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x24 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + add r0, r4, #0 + bl MOD14_021DB910 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7C8E + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7C8E: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7C98: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D7CF8 +_021D7CB6: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7CF8 + ldr r0, _021D7D00 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D7CF8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7CF8 +_021D7CE4: + sub r1, #0x9c + ldr r0, [r4, r1] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D7CF8 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D7CF8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021D7D00: .word 0x021C48B8 +_021D7D04: .word MOD14_021D8804 +_021D7D08: .word MOD14_021D8A68 +_021D7D0C: .word MOD14_021DAC80 +_021D7D10: .word MOD14_021DAF78 +_021D7D14: .word 0x000005F3 +_021D7D18: .word 0x000005DD +_021D7D1C: .word MOD14_021D86BC + + thumb_func_start MOD14_021D7D20 +MOD14_021D7D20: ; 0x021D7D20 + push {r3, r4, r5, lr} + mov r3, #0x1b + add r4, r0, #0 + lsl r3, r3, #4 + ldr r1, [r4, r3] + cmp r1, #0 + beq _021D7D36 + cmp r1, #1 + bne _021D7D34 + b _021D7ECC +_021D7D34: + b _021D7EE8 +_021D7D36: + ldr r5, _021D7EEC ; =0x021C48B8 + add r2, r3, #0 + ldr r1, [r5, #0x44] + add r2, #0x70 + tst r2, r1 + beq _021D7D50 + bl MOD14_021DC2A4 + ldr r1, _021D7EF0 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D50: + sub r3, #0xa0 + add r2, r1, #0 + tst r2, r3 + beq _021D7D66 + bl MOD14_021DC278 + ldr r1, _021D7EF0 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D66: + ldr r3, [r5, #0x48] + mov r2, #1 + tst r2, r3 + beq _021D7D76 + ldr r1, _021D7EF4 ; =MOD14_021D8D70 + bl MOD14_021D7610 + b _021D7EE8 +_021D7D76: + mov r2, #2 + tst r2, r3 + beq _021D7D84 + ldr r1, _021D7EF8 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D7EE8 +_021D7D84: + add r0, r1, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7DBC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7DB2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7DB2: + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D7EE8 +_021D7DBC: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7DDE + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7E06 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7DE0 + cmp r0, #1 + beq _021D7DEA +_021D7DDE: + b _021D7EE8 +_021D7DE0: + ldr r1, _021D7EFC ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7DEA: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7DFE + ldr r1, _021D7F00 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D7EE8 +_021D7DFE: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7E06: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7E1A + cmp r0, #1 + beq _021D7E66 + cmp r0, #2 + beq _021D7EB2 + b _021D7EE8 +_021D7E1A: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D7E5E + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7E5E + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7E5E: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7E66: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D7EAA + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D7EAA + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7EAA: + ldr r0, _021D7F04 ; =0x000005F3 + bl FUN_020054C8 + b _021D7EE8 +_021D7EB2: + ldr r0, _021D7F08 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D7EE8 +_021D7ECC: + sub r3, #0x9c + ldr r0, [r4, r3] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D7EE8 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 +_021D7EE8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7EEC: .word 0x021C48B8 +_021D7EF0: .word MOD14_021DABE8 +_021D7EF4: .word MOD14_021D8D70 +_021D7EF8: .word MOD14_021D86BC +_021D7EFC: .word MOD14_021DAC80 +_021D7F00: .word MOD14_021DAF78 +_021D7F04: .word 0x000005F3 +_021D7F08: .word 0x000005DD + + thumb_func_start MOD14_021D7F0C +MOD14_021D7F0C: ; 0x021D7F0C + push {r3, r4, r5, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D7F28 + cmp r2, #1 + bne _021D7F20 + b _021D80BE +_021D7F20: + cmp r2, #2 + bne _021D7F26 + b _021D80D6 +_021D7F26: + b _021D80F2 +_021D7F28: + ldr r3, _021D80F8 ; =0x021C48B8 + mov r1, #1 + ldr r5, [r3, #0x48] + tst r1, r5 + beq _021D7F3A + ldr r1, _021D80FC ; =MOD14_021D854C + bl MOD14_021D7610 + b _021D80F2 +_021D7F3A: + mov r2, #2 + add r1, r5, #0 + tst r1, r2 + beq _021D7F4A + ldr r1, _021D8100 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D80F2 +_021D7F4A: + ldr r3, [r3, #0x44] + lsl r1, r2, #8 + tst r1, r3 + beq _021D7F60 + bl MOD14_021DC2A4 + ldr r1, _021D8104 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7F60: + add r2, #0xfe + add r1, r3, #0 + tst r1, r2 + beq _021D7F76 + bl MOD14_021DC278 + ldr r1, _021D8104 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7F76: + add r0, r3, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D7FAE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D7FA4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D7FA4: + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D80F2 +_021D7FAE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D7FD0 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D7FF8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7FD2 + cmp r0, #1 + beq _021D7FDC +_021D7FD0: + b _021D80F2 +_021D7FD2: + ldr r1, _021D8108 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7FDC: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D7FF0 + ldr r1, _021D810C ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D80F2 +_021D7FF0: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D7FF8: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D800C + cmp r0, #1 + beq _021D8058 + cmp r0, #2 + beq _021D80A4 + b _021D80F2 +_021D800C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D8050 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D8050 + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D80F2 +_021D8050: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D8058: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D809C + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D809C + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D80F2 +_021D809C: + ldr r0, _021D8110 ; =0x000005F3 + bl FUN_020054C8 + b _021D80F2 +_021D80A4: + ldr r0, _021D8114 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D80F2 +_021D80BE: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D80F2 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D80F2 +_021D80D6: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D80F2 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 +_021D80F2: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word 0x021C48B8 +_021D80FC: .word MOD14_021D854C +_021D8100: .word MOD14_021D86BC +_021D8104: .word MOD14_021DABE8 +_021D8108: .word MOD14_021DAC80 +_021D810C: .word MOD14_021DAF78 +_021D8110: .word 0x000005F3 +_021D8114: .word 0x000005DD + + thumb_func_start MOD14_021D8118 +MOD14_021D8118: ; 0x021D8118 + push {r3, r4, r5, lr} + mov r1, #0x1b + add r4, r0, #0 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #5 + bhi _021D8220 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8132: ; jump table + .short _021D813E - _021D8132 - 2 ; case 0 + .short _021D830E - _021D8132 - 2 ; case 1 + .short _021D8332 - _021D8132 - 2 ; case 2 + .short _021D8372 - _021D8132 - 2 ; case 3 + .short _021D838A - _021D8132 - 2 ; case 4 + .short _021D83A8 - _021D8132 - 2 ; case 5 +_021D813E: + ldr r3, _021D83C8 ; =0x021C48B8 + mov r1, #1 + ldr r5, [r3, #0x48] + tst r1, r5 + beq _021D818A + bl MOD14_021DC3C4 + cmp r0, #1 + beq _021D8166 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8166: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x12 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #5 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D818A: + mov r2, #2 + add r1, r5, #0 + tst r1, r2 + beq _021D819A + ldr r1, _021D83D0 ; =MOD14_021D86BC + bl MOD14_021D7610 + b _021D83C4 +_021D819A: + ldr r3, [r3, #0x44] + lsl r1, r2, #8 + tst r1, r3 + beq _021D81B0 + bl MOD14_021DC2A4 + ldr r1, _021D83D4 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D81B0: + add r2, #0xfe + add r1, r3, #0 + tst r1, r2 + beq _021D81C6 + bl MOD14_021DC278 + ldr r1, _021D83D4 ; =MOD14_021DABE8 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D81C6: + add r0, r3, #0 + add r1, r4, #0 + bl MOD14_021DB5B4 + cmp r0, #0 + beq _021D81FE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D81F4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D81F4: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D81FE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021D8220 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021D8248 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D8222 + cmp r0, #1 + beq _021D822C +_021D8220: + b _021D83C4 +_021D8222: + ldr r1, _021D83D8 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D822C: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021D8240 + ldr r1, _021D83DC ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + b _021D83C4 +_021D8240: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D8248: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D825C + cmp r0, #1 + beq _021D82A8 + cmp r0, #2 + beq _021D82F4 + b _021D83C4 +_021D825C: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021D82A0 + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D82A0 + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D83C4 +_021D82A0: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D82A8: + add r0, r4, #0 + bl MOD14_021DC558 + cmp r0, #1 + bne _021D82EC + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #1 + bne _021D82EC + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + b _021D83C4 +_021D82EC: + ldr r0, _021D83CC ; =0x000005F3 + bl FUN_020054C8 + b _021D83C4 +_021D82F4: + ldr r0, _021D83E0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021DC180 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl MOD14_021DCB2C + b _021D83C4 +_021D830E: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x22 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8332: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x23 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + add r0, r4, #0 + bl MOD14_021DB8D0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D8368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C +_021D8368: + mov r0, #0x1b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D8372: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + b _021D83C4 +_021D838A: + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D83C4 + add r0, r4, #0 + bl MOD14_021D762C + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021D7600 + b _021D83C4 +_021D83A8: + ldr r0, _021D83C8 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #3 + tst r0, r2 + beq _021D83C4 + sub r1, #0x9c + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x1b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D83C4: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D83C8: .word 0x021C48B8 +_021D83CC: .word 0x000005F3 +_021D83D0: .word MOD14_021D86BC +_021D83D4: .word MOD14_021DABE8 +_021D83D8: .word MOD14_021DAC80 +_021D83DC: .word MOD14_021DAF78 +_021D83E0: .word 0x000005DD + + thumb_func_start MOD14_021D83E4 +MOD14_021D83E4: ; 0x021D83E4 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D8428 + mov r0, #0x4b + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + str r1, [r4, r0] + ldrb r0, [r4, #0x1f] + cmp r0, #0 + beq _021D8402 + mov r0, #0 + b _021D8404 +_021D8402: + mov r0, #2 +_021D8404: + ldr r1, _021D8500 ; =0x0000013D + mov r2, #1 + strb r0, [r4, r1] + add r0, r1, #2 + strb r2, [r4, r0] + mov r2, #0 + add r0, r1, #3 + strb r2, [r4, r0] + add r0, r1, #1 + strb r2, [r4, r0] + add r0, r1, #7 + strh r2, [r4, r0] + add r0, r1, #0 + add r0, #0x67 + ldr r0, [r4, r0] + sub r1, #0xd + str r0, [r4, r1] + b _021D84AA +_021D8428: + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D8476 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r2, #0 + bl FUN_0206B5E4 + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #2 + add r0, #0x11 + strb r2, [r4, r0] + mov r0, #0x1e + add r1, #0x13 + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021DC3E0 + mov r1, #5 + lsl r1, r1, #6 + strb r0, [r4, r1] + mov r2, #0 + sub r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #4 + strh r2, [r4, r0] + b _021D84AA +_021D8476: + mov r1, #0x49 + lsl r1, r1, #2 + add r0, r1, #0 + ldr r2, [r4, r1] + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #1 + add r0, #0x19 + strb r2, [r4, r0] + ldr r0, [r4, r1] + bl FUN_0206B9AC + ldr r1, _021D8504 ; =0x0000013F + strb r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021DC3E8 + mov r1, #5 + lsl r1, r1, #6 + strb r0, [r4, r1] + mov r2, #0 + sub r0, r1, #2 + strb r2, [r4, r0] + add r0, r1, #4 + strh r2, [r4, r0] +_021D84AA: + mov r0, #0x55 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0x38 + ldr r0, [r4, r0] + bl FUN_0206BB28 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x2c + ldr r0, [r4, r1] + bl FUN_02079C70 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x3c + ldr r0, [r4, r1] + bl FUN_0202A918 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x20 + add r0, r4, r1 + ldr r1, _021D8508 ; =0x021E626C + bl FUN_0207B000 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020238F4 + add r1, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_0207C2A4 + pop {r4, pc} + nop +_021D8500: .word 0x0000013D +_021D8504: .word 0x0000013F +_021D8508: .word 0x021E626C + + thumb_func_start MOD14_021D850C +MOD14_021D850C: ; 0x021D850C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D8520 + cmp r1, #1 + beq _021D8536 + b _021D8546 +_021D8520: + sub r0, #0x9c + ldr r0, [r4, r0] + mov r1, #0x33 + bl MOD14_021DCB2C + mov r0, #0x1b + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021D8546 +_021D8536: + sub r0, #0x9c + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8546 + mov r0, #1 + pop {r4, pc} +_021D8546: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021D854C +MOD14_021D854C: ; 0x021D854C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bls _021D855A + b _021D86A6 +_021D855A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8566: ; jump table + .short _021D8574 - _021D8566 - 2 ; case 0 + .short _021D85CC - _021D8566 - 2 ; case 1 + .short _021D8604 - _021D8566 - 2 ; case 2 + .short _021D86A6 - _021D8566 - 2 ; case 3 + .short _021D8660 - _021D8566 - 2 ; case 4 + .short _021D8674 - _021D8566 - 2 ; case 5 + .short _021D8690 - _021D8566 - 2 ; case 6 +_021D8574: + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021D8590 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8590 + ldr r1, _021D86A8 ; =MOD14_021DA7C4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8590: + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D85BA + ldr r0, _021D86AC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85BA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D85CC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x22 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + ldr r0, _021D86B0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xb + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8604: + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D8624 + bge _021D8650 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D86A6 + sub r1, r2, #1 + cmp r0, r1 + blt _021D86A6 + beq _021D862A + cmp r0, r2 + beq _021D8638 + pop {r3, r4, r5, pc} +_021D8624: + cmp r0, #0x37 + beq _021D8638 + pop {r3, r4, r5, pc} +_021D862A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8638: + ldr r0, _021D86B0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8650: + ldr r1, _021D86B4 ; =MOD14_021D850C + add r0, r4, #0 + bl MOD14_021D7600 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8660: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + mov r0, #5 + str r0, [r5] +_021D8674: + ldr r0, _021D86B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D86A6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8690: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D86A6 + add r0, r4, #0 + bl MOD14_021D7620 +_021D86A6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D86A8: .word MOD14_021DA7C4 +_021D86AC: .word 0x000005F3 +_021D86B0: .word 0x000005DD +_021D86B4: .word MOD14_021D850C +_021D86B8: .word 0x021C48B8 + + thumb_func_start MOD14_021D86BC +MOD14_021D86BC: ; 0x021D86BC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bls _021D86CA + b _021D87EC +_021D86CA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D86D6: ; jump table + .short _021D86E2 - _021D86D6 - 2 ; case 0 + .short _021D87EC - _021D86D6 - 2 ; case 1 + .short _021D87A6 - _021D86D6 - 2 ; case 2 + .short _021D87BA - _021D86D6 - 2 ; case 3 + .short _021D87D6 - _021D86D6 - 2 ; case 4 + .short _021D8750 - _021D86D6 - 2 ; case 5 +_021D86E2: + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D870A + ldr r0, _021D87F0 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D870A: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021D8728 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8728 + ldr r1, _021D87F4 ; =MOD14_021DA7C4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8728: + ldr r0, _021D87F8 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xc + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8750: + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D8770 + bge _021D8794 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D87EC + sub r1, r2, #1 + cmp r0, r1 + blt _021D87EC + beq _021D8776 + cmp r0, r2 + beq _021D8784 + pop {r3, r4, r5, pc} +_021D8770: + cmp r0, #0x37 + beq _021D8784 + pop {r3, r4, r5, pc} +_021D8776: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8784: + ldr r1, _021D87FC ; =MOD14_021D850C + add r0, r4, #0 + bl MOD14_021D7600 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8794: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D87A6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D87EC + mov r0, #3 + str r0, [r5] +_021D87BA: + ldr r0, _021D8800 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D87EC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D87D6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D87EC + add r0, r4, #0 + bl MOD14_021D7620 +_021D87EC: + pop {r3, r4, r5, pc} + nop +_021D87F0: .word 0x000005F3 +_021D87F4: .word MOD14_021DA7C4 +_021D87F8: .word 0x000005DD +_021D87FC: .word MOD14_021D850C +_021D8800: .word 0x021C48B8 + + thumb_func_start MOD14_021D8804 +MOD14_021D8804: ; 0x021D8804 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _021D88F6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D881C: ; jump table + .short _021D8828 - _021D881C - 2 ; case 0 + .short _021D887C - _021D881C - 2 ; case 1 + .short _021D8890 - _021D881C - 2 ; case 2 + .short _021D88EA - _021D881C - 2 ; case 3 + .short _021D8A08 - _021D881C - 2 ; case 4 + .short _021D8A20 - _021D881C - 2 ; case 5 +_021D8828: + bl MOD14_021DC458 + add r2, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DBA44 + add r0, r4, #0 + bl MOD14_021E5DC4 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + beq _021D8864 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8864: + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D887C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D88F6 + mov r0, #2 + str r0, [r5] +_021D8890: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + cmp r2, r0 + bgt _021D88BA + sub r3, r0, #2 + cmp r2, r3 + blt _021D88E4 + beq _021D88F6 + sub r3, r0, #1 + cmp r2, r3 + beq _021D88C0 + cmp r2, r0 + beq _021D88CC + b _021D88E4 +_021D88BA: + cmp r2, #0x2b + beq _021D88CC + b _021D88E4 +_021D88C0: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D88CC: + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D88E4: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D88EA: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + sub r2, #0x22 + cmp r2, #0x13 + bls _021D88F8 +_021D88F6: + b _021D8A34 +_021D88F8: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D8904: ; jump table + .short _021D892C - _021D8904 - 2 ; case 0 + .short _021D895E - _021D8904 - 2 ; case 1 + .short _021D8972 - _021D8904 - 2 ; case 2 + .short _021D89A6 - _021D8904 - 2 ; case 3 + .short _021D8986 - _021D8904 - 2 ; case 4 + .short _021D898E - _021D8904 - 2 ; case 5 + .short _021D89AE - _021D8904 - 2 ; case 6 + .short _021D8996 - _021D8904 - 2 ; case 7 + .short _021D899E - _021D8904 - 2 ; case 8 + .short _021D8A34 - _021D8904 - 2 ; case 9 + .short _021D8A34 - _021D8904 - 2 ; case 10 + .short _021D8A34 - _021D8904 - 2 ; case 11 + .short _021D8A34 - _021D8904 - 2 ; case 12 + .short _021D8A34 - _021D8904 - 2 ; case 13 + .short _021D8A34 - _021D8904 - 2 ; case 14 + .short _021D8A34 - _021D8904 - 2 ; case 15 + .short _021D8A34 - _021D8904 - 2 ; case 16 + .short _021D8A34 - _021D8904 - 2 ; case 17 + .short _021D89CA - _021D8904 - 2 ; case 18 + .short _021D89CA - _021D8904 - 2 ; case 19 +_021D892C: + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D8948 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #1 + bne _021D8948 + ldr r1, _021D8A3C ; =MOD14_021D9230 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8948: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A40 ; =MOD14_021D94BC + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D895E: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A44 ; =MOD14_021D95B4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8972: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8A48 ; =MOD14_021D96B0 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8986: + ldr r1, _021D8A4C ; =MOD14_021D9770 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D898E: + ldr r1, _021D8A50 ; =MOD14_021D9934 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8996: + ldr r1, _021D8A54 ; =MOD14_021D9138 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D899E: + ldr r1, _021D8A58 ; =MOD14_021D9C98 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89A6: + ldr r1, _021D8A5C ; =MOD14_021DA2C8 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89AE: + bl MOD14_021DC430 + cmp r0, #0 + bne _021D89C0 + ldr r1, _021D8A60 ; =MOD14_021DA3E4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89C0: + ldr r1, _021D8A64 ; =MOD14_021DA5F0 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D89CA: + bl MOD14_021DC170 + ldr r1, [r4, #8] + add r0, r4, #0 + add r2, r4, #0 + bl MOD14_021DBE88 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x30 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + ldr r0, _021D8A38 ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8A08: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8A34 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8A20: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8A34 + add r0, r4, #0 + bl MOD14_021D7620 +_021D8A34: + pop {r3, r4, r5, pc} + nop +_021D8A38: .word 0x000005DD +_021D8A3C: .word MOD14_021D9230 +_021D8A40: .word MOD14_021D94BC +_021D8A44: .word MOD14_021D95B4 +_021D8A48: .word MOD14_021D96B0 +_021D8A4C: .word MOD14_021D9770 +_021D8A50: .word MOD14_021D9934 +_021D8A54: .word MOD14_021D9138 +_021D8A58: .word MOD14_021D9C98 +_021D8A5C: .word MOD14_021DA2C8 +_021D8A60: .word MOD14_021DA3E4 +_021D8A64: .word MOD14_021DA5F0 + + thumb_func_start MOD14_021D8A68 +MOD14_021D8A68: ; 0x021D8A68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #7 + bls _021D8A76 + b _021D8D54 +_021D8A76: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8A82: ; jump table + .short _021D8A92 - _021D8A82 - 2 ; case 0 + .short _021D8B3C - _021D8A82 - 2 ; case 1 + .short _021D8B50 - _021D8A82 - 2 ; case 2 + .short _021D8BB0 - _021D8A82 - 2 ; case 3 + .short _021D8CE0 - _021D8A82 - 2 ; case 4 + .short _021D8CF8 - _021D8A82 - 2 ; case 5 + .short _021D8D24 - _021D8A82 - 2 ; case 6 + .short _021D8D3A - _021D8A82 - 2 ; case 7 +_021D8A92: + bl MOD14_021DC538 + add r2, r0, #0 + beq _021D8AB0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x19 + bl MOD14_021DBA44 + b _021D8AD8 +_021D8AB0: + add r0, r4, #0 + bl MOD14_021DC430 + add r2, r0, #0 + beq _021D8AD0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x19 + bl MOD14_021DBA44 + b _021D8AD8 +_021D8AD0: + add r0, r4, #0 + mov r1, #0x1c + bl MOD14_021DBA44 +_021D8AD8: + add r0, r4, #0 + bl MOD14_021E5F04 + add r0, r4, #0 + bl MOD14_021DC584 + cmp r0, #0 + beq _021D8B08 + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x22 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B08: + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + beq _021D8B24 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B24: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8B3C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8BBC + mov r0, #2 + str r0, [r5] +_021D8B50: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + ldr r2, [r4, r1] + mvn r0, r0 + cmp r2, r0 + bgt _021D8B7A + sub r3, r0, #2 + cmp r2, r3 + blt _021D8BA4 + beq _021D8BBC + sub r3, r0, #1 + cmp r2, r3 + beq _021D8B80 + cmp r2, r0 + beq _021D8B8C + b _021D8BA4 +_021D8B7A: + cmp r2, #0x33 + beq _021D8B8C + b _021D8BA4 +_021D8B80: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8B8C: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8BA4: + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8BB0: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + sub r1, #0x2e + cmp r1, #4 + bls _021D8BBE +_021D8BBC: + b _021D8D54 +_021D8BBE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8BCA: ; jump table + .short _021D8BD4 - _021D8BCA - 2 ; case 0 + .short _021D8C12 - _021D8BCA - 2 ; case 1 + .short _021D8C74 - _021D8BCA - 2 ; case 2 + .short _021D8C7C - _021D8BCA - 2 ; case 3 + .short _021D8CD8 - _021D8BCA - 2 ; case 4 +_021D8BD4: + bl MOD14_021DC538 + cmp r0, #0 + beq _021D8C08 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC31C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x14 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C08: + ldr r1, _021D8D60 ; =MOD14_021DA3E4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8C12: + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D8C42 + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C42: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC2E4 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x13 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8C74: + ldr r1, _021D8D64 ; =MOD14_021DA9D0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8C7C: + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D8CAC + ldr r0, _021D8D58 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8CAC: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DC334 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x15 + bl MOD14_021DCB2C + ldr r0, _021D8D5C ; =0x000005DD + bl FUN_020054C8 + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8CD8: + ldr r1, _021D8D68 ; =MOD14_021DA7C4 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8CE0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8D54 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8CF8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8D54 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8D24: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8D54 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8D3A: + ldr r0, _021D8D6C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D8D54 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] +_021D8D54: + pop {r3, r4, r5, pc} + nop +_021D8D58: .word 0x000005F3 +_021D8D5C: .word 0x000005DD +_021D8D60: .word MOD14_021DA3E4 +_021D8D64: .word MOD14_021DA9D0 +_021D8D68: .word MOD14_021DA7C4 +_021D8D6C: .word 0x021C48B8 + + thumb_func_start MOD14_021D8D70 +MOD14_021D8D70: ; 0x021D8D70 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #7 + bls _021D8D7E + b _021D8EB0 +_021D8D7E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8D8A: ; jump table + .short _021D8D9A - _021D8D8A - 2 ; case 0 + .short _021D8DDE - _021D8D8A - 2 ; case 1 + .short _021D8DF2 - _021D8D8A - 2 ; case 2 + .short _021D8E42 - _021D8D8A - 2 ; case 3 + .short _021D8E82 - _021D8D8A - 2 ; case 4 + .short _021D8EB0 - _021D8D8A - 2 ; case 5 + .short _021D8EB0 - _021D8D8A - 2 ; case 6 + .short _021D8E9A - _021D8D8A - 2 ; case 7 +_021D8D9A: + mov r1, #7 + bl MOD14_021DBA44 + add r0, r4, #0 + bl MOD14_021E5F84 + add r0, r4, #0 + bl MOD14_021DC49C + cmp r0, #0 + ldr r0, _021D8EB4 ; =0x000005DD + beq _021D8DC8 + bl FUN_020054C8 + add r0, r4, #0 + bl MOD14_021E6220 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8DC8: + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8DDE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8EB0 + mov r0, #2 + str r0, [r5] +_021D8DF2: + add r0, r4, #0 + bl MOD14_021E6160 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r0, r0, #3 + cmp r0, #6 + bhi _021D8E3C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8E12: ; jump table + .short _021D8EB0 - _021D8E12 - 2 ; case 0 + .short _021D8E20 - _021D8E12 - 2 ; case 1 + .short _021D8E2C - _021D8E12 - 2 ; case 2 + .short _021D8E3C - _021D8E12 - 2 ; case 3 + .short _021D8E3C - _021D8E12 - 2 ; case 4 + .short _021D8E3C - _021D8E12 - 2 ; case 5 + .short _021D8E2C - _021D8E12 - 2 ; case 6 +_021D8E20: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D8E2C: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E3C: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E42: + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, #0 + beq _021D8E56 + cmp r2, #1 + beq _021D8E6A + cmp r2, #2 + beq _021D8E7A + pop {r3, r4, r5, pc} +_021D8E56: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r1, _021D8EB8 ; =MOD14_021D8EC4 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8E6A: + sub r1, #0xa4 + ldr r0, [r4, r1] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8E7A: + ldr r1, _021D8EBC ; =MOD14_021DA1D4 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D8E82: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D8EB0 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021D8E9A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8EB0 + ldr r1, _021D8EC0 ; =MOD14_021D8F6C + add r0, r4, #0 + bl MOD14_021D7610 +_021D8EB0: + pop {r3, r4, r5, pc} + nop +_021D8EB4: .word 0x000005DD +_021D8EB8: .word MOD14_021D8EC4 +_021D8EBC: .word MOD14_021DA1D4 +_021D8EC0: .word MOD14_021D8F6C + + thumb_func_start MOD14_021D8EC4 +MOD14_021D8EC4: ; 0x021D8EC4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D8EDA + cmp r1, #1 + beq _021D8EEE + cmp r1, #2 + beq _021D8F52 + pop {r4, r5, r6, pc} +_021D8EDA: + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #8 + bl MOD14_021DAA7C + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D8EEE: + bl MOD14_021DAAA8 + cmp r0, #0 + beq _021D8F66 + ldr r0, _021D8F68 ; =0x000001C1 + ldrsb r6, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _021D8F0C + add r0, r5, #0 + bl MOD14_021DC424 + cmp r6, r0 + bne _021D8F12 +_021D8F0C: + mov r0, #2 + str r0, [r4] + b _021D8F38 +_021D8F12: + add r0, r5, #0 + add r1, r6, #0 + bl MOD14_021DC2C4 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #0xa1 + ldrsb r1, [r5, r1] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] +_021D8F38: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + pop {r4, r5, r6, pc} +_021D8F52: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D8F66 + add r0, r5, #0 + bl MOD14_021D7620 +_021D8F66: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8F68: .word 0x000001C1 + + thumb_func_start MOD14_021D8F6C +MOD14_021D8F6C: ; 0x021D8F6C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bhi _021D8FD8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8F84: ; jump table + .short _021D8F96 - _021D8F84 - 2 ; case 0 + .short _021D8FA2 - _021D8F84 - 2 ; case 1 + .short _021D8FC8 - _021D8F84 - 2 ; case 2 + .short _021D8FDE - _021D8F84 - 2 ; case 3 + .short _021D9062 - _021D8F84 - 2 ; case 4 + .short _021D9076 - _021D8F84 - 2 ; case 5 + .short _021D90FC - _021D8F84 - 2 ; case 6 + .short _021D910E - _021D8F84 - 2 ; case 7 + .short _021D9122 - _021D8F84 - 2 ; case 8 +_021D8F96: + mov r0, #0x6e + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] +_021D8FA2: + add r0, r4, #0 + mov r1, #9 + bl MOD14_021DBA44 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021E5FC8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D8FC8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021D8FDA +_021D8FD8: + b _021D9136 +_021D8FDA: + mov r0, #3 + str r0, [r5] +_021D8FDE: + add r0, r4, #0 + bl MOD14_021E6160 + add r0, r0, #3 + cmp r0, #0xc + bhi _021D901E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8FF6: ; jump table + .short _021D9136 - _021D8FF6 - 2 ; case 0 + .short _021D9010 - _021D8FF6 - 2 ; case 1 + .short _021D901E - _021D8FF6 - 2 ; case 2 + .short _021D901E - _021D8FF6 - 2 ; case 3 + .short _021D901E - _021D8FF6 - 2 ; case 4 + .short _021D901E - _021D8FF6 - 2 ; case 5 + .short _021D901E - _021D8FF6 - 2 ; case 6 + .short _021D9030 - _021D8FF6 - 2 ; case 7 + .short _021D9030 - _021D8FF6 - 2 ; case 8 + .short _021D9030 - _021D8FF6 - 2 ; case 9 + .short _021D9030 - _021D8FF6 - 2 ; case 10 + .short _021D9030 - _021D8FF6 - 2 ; case 11 + .short _021D9030 - _021D8FF6 - 2 ; case 12 +_021D9010: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D901E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9030: + add r0, r4, #0 + bl MOD14_021E6210 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #0xa + bl MOD14_021DBA44 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021E6038 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9062: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9136 + mov r0, #5 + str r0, [r5] +_021D9076: + add r0, r4, #0 + bl MOD14_021E6160 + add r0, r0, #3 + cmp r0, #6 + bhi _021D90B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D908E: ; jump table + .short _021D9136 - _021D908E - 2 ; case 0 + .short _021D909C - _021D908E - 2 ; case 1 + .short _021D90AA - _021D908E - 2 ; case 2 + .short _021D90B0 - _021D908E - 2 ; case 3 + .short _021D90B0 - _021D908E - 2 ; case 4 + .short _021D90B0 - _021D908E - 2 ; case 5 + .short _021D90AA - _021D908E - 2 ; case 6 +_021D909C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D90AA: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90B0: + add r0, r4, #0 + bl MOD14_021E6210 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r2, [r4, r1] + cmp r2, #0xa + blt _021D90F2 + cmp r2, #0x21 + bgt _021D90F2 + sub r1, #0x98 + ldr r0, [r4, r1] + mov r1, #0 + mvn r1, r1 + sub r2, #0xa + bl FUN_0206B458 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DB59C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90F2: + bl ErrorHandling + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D90FC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x21 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D910E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9136 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9122: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9136 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9136: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D9138 +MOD14_021D9138: ; 0x021D9138 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D914E + cmp r1, #1 + beq _021D916C + cmp r1, #2 + beq _021D921A + pop {r3, r4, r5, pc} +_021D914E: + bl MOD14_021E60B4 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D916C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D922E + add r0, r5, #0 + bl MOD14_021E6160 + mov r2, #2 + add r1, r0, #0 + mvn r2, r2 + cmp r1, r2 + bhi _021D919C + bhs _021D922E + cmp r1, #0x2d + bhi _021D91FC + cmp r1, #0x2c + blo _021D91FC + beq _021D91CC + cmp r1, #0x2d + beq _021D91BA + b _021D91FC +_021D919C: + add r0, r2, #1 + cmp r1, r0 + blo _021D91FC + beq _021D91AC + add r0, r2, #2 + cmp r1, r0 + beq _021D91BA + b _021D91FC +_021D91AC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D91BA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D91CC: + add r0, r5, #0 + bl MOD14_021DC1AC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #7 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x27 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D91FC: + cmp r1, #0x38 + blo _021D922E + cmp r1, #0x3d + bhi _021D922E + add r0, r5, #0 + sub r1, #0x38 + bl MOD14_021E6118 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1d + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D921A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D922E + add r0, r5, #0 + bl MOD14_021D7620 +_021D922E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D9230 +MOD14_021D9230: ; 0x021D9230 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #4 + bls _021D923E + b _021D9454 +_021D923E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D924A: ; jump table + .short _021D9254 - _021D924A - 2 ; case 0 + .short _021D9284 - _021D924A - 2 ; case 1 + .short _021D9326 - _021D924A - 2 ; case 2 + .short _021D942C - _021D924A - 2 ; case 3 + .short _021D9440 - _021D924A - 2 ; case 4 +_021D9254: + ldr r1, _021D9458 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r1, r2 + beq _021D927C + add r1, r4, #0 + bl MOD14_021DBBD0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2c + bl MOD14_021DCB2C + ldr r0, _021D945C ; =0x000005DC + bl FUN_020054C8 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D927C: + ldr r1, _021D9460 ; =MOD14_021D94BC + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D9284: + ldr r1, _021D9458 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r1, r2 + beq _021D92E8 + add r0, r2, #0 + add r1, r4, #0 + bl MOD14_021DB790 + cmp r0, #1 + beq _021D92B6 + cmp r0, #2 + bne _021D9342 + ldr r1, _021D9458 ; =0x021C48B8 + mov r0, #0xf0 + ldr r2, [r1, #0x44] + ldr r1, [r1, #0x48] + and r2, r0 + and r0, r1 + cmp r2, r0 + bne _021D9342 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D92B6: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBBEC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2e + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D92E8: + bl MOD14_021DC4DC + cmp r0, #0 + beq _021D9306 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2d + bl MOD14_021DCB2C + ldr r1, _021D9460 ; =MOD14_021D94BC + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, pc} +_021D9306: + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBAE0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2f + bl MOD14_021DCB2C + ldr r0, _021D9468 ; =0x000005EB + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9326: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9342 + ldr r0, _021D9458 ; =0x021C48B8 + add r1, r4, #0 + ldr r0, [r0, #0x44] + bl MOD14_021DB790 + cmp r0, #4 + bls _021D9344 +_021D9342: + b _021D9454 +_021D9344: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9350: ; jump table + .short _021D93E2 - _021D9350 - 2 ; case 0 + .short _021D9372 - _021D9350 - 2 ; case 1 + .short _021D935A - _021D9350 - 2 ; case 2 + .short _021D9396 - _021D9350 - 2 ; case 3 + .short _021D93BC - _021D9350 - 2 ; case 4 +_021D935A: + ldr r1, _021D9458 ; =0x021C48B8 + mov r0, #0xf0 + ldr r2, [r1, #0x44] + ldr r1, [r1, #0x48] + and r2, r0 + and r0, r1 + cmp r2, r0 + bne _021D9454 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D9372: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + mov r1, #6 + tst r0, r1 + bne _021D9454 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9396: + add r0, r4, #0 + bl MOD14_021DC2A4 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D93BC: + add r0, r4, #0 + bl MOD14_021DC278 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B428 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D93E2: + ldr r0, _021D9458 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021D941E + add r0, r4, #0 + bl MOD14_021D9470 + cmp r0, #0 + beq _021D9416 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBCA0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB2C + ldr r0, _021D946C ; =0x000005EA + bl FUN_020054C8 + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9416: + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D941E: + mov r0, #2 + tst r0, r1 + beq _021D9454 + ldr r0, _021D9464 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021D942C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9454 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9440: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9454 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9454: + pop {r3, r4, r5, pc} + nop +_021D9458: .word 0x021C48B8 +_021D945C: .word 0x000005DC +_021D9460: .word MOD14_021D94BC +_021D9464: .word 0x000005F3 +_021D9468: .word 0x000005EB +_021D946C: .word 0x000005EA + + thumb_func_start MOD14_021D9470 +MOD14_021D9470: ; 0x021D9470 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r5, #0x14 + str r0, [sp] + bl MOD14_021DC4F8 + add r7, r0, #0 + ldrb r0, [r5, #8] + mov r4, #0 + ldrb r6, [r5, #9] + cmp r0, #0 + ble _021D94B6 +_021D9488: + add r3, r5, r4 + mov r2, #0xc + ldrsb r2, [r3, r2] + ldr r0, [sp] + mov r1, #0 + sub r2, r2, r6 + ldr r0, [r0] + mvn r1, r1 + add r2, r7, r2 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021D94AE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D94AE: + ldrb r0, [r5, #8] + add r4, r4, #1 + cmp r4, r0 + blt _021D9488 +_021D94B6: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021D94BC +MOD14_021D94BC: ; 0x021D94BC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bhi _021D95A4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D94D4: ; jump table + .short _021D94DC - _021D94D4 - 2 ; case 0 + .short _021D954E - _021D94D4 - 2 ; case 1 + .short _021D9574 - _021D94D4 - 2 ; case 2 + .short _021D9590 - _021D94D4 - 2 ; case 3 +_021D94DC: + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D952E + add r0, r4, #0 + bl MOD14_021D9B84 + cmp r0, #0 + bne _021D950E + ldr r0, _021D95A8 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D950E: + ldr r0, _021D95AC ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D952E: + ldr r0, _021D95A8 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D954E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D95A4 + add r0, r4, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x25 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9574: + ldr r0, _021D95B0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D95A4 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9590: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D95A4 + add r0, r4, #0 + bl MOD14_021D7620 +_021D95A4: + pop {r3, r4, r5, pc} + nop +_021D95A8: .word 0x000005EB +_021D95AC: .word 0x000005F3 +_021D95B0: .word 0x021C48B8 + + thumb_func_start MOD14_021D95B4 +MOD14_021D95B4: ; 0x021D95B4 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D95CA + cmp r1, #1 + beq _021D9616 + cmp r1, #2 + beq _021D9648 + pop {r4, r5, r6, pc} +_021D95CA: + add r1, r5, #0 + bl MOD14_021DBC00 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xa + bl MOD14_021DCB2C + ldr r0, _021D9664 ; =0x000005EA + bl FUN_020054C8 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D9610 + add r0, r5, #0 + bl MOD14_021DC3E8 + add r6, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + sub r0, r0, #1 + cmp r6, r0 + beq _021D9610 + mov r0, #1 + str r0, [r4] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r4, r5, r6, pc} +_021D9610: + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9616: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9662 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x26 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9648: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9662 + add r0, r5, #0 + bl MOD14_021D7674 + add r0, r5, #0 + bl MOD14_021D7620 +_021D9662: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D9664: .word 0x000005EA + + thumb_func_start MOD14_021D9668 +MOD14_021D9668: ; 0x021D9668 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD14_021D9B84 + cmp r0, #0 + beq _021D96AC + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D968C + mov r0, #6 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D968C: + add r0, r5, #0 + bl MOD14_021DC3F8 + cmp r0, #0 + beq _021D96AC + add r0, r5, #0 + mov r1, #0xa2 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + bne _021D96AC + mov r0, #6 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D96AC: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021D96B0 +MOD14_021D96B0: ; 0x021D96B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D96C6 + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D9748 + pop {r3, r4, r5, pc} +_021D96C6: + add r1, sp, #0 + bl MOD14_021D9668 + cmp r0, #0 + beq _021D96F0 + ldr r0, _021D9764 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r5, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D96F0: + add r0, r5, #0 + add r1, r5, #0 + bl MOD14_021DBD34 + ldr r0, _021D9768 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xb + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D971C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9762 + ldr r0, _021D976C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9762 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D9748: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9762 + add r0, r5, #0 + bl MOD14_021D7674 + add r0, r5, #0 + bl MOD14_021D7620 +_021D9762: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9764: .word 0x000005F3 +_021D9768: .word 0x000005DC +_021D976C: .word 0x021C48B8 + + thumb_func_start MOD14_021D9770 +MOD14_021D9770: ; 0x021D9770 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #8 + bls _021D977E + b _021D9928 +_021D977E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D978A: ; jump table + .short _021D979C - _021D978A - 2 ; case 0 + .short _021D9818 - _021D978A - 2 ; case 1 + .short _021D983A - _021D978A - 2 ; case 2 + .short _021D9862 - _021D978A - 2 ; case 3 + .short _021D9892 - _021D978A - 2 ; case 4 + .short _021D98B4 - _021D978A - 2 ; case 5 + .short _021D9928 - _021D978A - 2 ; case 6 + .short _021D98E8 - _021D978A - 2 ; case 7 + .short _021D9914 - _021D978A - 2 ; case 8 +_021D979C: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206B9AC + cmp r0, #6 + beq _021D97F2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D97D2 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D97D2: + ldr r0, _021D992C ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBA5C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D97F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + add r0, r4, #0 + mov r1, #5 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9818: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D983A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x23 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021DB8D0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9862: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + add r1, r4, #0 + bl MOD14_021DBC00 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9892: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D98B4: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x24 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021DB910 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D98E8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9928 + ldr r0, _021D9930 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9928 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9914: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9928 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9928: + pop {r3, r4, r5, pc} + nop +_021D992C: .word 0x000005EB +_021D9930: .word 0x021C48B8 + + thumb_func_start MOD14_021D9934 +MOD14_021D9934: ; 0x021D9934 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _021D99F8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D994C: ; jump table + .short _021D995A - _021D994C - 2 ; case 0 + .short _021D99F0 - _021D994C - 2 ; case 1 + .short _021D9AB2 - _021D994C - 2 ; case 2 + .short _021D9AD8 - _021D994C - 2 ; case 3 + .short _021D9B04 - _021D994C - 2 ; case 4 + .short _021D9B32 - _021D994C - 2 ; case 5 + .short _021D9B60 - _021D994C - 2 ; case 6 +_021D995A: + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D9998 + add r0, r4, #0 + bl MOD14_021D9B84 + cmp r0, #1 + bne _021D9998 + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #6 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9998: + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021D7998 + cmp r0, #0 + beq _021D99D0 + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D99D0: + mov r1, #0x11 + lsl r1, r1, #4 + ldrh r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x13 + bl MOD14_021DAA7C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D99F0: + bl MOD14_021DAAA8 + cmp r0, #0 + bne _021D99FA +_021D99F8: + b _021D9B74 +_021D99FA: + ldr r0, _021D9B7C ; =0x000001C1 + mov r1, #0 + ldrsb r2, [r4, r0] + mvn r1, r1 + cmp r2, r1 + bne _021D9A22 + sub r0, #0xad + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A22: + sub r0, #0xb1 + strh r2, [r4, r0] + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + ldr r1, _021D9B7C ; =0x000001C1 + bne _021D9A62 + ldrsb r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DBDD8 + cmp r0, #0 + beq _021D9A92 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A62: + ldrsb r1, [r4, r1] + add r0, r4, #0 + bl MOD14_021DBE00 + cmp r0, #0 + beq _021D9A92 + add r0, r4, #0 + bl MOD14_021D7674 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9A92: + ldr r0, _021D9B78 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0xd + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9AB2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + ldr r0, _021D9B80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9B74 + add r0, r4, #0 + bl MOD14_021DAA98 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9AD8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + ldr r0, _021D9B80 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B04: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xc + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B32: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x20 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9B74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9B60: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9B74 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9B74: + pop {r3, r4, r5, pc} + nop +_021D9B78: .word 0x000005F3 +_021D9B7C: .word 0x000001C1 +_021D9B80: .word 0x021C48B8 + + thumb_func_start MOD14_021D9B84 +MOD14_021D9B84: ; 0x021D9B84 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [sp] + ldr r0, [r0, r1] + bl FUN_0206B9AC + mov r6, #0 + add r5, r6, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _021D9BEC +_021D9B9E: + mov r0, #0x49 + ldr r1, [sp] + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_020669D4 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _021D9BD2 + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021D9BD2 + add r5, r5, #1 +_021D9BD2: + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02066A20 + cmp r5, #2 + blt _021D9BE4 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9BE4: + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + blt _021D9B9E +_021D9BEC: + ldr r0, [sp] + mov r1, #0xac + mov r2, #0 + bl MOD14_021DC5D0 + cmp r0, #0 + beq _021D9C00 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9C00: + ldr r0, [sp] + mov r1, #0xa2 + mov r2, #0 + bl MOD14_021DC5D0 + cmp r0, #0 + beq _021D9C14 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9C14: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021D9C1C +MOD14_021D9C1C: ; 0x021D9C1C + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0xac + mov r2, #0 + add r5, r0, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D9C36 + mov r0, #0x1f + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C36: + add r0, r5, #0 + bl MOD14_021DC430 + add r0, r5, #0 + bl MOD14_021DC430 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021D9C56 + mov r0, #0x1e + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C56: + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl MOD14_021DC58C + cmp r0, #0 + beq _021D9C6C + mov r0, #0x1d + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C6C: + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021D9C92 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021D9C92 + add r0, r5, #0 + bl MOD14_021D9B84 + cmp r0, #0 + beq _021D9C92 + mov r0, #6 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9C92: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021D9C98 +MOD14_021D9C98: ; 0x021D9C98 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #9 + bhi _021D9D44 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9CB0: ; jump table + .short _021D9CC4 - _021D9CB0 - 2 ; case 0 + .short _021D9D1C - _021D9CB0 - 2 ; case 1 + .short _021D9D86 - _021D9CB0 - 2 ; case 2 + .short _021D9E0A - _021D9CB0 - 2 ; case 3 + .short _021D9E96 - _021D9CB0 - 2 ; case 4 + .short _021D9E62 - _021D9CB0 - 2 ; case 5 + .short _021D9EC8 - _021D9CB0 - 2 ; case 6 + .short _021D9EF2 - _021D9CB0 - 2 ; case 7 + .short _021D9F36 - _021D9CB0 - 2 ; case 8 + .short _021D9F62 - _021D9CB0 - 2 ; case 9 +_021D9CC4: + add r1, sp, #0 + bl MOD14_021D9C1C + cmp r0, #0 + beq _021D9CF0 + add r0, r4, #0 + mov r1, #2 + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9CF0: + ldr r0, _021D9F78 ; =0x000005F3 + bl FUN_020054C8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #8 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D1C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9D44 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021D9D4E + bge _021D9D74 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021D9D44 + sub r1, r2, #1 + cmp r0, r1 + bge _021D9D46 +_021D9D44: + b _021D9F76 +_021D9D46: + beq _021D9D54 + cmp r0, r2 + beq _021D9D62 + pop {r3, r4, r5, pc} +_021D9D4E: + cmp r0, #0x37 + beq _021D9D62 + pop {r3, r4, r5, pc} +_021D9D54: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9D62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D74: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9D86: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9E70 + add r0, r4, #0 + bl MOD14_021DC458 + add r2, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + bl MOD14_021D9F80 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D9DD0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xe + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021D9E04 +_021D9DD0: + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021D9DF0 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xf + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021D9E04 +_021D9DF0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x10 + bl MOD14_021DCB2C + mov r0, #0x6e + mov r1, #2 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D9E04: + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9E0A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9E70 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021D9E48 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021D9E34 + add r0, r4, #0 + bl MOD14_021DBE34 + b _021D9E3A +_021D9E34: + add r0, r4, #0 + bl MOD14_021DBE4C +_021D9E3A: + add r0, r4, #0 + mov r1, #3 + bl MOD14_021DBA44 + mov r0, #5 + str r0, [r5] + b _021D9E54 +_021D9E48: + add r0, r4, #0 + mov r1, #0x20 + bl MOD14_021DBA44 + mov r0, #4 + str r0, [r5] +_021D9E54: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021D9E62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + bne _021D9E72 +_021D9E70: + b _021D9F76 +_021D9E72: + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + add r0, r4, #0 + mov r1, #4 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9E96: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + add r0, r4, #0 + mov r1, #0x21 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9EC8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #7 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9EF2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021D9F24 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #2 + bne _021D9F1E + sub r0, #0xa4 + ldr r0, [r4, r0] + mov r1, #0x25 + bl MOD14_021DCB2C +_021D9F1E: + add r0, r4, #0 + bl MOD14_021D7674 +_021D9F24: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9F36: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021D9F76 + ldr r0, _021D9F7C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021D9F76 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #9 + str r0, [r5] + pop {r3, r4, r5, pc} +_021D9F62: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021D9F76 + add r0, r4, #0 + bl MOD14_021D7620 +_021D9F76: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9F78: .word 0x000005F3 +_021D9F7C: .word 0x021C48B8 + + thumb_func_start MOD14_021D9F80 +MOD14_021D9F80: ; 0x021D9F80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [sp] + add r7, r0, r1 + ldr r0, [r0, #0x4c] + mov r4, #0 + ldr r5, _021DA010 ; =0x021E6224 + str r0, [r7, #0x10] + str r4, [sp, #4] +_021D9F96: + ldrh r1, [r5] + ldr r0, [r7, #0x10] + add r6, r7, r4 + bl MOD14_021DA168 + strb r0, [r6, #4] + ldrb r0, [r6, #4] + cmp r0, #0 + beq _021D9FAE + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] +_021D9FAE: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #3 + blo _021D9F96 + ldr r0, [sp, #4] + cmp r0, #0 + bne _021D9FC6 + mov r0, #1 + strb r0, [r7] + add sp, #8 + strb r0, [r7, #1] + pop {r3, r4, r5, r6, r7, pc} +_021D9FC6: + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + strb r0, [r7, #3] + mov r1, #0x12 + ldr r0, [sp] + lsl r1, r1, #4 + ldr r0, [r0, r1] + add r1, r1, #4 + str r0, [r7, #0x14] + ldr r0, [sp] + ldr r0, [r0, r1] + str r0, [r7, #0x18] + ldr r0, [sp] + bl MOD14_021DC3F4 + cmp r0, #1 + beq _021D9FF0 + mov r0, #1 + b _021D9FF2 +_021D9FF0: + mov r0, #0 +_021D9FF2: + mov r1, #0 + str r0, [r7, #0x1c] + add r0, r7, #0 + add r2, r1, #0 +_021D9FFA: + add r1, r1, #1 + strh r2, [r0, #8] + add r0, r0, #2 + cmp r1, #3 + blo _021D9FFA + ldr r0, _021DA014 ; =MOD14_021DA018 + add r1, r7, #0 + bl FUN_0200CA44 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA010: .word 0x021E6224 +_021DA014: .word MOD14_021DA018 + + thumb_func_start MOD14_021DA018 +MOD14_021DA018: ; 0x021DA018 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + ldrb r0, [r1, #2] + str r1, [sp, #4] + cmp r0, #0x12 + bhs _021DA0AE + add r0, r1, #0 + ldrb r0, [r0, #3] + str r0, [sp, #0xc] + str r0, [sp, #0x14] + add r0, #0xf + str r0, [sp, #0x14] + cmp r0, #0x1e + ble _021DA03A + mov r0, #0x1e + str r0, [sp, #0x14] +_021DA03A: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bge _021DA08C +_021DA042: + ldr r1, [sp, #4] + ldr r0, [sp, #4] + ldrb r1, [r1, #2] + ldr r0, [r0, #0x14] + ldr r2, [sp, #0xc] + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + add r7, r0, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DA080 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + mov r6, #0 +_021DA064: + ldrh r1, [r4] + add r0, r7, #0 + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA076 + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA076: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA064 +_021DA080: + ldr r0, [sp, #0xc] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021DA042 +_021DA08C: + ldr r0, [sp, #0x14] + cmp r0, #0x1e + bne _021DA0A4 + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #3] + ldrb r0, [r0, #2] + add r1, r0, #1 + ldr r0, [sp, #4] + add sp, #0x18 + strb r1, [r0, #2] + pop {r3, r4, r5, r6, r7, pc} +_021DA0A4: + add r1, r0, #0 + ldr r0, [sp, #4] + add sp, #0x18 + strb r1, [r0, #3] + pop {r3, r4, r5, r6, r7, pc} +_021DA0AE: + add r0, r1, #0 + ldr r0, [r0, #0x18] + bl FUN_0206B9AC + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _021DA0FC +_021DA0C2: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r0, #0x18] + bl FUN_0206B9B0 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + add r7, r0, #0 + mov r6, #0 +_021DA0D4: + ldrh r1, [r4] + add r0, r7, #0 + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA0E6 + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA0E6: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA0D4 + ldr r0, [sp, #8] + add r1, r0, #1 + ldr r0, [sp, #0x10] + str r1, [sp, #8] + cmp r1, r0 + blt _021DA0C2 +_021DA0FC: + ldr r0, [sp, #4] + ldr r0, [r0, #0x1c] + cmp r0, #0 + beq _021DA128 + ldr r4, _021DA164 ; =0x021E6224 + ldr r5, [sp, #4] + mov r6, #0 +_021DA10A: + ldr r0, [sp, #4] + ldrh r1, [r4] + ldr r0, [r0, #0x10] + bl MOD14_021DA168 + cmp r0, #0 + beq _021DA11E + ldrh r0, [r5, #8] + add r0, r0, #1 + strh r0, [r5, #8] +_021DA11E: + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, #2 + cmp r6, #3 + blo _021DA10A +_021DA128: + ldr r0, [sp, #4] + mov r1, #1 + strb r1, [r0, #1] + mov r2, #0 + add r1, r0, #0 +_021DA132: + ldrh r0, [r1, #8] + cmp r0, #1 + bne _021DA14A + ldr r0, [sp, #4] + add r0, r0, r2 + ldrb r0, [r0, #4] + cmp r0, #1 + bne _021DA14A + ldr r0, [sp, #4] + mov r1, #0 + strb r1, [r0, #1] + b _021DA152 +_021DA14A: + add r2, r2, #1 + add r1, r1, #2 + cmp r2, #3 + blo _021DA132 +_021DA152: + ldr r0, [sp, #4] + mov r1, #1 + strb r1, [r0] + ldr r0, [sp] + bl FUN_0200CAB4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DA164: .word 0x021E6224 + + thumb_func_start MOD14_021DA168 +MOD14_021DA168: ; 0x021DA168 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r0, #0 + str r1, [sp, #4] + bl FUN_02066A6C + str r0, [sp] + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021DA1A8 + mov r4, #0 + add r7, r4, #0 +_021DA18C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + add r2, r7, #0 + bl FUN_020672BC + cmp r6, r0 + bne _021DA1A2 + mov r0, #1 + str r0, [sp, #4] + b _021DA1A8 +_021DA1A2: + add r4, r4, #1 + cmp r4, #4 + blt _021DA18C +_021DA1A8: + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02066A94 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DA1B8 +MOD14_021DA1B8: ; 0x021DA1B8 + mov r1, #0x57 + lsl r1, r1, #2 + ldrb r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DA1C0 +MOD14_021DA1C0: ; 0x021DA1C0 + mov r1, #0x57 + lsl r1, r1, #2 + add r1, r0, r1 + ldrb r0, [r1] + cmp r0, #0 + beq _021DA1D0 + ldrb r0, [r1, #1] + bx lr +_021DA1D0: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021DA1D4 +MOD14_021DA1D4: ; 0x021DA1D4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021DA1EA + cmp r0, #1 + beq _021DA1FE + cmp r0, #2 + beq _021DA256 + pop {r3, r4, r5, pc} +_021DA1EA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA1FE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA2BC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + mov r2, #0x12 + lsl r2, r2, #4 + add r1, r0, #0 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + ldr r2, [r2, #0x18] + bl FUN_0206B484 + mov r1, #0x4a + lsl r1, r1, #2 + ldr r0, _021DA2C0 ; =0x020FA5FC + ldr r1, [r4, r1] + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA256: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021DA2BC + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0206B330 + add r5, r0, #0 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006260 + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #0x12 + lsl r2, r2, #4 + ldr r0, [r4, r2] + add r2, #8 + ldr r2, [r4, r2] + add r1, r5, #0 + ldr r2, [r2, #0x18] + bl FUN_0206B4B4 + mov r0, #0x12 + lsl r0, r0, #4 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0x40 + bl MOD14_021DB580 + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + ldr r1, _021DA2C4 ; =MOD14_021D76E8 + add r0, r4, #0 + bl MOD14_021D7610 +_021DA2BC: + pop {r3, r4, r5, pc} + nop +_021DA2C0: .word 0x020FA5FC +_021DA2C4: .word MOD14_021D76E8 + + thumb_func_start MOD14_021DA2C8 +MOD14_021DA2C8: ; 0x021DA2C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021DA2DE + cmp r0, #1 + beq _021DA2F2 + cmp r0, #2 + beq _021DA334 + pop {r3, r4, r5, pc} +_021DA2DE: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA2F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA390 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + add r0, r5, #0 + bl MOD14_021D83E4 + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, _021DA394 ; =0x020FA6E8 + add r1, r5, r1 + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA334: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02006290 + cmp r0, #0 + beq _021DA390 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0206B330 + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02006260 + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DA374 + add r0, r5, #0 + add r1, r5, #0 + bl MOD14_021DA39C +_021DA374: + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r5, #0 + add r2, r5, #0 + bl MOD14_021DC76C + ldr r1, _021DA398 ; =MOD14_021D76E8 + add r0, r5, #0 + bl MOD14_021D7610 + add r0, r5, #0 + bl MOD14_021D7674 +_021DA390: + pop {r3, r4, r5, pc} + nop +_021DA394: .word 0x020FA6E8 +_021DA398: .word MOD14_021D76E8 + + thumb_func_start MOD14_021DA39C +MOD14_021DA39C: ; 0x021DA39C + push {r3, r4, r5, lr} + add r4, r0, #0 + add r4, #8 + ldrb r0, [r4, #4] + add r5, r1, #0 + cmp r0, #0 + beq _021DA3B0 + cmp r0, #1 + beq _021DA3D2 + pop {r3, r4, r5, pc} +_021DA3B0: + mov r0, #5 + lsl r0, r0, #6 + ldrb r0, [r5, r0] + mov r1, #6 + strb r0, [r4, #7] + mov r0, #7 + ldrsb r0, [r4, r0] + bl _s32_div_f + strb r1, [r4, #5] + mov r0, #7 + ldrsb r0, [r4, r0] + mov r1, #6 + bl _s32_div_f + strb r0, [r4, #6] + b _021DA3DA +_021DA3D2: + mov r0, #5 + lsl r0, r0, #6 + ldrb r0, [r5, r0] + strb r0, [r4, #8] +_021DA3DA: + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DA3E4 +MOD14_021DA3E4: ; 0x021DA3E4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #6 + bhi _021DA496 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA3FC: ; jump table + .short _021DA40A - _021DA3FC - 2 ; case 0 + .short _021DA41E - _021DA3FC - 2 ; case 1 + .short _021DA488 - _021DA3FC - 2 ; case 2 + .short _021DA522 - _021DA3FC - 2 ; case 3 + .short _021DA546 - _021DA3FC - 2 ; case 4 + .short _021DA58E - _021DA3FC - 2 ; case 5 + .short _021DA5C2 - _021DA3FC - 2 ; case 6 +_021DA40A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA41E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA496 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCA38 + mov r0, #0xa + bl FUN_020168D0 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA5D8 ; =0x021E6264 + mov r2, #9 + bl FUN_0206EFEC + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + sub r1, #0xf8 + ldr r1, [r4, r1] + mov r2, #1 + mov r3, #0 + bl FUN_0206E314 + ldr r0, _021DA5DC ; =0x0000004B + mov r1, #2 + bl HandleLoadOverlay + mov r1, #0x85 + lsl r1, r1, #2 + ldr r0, _021DA5E0 ; =0x021EC68C + ldr r1, [r4, r1] + mov r2, #9 + bl FUN_02006234 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA488: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006290 + cmp r0, #0 + bne _021DA498 +_021DA496: + b _021DA5D6 +_021DA498: + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206E37C + ldr r1, _021DA5E4 ; =0x021E6A00 + str r0, [r1, #8] + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02006260 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _021DA5DC ; =0x0000004B + bl UnloadOverlayByID + ldr r0, _021DA5E4 ; =0x021E6A00 + ldr r6, [r0, #8] + cmp r6, #0 + beq _021DA4F4 + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + lsl r1, r6, #0x10 + lsr r1, r1, #0x10 + mov r2, #1 + mov r3, #9 + bl FUN_0206EDD4 + ldr r1, _021DA5E4 ; =0x021E6A00 + add r0, r4, #0 + ldr r1, [r1, #8] + add r2, r4, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD14_021DC1E8 + add r0, r4, #0 + bl MOD14_021D7674 +_021DA4F4: + mov r2, #0xf + mov r0, #3 + mov r1, #0xa + lsl r2, r2, #0xe + bl FUN_0201681C + mov r0, #0x45 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r4, #0 + add r2, r4, #0 + bl MOD14_021DC76C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA522: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA546: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + ldr r0, _021DA5E4 ; =0x021E6A00 + ldr r2, [r0, #8] + cmp r2, #0 + bne _021DA566 + add r0, r4, #0 + bl MOD14_021D7620 + pop {r4, r5, r6, pc} +_021DA566: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x10 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA58E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA5D6 + ldr r0, _021DA5E8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA5D6 + ldr r0, _021DA5EC ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021DA5C2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA5D6 + add r0, r4, #0 + bl MOD14_021D7620 +_021DA5D6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DA5D8: .word 0x021E6264 +_021DA5DC: .word 0x0000004B +_021DA5E0: .word 0x021EC68C +_021DA5E4: .word 0x021E6A00 +_021DA5E8: .word 0x021C48B8 +_021DA5EC: .word 0x000005DD + + thumb_func_start MOD14_021DA5F0 +MOD14_021DA5F0: ; 0x021DA5F0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #5 + bhi _021DA6A2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA608: ; jump table + .short _021DA614 - _021DA608 - 2 ; case 0 + .short _021DA67A - _021DA608 - 2 ; case 1 + .short _021DA6E4 - _021DA608 - 2 ; case 2 + .short _021DA744 - _021DA608 - 2 ; case 3 + .short _021DA76C - _021DA608 - 2 ; case 4 + .short _021DA79E - _021DA608 - 2 ; case 5 +_021DA614: + bl MOD14_021DC430 + ldr r1, _021DA7B4 ; =0x021E6A00 + str r0, [r1, #4] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021DA648 + ldr r0, _021DA7B8 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA648: + mov r0, #0x67 + ldr r2, _021DA7B4 ; =0x021E6A00 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [r2, #4] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + add r0, r4, #0 + mov r1, #0x17 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA67A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA6A2 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021DA6AC + bge _021DA6D2 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021DA6A2 + sub r1, r2, #1 + cmp r0, r1 + bge _021DA6A4 +_021DA6A2: + b _021DA7B2 +_021DA6A4: + beq _021DA6B2 + cmp r0, r2 + beq _021DA6C0 + pop {r3, r4, r5, pc} +_021DA6AC: + cmp r0, #0x37 + beq _021DA6C0 + pop {r3, r4, r5, pc} +_021DA6B2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA6C0: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA6D2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1b + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA6E4: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA7B4 ; =0x021E6A00 + mov r2, #1 + ldr r1, [r1, #4] + mov r3, #9 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206ED38 + cmp r0, #0 + beq _021DA72A + add r0, r4, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA72A: + add r0, r4, #0 + mov r1, #0xe + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA744: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA7B2 + add r0, r4, #0 + mov r1, #0xf + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA76C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA7B2 + ldr r0, _021DA7BC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA7B2 + ldr r0, _021DA7C0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA79E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA7B2 + add r0, r4, #0 + bl MOD14_021D7620 +_021DA7B2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA7B4: .word 0x021E6A00 +_021DA7B8: .word 0x000005F3 +_021DA7BC: .word 0x021C48B8 +_021DA7C0: .word 0x000005DD + + thumb_func_start MOD14_021DA7C4 +MOD14_021DA7C4: ; 0x021DA7C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #6 + bhi _021DA878 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA7DC: ; jump table + .short _021DA7EA - _021DA7DC - 2 ; case 0 + .short _021DA850 - _021DA7DC - 2 ; case 1 + .short _021DA8BA - _021DA7DC - 2 ; case 2 + .short _021DA922 - _021DA7DC - 2 ; case 3 + .short _021DA950 - _021DA7DC - 2 ; case 4 + .short _021DA978 - _021DA7DC - 2 ; case 5 + .short _021DA9AA - _021DA7DC - 2 ; case 6 +_021DA7EA: + bl MOD14_021DC544 + ldr r1, _021DA9C0 ; =0x021E6A00 + str r0, [r1] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + cmp r0, #0 + beq _021DA81E + ldr r0, _021DA9C4 ; =0x000005F3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x18 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA81E: + mov r0, #0x67 + ldr r2, _021DA9C0 ; =0x021E6A00 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200AE38 + add r0, r4, #0 + mov r1, #0x1a + bl MOD14_021DBA44 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E5D98 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x19 + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA850: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA878 + add r0, r4, #0 + bl MOD14_021E6160 + cmp r0, #0x36 + bgt _021DA882 + bge _021DA8A8 + mov r2, #0 + mvn r2, r2 + cmp r0, r2 + bgt _021DA878 + sub r1, r2, #1 + cmp r0, r1 + bge _021DA87A +_021DA878: + b _021DA9BE +_021DA87A: + beq _021DA888 + cmp r0, r2 + beq _021DA896 + pop {r3, r4, r5, pc} +_021DA882: + cmp r0, #0x37 + beq _021DA896 + pop {r3, r4, r5, pc} +_021DA888: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1c + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA896: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA8A8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA8BA: + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0206F158 + ldr r1, _021DA9C0 ; =0x021E6A00 + mov r2, #1 + ldr r1, [r1] + mov r3, #9 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206ED38 + cmp r0, #0 + beq _021DA908 + add r0, r4, #0 + bl MOD14_021DC538 + cmp r0, #0 + beq _021DA8EC + add r0, r4, #0 + bl MOD14_021DC310 + mov r0, #4 + b _021DA8F8 +_021DA8EC: + add r0, r4, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + mov r0, #3 +_021DA8F8: + str r0, [r5] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x17 + bl MOD14_021DCB2C + pop {r3, r4, r5, pc} +_021DA908: + add r0, r4, #0 + mov r1, #0xe + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA922: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x17 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA9BE + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x16 + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA950: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA9BE + add r0, r4, #0 + mov r1, #0x1b + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA978: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DA9BE + ldr r0, _021DA9C8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _021DA9BE + ldr r0, _021DA9CC ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + mov r0, #6 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DA9AA: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DA9BE + add r0, r4, #0 + bl MOD14_021D7620 +_021DA9BE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DA9C0: .word 0x021E6A00 +_021DA9C4: .word 0x000005F3 +_021DA9C8: .word 0x021C48B8 +_021DA9CC: .word 0x000005DD + + thumb_func_start MOD14_021DA9D0 +MOD14_021DA9D0: ; 0x021DA9D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _021DAA74 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA9E8: ; jump table + .short _021DA9F2 - _021DA9E8 - 2 ; case 0 + .short _021DAA06 - _021DA9E8 - 2 ; case 1 + .short _021DAA2A - _021DA9E8 - 2 ; case 2 + .short _021DAA42 - _021DA9E8 - 2 ; case 3 + .short _021DAA5E - _021DA9E8 - 2 ; case 4 +_021DA9F2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA06: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1a + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x11 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA2A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x11 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA42: + ldr r0, _021DAA78 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r1, r0 + beq _021DAA74 + add r0, #0x21 + ldr r0, [r5, r0] + mov r1, #0x12 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAA5E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x12 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAA74 + add r0, r5, #0 + bl MOD14_021D7620 +_021DAA74: + pop {r3, r4, r5, pc} + nop +_021DAA78: .word 0x021C48B8 + + thumb_func_start MOD14_021DAA7C +MOD14_021DAA7C: ; 0x021DAA7C + push {r4, r5} + mov r3, #0x6f + lsl r3, r3, #2 + mov r5, #0 + str r5, [r0, r3] + add r4, r3, #5 + strb r1, [r0, r4] + add r1, r3, #6 + strh r2, [r0, r1] + add r1, r3, #4 + strb r5, [r0, r1] + pop {r4, r5} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DAA98 +MOD14_021DAA98: ; 0x021DAA98 + mov r1, #0x6f + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + mov r2, #1 + add r1, r1, #4 + strb r2, [r0, r1] + bx lr + + thumb_func_start MOD14_021DAAA8 +MOD14_021DAAA8: ; 0x021DAAA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6f + lsl r0, r0, #2 + add r4, r5, r0 + ldr r1, [r4] + cmp r1, #3 + bls _021DAABA + b _021DABDC +_021DAABA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DAAC6: ; jump table + .short _021DAACE - _021DAAC6 - 2 ; case 0 + .short _021DAB04 - _021DAAC6 - 2 ; case 1 + .short _021DAB2C - _021DAAC6 - 2 ; case 2 + .short _021DAB3E - _021DAAC6 - 2 ; case 3 +_021DAACE: + ldrb r0, [r4, #4] + cmp r0, #1 + bne _021DAADA + mov r0, #1 + str r0, [r4] + b _021DABDC +_021DAADA: + mov r0, #5 + ldrsb r1, [r4, r0] + sub r0, r0, #6 + cmp r1, r0 + bne _021DAAE8 + mov r0, #0 + strb r0, [r4, #5] +_021DAAE8: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1e + bl MOD14_021DCB2C + mov r0, #1 + str r0, [r4] + b _021DABDC +_021DAB04: + sub r0, #0xa8 + ldr r0, [r5, r0] + mov r1, #0x1e + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + ldrh r1, [r4, #6] + add r0, r5, #0 + bl MOD14_021DBA44 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB2C + mov r0, #2 + str r0, [r4] + b _021DABDC +_021DAB2C: + sub r0, #0xa8 + ldr r0, [r5, r0] + mov r1, #0x18 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + mov r0, #3 + str r0, [r4] +_021DAB3E: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DABDC + ldr r0, _021DABE0 ; =0x021C48B8 + mov r1, #0x22 + ldr r0, [r0, #0x48] + lsl r1, r1, #4 + add r2, r0, #0 + tst r2, r1 + beq _021DAB86 + mov r0, #5 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #5] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _021DAB6E + mov r0, #0x11 + strb r0, [r4, #5] +_021DAB6E: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB2C + b _021DABDC +_021DAB86: + lsr r1, r1, #1 + tst r1, r0 + beq _021DABB6 + mov r0, #5 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #5] + ldrsb r0, [r4, r0] + cmp r0, #0x12 + blt _021DAB9E + mov r0, #0 + strb r0, [r4, #5] +_021DAB9E: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r5, #0 + bl MOD14_021DC2DC + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x1f + bl MOD14_021DCB2C + b _021DABDC +_021DABB6: + mov r1, #1 + tst r1, r0 + beq _021DABC6 + ldr r0, _021DABE4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DABC6: + mov r1, #2 + tst r0, r1 + beq _021DABDC + ldr r0, _021DABE4 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + mvn r0, r0 + strb r0, [r4, #5] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DABDC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DABE0: .word 0x021C48B8 +_021DABE4: .word 0x000005DD + + thumb_func_start MOD14_021DABE8 +MOD14_021DABE8: ; 0x021DABE8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021DABFE + cmp r1, #1 + beq _021DAC28 + cmp r1, #2 + beq _021DAC68 + pop {r3, r4, r5, pc} +_021DABFE: + bl MOD14_021DC424 + add r1, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0206B428 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAC28: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAC7E + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DAC60 + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DAC60 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB2C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DAC60: + add r0, r5, #0 + bl MOD14_021D7620 + pop {r3, r4, r5, pc} +_021DAC68: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAC7E + add r0, r5, #0 + bl MOD14_021D7620 +_021DAC7E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DAC80 +MOD14_021DAC80: ; 0x021DAC80 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5] + cmp r0, #5 + bhi _021DAD02 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAC98: ; jump table + .short _021DACA4 - _021DAC98 - 2 ; case 0 + .short _021DACF2 - _021DAC98 - 2 ; case 1 + .short _021DAEA2 - _021DAC98 - 2 ; case 2 + .short _021DAEF8 - _021DAC98 - 2 ; case 3 + .short _021DAF34 - _021DAC98 - 2 ; case 4 + .short _021DAF4A - _021DAC98 - 2 ; case 5 +_021DACA4: + ldr r0, _021DAF60 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021DC350 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #0x58 + str r0, [sp] + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + mov r2, #0xc0 + mov r3, #0x38 + bl MOD14_021DC5F8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + str r1, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DACF2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021DAD04 +_021DAD02: + b _021DAF5E +_021DAD04: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021DAD34 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021DAD34 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021DAD2C + ldr r1, _021DAF64 ; =MOD14_021DAF78 + add r0, r4, #0 + bl MOD14_021D7610 + pop {r3, r4, r5, r6, r7, pc} +_021DAD2C: + ldr r0, _021DAF68 ; =0x000005F3 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} +_021DAD34: + ldr r0, _021DAF6C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _021DAD6C + ldr r0, _021DAF70 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC350 + add r0, r4, #0 + bl MOD14_021DC424 + add r1, r0, #0 + add r0, r4, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #5 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAD6C: + mov r1, #0x81 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021DADE4 + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DADE4 + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r0, #1 + sub r0, r1, #4 + str r2, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x14 + bls _021DADE4 + add r0, r4, #0 + bl MOD14_021DC474 + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DC2C4 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, r6, #0 + bl FUN_0206B428 + add r0, r4, #0 + bl MOD14_021DB934 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DADC6 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + bl MOD14_021DCB2C +_021DADC6: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB2C + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, r0, #4 + str r1, [r4, r0] + mov r0, #3 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DADE4: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #1 + beq _021DADFC + cmp r0, #2 + beq _021DAE1C + cmp r0, #3 + beq _021DAE76 + pop {r3, r4, r5, r6, r7, pc} +_021DADFC: + add r0, r4, #0 + bl MOD14_021DC474 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0xc + str r2, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_021DAE1C: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC708 + add r6, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r6, r0 + bne _021DAE34 + b _021DAF5E +_021DAE34: + sub r7, r6, r0 + add r0, r4, #0 + bl MOD14_021DC474 + add r1, r7, r0 + bpl _021DAE44 + add r1, #0x12 + b _021DAE4A +_021DAE44: + cmp r1, #0x12 + blt _021DAE4A + sub r1, #0x12 +_021DAE4A: + mov r0, #0x83 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r4, #0 + bl MOD14_021DC358 + add r0, r4, #0 + add r1, r7, #0 + bl MOD14_021DC368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB2C + ldr r0, _021DAF74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAE76: + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DAE8C + mov r1, #1 + b _021DAE8E +_021DAE8C: + mov r1, #0 +_021DAE8E: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DAEA2: + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021DAEE2 + sub r0, #0x40 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #3 + bne _021DAEE2 + add r0, r4, #0 + bl MOD14_021DC424 + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r6, r0 + beq _021DAECE + mov r1, #1 + b _021DAED0 +_021DAECE: + mov r1, #0 +_021DAED0: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_021DAEE2: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAEF8: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DAF2E + add r0, r4, #0 + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021DAF2E + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB2C + mov r0, #4 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF2E: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF34: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DAF5E + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DAF4A: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DAF5E + add r0, r4, #0 + bl MOD14_021D7620 +_021DAF5E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAF60: .word 0x000005E4 +_021DAF64: .word MOD14_021DAF78 +_021DAF68: .word 0x000005F3 +_021DAF6C: .word 0x021C48B8 +_021DAF70: .word 0x000005DD +_021DAF74: .word 0x000005DC + + thumb_func_start MOD14_021DAF78 +MOD14_021DAF78: ; 0x021DAF78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + cmp r0, #3 + bhi _021DAFFC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAF92: ; jump table + .short _021DAF9A - _021DAF92 - 2 ; case 0 + .short _021DAFEC - _021DAF92 - 2 ; case 1 + .short _021DB144 - _021DAF92 - 2 ; case 2 + .short _021DB19C - _021DAF92 - 2 ; case 3 +_021DAF9A: + ldr r0, _021DB1B4 ; =0x000005E4 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #2 + bl MOD14_021DC350 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC360 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC358 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #0x58 + str r0, [sp] + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0xff + mov r2, #0xc0 + mov r3, #0x38 + bl MOD14_021DC5F8 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + add sp, #8 + str r1, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DAFEC: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB98 + cmp r0, #0 + bne _021DAFFE +_021DAFFC: + b _021DB1B0 +_021DAFFE: + add r0, r4, #0 + bl MOD14_021DB9C8 + cmp r0, #0 + beq _021DB01E + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021DB01E + ldr r1, _021DB1B8 ; =MOD14_021DAC80 + add r0, r4, #0 + bl MOD14_021D7610 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB01E: + ldr r0, _021DB1BC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _021DB046 + ldr r0, _021DB1C0 ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC350 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x28 + bl MOD14_021DCB2C + mov r0, #3 + str r0, [r6] +_021DB046: + add r0, r4, #0 + bl MOD14_021DB1C8 + cmp r0, #0 + beq _021DB072 + ldr r0, _021DB1C0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x2a + bl MOD14_021DCB2C + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x27 + bl MOD14_021DCB2C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB072: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #1 + beq _021DB08C + cmp r0, #2 + beq _021DB0AE + cmp r0, #3 + beq _021DB116 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021DB08C: + add r0, r4, #0 + bl MOD14_021DC474 + mov r1, #0x7f + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #0 + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #0x10 + str r2, [r4, r0] + add r1, #0xc + add sp, #8 + str r2, [r4, r1] + pop {r3, r4, r5, r6, r7, pc} +_021DB0AE: + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021DC708 + add r7, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r7, r0 + beq _021DB1B0 + sub r0, r7, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021DC474 + ldr r1, [sp, #4] + add r5, r1, r0 + bpl _021DB0D8 + add r5, #8 + b _021DB0DE +_021DB0D8: + cmp r5, #8 + blt _021DB0DE + sub r5, #8 +_021DB0DE: + mov r0, #0x83 + lsl r0, r0, #2 + str r7, [r4, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD14_021DC358 + add r0, r4, #0 + add r1, r5, #0 + bl MOD14_021DC360 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD14_021DC368 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB2C + ldr r0, _021DB1C4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #2 + add sp, #8 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DB116: + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DB12C + mov r1, #1 + b _021DB12E +_021DB12C: + mov r1, #0 +_021DB12E: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + add sp, #8 + str r1, [r4, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DB144: + mov r0, #0x82 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + bne _021DB184 + sub r0, #0x40 + add r0, r4, r0 + bl MOD14_021DC664 + cmp r0, #3 + bne _021DB184 + add r0, r4, #0 + bl MOD14_021DC424 + add r5, r0, #0 + add r0, r4, #0 + bl MOD14_021DC474 + cmp r5, r0 + beq _021DB170 + mov r1, #1 + b _021DB172 +_021DB170: + mov r1, #0 +_021DB172: + mov r0, #0x81 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r1, r0, #4 + mov r2, #0 + str r2, [r4, r1] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_021DB184: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x29 + bl MOD14_021DCB98 + cmp r0, #0 + beq _021DB1B0 + mov r0, #1 + add sp, #8 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_021DB19C: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD14_021DCBC0 + cmp r0, #0 + beq _021DB1B0 + add r0, r4, #0 + bl MOD14_021D7620 +_021DB1B0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB1B4: .word 0x000005E4 +_021DB1B8: .word MOD14_021DAC80 +_021DB1BC: .word 0x021C48B8 +_021DB1C0: .word 0x000005DD +_021DB1C4: .word 0x000005DC + + thumb_func_start MOD14_021DB1C8 +MOD14_021DB1C8: ; 0x021DB1C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x62 + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + bl FUN_02022144 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + beq _021DB1EA + mov r0, #1 + pop {r4, pc} +_021DB1EA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB1F0 +MOD14_021DB1F0: ; 0x021DB1F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x62 + add r4, r2, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + bne _021DB21E + cmp r1, #0 + bne _021DB21E + add r0, r4, #0 + bl MOD14_021DC47C + add r1, r0, r5 + cmp r1, #8 + blo _021DB212 + sub r1, #8 +_021DB212: + add r0, r4, #0 + bl MOD14_021DC370 + mov r0, #0x62 + lsl r0, r0, #2 + str r5, [r4, r0] +_021DB21E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB220 +MOD14_021DB220: ; 0x021DB220 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_02022510 + mov r1, #0x12 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r2, [r4] + sub r0, r1, #4 + str r2, [r5, r0] + ldr r0, [r4] + bl FUN_0206BB1C + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4] + bl LoadPlayerDataAddress + mov r1, #0x69 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x8c + str r4, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xf + mov r3, #9 + str r0, [r4, #8] + bl FUN_0200A86C + mov r2, #0x63 + lsl r2, r2, #2 + str r0, [r5, r2] + mov r0, #1 + mov r1, #0x1a + sub r2, #0x22 + mov r3, #9 + bl FUN_0200A86C + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xbe + mov r3, #9 + bl FUN_0200A86C + mov r2, #0x65 + lsl r2, r2, #2 + str r0, [r5, r2] + mov r0, #0 + mov r1, #0x1a + add r2, #0x94 + mov r3, #9 + bl FUN_0200A86C + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #9 + bl FUN_0200AA80 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + bl FUN_020669BC + add r1, r0, #0 + mov r0, #9 + bl FUN_02016998 + mov r1, #0x1a + lsl r1, r1, #4 + str r0, [r5, r1] + sub r0, r1, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021DB2C8 + bl ErrorHandling +_021DB2C8: + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + str r0, [sp] + mov r0, #9 + mov r2, #0 + mov r3, #8 + bl FUN_02077A84 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4, #4] + cmp r0, #4 + beq _021DB2FA + mov r0, #9 + str r0, [sp] + ldr r0, _021DB384 ; =0x021E622A + ldr r2, _021DB388 ; =MOD14_021DB9F4 + mov r1, #3 + add r3, r5, #0 + bl FUN_020220C4 + b _021DB30A +_021DB2FA: + mov r0, #9 + str r0, [sp] + ldr r0, _021DB38C ; =0x021E6236 + ldr r2, _021DB388 ; =MOD14_021DB9F4 + mov r1, #4 + add r3, r5, #0 + bl FUN_020220C4 +_021DB30A: + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #9 + str r0, [sp] + ldr r0, _021DB390 ; =0x021E6246 + ldr r2, _021DB394 ; =MOD14_021DB1F0 + mov r1, #7 + add r3, r5, #0 + bl FUN_020220C4 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + sub r0, #0x60 + ldr r0, [r5, r0] + mov r2, #0 + str r0, [r5] + add r0, r1, #0 + sub r0, #0x5c + ldr r0, [r5, r0] + str r0, [r5, #4] + add r0, r1, #0 + sub r0, #0x70 + strh r2, [r5, r0] + sub r1, #0x6e + strh r2, [r5, r1] + add r0, r5, #0 + ldr r1, [r4, #4] + add r0, #0x48 + bl MOD14_021DB424 + add r0, r5, #0 + add r0, #0x4c + bl MOD14_021DB4C8 + mov r0, #0x12 + lsl r0, r0, #4 + add r1, r5, #0 + ldr r0, [r5, r0] + add r1, #0x40 + bl MOD14_021DB49C + add r0, r5, #0 + add r0, #0xa4 + bl MOD14_021DB524 + add r0, r5, #0 + bl MOD14_021DB430 + add r0, r5, #0 + add r0, #0x14 + bl MOD14_021DB470 + add r5, #0x9c + add r0, r5, #0 + bl MOD14_021DB574 + pop {r3, r4, r5, pc} + nop +_021DB384: .word 0x021E622A +_021DB388: .word MOD14_021DB9F4 +_021DB38C: .word 0x021E6236 +_021DB390: .word 0x021E6246 +_021DB394: .word MOD14_021DB1F0 + + thumb_func_start MOD14_021DB398 +MOD14_021DB398: ; 0x021DB398 + push {r4, lr} + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DB3BE + bl FUN_02016A18 +_021DB3BE: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02077AC4 + add r0, r4, #0 + add r0, #0x4c + bl MOD14_021DB500 + add r0, r4, #0 + add r0, #0x14 + bl MOD14_021DB490 + add r0, r4, #0 + add r0, #0x40 + bl MOD14_021DB4BC + add r0, r4, #0 + add r0, #0xa4 + bl MOD14_021DB558 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB424 +MOD14_021DB424: ; 0x021DB424 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + strh r1, [r0, #2] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DB430 +MOD14_021DB430: ; 0x021DB430 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0 + add r4, r5, #0 + add r2, r1, #0 + add r4, #8 + bl MOD14_021DBA4C + mov r2, #0 + add r0, r5, #0 + strb r2, [r4, #8] + mov r1, #1 + strb r1, [r4, #9] + add r0, #0x48 + ldrb r0, [r0] + cmp r0, #0 + beq _021DB458 + cmp r0, #4 + beq _021DB45C + b _021DB462 +_021DB458: + strb r1, [r4, #4] + b _021DB464 +_021DB45C: + mov r0, #2 + strb r0, [r4, #4] + b _021DB464 +_021DB462: + strb r2, [r4, #4] +_021DB464: + mov r0, #1 + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB470 +MOD14_021DB470: ; 0x021DB470 + push {r4, lr} + add r4, r0, #0 + bl FUN_020690C8 + add r2, r0, #0 + mov r1, #0x1e + mov r0, #9 + mul r1, r2 + bl FUN_02016998 + str r0, [r4] + mov r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #0xb] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB490 +MOD14_021DB490: ; 0x021DB490 + ldr r3, _021DB498 ; =0x02016A19 + ldr r0, [r0] + bx r3 + nop +_021DB498: .word 0x02016A19 + + thumb_func_start MOD14_021DB49C +MOD14_021DB49C: ; 0x021DB49C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206B330 + strb r0, [r4] + mov r0, #0x14 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021DB580 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB4BC +MOD14_021DB4BC: ; 0x021DB4BC + ldr r3, _021DB4C4 ; =0x02021A21 + ldr r0, [r0, #4] + bx r3 + nop +_021DB4C4: .word 0x02021A21 + + thumb_func_start MOD14_021DB4C8 +MOD14_021DB4C8: ; 0x021DB4C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x14] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x18] + mov r0, #0x12 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x1c] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x20] + mov r0, #0x10 + mov r1, #9 + bl FUN_020219F4 + str r0, [r4, #0x24] + pop {r4, pc} + + thumb_func_start MOD14_021DB500 +MOD14_021DB500: ; 0x021DB500 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_02021A20 + ldr r0, [r4, #0x18] + bl FUN_02021A20 + ldr r0, [r4, #0x1c] + bl FUN_02021A20 + ldr r0, [r4, #0x20] + bl FUN_02021A20 + ldr r0, [r4, #0x24] + bl FUN_02021A20 + pop {r4, pc} + + thumb_func_start MOD14_021DB524 +MOD14_021DB524: ; 0x021DB524 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + strb r4, [r6] + strb r4, [r6, #1] + str r4, [r6, #4] + add r5, r6, #0 + add r7, r4, #0 +_021DB534: + add r0, r6, r4 + strb r7, [r0, #2] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r5, #0x30] + mov r0, #0xc + mov r1, #9 + bl FUN_020219F4 + str r0, [r5, #0x34] + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021DB534 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB558 +MOD14_021DB558: ; 0x021DB558 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DB55E: + ldr r0, [r5, #0x30] + bl FUN_02021A20 + ldr r0, [r5, #0x34] + bl FUN_02021A20 + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021DB55E + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB574 +MOD14_021DB574: ; 0x021DB574 + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #2] + strb r1, [r0, #1] + strh r1, [r0, #4] + bx lr + + thumb_func_start MOD14_021DB580 +MOD14_021DB580: ; 0x021DB580 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + bl FUN_0206B43C + strb r0, [r4, #1] + ldrb r1, [r4] + ldr r2, [r4, #4] + add r0, r5, #0 + bl FUN_0206B484 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB59C +MOD14_021DB59C: ; 0x021DB59C + push {r4, lr} + add r2, r0, #0 + add r4, r2, #0 + add r2, #0x40 + add r0, r1, #0 + ldrb r1, [r2] + add r4, #0x40 + bl FUN_0206B43C + strb r0, [r4, #1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB5B4 +MOD14_021DB5B4: ; 0x021DB5B4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r4, #0 + tst r2, r1 + beq _021DB5D0 + add r0, r5, #0 + sub r1, #0x21 + add r2, r4, #0 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5D0: + mov r1, #0x10 + tst r1, r0 + beq _021DB5E4 + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5E4: + mov r2, #0x40 + add r1, r0, #0 + tst r1, r2 + beq _021DB5FA + add r0, r5, #0 + add r1, r4, #0 + sub r2, #0x41 + bl MOD14_021DB61C + add r4, r0, #0 + b _021DB60C +_021DB5FA: + mov r1, #0x80 + tst r0, r1 + beq _021DB60C + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DB61C + add r4, r0, #0 +_021DB60C: + cmp r4, #1 + bne _021DB616 + add r0, r5, #0 + bl MOD14_021DB934 +_021DB616: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB61C +MOD14_021DB61C: ; 0x021DB61C + push {r4, lr} + add r3, r0, #0 + add r3, #8 + ldrb r4, [r3, #4] + cmp r4, #4 + bhi _021DB66A + add r4, r4, r4 + add r4, pc + ldrh r4, [r4, #6] + lsl r4, r4, #0x10 + asr r4, r4, #0x10 + add pc, r4 +_021DB634: ; jump table + .short _021DB63E - _021DB634 - 2 ; case 0 + .short _021DB720 - _021DB634 - 2 ; case 1 + .short _021DB69E - _021DB634 - 2 ; case 2 + .short _021DB6F4 - _021DB634 - 2 ; case 3 + .short _021DB6C8 - _021DB634 - 2 ; case 4 +_021DB63E: + cmp r1, #0 + beq _021DB666 + mov r2, #5 + ldrsb r4, [r3, r2] + add r1, r4, r1 + strb r1, [r3, #5] + ldrsb r1, [r3, r2] + cmp r1, #0 + bge _021DB654 + add r1, r2, #0 + b _021DB65A +_021DB654: + cmp r1, #6 + blt _021DB65A + mov r1, #0 +_021DB65A: + mov r2, #6 + ldrsb r2, [r3, r2] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB666: + cmp r2, #0 + bne _021DB66C +_021DB66A: + b _021DB78A +_021DB66C: + mov r1, #6 + ldrsb r1, [r3, r1] + add r2, r1, r2 + bpl _021DB67C + mov r1, #2 + mov r2, #0 + strb r1, [r3, #4] + b _021DB692 +_021DB67C: + cmp r2, #4 + ble _021DB692 + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + cmp r1, #5 + bne _021DB68E + add r1, r2, #0 + b _021DB690 +_021DB68E: + mov r1, #3 +_021DB690: + strb r1, [r3, #4] +_021DB692: + mov r1, #5 + ldrsb r1, [r3, r1] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB69E: + cmp r2, #0 + ble _021DB6B2 + mov r2, #0 + strb r2, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB6B2: + bge _021DB78A + mov r0, #5 + ldrsb r0, [r3, r0] + cmp r0, #5 + bne _021DB6C0 + mov r0, #4 + b _021DB6C2 +_021DB6C0: + mov r0, #3 +_021DB6C2: + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6C8: + cmp r2, #0 + bge _021DB6DE + mov r1, #0 + strb r1, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB6DE: + ble _021DB6E8 + mov r0, #2 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6E8: + cmp r1, #0 + beq _021DB78A + mov r0, #3 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB6F4: + cmp r2, #0 + bge _021DB70A + mov r1, #0 + strb r1, [r3, #4] + mov r1, #5 + ldrsb r1, [r3, r1] + mov r2, #4 + bl MOD14_021DBA4C + mov r0, #1 + pop {r4, pc} +_021DB70A: + ble _021DB714 + mov r0, #2 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB714: + cmp r1, #0 + beq _021DB78A + mov r0, #4 + strb r0, [r3, #4] + mov r0, #1 + pop {r4, pc} +_021DB720: + mov r4, #8 + ldrsb r0, [r3, r4] + cmp r2, #0 + bge _021DB742 + cmp r0, #6 + bne _021DB732 + mov r1, #5 + strb r1, [r3, #8] + b _021DB77E +_021DB732: + sub r1, r0, #2 + strb r1, [r3, #8] + ldrsb r1, [r3, r4] + cmp r1, #0 + bge _021DB77E + mov r1, #6 + strb r1, [r3, #8] + b _021DB77E +_021DB742: + ble _021DB75E + cmp r0, #6 + bne _021DB74E + mov r1, #0 + strb r1, [r3, #8] + b _021DB77E +_021DB74E: + add r1, r0, #2 + strb r1, [r3, #8] + ldrsb r1, [r3, r4] + cmp r1, #6 + blt _021DB77E + mov r1, #6 + strb r1, [r3, #8] + b _021DB77E +_021DB75E: + cmp r1, #0 + bge _021DB76E + mov r1, #1 + tst r1, r0 + beq _021DB77E + sub r1, r0, #1 + strb r1, [r3, #8] + b _021DB77E +_021DB76E: + ble _021DB77E + cmp r0, #6 + beq _021DB77E + mov r1, #1 + tst r1, r0 + bne _021DB77E + add r1, r0, #1 + strb r1, [r3, #8] +_021DB77E: + mov r1, #8 + ldrsb r1, [r3, r1] + cmp r0, r1 + beq _021DB78A + mov r0, #1 + pop {r4, pc} +_021DB78A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB790 +MOD14_021DB790: ; 0x021DB790 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r4, #0 + tst r2, r1 + beq _021DB7AC + add r0, r5, #0 + sub r1, #0x21 + add r2, r4, #0 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7AC: + mov r1, #0x10 + tst r1, r0 + beq _021DB7C0 + add r0, r5, #0 + mov r1, #1 + add r2, r4, #0 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7C0: + mov r2, #0x40 + add r1, r0, #0 + tst r1, r2 + beq _021DB7D6 + add r0, r5, #0 + add r1, r4, #0 + sub r2, #0x41 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7D6: + mov r2, #0x80 + add r1, r0, #0 + tst r1, r2 + beq _021DB7EC + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DB80C + add r4, r0, #0 + b _021DB7FE +_021DB7EC: + lsl r1, r2, #2 + tst r1, r0 + beq _021DB7F6 + mov r4, #3 + b _021DB7FE +_021DB7F6: + add r2, #0x80 + tst r0, r2 + beq _021DB7FE + mov r4, #4 +_021DB7FE: + cmp r4, #1 + bne _021DB808 + add r0, r5, #0 + bl MOD14_021DB934 +_021DB808: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DB80C +MOD14_021DB80C: ; 0x021DB80C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r4, r7, #0 + add r4, #8 + ldrb r3, [r4, #4] + add r6, r7, #0 + add r6, #0x14 + cmp r3, #0 + bne _021DB8C6 + cmp r1, #0 + beq _021DB874 + mov r2, #5 + ldrsb r2, [r4, r2] + add r5, r2, r1 + bl MOD14_021DC3F4 + mov r1, #0xc + tst r0, r1 + beq _021DB858 + ldrb r0, [r6, #4] + ldrb r3, [r6, #6] + add r2, r5, #0 + add r1, r5, #0 + cmp r3, r0 + bls _021DB844 + sub r0, r3, r0 + sub r1, r5, r0 + b _021DB848 +_021DB844: + sub r0, r0, r3 + add r2, r5, r0 +_021DB848: + cmp r1, #0 + bge _021DB850 + mov r0, #3 + pop {r3, r4, r5, r6, r7, pc} +_021DB850: + cmp r2, #6 + blt _021DB864 + mov r0, #4 + pop {r3, r4, r5, r6, r7, pc} +_021DB858: + cmp r5, #0 + blt _021DB860 + cmp r5, #6 + blt _021DB864 +_021DB860: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB864: + mov r2, #6 + ldrsb r2, [r4, r2] + add r0, r7, #0 + add r1, r5, #0 + bl MOD14_021DBA4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB874: + cmp r2, #0 + beq _021DB8C6 + mov r1, #6 + ldrsb r1, [r4, r1] + add r5, r1, r2 + bl MOD14_021DC3F4 + mov r1, #0xc + tst r0, r1 + beq _021DB8AA + ldrb r0, [r6, #5] + ldrb r3, [r6, #7] + add r2, r5, #0 + add r1, r5, #0 + cmp r3, r0 + bls _021DB89A + sub r0, r3, r0 + sub r1, r5, r0 + b _021DB89E +_021DB89A: + sub r0, r0, r3 + add r2, r5, r0 +_021DB89E: + cmp r1, #0 + blt _021DB8A6 + cmp r2, #5 + blt _021DB8B6 +_021DB8A6: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB8AA: + cmp r5, #0 + blt _021DB8B2 + cmp r5, #5 + blt _021DB8B6 +_021DB8B2: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021DB8B6: + mov r1, #5 + ldrsb r1, [r4, r1] + add r0, r7, #0 + add r2, r5, #0 + bl MOD14_021DBA4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB8C6: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB8D0 +MOD14_021DB8D0: ; 0x021DB8D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DB8FA + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + strb r0, [r4, #8] + mov r0, #8 + ldrsb r0, [r4, r0] + cmp r0, #6 + blt _021DB8FE + mov r0, #5 + strb r0, [r4, #8] + b _021DB8FE +_021DB8FA: + mov r0, #0 + strb r0, [r4, #8] +_021DB8FE: + ldrb r0, [r4, #4] + strb r0, [r4, #9] + mov r0, #1 + strb r0, [r4, #4] + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB910 +MOD14_021DB910: ; 0x021DB910 + push {r4, lr} + add r4, r0, #0 + add r3, r4, #0 + add r3, #8 + mov r1, #0 + strb r1, [r3, #4] + mov r2, #9 + ldrsb r2, [r3, r2] + cmp r2, #0 + beq _021DB92A + add r2, r1, #0 + bl MOD14_021DBA4C +_021DB92A: + add r0, r4, #0 + bl MOD14_021DB934 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB934 +MOD14_021DB934: ; 0x021DB934 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + mov r1, #0 + strb r1, [r4, #0xa] + ldrb r0, [r4, #4] + cmp r0, #4 + bhi _021DB994 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB952: ; jump table + .short _021DB95C - _021DB952 - 2 ; case 0 + .short _021DB96C - _021DB952 - 2 ; case 1 + .short _021DB994 - _021DB952 - 2 ; case 2 + .short _021DB994 - _021DB952 - 2 ; case 3 + .short _021DB994 - _021DB952 - 2 ; case 4 +_021DB95C: + mov r2, #7 + ldrsb r2, [r4, r2] + ldr r0, [r5] + sub r1, r1, #1 + bl FUN_0206B5E4 + str r0, [r4] + b _021DB998 +_021DB96C: + mov r0, #8 + ldrsb r6, [r4, r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + cmp r6, r0 + bge _021DB98E + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_0206B9B0 + str r0, [r4] + b _021DB998 +_021DB98E: + mov r0, #0 + str r0, [r4] + b _021DB998 +_021DB994: + mov r0, #0 + str r0, [r4] +_021DB998: + ldr r0, [r4] + cmp r0, #0 + beq _021DB9C4 + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DB9C4 + mov r0, #1 + strb r0, [r4, #0xa] + add r0, r5, #0 + bl MOD14_021DC3F4 + mov r1, #6 + tst r0, r1 + bne _021DB9C4 + ldr r1, [r4] + add r0, r5, #0 + add r2, r5, #0 + bl MOD14_021DBE88 +_021DB9C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021DB9C8 +MOD14_021DB9C8: ; 0x021DB9C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x61 + ldr r1, _021DB9F0 ; =0x0000FFFF + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + bl FUN_02022144 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r1, [r4, r0] + ldr r0, _021DB9F0 ; =0x0000FFFF + cmp r1, r0 + beq _021DB9EC + mov r0, #1 + pop {r4, pc} +_021DB9EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DB9F0: .word 0x0000FFFF + + thumb_func_start MOD14_021DB9F4 +MOD14_021DB9F4: ; 0x021DB9F4 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0 + bne _021DBA0E + mov r0, #0x61 + lsl r0, r0, #2 + ldr r2, [r4, r0] + ldr r1, _021DBA40 ; =0x0000FFFF + cmp r2, r1 + bne _021DBA0E + str r6, [r4, r0] +_021DBA0E: + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021DBA3C + cmp r6, #2 + bne _021DBA3C + cmp r5, #0 + beq _021DBA2A + cmp r5, #1 + beq _021DBA34 + cmp r5, #3 + beq _021DBA34 + pop {r4, r5, r6, pc} +_021DBA2A: + add r0, r4, #0 + mov r1, #1 + bl MOD14_021DC1A0 + pop {r4, r5, r6, pc} +_021DBA34: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DC1A0 +_021DBA3C: + pop {r4, r5, r6, pc} + nop +_021DBA40: .word 0x0000FFFF + + thumb_func_start MOD14_021DBA44 +MOD14_021DBA44: ; 0x021DBA44 + mov r2, #0x43 + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + + thumb_func_start MOD14_021DBA4C +MOD14_021DBA4C: ; 0x021DBA4C + add r0, #8 + mov r3, #6 + strb r1, [r0, #5] + mul r3, r2 + strb r2, [r0, #6] + add r1, r1, r3 + strb r1, [r0, #7] + bx lr + + thumb_func_start MOD14_021DBA5C +MOD14_021DBA5C: ; 0x021DBA5C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r4, r6, #0 + add r5, r6, #0 + add r0, r6, #0 + add r4, #0x14 + add r5, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBA98 + bl FUN_020690C8 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [r4] + bl MIi_CpuCopy32 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r5, r2] + ldr r0, [r7, r0] + mvn r1, r1 + bl FUN_0206B2FC + mov r0, #0 + b _021DBAB6 +_021DBA98: + bl FUN_020690C4 + add r2, r0, #0 + ldr r0, [r5] + ldr r1, [r4] + bl MIi_CpuCopy32 + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r5, r1] + ldr r0, [r7, r0] + bl FUN_0206B938 + mov r0, #1 +_021DBAB6: + strb r0, [r4, #0xb] + ldr r1, [r4] + add r0, r6, #0 + bl MOD14_021DC1A8 + mov r0, #5 + ldrsb r0, [r5, r0] + strb r0, [r4, #6] + ldrb r0, [r4, #6] + strb r0, [r4, #4] + mov r0, #6 + ldrsb r0, [r5, r0] + strb r0, [r4, #7] + ldrb r0, [r4, #7] + strb r0, [r4, #5] + mov r0, #2 + strb r0, [r6, #0x13] + mov r0, #0 + strb r0, [r6, #0x12] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBAE0 +MOD14_021DBAE0: ; 0x021DBAE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r1, #0 + add r7, r0, #0 + add r6, #0x14 + mov r0, #1 + strb r0, [r6, #0xa] + add r0, r1, #0 + str r1, [sp, #4] + bl MOD14_021DC3E0 + str r0, [sp, #0x14] + bl FUN_020690C8 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + add r1, sp, #0x30 + ldr r5, [r0, #0x14] + add r0, sp, #0x24 + str r0, [sp] + ldr r0, [sp, #4] + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD14_021DC4A4 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + str r0, [sp, #0x18] + cmp r0, r1 + bhi _021DBBA6 + mov r1, #6 + mul r1, r0 + str r1, [sp, #8] +_021DBB26: + ldr r1, [sp, #0x30] + ldr r0, [sp, #8] + str r1, [sp, #0x1c] + add r4, r1, r0 + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c] + cmp r0, r1 + bhi _021DBB94 +_021DBB36: + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + add r2, r4, #0 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020672BC + cmp r0, #0 + beq _021DBB86 + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r1, r5, #0 + bl MIi_CpuCopy32 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + add r2, r4, #0 + bl FUN_0206B2FC + ldr r0, [sp, #0x10] + add r5, r5, r0 + ldr r0, [sp, #0xc] + add r1, r6, r0 + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + strb r4, [r1, #0xc] + cmp r4, r0 + bne _021DBB86 + mov r0, #0 + strb r0, [r6, #0xa] +_021DBB86: + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x2c] + add r0, r0, #1 + add r4, r4, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + bls _021DBB36 +_021DBB94: + ldr r0, [sp, #8] + ldr r1, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r1 + bls _021DBB26 +_021DBBA6: + ldr r0, [sp, #0xc] + strb r0, [r6, #8] + ldr r1, [sp, #0x28] + mov r0, #6 + ldr r2, [sp, #0x30] + mul r0, r1 + add r0, r2, r0 + strb r0, [r6, #9] + ldr r0, [sp, #4] + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _021DBBC2 + mov r1, #4 + b _021DBBC4 +_021DBBC2: + mov r1, #8 +_021DBBC4: + ldr r0, [sp, #4] + strb r1, [r0, #0x13] + mov r1, #0 + strb r1, [r0, #0x12] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DBBD0 +MOD14_021DBBD0: ; 0x021DBBD0 + add r2, r1, #0 + add r1, #8 + mov r0, #5 + ldrsb r0, [r1, r0] + add r2, #0x14 + strb r0, [r2, #6] + ldrb r0, [r2, #6] + strb r0, [r2, #4] + mov r0, #6 + ldrsb r0, [r1, r0] + strb r0, [r2, #7] + ldrb r0, [r2, #7] + strb r0, [r2, #5] + bx lr + + thumb_func_start MOD14_021DBBEC +MOD14_021DBBEC: ; 0x021DBBEC + add r2, r1, #0 + add r1, #8 + mov r0, #5 + ldrsb r0, [r1, r0] + add r2, #0x14 + strb r0, [r2, #6] + mov r0, #6 + ldrsb r0, [r1, r0] + strb r0, [r2, #7] + bx lr + + thumb_func_start MOD14_021DBC00 +MOD14_021DBC00: ; 0x021DBC00 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r4, r7, #0 + add r6, r7, #0 + add r0, r7, #0 + add r4, #0x14 + add r6, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBC42 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r6, r2] + ldr r0, [r5, r0] + ldr r3, [r4] + mvn r1, r1 + bl FUN_0206B2B0 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r6, r2] + ldr r0, [r5, r0] + mvn r1, r1 + bl FUN_0206B5E4 + add r1, r0, #0 + b _021DBC8A +_021DBC42: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _021DBC56 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4] + bl FUN_0206B900 + b _021DBC70 +_021DBC56: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [r4] + ldr r1, [r5, r1] + bl FUN_02069A64 + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x7c + ldr r1, [r5, r1] + bl FUN_0206B900 +_021DBC70: + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0206B9AC + add r1, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + sub r1, r1, #1 + bl FUN_0206B9B0 + add r1, r0, #0 +_021DBC8A: + add r0, r7, #0 + bl MOD14_021DC1A8 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #1 + strb r0, [r7, #0x13] + strb r0, [r7, #0x12] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBCA0 +MOD14_021DBCA0: ; 0x021DBCA0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r7, r0, #0 + add r6, #0x14 + add r0, r1, #0 + str r1, [sp] + bl MOD14_021DC4F8 + str r0, [sp, #8] + ldrb r0, [r6, #9] + str r0, [sp, #0xc] + bl FUN_020690C8 + str r0, [sp, #4] + ldr r0, [sp] + mov r5, #0 + ldr r4, [r0, #0x14] + ldrb r0, [r6, #8] + cmp r0, #0 + ble _021DBCF4 +_021DBCCA: + add r3, r6, r5 + mov r2, #0xc + ldrsb r3, [r3, r2] + ldr r2, [sp, #0xc] + mov r0, #0x12 + lsl r0, r0, #4 + sub r3, r3, r2 + ldr r2, [sp, #8] + mov r1, #0 + add r2, r2, r3 + ldr r0, [r7, r0] + mvn r1, r1 + add r3, r4, #0 + bl FUN_0206B2B0 + ldr r0, [sp, #4] + add r5, r5, #1 + add r4, r4, r0 + ldrb r0, [r6, #8] + cmp r5, r0 + blt _021DBCCA +_021DBCF4: + ldr r0, [sp] + bl MOD14_021DC3E0 + add r2, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r7, r0] + mvn r1, r1 + bl FUN_0206B5E4 + add r1, r0, #0 + ldr r0, [sp] + bl MOD14_021DC1A8 + add r0, r7, #0 + bl MOD14_021DB934 + mov r1, #0 + ldr r0, [sp] + strb r1, [r6, #8] + ldrb r0, [r0, #0x13] + cmp r0, #4 + bne _021DBD26 + mov r1, #1 +_021DBD26: + ldr r0, [sp] + strb r1, [r0, #0x12] + mov r1, #1 + strb r1, [r0, #0x13] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBD34 +MOD14_021DBD34: ; 0x021DBD34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + str r1, [sp] + add r5, r0, #0 + add r4, #0x14 + bl FUN_020690C4 + add r6, r0, #0 + ldr r0, [sp] + add r2, r6, #0 + ldr r7, [r0, #0x14] + str r0, [sp, #4] + add r0, #8 + str r0, [sp, #4] + add r0, r7, #0 + add r1, r7, r6 + bl MIi_CpuCopy32 + ldr r0, [sp] + ldr r1, [sp] + ldr r0, [r0, #8] + ldr r1, [r1, #0x14] + add r2, r6, #0 + bl MIi_CpuCopy32 + ldr r0, [sp] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBD8E + ldr r2, [sp, #4] + mov r0, #0x12 + mov r3, #7 + lsl r0, r0, #4 + ldrsb r2, [r2, r3] + mov r1, #0 + ldr r0, [r5, r0] + mvn r1, r1 + add r3, r7, r6 + bl FUN_0206B2B0 + mov r0, #0 + strb r0, [r4, #0xb] + b _021DBDC8 +_021DBD8E: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _021DBDA2 + mov r1, #0x1a + lsl r1, r1, #4 + ldr r1, [r5, r1] + add r0, r7, r6 + bl FUN_02069A64 + b _021DBDB0 +_021DBDA2: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r1, [r5, r1] + add r0, r7, r6 + add r2, r6, #0 + bl MIi_CpuCopy32 +_021DBDB0: + mov r3, #0x49 + lsl r3, r3, #2 + ldr r0, [r5, r3] + ldr r1, [sp, #4] + mov r2, #8 + ldrsb r1, [r1, r2] + add r3, #0x7c + ldr r2, [r5, r3] + bl FUN_0206B9DC + mov r0, #1 + strb r0, [r4, #0xb] +_021DBDC8: + ldr r0, [sp] + ldr r1, [r4] + add r2, r5, #0 + bl MOD14_021DBE88 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBDD8 +MOD14_021DBDD8: ; 0x021DBDD8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, [r4, #0x14] + bl FUN_0206B244 + cmp r0, #0 + beq _021DBDFA + mov r0, #1 + strb r0, [r4, #0x13] + add r0, r4, #0 + bl MOD14_021DB934 + mov r0, #1 + pop {r4, pc} +_021DBDFA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE00 +MOD14_021DBE00: ; 0x021DBE00 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x12 + lsl r0, r0, #4 + add r4, r5, #0 + ldr r0, [r5, r0] + ldr r2, [r5, #8] + add r4, #8 + bl FUN_0206B244 + cmp r0, #0 + beq _021DBE30 + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, r0] + bl FUN_0206B938 + add r0, r5, #0 + bl MOD14_021DB934 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DBE30: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DBE34 +MOD14_021DBE34: ; 0x021DBE34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_020669A0 + mov r0, #1 + strb r0, [r4, #0x13] + add r0, r4, #0 + bl MOD14_021DB934 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE4C +MOD14_021DBE4C: ; 0x021DBE4C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #8 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DBE70 + mov r0, #0x12 + mov r2, #7 + lsl r0, r0, #4 + mov r1, #0 + ldrsb r2, [r4, r2] + ldr r0, [r5, r0] + mvn r1, r1 + bl FUN_0206B2FC + b _021DBE7E +_021DBE70: + mov r0, #0x49 + mov r1, #8 + lsl r0, r0, #2 + ldrsb r1, [r4, r1] + ldr r0, [r5, r0] + bl FUN_0206B938 +_021DBE7E: + add r0, r5, #0 + bl MOD14_021DB934 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBE88 +MOD14_021DBE88: ; 0x021DBE88 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DBEAC + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021DBEA8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD14_021DBFF4 +_021DBEA8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021DBEAC +MOD14_021DBEAC: ; 0x021DBEAC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r7, #0 + add r0, r5, #0 + add r6, r2, #0 + add r4, #0x4c + bl FUN_02066A6C + str r0, [sp] + str r5, [r7, #0x4c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #4] + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #6] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0206BB28 + ldrh r1, [r4, #4] + bl FUN_0206BB48 + strh r0, [r4, #8] + add r0, r5, #0 + mov r1, #0xac + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xf] + ldrh r0, [r4, #4] + mov r1, #9 + bl FUN_0206851C + add r7, r0, #0 + add r0, r5, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020672BC + add r2, r0, #0 + ldrh r1, [r4, #4] + add r0, r7, #0 + bl FUN_02068824 + strb r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xb] + add r0, r5, #0 + mov r1, #0xb0 + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #0xb1 + mov r2, #0 + bl FUN_020672BC + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021DBF68 + add r0, r5, #0 + mov r1, #0xaf + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DBF68 + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_020672BC + add r2, r0, #0 + ldrh r1, [r4, #4] + add r0, r7, #0 + bl FUN_02068A44 + strb r0, [r4, #0xe] + b _021DBF6C +_021DBF68: + mov r0, #0xff + strb r0, [r4, #0xe] +_021DBF6C: + ldr r2, [r4, #0x14] + add r0, r5, #0 + mov r1, #0x76 + bl FUN_020672BC + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021DBF8C + mov r0, #0x19 + lsl r0, r0, #4 + ldrh r1, [r4, #4] + ldr r0, [r6, r0] + ldr r2, [r4, #0x18] + bl FUN_0200A8E0 + b _021DBF9A +_021DBF8C: + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x14] + bl FUN_02021A74 + ldr r0, [r4, #0x14] + bl FUN_02021A4C +_021DBF9A: + ldrh r1, [r4, #6] + cmp r1, #0 + beq _021DBFAA + ldr r0, [r4, #0x1c] + mov r2, #9 + bl FUN_0206E768 + b _021DBFB8 +_021DBFAA: + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 +_021DBFB8: + add r0, r5, #0 + bl FUN_0206885C + add r1, r0, #0 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x20] + bl FUN_0200A8E0 + add r0, r5, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020672BC + add r1, r0, #0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x24] + bl FUN_0200A8E0 + add r0, r7, #0 + bl FUN_02068640 + ldr r1, [sp] + add r0, r5, #0 + bl FUN_02066A94 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DBFF4 +MOD14_021DBFF4: ; 0x021DBFF4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xa4 + add r5, r2, #0 + ldrb r2, [r0] + str r1, [sp] + mov r0, #0x30 + add r6, r7, #0 + add r1, r7, #0 + mul r0, r2 + add r1, #0xac + ldr r2, [sp] + add r6, #0x4c + add r4, r1, r0 + str r2, [r1, r0] + ldrh r0, [r6, #4] + strh r0, [r4, #4] + ldrb r0, [r6, #0xf] + strb r0, [r4, #6] + ldrb r0, [r6, #0xa] + strh r0, [r4, #8] + ldrb r0, [r4, #6] + cmp r0, #0 + ldr r0, [r4, #0x28] + beq _021DC02E + ldr r1, [r6, #0x18] + bl FUN_02021A74 + b _021DC034 +_021DC02E: + ldr r1, [r6, #0x14] + bl FUN_02021A74 +_021DC034: + ldr r0, [r4, #0x2c] + ldr r1, [r6, #0x20] + bl FUN_02021A74 + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [sp] + ldr r1, [r5, r1] + bl FUN_02069A64 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_020669D4 + add r6, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xa] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa4 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xc] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xe] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa7 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa8 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x12] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x14] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x13 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x16] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x14 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x18] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x15 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1a] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x16 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1c] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x17 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x1e] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x36 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x20] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x37 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x22] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x38 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x24] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x39 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x26] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #7] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02066A20 + add r0, r7, #0 + add r0, #0xa4 + ldrb r0, [r0] + mov r1, #1 + add r0, r7, r0 + add r0, #0xa6 + strb r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DC170 +MOD14_021DC170: ; 0x021DC170 + add r1, r0, #0 + add r1, #0xa4 + ldrb r2, [r1] + mov r1, #1 + add r0, #0xa4 + eor r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DC180 +MOD14_021DC180: ; 0x021DC180 + add r1, r0, #0 + add r1, #0xa5 + ldrb r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xa5 + strb r2, [r1] + add r1, r0, #0 + add r1, #0xa5 + ldrb r1, [r1] + cmp r1, #3 + blo _021DC19E + mov r1, #0 + add r0, #0xa5 + strb r1, [r0] +_021DC19E: + bx lr + + thumb_func_start MOD14_021DC1A0 +MOD14_021DC1A0: ; 0x021DC1A0 + add r0, #0xa8 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC1A8 +MOD14_021DC1A8: ; 0x021DC1A8 + str r1, [r0, #0x4c] + bx lr + + thumb_func_start MOD14_021DC1AC +MOD14_021DC1AC: ; 0x021DC1AC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r0, #0x96 + ldrb r1, [r0] + add r2, r4, #0 + add r0, sp, #0 + add r2, #0x4c + strb r1, [r0] + strb r1, [r2, #0xb] + ldr r0, [r4, #0x4c] + mov r1, #0xb + add r2, sp, #0 + bl FUN_02067960 + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC1E2 + add r0, r4, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC1E2 + bl FUN_02022830 +_021DC1E2: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC1E8 +MOD14_021DC1E8: ; 0x021DC1E8 + push {r0, r1, r2, r3} + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, sp, #0x18 + add r4, r5, #0 + ldrh r1, [r0, #4] + add r4, #0x4c + add r6, r2, #0 + strh r1, [r4, #6] + cmp r1, #0 + beq _021DC20A + ldr r0, [r4, #0x1c] + mov r2, #9 + bl FUN_0206E768 + b _021DC218 +_021DC20A: + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [r4, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 +_021DC218: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC24A + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC24A + add r0, r5, #0 + bl MOD14_021DC3E0 + add r2, r0, #0 + add r0, sp, #0x1c + str r0, [sp] + mov r0, #0x12 + lsl r0, r0, #4 + mov r1, #0 + ldr r0, [r6, r0] + mvn r1, r1 + mov r3, #6 + bl FUN_0206B598 + b _021DC254 +_021DC24A: + ldr r0, [r4] + mov r1, #6 + add r2, sp, #0x1c + bl FUN_02067960 +_021DC254: + ldr r0, [r4] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + ldr r1, _021DC274 ; =0x000001ED + cmp r0, r1 + bne _021DC26A + ldr r0, [r4] + bl FUN_02069ECC +_021DC26A: + add sp, #4 + pop {r3, r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .align 2, 0 +_021DC274: .word 0x000001ED + + thumb_func_start MOD14_021DC278 +MOD14_021DC278: ; 0x021DC278 + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + add r1, r0, #0 + add r1, #0x40 + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x40 + strb r3, [r2] + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + cmp r2, #0x12 + blo _021DC298 + mov r2, #0 + strb r2, [r1] +_021DC298: + ldr r3, _021DC2A0 ; =MOD14_021DB580 + ldr r0, [r0] + bx r3 + nop +_021DC2A0: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2A4 +MOD14_021DC2A4: ; 0x021DC2A4 + add r2, r0, #0 + add r2, #0x40 + ldrb r2, [r2] + add r1, r0, #0 + add r1, #0x40 + cmp r2, #0 + beq _021DC2B6 + sub r2, r2, #1 + b _021DC2B8 +_021DC2B6: + mov r2, #0x11 +_021DC2B8: + ldr r3, _021DC2C0 ; =MOD14_021DB580 + strb r2, [r1] + ldr r0, [r0] + bx r3 + .align 2, 0 +_021DC2C0: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2C4 +MOD14_021DC2C4: ; 0x021DC2C4 + add r3, r0, #0 + add r2, r0, #0 + add r2, #0x40 + strb r1, [r2] + add r3, #0x40 + add r1, r3, #0 + ldr r3, _021DC2D8 ; =MOD14_021DB580 + ldr r0, [r0] + bx r3 + nop +_021DC2D8: .word MOD14_021DB580 + + thumb_func_start MOD14_021DC2DC +MOD14_021DC2DC: ; 0x021DC2DC + add r0, #0x98 + str r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC2E4 +MOD14_021DC2E4: ; 0x021DC2E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r2, r5, #0 + add r2, #0x4c + add r4, r1, #0 + ldrh r1, [r2, #6] + ldr r0, _021DC30C ; =0x00000112 + strh r1, [r5, r0] + add r0, #0x7a + ldr r0, [r4, r0] + ldr r2, [r2, #0x1c] + mov r1, #0x14 + bl FUN_0200A8E0 + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + bl MOD14_021DC1E8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DC30C: .word 0x00000112 + + thumb_func_start MOD14_021DC310 +MOD14_021DC310: ; 0x021DC310 + ldr r1, _021DC318 ; =0x00000112 + mov r2, #0 + strh r2, [r0, r1] + bx lr + .align 2, 0 +_021DC318: .word 0x00000112 + + thumb_func_start MOD14_021DC31C +MOD14_021DC31C: ; 0x021DC31C + push {r4, lr} + ldr r3, _021DC330 ; =0x00000112 + add r2, r1, #0 + ldrh r1, [r0, r3] + mov r4, #0 + strh r4, [r0, r3] + bl MOD14_021DC1E8 + pop {r4, pc} + nop +_021DC330: .word 0x00000112 + + thumb_func_start MOD14_021DC334 +MOD14_021DC334: ; 0x021DC334 + push {r4, lr} + add r3, r0, #0 + add r3, #0x52 + ldr r4, _021DC34C ; =0x00000112 + add r2, r1, #0 + ldrh r1, [r0, r4] + ldrh r3, [r3] + strh r3, [r0, r4] + bl MOD14_021DC1E8 + pop {r4, pc} + nop +_021DC34C: .word 0x00000112 + + thumb_func_start MOD14_021DC350 +MOD14_021DC350: ; 0x021DC350 + add r0, #0x9c + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC358 +MOD14_021DC358: ; 0x021DC358 + add r0, #0x9e + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC360 +MOD14_021DC360: ; 0x021DC360 + add r0, #0x9d + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC368 +MOD14_021DC368: ; 0x021DC368 + add r0, #0xa0 + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC370 +MOD14_021DC370: ; 0x021DC370 + cmp r1, #0 + bne _021DC37C + mov r1, #0 + add r0, #0x4a + strh r1, [r0] + bx lr +_021DC37C: + add r2, r0, #0 + add r2, #0x4a + ldrh r3, [r2] + mov r2, #1 + sub r1, r1, #1 + lsl r2, r1 + add r1, r3, #0 + eor r1, r2 + add r0, #0x4a + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC394 +MOD14_021DC394: ; 0x021DC394 + add r1, r0, #0 + add r1, #0x49 + ldrb r2, [r1] + mov r1, #1 + add r0, #0x49 + eor r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DC3A4 +MOD14_021DC3A4: ; 0x021DC3A4 + mov r1, #0x63 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC3AC +MOD14_021DC3AC: ; 0x021DC3AC + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC3B4 +MOD14_021DC3B4: ; 0x021DC3B4 + mov r1, #0x69 + lsl r1, r1, #2 + ldr r3, _021DC3C0 ; =0x02025085 + ldr r0, [r0, r1] + bx r3 + nop +_021DC3C0: .word 0x02025085 + + thumb_func_start MOD14_021DC3C4 +MOD14_021DC3C4: ; 0x021DC3C4 + add r0, #0x48 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3CC +MOD14_021DC3CC: ; 0x021DC3CC + ldrb r0, [r0, #0xc] + bx lr + + thumb_func_start MOD14_021DC3D0 +MOD14_021DC3D0: ; 0x021DC3D0 + mov r1, #0xd + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3D8 +MOD14_021DC3D8: ; 0x021DC3D8 + mov r1, #0xe + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3E0 +MOD14_021DC3E0: ; 0x021DC3E0 + mov r1, #0xf + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3E8 +MOD14_021DC3E8: ; 0x021DC3E8 + mov r1, #0x10 + ldrsb r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC3F0 +MOD14_021DC3F0: ; 0x021DC3F0 + ldrb r0, [r0, #0x12] + bx lr + + thumb_func_start MOD14_021DC3F4 +MOD14_021DC3F4: ; 0x021DC3F4 + ldrb r0, [r0, #0x13] + bx lr + + thumb_func_start MOD14_021DC3F8 +MOD14_021DC3F8: ; 0x021DC3F8 + ldrb r1, [r0, #0x13] + cmp r1, #0 + beq _021DC402 + ldrb r0, [r0, #0x1f] + bx lr +_021DC402: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC408 +MOD14_021DC408: ; 0x021DC408 + ldrb r1, [r0, #0x13] + cmp r1, #2 + beq _021DC412 + cmp r1, #4 + bne _021DC416 +_021DC412: + mov r0, #1 + bx lr +_021DC416: + ldrb r0, [r0, #0x12] + cmp r0, #0 + beq _021DC420 + mov r0, #1 + bx lr +_021DC420: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021DC424 +MOD14_021DC424: ; 0x021DC424 + add r0, #0x40 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC42C +MOD14_021DC42C: ; 0x021DC42C + add r0, #0x4c + bx lr + + thumb_func_start MOD14_021DC430 +MOD14_021DC430: ; 0x021DC430 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC408 + cmp r0, #0 + beq _021DC442 + add r4, #0x52 + ldrh r0, [r4] + pop {r4, pc} +_021DC442: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC448 +MOD14_021DC448: ; 0x021DC448 + add r0, #0x40 + bx lr + + thumb_func_start MOD14_021DC44C +MOD14_021DC44C: ; 0x021DC44C + ldr r0, [r0] + bx lr + + thumb_func_start MOD14_021DC450 +MOD14_021DC450: ; 0x021DC450 + mov r1, #0x43 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DC458 +MOD14_021DC458: ; 0x021DC458 + ldr r0, [r0, #0x4c] + bx lr + + thumb_func_start MOD14_021DC45C +MOD14_021DC45C: ; 0x021DC45C + add r0, #0x57 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC464 +MOD14_021DC464: ; 0x021DC464 + add r0, #0x98 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC46C +MOD14_021DC46C: ; 0x021DC46C + mov r1, #0xa0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC474 +MOD14_021DC474: ; 0x021DC474 + add r0, #0x9e + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC47C +MOD14_021DC47C: ; 0x021DC47C + add r0, #0x9d + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC484 +MOD14_021DC484: ; 0x021DC484 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + beq _021DC496 + add r4, #0x4a + ldrh r0, [r4] + pop {r4, pc} +_021DC496: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DC49C +MOD14_021DC49C: ; 0x021DC49C + add r0, #0x49 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4A4 +MOD14_021DC4A4: ; 0x021DC4A4 + push {r3, r4, r5, r6} + add r0, #0x14 + ldrb r6, [r0, #6] + ldrb r5, [r0, #4] + ldr r4, [sp, #0x10] + cmp r5, r6 + bhi _021DC4B8 + str r5, [r1] + ldrb r1, [r0, #6] + b _021DC4BC +_021DC4B8: + str r6, [r1] + ldrb r1, [r0, #4] +_021DC4BC: + str r1, [r2] + ldrb r2, [r0, #7] + ldrb r1, [r0, #5] + cmp r1, r2 + bhi _021DC4D0 + str r1, [r3] + ldrb r0, [r0, #7] + str r0, [r4] + pop {r3, r4, r5, r6} + bx lr +_021DC4D0: + str r2, [r3] + ldrb r0, [r0, #5] + str r0, [r4] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4DC +MOD14_021DC4DC: ; 0x021DC4DC + add r0, #0x14 + ldrb r2, [r0, #4] + ldrb r1, [r0, #6] + cmp r2, r1 + bne _021DC4F2 + ldrb r1, [r0, #5] + ldrb r0, [r0, #7] + cmp r1, r0 + bne _021DC4F2 + mov r0, #1 + bx lr +_021DC4F2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC4F8 +MOD14_021DC4F8: ; 0x021DC4F8 + push {r3, r4} + add r1, r0, #0 + add r1, #0x14 + mov r2, #0xd + mov r3, #0xe + ldrsb r2, [r0, r2] + ldrsb r0, [r0, r3] + ldrb r4, [r1, #4] + ldrb r3, [r1, #6] + cmp r3, r4 + bls _021DC512 + sub r3, r3, r4 + sub r2, r2, r3 +_021DC512: + ldrb r3, [r1, #5] + ldrb r1, [r1, #7] + cmp r1, r3 + bls _021DC51E + sub r1, r1, r3 + sub r0, r0, r1 +_021DC51E: + mov r1, #6 + mul r1, r0 + add r0, r2, r1 + pop {r3, r4} + bx lr + + thumb_func_start MOD14_021DC528 +MOD14_021DC528: ; 0x021DC528 + add r0, #0x14 + add r2, r0, r1 + mov r1, #0xc + ldrsb r1, [r2, r1] + ldrb r0, [r0, #9] + sub r0, r1, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC538 +MOD14_021DC538: ; 0x021DC538 + ldr r1, _021DC540 ; =0x00000112 + ldrh r0, [r0, r1] + bx lr + nop +_021DC540: .word 0x00000112 + + thumb_func_start MOD14_021DC544 +MOD14_021DC544: ; 0x021DC544 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DC538 + cmp r0, #0 + bne _021DC556 + add r0, r4, #0 + bl MOD14_021DC430 +_021DC556: + pop {r4, pc} + + thumb_func_start MOD14_021DC558 +MOD14_021DC558: ; 0x021DC558 + add r0, #0xa4 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC560 +MOD14_021DC560: ; 0x021DC560 + add r0, #0xa5 + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC568 +MOD14_021DC568: ; 0x021DC568 + mov r2, #0x30 + add r0, #0xac + mul r2, r1 + add r0, r0, r2 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC574 +MOD14_021DC574: ; 0x021DC574 + add r0, r0, r1 + add r0, #0xa6 + ldrb r0, [r0] + bx lr + + thumb_func_start MOD14_021DC57C +MOD14_021DC57C: ; 0x021DC57C + add r0, #0xa8 + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC584 +MOD14_021DC584: ; 0x021DC584 + add r0, #0x5b + ldrb r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DC58C +MOD14_021DC58C: ; 0x021DC58C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DC3F4 + cmp r0, #1 + bne _021DC5B2 + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC5C4 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5B2: + ldrb r0, [r5, #0x1f] + cmp r0, #0 + bne _021DC5C4 + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5C4: + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020671BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC5D0 +MOD14_021DC5D0: ; 0x021DC5D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021DC5EC + ldr r0, [r5, #0x4c] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020672BC + pop {r4, r5, r6, pc} +_021DC5EC: + ldr r0, [r5, #8] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_020671BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC5F8 +MOD14_021DC5F8: ; 0x021DC5F8 + push {r3, r4, r5, r6} + ldr r4, _021DC660 ; =MOD14_021DC6C0 + add r6, r0, #0 + str r4, [r0, #0x30] + mov r4, #0 + str r4, [r0, #0x1c] + str r1, [r0, #0xc] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + str r2, [r0, #0x18] + str r1, [r0, #4] + add r4, r0, #0 + str r2, [r0, #8] + lsl r2, r2, #0x18 + mov r5, #0xfe + add r4, #0x28 + strb r5, [r4] + lsl r4, r1, #0x18 + lsr r4, r4, #0x18 + add r6, #0x29 + strb r4, [r6] + add r6, r0, #0 + lsr r2, r2, #0x18 + add r6, #0x2a + strb r2, [r6] + add r6, r0, #0 + add r6, #0x2b + strb r3, [r6] + add r3, r0, #0 + add r3, #0x2c + strb r5, [r3] + add r3, r0, #0 + add r3, #0x2d + strb r4, [r3] + add r3, r0, #0 + add r3, #0x2e + strb r2, [r3] + add r2, r0, #0 + add r2, #0x2f + ldr r3, [sp, #0x10] + cmp r1, #0x80 + strb r3, [r2] + bge _021DC656 + mov r1, #1 + str r1, [r0, #0x24] + pop {r3, r4, r5, r6} + bx lr +_021DC656: + sub r5, #0xff + str r5, [r0, #0x24] + pop {r3, r4, r5, r6} + bx lr + nop +_021DC660: .word MOD14_021DC6C0 + + thumb_func_start MOD14_021DC664 +MOD14_021DC664: ; 0x021DC664 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0x2c + bl FUN_02020A40 + cmp r0, #1 + bne _021DC6A4 + add r0, r5, #0 + add r0, #0x28 + bl FUN_02020A40 + cmp r0, #0 + bne _021DC6A4 + ldr r0, [r5, #0x1c] + mov r4, #1 + cmp r0, #0 + bne _021DC68C + add r6, r4, #0 + b _021DC68E +_021DC68C: + mov r6, #0 +_021DC68E: + add r0, sp, #4 + add r1, sp, #0 + bl FUN_02020AB0 + cmp r0, #0 + beq _021DC6A8 + ldr r0, [sp, #4] + str r0, [r5, #0x14] + ldr r0, [sp] + str r0, [r5, #0x18] + b _021DC6A8 +_021DC6A4: + mov r4, #0 + add r6, r4, #0 +_021DC6A8: + str r4, [r5, #0x1c] + ldr r3, [r5, #0x30] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + blx r3 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DC6B8 +MOD14_021DC6B8: ; 0x021DC6B8 + mov r2, #0 + str r2, [r0] + str r1, [r0, #0x30] + bx lr + + thumb_func_start MOD14_021DC6C0 +MOD14_021DC6C0: ; 0x021DC6C0 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021DC6E8 + cmp r2, #0 + beq _021DC6E8 + ldr r1, [r4, #0x14] + str r1, [r4, #4] + ldr r2, [r4, #0x18] + str r2, [r4, #8] + ldr r1, [r4, #4] + bl MOD14_021DC720 + strh r0, [r4, #0x20] + ldr r1, _021DC6EC ; =MOD14_021DC6F0 + add r0, r4, #0 + bl MOD14_021DC6B8 + mov r0, #1 + pop {r4, pc} +_021DC6E8: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DC6EC: .word MOD14_021DC6F0 + + thumb_func_start MOD14_021DC6F0 +MOD14_021DC6F0: ; 0x021DC6F0 + push {r3, lr} + cmp r1, #0 + bne _021DC700 + ldr r1, _021DC704 ; =MOD14_021DC6C0 + bl MOD14_021DC6B8 + mov r0, #3 + pop {r3, pc} +_021DC700: + mov r0, #2 + pop {r3, pc} + .align 2, 0 +_021DC704: .word MOD14_021DC6C0 + + thumb_func_start MOD14_021DC708 +MOD14_021DC708: ; 0x021DC708 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + bl MOD14_021DC720 + add r2, r0, #0 + ldrh r1, [r4, #0x20] + add r0, r4, #0 + bl MOD14_021DC738 + pop {r4, pc} + + thumb_func_start MOD14_021DC720 +MOD14_021DC720: ; 0x021DC720 + add r3, r0, #0 + ldr r0, [r3, #0x10] + sub r0, r2, r0 + ldr r2, [r3, #0xc] + ldr r3, _021DC734 ; =0x020C5668 + sub r1, r1, r2 + lsl r0, r0, #0xc + lsl r1, r1, #0xc + bx r3 + nop +_021DC734: .word 0x020C5668 + + thumb_func_start MOD14_021DC738 +MOD14_021DC738: ; 0x021DC738 + push {r4, r5} + sub r2, r2, r1 + bpl _021DC746 + mov r4, #0 + mvn r4, r4 + mul r2, r4 + b _021DC748 +_021DC746: + mov r4, #1 +_021DC748: + ldr r5, _021DC768 ; =0x021E6278 + mov r3, #0 +_021DC74C: + ldrh r1, [r5] + cmp r2, r1 + blt _021DC75A + add r3, r3, #1 + add r5, r5, #2 + cmp r3, #2 + blo _021DC74C +_021DC75A: + ldr r1, [r0, #0x24] + add r0, r3, #0 + mul r0, r4 + mul r0, r1 + pop {r4, r5} + bx lr + nop +_021DC768: .word 0x021E6278 + + thumb_func_start MOD14_021DC76C +MOD14_021DC76C: ; 0x021DC76C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r7, r0, #0 + ldr r1, _021DC9C8 ; =0x0000B3B4 + mov r0, #0xa + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _021DC79A + mov r0, #0x16 + lsl r0, r0, #4 + str r5, [r4, r0] + mov r0, #0xa + bl FUN_02016B94 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _021DC79C +_021DC79A: + b _021DC9C2 +_021DC79C: + mov r0, #0 + add r1, r0, #0 + mov r5, #1 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #1 + lsl r1, r1, #0x1a + ldr r0, [r1] + ldr r3, _021DC9CC ; =0xFFFFE0FF + and r0, r3 + str r0, [r1] + ldr r0, _021DC9D0 ; =0x04001000 + ldr r2, [r0] + and r2, r3 + str r2, [r0] + ldr r3, [r1] + ldr r2, _021DC9D4 ; =0xFFCFFFEF + and r3, r2 + ldr r2, _021DC9D8 ; =0x00100010 + orr r2, r3 + str r2, [r1] + ldr r2, [r0] + ldr r1, _021DC9D4 ; =0xFFCFFFEF + and r2, r1 + mov r1, #0x10 + orr r1, r2 + str r1, [r0] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r2, #0x80 + str r2, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r1, #0xa + str r1, [sp, #0x10] + add r1, r2, #0 + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0x1c + mov r2, #0xa + bl FUN_02008C9C + str r0, [r4, #0x18] + add r0, r4, #0 + mov r2, #6 + add r0, #0x1c + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r0, #0x51 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_020B19DC + mov r0, #0xa + str r0, [sp] + mov r0, #0x51 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x1a + add r2, r5, #0 + mov r3, #0 + bl FUN_02006A8C + mov r0, #0 + mov r1, #0xa + bl FUN_02002C84 + mov r0, #0xa + bl FUN_02006D98 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r1, #0 + add r2, r4, #0 + add r0, r1, #0 +_021DC854: + add r1, r1, #1 + str r0, [r2, #8] + add r2, r2, #4 + cmp r1, #4 + blo _021DC854 + bl MOD14_021DDEE8 + mov r2, #0x59 + lsl r2, r2, #2 + str r4, [r7] + add r0, r4, r2 + sub r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r1, r4, #0 + bl MOD14_021E078C + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + mov r0, #0x43 + ldr r2, [r4, r3] + sub r3, r3, #4 + lsl r0, r0, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021DDF70 + mov r2, #0x16 + and r5, r0 + ldr r0, _021DC9DC ; =0x00005DC0 + lsl r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021DF07C + mov r2, #0x16 + and r5, r0 + ldr r0, _021DC9E0 ; =0x00006558 + lsl r2, r2, #4 + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E0C7C + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + str r0, [sp, #4] + lsl r3, r3, #4 + ldr r0, _021DC9E4 ; =0x000065A0 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E0D90 + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD14_021DC3AC + str r0, [sp, #0x14] + add r0, r6, #0 + bl MOD14_021DC3B4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + ldr r1, [sp, #0x14] + str r7, [sp, #4] + str r1, [sp, #8] + str r0, [sp, #0xc] + lsl r3, r3, #4 + ldr r0, _021DC9E8 ; =0x000065F4 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E1750 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9EC ; =0x0000662C + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E1D38 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F0 ; =0x0000B22C + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E2A38 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F4 ; =0x0000B3A4 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E33C8 + and r5, r0 + ldr r0, [r4, #0x18] + mov r3, #0x16 + str r0, [sp] + lsl r3, r3, #4 + ldr r0, _021DC9F8 ; =0x0000B3A8 + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E4828 + and r5, r0 + add r0, r6, #0 + bl MOD14_021DC3A4 + ldr r1, [r4, #0x18] + mov r3, #0x16 + str r1, [sp] + str r0, [sp, #4] + lsl r3, r3, #4 + ldr r0, _021DC9FC ; =0x0000B3AC + ldr r2, [r4, r3] + sub r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, r0 + add r1, r4, #0 + bl MOD14_021E5044 + and r5, r0 + ldr r0, _021DCA00 ; =0x0000B3B0 + add r1, r4, #0 + str r6, [r4, r0] + ldr r0, _021DCA04 ; =MOD14_021DCA0C + mov r2, #2 + bl FUN_0200CA44 + str r0, [r4] + ldr r0, _021DCA08 ; =MOD14_021DCBFC + add r1, r4, #0 + mov r2, #1 + bl MOD14_021DDD40 + str r0, [r4, #4] + add sp, #0x18 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DC9C2: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC9C8: .word 0x0000B3B4 +_021DC9CC: .word 0xFFFFE0FF +_021DC9D0: .word 0x04001000 +_021DC9D4: .word 0xFFCFFFEF +_021DC9D8: .word 0x00100010 +_021DC9DC: .word 0x00005DC0 +_021DC9E0: .word 0x00006558 +_021DC9E4: .word 0x000065A0 +_021DC9E8: .word 0x000065F4 +_021DC9EC: .word 0x0000662C +_021DC9F0: .word 0x0000B22C +_021DC9F4: .word 0x0000B3A4 +_021DC9F8: .word 0x0000B3A8 +_021DC9FC: .word 0x0000B3AC +_021DCA00: .word 0x0000B3B0 +_021DCA04: .word MOD14_021DCA0C +_021DCA08: .word MOD14_021DCBFC + + thumb_func_start MOD14_021DCA0C +MOD14_021DCA0C: ; 0x021DCA0C + push {r4, lr} + add r4, r1, #0 + bl MOD14_021DDEF4 + bl G3X_ResetMtxStack + bl G3X_ResetMtxStack_2 + bl FUN_020B02C8 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + ldr r0, _021DCA34 ; =0x04000540 + mov r1, #0 + str r1, [r0] + pop {r4, pc} + nop +_021DCA34: .word 0x04000540 + + thumb_func_start MOD14_021DCA38 +MOD14_021DCA38: ; 0x021DCA38 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + bl FUN_0200CAB4 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, _021DCB08 ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E50EC + ldr r0, _021DCB0C ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4880 + ldr r0, _021DCB10 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E34C0 + ldr r0, _021DCB14 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2AC8 + ldr r0, _021DCB18 ; =0x0000662C + add r0, r4, r0 + bl MOD14_021E1F20 + ldr r0, _021DCB1C ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E17C4 + ldr r0, _021DCB20 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0E44 + ldr r0, _021DCB24 ; =0x00006558 + add r0, r4, r0 + bl MOD14_021E0D3C + ldr r0, _021DCB28 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF3A8 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DDFEC + mov r0, #0x59 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD14_021E089C + ldr r0, [r4, #0x18] + bl FUN_0201FD58 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020178A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_020178A0 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020072E8 + mov r0, #0 + bl FUN_02002CC0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_02009FA0 + pop {r4, pc} + .align 2, 0 +_021DCB08: .word 0x0000B3AC +_021DCB0C: .word 0x0000B3A8 +_021DCB10: .word 0x0000B3A4 +_021DCB14: .word 0x0000B22C +_021DCB18: .word 0x0000662C +_021DCB1C: .word 0x000065F4 +_021DCB20: .word 0x000065A0 +_021DCB24: .word 0x00006558 +_021DCB28: .word 0x00005DC0 + + thumb_func_start MOD14_021DCB2C +MOD14_021DCB2C: ; 0x021DCB2C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #0x34 + bhs _021DCB88 + mov r4, #0 + add r1, r5, #0 +_021DCB3A: + ldr r0, [r1, #8] + cmp r0, #0 + bne _021DCB7E + ldr r0, _021DCB90 ; =0x021E63D0 + lsl r7, r6, #3 + ldr r0, [r0, r7] + str r0, [sp] + ldr r1, [sp] + mov r0, #0xa + add r1, #0x14 + bl FUN_02016998 + add r1, r0, #0 + beq _021DCB78 + str r6, [r1] + strh r4, [r1, #4] + mov r0, #0 + strh r0, [r1, #6] + ldr r0, [sp] + str r5, [r1, #0xc] + add r0, r1, r0 + str r0, [r1, #0x10] + ldr r0, _021DCB94 ; =0x021E63CC + mov r2, #1 + ldr r0, [r0, r7] + bl FUN_0200CA44 + lsl r1, r4, #2 + add r1, r5, r1 + str r0, [r1, #8] + pop {r3, r4, r5, r6, r7, pc} +_021DCB78: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021DCB7E: + add r4, r4, #1 + add r1, r1, #4 + cmp r4, #4 + blo _021DCB3A + pop {r3, r4, r5, r6, r7, pc} +_021DCB88: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} + nop +_021DCB90: .word 0x021E63D0 +_021DCB94: .word 0x021E63CC + + thumb_func_start MOD14_021DCB98 +MOD14_021DCB98: ; 0x021DCB98 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021DCBA0: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021DCBB4 + bl FUN_0201B6C8 + ldr r0, [r0] + cmp r0, r6 + bne _021DCBB4 + mov r0, #0 + pop {r4, r5, r6, pc} +_021DCBB4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021DCBA0 + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DCBC0 +MOD14_021DCBC0: ; 0x021DCBC0 + mov r2, #0 +_021DCBC2: + ldr r1, [r0, #8] + cmp r1, #0 + beq _021DCBCC + mov r0, #0 + bx lr +_021DCBCC: + add r2, r2, #1 + add r0, r0, #4 + cmp r2, #4 + blt _021DCBC2 + mov r0, #1 + bx lr + + thumb_func_start MOD14_021DCBD8 +MOD14_021DCBD8: ; 0x021DCBD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #4] + ldr r4, [r5, #0xc] + lsl r0, r0, #2 + add r0, r4, r0 + ldr r0, [r0, #8] + bl FUN_0200CAB4 + ldrh r0, [r5, #4] + mov r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #8] + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DCBFC +MOD14_021DCBFC: ; 0x021DCBFC + push {r4, lr} + ldr r0, _021DCC20 ; =0x000065A0 + add r4, r1, #0 + add r0, r4, r0 + bl MOD14_021E0EE4 + ldr r0, [r4, #0x18] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _021DCC24 ; =0x027E0000 + ldr r1, _021DCC28 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021DCC20: .word 0x000065A0 +_021DCC24: .word 0x027E0000 +_021DCC28: .word 0x00003FF8 + + thumb_func_start MOD14_021DCC2C +MOD14_021DCC2C: ; 0x021DCC2C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrh r0, [r5, #6] + cmp r0, #0 + beq _021DCC44 + cmp r0, #1 + beq _021DCC7E + pop {r4, r5, r6, pc} +_021DCC44: + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDA38 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDB50 + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021DDCF0 + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DCC76 + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0EF4 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DCC76: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} +_021DCC7E: + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E0F28 + cmp r0, #0 + beq _021DCC98 + ldr r0, _021DCC9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E13F0 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCC98: + pop {r4, r5, r6, pc} + nop +_021DCC9C: .word 0x000065A0 + + thumb_func_start MOD14_021DCCA0 +MOD14_021DCCA0: ; 0x021DCCA0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCCB4 + cmp r0, #1 + beq _021DCCEA + add sp, #0xc + pop {r3, r4, pc} +_021DCCB4: + ldr r0, _021DCCFC ; =0x0000060D + bl FUN_020054C8 + mov r0, #0xa + str r0, [sp] + ldr r0, _021DCD00 ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #6 + bl G2x_SetBlendAlpha_ + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCCEA: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCCF8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCCF8: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021DCCFC: .word 0x0000060D +_021DCD00: .word 0x04000050 + + thumb_func_start MOD14_021DCD04 +MOD14_021DCD04: ; 0x021DCD04 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCD18 + cmp r0, #1 + beq _021DCD48 + add sp, #0xc + pop {r3, r4, pc} +_021DCD18: + mov r0, #0xa + str r0, [sp] + ldr r0, _021DCD5C ; =0x04000050 + mov r1, #0 + mov r2, #0x3f + mov r3, #6 + bl G2x_SetBlendAlpha_ + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCD48: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCD56 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCD56: + add sp, #0xc + pop {r3, r4, pc} + nop +_021DCD5C: .word 0x04000050 + + thumb_func_start MOD14_021DCD60 +MOD14_021DCD60: ; 0x021DCD60 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DCD74 + cmp r0, #1 + beq _021DCD96 + add sp, #0xc + pop {r3, r4, pc} +_021DCD74: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DCD96: + bl FUN_0200E308 + cmp r0, #0 + beq _021DCDA4 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCDA4: + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD14_021DCDA8 +MOD14_021DCDA8: ; 0x021DCDA8 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r0, #0x16 + ldr r5, [r4, #0xc] + lsl r0, r0, #4 + ldr r6, [r5, r0] + ldrh r0, [r4, #6] + cmp r0, #4 + bhi _021DCE5E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DCDC6: ; jump table + .short _021DCDD0 - _021DCDC6 - 2 ; case 0 + .short _021DCDDE - _021DCDC6 - 2 ; case 1 + .short _021DCDF0 - _021DCDC6 - 2 ; case 2 + .short _021DCE30 - _021DCDC6 - 2 ; case 3 + .short _021DCE4C - _021DCDC6 - 2 ; case 4 +_021DCDD0: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4DF8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCDDE: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4E24 + cmp r0, #0 + beq _021DCE5E + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCDF0: + mov r0, #0x43 + add r1, r6, #0 + lsl r0, r0, #4 + add r1, #0x40 + ldrb r0, [r5, r0] + ldrb r1, [r1] + bl MOD14_021DDD1C + add r7, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r1, r6, #0 + add r0, r5, r0 + add r1, #0x40 + add r2, r7, #0 + mov r3, #1 + bl MOD14_021DE0C4 + mov r0, #0x43 + lsl r0, r0, #4 + add r6, #0x40 + add r0, r5, r0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD14_021DE2E8 + ldr r0, _021DCE64 ; =0x000005DC + bl FUN_020054C8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCE30: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r5, r0 + bl MOD14_021DE394 + cmp r0, #0 + beq _021DCE5E + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4BE0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DCE4C: + ldr r0, _021DCE60 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4C40 + cmp r0, #0 + beq _021DCE5E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCE5E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCE60: .word 0x0000B3A8 +_021DCE64: .word 0x000005DC + + thumb_func_start MOD14_021DCE68 +MOD14_021DCE68: ; 0x021DCE68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DCE7A + cmp r0, #1 + beq _021DCE98 + pop {r3, r4, r5, pc} +_021DCE7A: + ldr r0, _021DCEB8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _021DCEBC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF484 + ldr r0, _021DCEC0 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4BE0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCE98: + ldr r0, _021DCEBC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF59C + cmp r0, #0 + beq _021DCEB6 + ldr r0, _021DCEC0 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4C40 + cmp r0, #0 + beq _021DCEB6 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCEB6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DCEB8: .word 0x000005DC +_021DCEBC: .word 0x00005DC0 +_021DCEC0: .word 0x0000B3A8 + + thumb_func_start MOD14_021DCEC4 +MOD14_021DCEC4: ; 0x021DCEC4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3C4 + cmp r0, #4 + ldrh r0, [r5, #6] + beq _021DCF08 + cmp r0, #0 + beq _021DCEE4 + cmp r0, #1 + beq _021DCEF4 + pop {r3, r4, r5, pc} +_021DCEE4: + ldr r0, _021DCF38 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1450 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCEF4: + ldr r0, _021DCF38 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1674 + cmp r0, #0 + beq _021DCF34 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} +_021DCF08: + cmp r0, #0 + beq _021DCF12 + cmp r0, #1 + beq _021DCF22 + pop {r3, r4, r5, pc} +_021DCF12: + ldr r0, _021DCF3C ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E526C + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DCF22: + ldr r0, _021DCF3C ; =0x0000B3AC + ldr r0, [r4, r0] + bl MOD14_021E52BC + cmp r0, #0 + beq _021DCF34 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DCF34: + pop {r3, r4, r5, pc} + nop +_021DCF38: .word 0x000065A0 +_021DCF3C: .word 0x0000B3AC + + thumb_func_start MOD14_021DCF40 +MOD14_021DCF40: ; 0x021DCF40 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + add r0, r6, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DCF60 + ldr r0, _021DCF94 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFF8C + b _021DCF84 +_021DCF60: + add r0, r6, #0 + bl MOD14_021DC3CC + cmp r0, #0 + beq _021DCF70 + cmp r0, #1 + beq _021DCF7C + b _021DCF84 +_021DCF70: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEF4C + b _021DCF84 +_021DCF7C: + ldr r0, _021DCF98 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E3054 +_021DCF84: + ldr r0, _021DCF9C ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1678 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DCF94: .word 0x00005DC0 +_021DCF98: .word 0x0000B22C +_021DCF9C: .word 0x000065A0 + + thumb_func_start MOD14_021DCFA0 +MOD14_021DCFA0: ; 0x021DCFA0 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DCFB8 ; =0x000065A0 + add r0, r1, r0 + bl MOD14_021E14D0 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DCFB8: .word 0x000065A0 + + thumb_func_start MOD14_021DCFBC +MOD14_021DCFBC: ; 0x021DCFBC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DCFCE + cmp r0, #1 + beq _021DCFDE + pop {r4, pc} +_021DCFCE: + ldr r0, _021DCFF4 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF758 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DCFDE: + ldr r0, _021DCFF4 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF7A0 + cmp r0, #0 + beq _021DCFF0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DCFF0: + pop {r4, pc} + nop +_021DCFF4: .word 0x00005DC0 + + thumb_func_start MOD14_021DCFF8 +MOD14_021DCFF8: ; 0x021DCFF8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD00A + cmp r0, #1 + beq _021DD01A + pop {r4, pc} +_021DD00A: + ldr r0, _021DD030 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF890 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD01A: + ldr r0, _021DD030 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF8C4 + cmp r0, #0 + beq _021DD02C + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD02C: + pop {r4, pc} + nop +_021DD030: .word 0x00005DC0 + + thumb_func_start MOD14_021DD034 +MOD14_021DD034: ; 0x021DD034 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD046 + cmp r0, #1 + beq _021DD056 + pop {r4, pc} +_021DD046: + ldr r0, _021DD06C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF9DC + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD056: + ldr r0, _021DD06C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFA58 + cmp r0, #0 + beq _021DD068 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD068: + pop {r4, pc} + nop +_021DD06C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD070 +MOD14_021DD070: ; 0x021DD070 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD082 + cmp r0, #1 + beq _021DD092 + pop {r4, pc} +_021DD082: + ldr r0, _021DD09C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE28 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD092: + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD09C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD0A0 +MOD14_021DD0A0: ; 0x021DD0A0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD0B6 + cmp r0, #1 + beq _021DD0C6 + cmp r0, #2 + beq _021DD0D6 + pop {r4, pc} +_021DD0B6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2F08 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD0C6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2C7C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD0D6: + ldr r0, _021DD0EC ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2DA4 + cmp r0, #0 + beq _021DD0E8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD0E8: + pop {r4, pc} + nop +_021DD0EC: .word 0x0000B22C + + thumb_func_start MOD14_021DD0F0 +MOD14_021DD0F0: ; 0x021DD0F0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD102 + cmp r0, #1 + beq _021DD112 + pop {r4, pc} +_021DD102: + ldr r0, _021DD128 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE60 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD112: + ldr r0, _021DD128 ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DFE84 + cmp r0, #0 + beq _021DD124 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD124: + pop {r4, pc} + nop +_021DD128: .word 0x00005DC0 + + thumb_func_start MOD14_021DD12C +MOD14_021DD12C: ; 0x021DD12C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD144 + cmp r1, #1 + beq _021DD15C + pop {r3, r4, r5, pc} +_021DD144: + bl MOD14_021DC3E0 + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEDD0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD15C: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEE08 + cmp r0, #0 + beq _021DD170 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD170: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021DD174 +MOD14_021DD174: ; 0x021DD174 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD18C + cmp r1, #1 + beq _021DD1A2 + pop {r3, r4, r5, pc} +_021DD18C: + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021DD1B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2F44 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD1A2: + ldr r0, _021DD1B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2F68 + cmp r0, #0 + beq _021DD1B4 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD1B4: + pop {r3, r4, r5, pc} + nop +_021DD1B8: .word 0x0000B22C + + thumb_func_start MOD14_021DD1BC +MOD14_021DD1BC: ; 0x021DD1BC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD1CE + cmp r0, #1 + beq _021DD1DE + pop {r4, pc} +_021DD1CE: + ldr r0, _021DD1F4 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E26E4 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD1DE: + ldr r0, _021DD1F4 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E27AC + cmp r0, #0 + beq _021DD1F0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD1F0: + pop {r4, pc} + nop +_021DD1F4: .word 0x0000662C + + thumb_func_start MOD14_021DD1F8 +MOD14_021DD1F8: ; 0x021DD1F8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD20A + cmp r0, #1 + beq _021DD21A + pop {r4, pc} +_021DD20A: + ldr r0, _021DD230 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E283C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD21A: + ldr r0, _021DD230 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E2884 + cmp r0, #0 + beq _021DD22C + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD22C: + pop {r4, pc} + nop +_021DD230: .word 0x0000662C + + thumb_func_start MOD14_021DD234 +MOD14_021DD234: ; 0x021DD234 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD246 + cmp r0, #1 + beq _021DD256 + pop {r3, r4, r5, pc} +_021DD246: + ldr r0, _021DD274 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0050 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD256: + ldr r0, _021DD274 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0080 + cmp r0, #0 + beq _021DD270 + ldr r0, _021DD278 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD270: + pop {r3, r4, r5, pc} + nop +_021DD274: .word 0x00005DC0 +_021DD278: .word 0x000065A0 + + thumb_func_start MOD14_021DD27C +MOD14_021DD27C: ; 0x021DD27C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD28E + cmp r0, #1 + beq _021DD29E + pop {r3, r4, r5, pc} +_021DD28E: + ldr r0, _021DD2BC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E00F0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD29E: + ldr r0, _021DD2BC ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0120 + cmp r0, #0 + beq _021DD2B8 + ldr r0, _021DD2C0 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD2B8: + pop {r3, r4, r5, pc} + nop +_021DD2BC: .word 0x00005DC0 +_021DD2C0: .word 0x000065A0 + + thumb_func_start MOD14_021DD2C4 +MOD14_021DD2C4: ; 0x021DD2C4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD2D6 + cmp r0, #1 + beq _021DD2E6 + pop {r3, r4, r5, pc} +_021DD2D6: + ldr r0, _021DD304 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0190 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD2E6: + ldr r0, _021DD304 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E01BC + cmp r0, #0 + beq _021DD300 + ldr r0, _021DD308 ; =0x000065A0 + add r0, r4, r0 + bl MOD14_021E1704 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD300: + pop {r3, r4, r5, pc} + nop +_021DD304: .word 0x00005DC0 +_021DD308: .word 0x000065A0 + + thumb_func_start MOD14_021DD30C +MOD14_021DD30C: ; 0x021DD30C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r0, #0x16 + ldr r4, [r7, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + add r0, r5, #0 + bl MOD14_021DC430 + add r6, r0, #0 + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021DD336 + ldr r0, _021DD374 ; =0x00005DC0 + add r1, r6, #0 + add r0, r4, r0 + bl MOD14_021DFFD8 + b _021DD36C +_021DD336: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + beq _021DD358 + cmp r0, #1 + bne _021DD36C + add r0, r5, #0 + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021DD378 ; =0x0000B22C + add r2, r6, #0 + add r0, r4, r0 + bl MOD14_021E3024 + b _021DD36C +_021DD358: + add r0, r5, #0 + bl MOD14_021DC3E0 + add r1, r0, #0 + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + add r2, r6, #0 + bl MOD14_021DEEF8 +_021DD36C: + add r0, r7, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD374: .word 0x00005DC0 +_021DD378: .word 0x0000B22C + + thumb_func_start MOD14_021DD37C +MOD14_021DD37C: ; 0x021DD37C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD38E + cmp r0, #1 + beq _021DD3A6 + pop {r3, r4, r5, pc} +_021DD38E: + ldr r0, _021DD3C4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E022C + ldr r0, _021DD3C8 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4F58 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD3A6: + ldr r0, _021DD3C8 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E4FA0 + cmp r0, #0 + beq _021DD3C0 + ldr r0, _021DD3C4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E0244 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD3C0: + pop {r3, r4, r5, pc} + nop +_021DD3C4: .word 0x00005DC0 +_021DD3C8: .word 0x0000B3A8 + + thumb_func_start MOD14_021DD3CC +MOD14_021DD3CC: ; 0x021DD3CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC450 + add r1, r0, #0 + ldr r0, _021DD3F0 ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E189C + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + nop +_021DD3F0: .word 0x000065F4 + + thumb_func_start MOD14_021DD3F4 +MOD14_021DD3F4: ; 0x021DD3F4 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + add r0, r5, #0 + bl MOD14_021DC450 + add r1, r0, #0 + ldr r0, _021DD424 ; =0x000065F4 + add r0, r4, r0 + bl MOD14_021E189C + ldr r0, _021DD424 ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E19D0 + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD424: .word 0x000065F4 + + thumb_func_start MOD14_021DD428 +MOD14_021DD428: ; 0x021DD428 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD440 ; =0x000065F4 + add r0, r1, r0 + bl MOD14_021E1B44 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD440: .word 0x000065F4 + + thumb_func_start MOD14_021DD444 +MOD14_021DD444: ; 0x021DD444 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD45C ; =0x000065F4 + add r0, r1, r0 + bl MOD14_021E1B78 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD45C: .word 0x000065F4 + + thumb_func_start MOD14_021DD460 +MOD14_021DD460: ; 0x021DD460 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, _021DD488 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _021DD48C ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E1B9C + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + nop +_021DD488: .word 0x000005DC +_021DD48C: .word 0x000065F4 + + thumb_func_start MOD14_021DD490 +MOD14_021DD490: ; 0x021DD490 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r0, #0x16 + ldr r4, [r6, #0xc] + lsl r0, r0, #4 + ldr r5, [r4, r0] + ldr r0, _021DD4B8 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD4BC ; =0x000065F4 + add r5, #0x74 + add r0, r4, r0 + add r1, r5, #0 + bl MOD14_021E1BE4 + add r0, r6, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} + nop +_021DD4B8: .word 0x000005DD +_021DD4BC: .word 0x000065F4 + + thumb_func_start MOD14_021DD4C0 +MOD14_021DD4C0: ; 0x021DD4C0 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD4D2 + cmp r0, #1 + beq _021DD4E2 + pop {r4, pc} +_021DD4D2: + ldr r0, _021DD4F8 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1F98 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD4E2: + ldr r0, _021DD4F8 ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FB8 + cmp r0, #0 + beq _021DD4F4 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD4F4: + pop {r4, pc} + nop +_021DD4F8: .word 0x0000662C + + thumb_func_start MOD14_021DD4FC +MOD14_021DD4FC: ; 0x021DD4FC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD50E + cmp r0, #1 + beq _021DD524 + pop {r3, r4, r5, pc} +_021DD50E: + ldr r0, _021DD52C ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD530 ; =0x0000662C + add r0, r4, r0 + bl MOD14_021E1FC0 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD524: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD52C: .word 0x000005DD +_021DD530: .word 0x0000662C + + thumb_func_start MOD14_021DD534 +MOD14_021DD534: ; 0x021DD534 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD546 + cmp r0, #1 + beq _021DD556 + pop {r4, pc} +_021DD546: + ldr r0, _021DD56C ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FE4 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD556: + ldr r0, _021DD56C ; =0x0000662C + add r0, r1, r0 + bl MOD14_021E1FF0 + cmp r0, #0 + beq _021DD568 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD568: + pop {r4, pc} + nop +_021DD56C: .word 0x0000662C + + thumb_func_start MOD14_021DD570 +MOD14_021DD570: ; 0x021DD570 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD582 + cmp r0, #1 + beq _021DD594 + pop {r4, pc} +_021DD582: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DE8C8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD594: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DE8E8 + cmp r0, #0 + beq _021DD5A8 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD5A8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DD5AC +MOD14_021DD5AC: ; 0x021DD5AC + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r0, #0x16 + ldr r5, [r4, #0xc] + lsl r0, r0, #4 + ldr r6, [r5, r0] + ldrh r0, [r4, #6] + cmp r0, #3 + bhi _021DD65E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DD5CA: ; jump table + .short _021DD5D2 - _021DD5CA - 2 ; case 0 + .short _021DD5E8 - _021DD5CA - 2 ; case 1 + .short _021DD626 - _021DD5CA - 2 ; case 2 + .short _021DD64C - _021DD5CA - 2 ; case 3 +_021DD5D2: + ldr r0, _021DD660 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFBB8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD5E8: + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFC2C + cmp r0, #0 + beq _021DD65E + add r0, r6, #0 + bl MOD14_021DC3CC + cmp r0, #3 + beq _021DD604 + cmp r0, #4 + beq _021DD610 + b _021DD61A +_021DD604: + ldr r0, _021DD668 ; =0x00006558 + mov r1, #1 + add r0, r5, r0 + bl MOD14_021E0D60 + b _021DD61A +_021DD610: + ldr r0, _021DD668 ; =0x00006558 + mov r1, #2 + add r0, r5, r0 + bl MOD14_021E0D60 +_021DD61A: + mov r0, #0 + strh r0, [r4, #8] + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD626: + ldrh r0, [r4, #8] + add r0, r0, #1 + strh r0, [r4, #8] + ldrh r0, [r4, #8] + cmp r0, #6 + blo _021DD65E + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFD24 + ldr r0, _021DD668 ; =0x00006558 + mov r1, #0 + add r0, r5, r0 + bl MOD14_021E0D60 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, r5, r6, pc} +_021DD64C: + ldr r0, _021DD664 ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFD80 + cmp r0, #0 + beq _021DD65E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD65E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD660: .word 0x000005DD +_021DD664: .word 0x00005DC0 +_021DD668: .word 0x00006558 + + thumb_func_start MOD14_021DD66C +MOD14_021DD66C: ; 0x021DD66C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r0, [r5, #6] + ldr r4, [r5, #0xc] + cmp r0, #0 + beq _021DD67E + cmp r0, #1 + beq _021DD69C + pop {r3, r4, r5, pc} +_021DD67E: + ldr r0, _021DD6B0 ; =0x00000633 + bl FUN_020054C8 + ldr r0, _021DD6B4 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFF1C + ldr r0, _021DD6B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2B10 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD69C: + ldr r0, _021DD6B8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2B40 + cmp r0, #0 + beq _021DD6AE + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD6AE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD6B0: .word 0x00000633 +_021DD6B4: .word 0x00005DC0 +_021DD6B8: .word 0x0000B22C + + thumb_func_start MOD14_021DD6BC +MOD14_021DD6BC: ; 0x021DD6BC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r5, [r4, #0xc] + cmp r0, #3 + bhi _021DD72C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DD6D4: ; jump table + .short _021DD6DC - _021DD6D4 - 2 ; case 0 + .short _021DD6EA - _021DD6D4 - 2 ; case 1 + .short _021DD6FC - _021DD6D4 - 2 ; case 2 + .short _021DD712 - _021DD6D4 - 2 ; case 3 +_021DD6DC: + ldr r0, _021DD730 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4DF8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DD6EA: + ldr r0, _021DD730 ; =0x0000B3A8 + ldr r0, [r5, r0] + bl MOD14_021E4E24 + cmp r0, #0 + beq _021DD72C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] +_021DD6FC: + ldr r0, _021DD734 ; =0x00000634 + bl FUN_020054C8 + ldr r0, _021DD738 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2BB0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, r5, pc} +_021DD712: + ldr r0, _021DD738 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2BD0 + cmp r0, #0 + beq _021DD72C + ldr r0, _021DD73C ; =0x00005DC0 + add r0, r5, r0 + bl MOD14_021DFF54 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD72C: + pop {r3, r4, r5, pc} + nop +_021DD730: .word 0x0000B3A8 +_021DD734: .word 0x00000634 +_021DD738: .word 0x0000B22C +_021DD73C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD740 +MOD14_021DD740: ; 0x021DD740 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD752 + cmp r0, #1 + beq _021DD762 + pop {r4, pc} +_021DD752: + ldr r0, _021DD778 ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2C7C + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD762: + ldr r0, _021DD778 ; =0x0000B22C + add r0, r1, r0 + bl MOD14_021E2DA4 + cmp r0, #0 + beq _021DD774 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD774: + pop {r4, pc} + nop +_021DD778: .word 0x0000B22C + + thumb_func_start MOD14_021DD77C +MOD14_021DD77C: ; 0x021DD77C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrh r1, [r5, #6] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r4, [r5, #0xc] + cmp r1, #0 + ldr r0, [r4, r0] + beq _021DD794 + cmp r1, #1 + beq _021DD7B4 + pop {r3, r4, r5, pc} +_021DD794: + bl MOD14_021DC3CC + cmp r0, #1 + bne _021DD7AC + ldr r0, _021DD7C8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2DB4 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r3, r4, r5, pc} +_021DD7AC: + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} +_021DD7B4: + ldr r0, _021DD7C8 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2E50 + cmp r0, #0 + beq _021DD7C6 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD7C6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD7C8: .word 0x0000B22C + + thumb_func_start MOD14_021DD7CC +MOD14_021DD7CC: ; 0x021DD7CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #0x43 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEEA8 + ldr r0, _021DD7F4 ; =0x0000B22C + add r0, r4, r0 + bl MOD14_021E2FE8 + ldr r0, _021DD7F8 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DFFB4 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD7F4: .word 0x0000B22C +_021DD7F8: .word 0x00005DC0 + + thumb_func_start MOD14_021DD7FC +MOD14_021DD7FC: ; 0x021DD7FC + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #0x16 + ldr r4, [r5, #0xc] + lsl r0, r0, #4 + ldr r6, [r4, r0] + ldrh r0, [r5, #6] + cmp r0, #0 + beq _021DD818 + cmp r0, #1 + beq _021DD828 + cmp r0, #2 + beq _021DD854 + pop {r4, r5, r6, pc} +_021DD818: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E37B8 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DD828: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E389C + cmp r0, #0 + beq _021DD866 + add r6, #0x9c + ldrb r0, [r6] + cmp r0, #0 + bne _021DD844 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r4, r5, r6, pc} +_021DD844: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E3B54 + ldrh r0, [r5, #6] + add r0, r0, #1 + strh r0, [r5, #6] + pop {r4, r5, r6, pc} +_021DD854: + ldr r0, _021DD868 ; =0x0000B3A4 + ldr r0, [r4, r0] + bl MOD14_021E3B80 + cmp r0, #0 + beq _021DD866 + add r0, r5, #0 + bl MOD14_021DCBD8 +_021DD866: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DD868: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD86C +MOD14_021DD86C: ; 0x021DD86C + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD87E + cmp r0, #1 + beq _021DD88E + pop {r4, pc} +_021DD87E: + ldr r0, _021DD8A4 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E3BA8 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD88E: + ldr r0, _021DD8A4 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E3C60 + cmp r0, #0 + beq _021DD8A0 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD8A0: + pop {r4, pc} + nop +_021DD8A4: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD8A8 +MOD14_021DD8A8: ; 0x021DD8A8 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD8C0 ; =0x0000B3A4 + ldr r0, [r1, r0] + bl MOD14_021E4734 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD8C0: .word 0x0000B3A4 + + thumb_func_start MOD14_021DD8C4 +MOD14_021DD8C4: ; 0x021DD8C4 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD8DC ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021E0008 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + nop +_021DD8DC: .word 0x00005DC0 + + thumb_func_start MOD14_021DD8E0 +MOD14_021DD8E0: ; 0x021DD8E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5, #0xc] + ldr r0, _021DD900 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021E002C + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD14_021DEF94 + add r0, r5, #0 + bl MOD14_021DCBD8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DD900: .word 0x00005DC0 + + thumb_func_start MOD14_021DD904 +MOD14_021DD904: ; 0x021DD904 + push {r4, lr} + add r4, r1, #0 + mov r0, #0x43 + ldr r1, [r4, #0xc] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DF03C + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + + thumb_func_start MOD14_021DD91C +MOD14_021DD91C: ; 0x021DD91C + push {r4, lr} + add r4, r1, #0 + mov r0, #0x43 + ldr r1, [r4, #0xc] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD14_021DEF94 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + + thumb_func_start MOD14_021DD934 +MOD14_021DD934: ; 0x021DD934 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD946 + cmp r0, #1 + beq _021DD956 + pop {r4, pc} +_021DD946: + ldr r0, _021DD96C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF758 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD956: + ldr r0, _021DD96C ; =0x00005DC0 + add r0, r1, r0 + bl MOD14_021DF7A0 + cmp r0, #0 + beq _021DD968 + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD968: + pop {r4, pc} + nop +_021DD96C: .word 0x00005DC0 + + thumb_func_start MOD14_021DD970 +MOD14_021DD970: ; 0x021DD970 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD988 ; =0x0000B3AC + ldr r0, [r1, r0] + mov r1, #0 + bl MOD14_021E5214 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + .align 2, 0 +_021DD988: .word 0x0000B3AC + + thumb_func_start MOD14_021DD98C +MOD14_021DD98C: ; 0x021DD98C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, _021DD9A4 ; =0x0000B3AC + ldr r0, [r1, r0] + mov r1, #1 + bl MOD14_021E5214 + add r0, r4, #0 + bl MOD14_021DCBD8 + pop {r4, pc} + .align 2, 0 +_021DD9A4: .word 0x0000B3AC + + thumb_func_start MOD14_021DD9A8 +MOD14_021DD9A8: ; 0x021DD9A8 + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #6] + ldr r1, [r4, #0xc] + cmp r0, #0 + beq _021DD9BA + cmp r0, #1 + beq _021DD9CA + pop {r4, pc} +_021DD9BA: + ldr r0, _021DD9E0 ; =0x0000B3AC + ldr r0, [r1, r0] + bl MOD14_021E52C0 + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + pop {r4, pc} +_021DD9CA: + ldr r0, _021DD9E0 ; =0x0000B3AC + ldr r0, [r1, r0] + bl MOD14_021E52E0 + cmp r0, #0 + beq _021DD9DC + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DD9DC: + pop {r4, pc} + nop +_021DD9E0: .word 0x0000B3AC + + thumb_func_start MOD14_021DD9E4 +MOD14_021DD9E4: ; 0x021DD9E4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _021DD9F8 + cmp r0, #1 + beq _021DDA20 + add sp, #0xc + pop {r3, r4, pc} +_021DD9F8: + ldr r0, _021DDA34 ; =0x0000060E + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldrh r0, [r4, #6] + add sp, #0xc + add r0, r0, #1 + strh r0, [r4, #6] + pop {r3, r4, pc} +_021DDA20: + bl FUN_0200E308 + cmp r0, #0 + beq _021DDA2E + add r0, r4, #0 + bl MOD14_021DCBD8 +_021DDA2E: + add sp, #0xc + pop {r3, r4, pc} + nop +_021DDA34: .word 0x0000060E + + thumb_func_start MOD14_021DDA38 +MOD14_021DDA38: ; 0x021DDA38 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DDB20 ; =0x021E63A4 + add r4, r1, #0 + bl FUN_0201E66C + ldr r2, _021DDB24 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021DDB28 ; =0x021E627C + bl FUN_02016BBC + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB2C ; =0x021E6350 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB30 ; =0x021E6334 + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB34 ; =0x021E62FC + mov r1, #3 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDADA + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB38 ; =0x021E6318 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB3C ; =0x021E62E0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB40 ; =0x021E62C4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB44 ; =0x021E62A8 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + b _021DDB1A +_021DDADA: + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB38 ; =0x021E6318 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB48 ; =0x021E6388 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB4C ; =0x021E628C + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, _021DDB44 ; =0x021E62A8 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 +_021DDB1A: + bl MOD14_021DDC78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDB20: .word 0x021E63A4 +_021DDB24: .word 0x04000304 +_021DDB28: .word 0x021E627C +_021DDB2C: .word 0x021E6350 +_021DDB30: .word 0x021E6334 +_021DDB34: .word 0x021E62FC +_021DDB38: .word 0x021E6318 +_021DDB3C: .word 0x021E62E0 +_021DDB40: .word 0x021E62C4 +_021DDB44: .word 0x021E62A8 +_021DDB48: .word 0x021E6388 +_021DDB4C: .word 0x021E628C + + thumb_func_start MOD14_021DDB50 +MOD14_021DDB50: ; 0x021DDB50 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r3, #1 + mov r2, #0x57 + add r4, r1, #0 + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r1, #4 + bl FUN_0200687C + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + mov r2, #0x57 + str r1, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r3, #2 + bl FUN_0200687C + mov r0, #0xe0 + str r0, [sp] + mov r0, #0xa + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #5 + add r3, r2, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDBF2 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + mov r2, #0x57 + str r0, [sp, #0xc] + lsl r2, r2, #2 + ldr r2, [r5, r2] + mov r0, #0x12 + mov r3, #2 + bl FUN_020068C8 +_021DDBF2: + mov r0, #0x43 + lsl r0, r0, #4 + add r0, r5, r0 + bl MOD14_021DE014 + mov r0, #0x43 + lsl r0, r0, #4 + add r1, r4, #0 + add r0, r5, r0 + add r1, #0x40 + mov r2, #0 + mov r3, #1 + bl MOD14_021DE0C4 + ldr r0, _021DDC60 ; =0x000065A0 + add r0, r5, r0 + bl MOD14_021E0F40 + ldr r0, _021DDC64 ; =0x000065F4 + add r0, r5, r0 + bl MOD14_021E1818 + ldr r0, _021DDC68 ; =0x0000662C + add r0, r5, r0 + bl MOD14_021E1EEC + ldr r0, _021DDC6C ; =0x0000B3A4 + ldr r0, [r5, r0] + bl MOD14_021E355C + ldr r0, _021DDC70 ; =0x0000B3AC + ldr r0, [r5, r0] + bl MOD14_021E5128 + add r0, r4, #0 + bl MOD14_021DC3CC + cmp r0, #1 + bne _021DDC48 + ldr r0, _021DDC74 ; =0x0000B22C + add r0, r5, r0 + bl MOD14_021E2AE8 +_021DDC48: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + bl GX_DispOn + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDC60: .word 0x000065A0 +_021DDC64: .word 0x000065F4 +_021DDC68: .word 0x0000662C +_021DDC6C: .word 0x0000B3A4 +_021DDC70: .word 0x0000B3AC +_021DDC74: .word 0x0000B22C + + thumb_func_start MOD14_021DDC78 +MOD14_021DDC78: ; 0x021DDC78 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _021DDCDC ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r1, [r0] + ldr r2, _021DDCE0 ; =0xFFFFCFFD + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021DDCE4 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021DDCE8 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021DDCEC ; =0xBFFF0000 + str r0, [r1, #0x40] + pop {r3, pc} + .align 2, 0 +_021DDCDC: .word 0x04000008 +_021DDCE0: .word 0xFFFFCFFD +_021DDCE4: .word 0x0000CFFB +_021DDCE8: .word 0x04000540 +_021DDCEC: .word 0xBFFF0000 + + thumb_func_start MOD14_021DDCF0 +MOD14_021DDCF0: ; 0x021DDCF0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DDD10 ; =0x00005DC0 + add r0, r4, r0 + bl MOD14_021DF144 + ldr r0, _021DDD14 ; =0x00006558 + add r0, r4, r0 + bl MOD14_021E0CCC + ldr r0, _021DDD18 ; =0x0000B3A8 + ldr r0, [r4, r0] + bl MOD14_021E49C4 + pop {r4, pc} + nop +_021DDD10: .word 0x00005DC0 +_021DDD14: .word 0x00006558 +_021DDD18: .word 0x0000B3A8 + + thumb_func_start MOD14_021DDD1C +MOD14_021DDD1C: ; 0x021DDD1C + cmp r1, r0 + bls _021DDD2A + mov r2, #0x12 + sub r3, r1, r0 + sub r1, r2, r1 + add r0, r0, r1 + b _021DDD32 +_021DDD2A: + mov r2, #0x12 + sub r2, r2, r0 + add r3, r1, r2 + sub r0, r0, r1 +_021DDD32: + cmp r3, r0 + blt _021DDD3C + mov r0, #0 + mvn r0, r0 + bx lr +_021DDD3C: + mov r0, #1 + bx lr + + thumb_func_start MOD14_021DDD40 +MOD14_021DDD40: ; 0x021DDD40 + ldr r3, _021DDD44 ; =0x0200CA61 + bx r3 + .align 2, 0 +_021DDD44: .word 0x0200CA61 + + thumb_func_start MOD14_021DDD48 +MOD14_021DDD48: ; 0x021DDD48 + mov r1, #0x51 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD50 +MOD14_021DDD50: ; 0x021DDD50 + mov r1, #0x59 + lsl r1, r1, #2 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD58 +MOD14_021DDD58: ; 0x021DDD58 + mov r1, #0x43 + lsl r1, r1, #4 + add r0, r0, r1 + bx lr + + thumb_func_start MOD14_021DDD60 +MOD14_021DDD60: ; 0x021DDD60 + ldr r1, _021DDD68 ; =0x0000B22C + add r0, r0, r1 + bx lr + nop +_021DDD68: .word 0x0000B22C + + thumb_func_start MOD14_021DDD6C +MOD14_021DDD6C: ; 0x021DDD6C + ldr r1, _021DDD74 ; =0x00005DC0 + add r0, r0, r1 + bx lr + nop +_021DDD74: .word 0x00005DC0 + + thumb_func_start MOD14_021DDD78 +MOD14_021DDD78: ; 0x021DDD78 + ldr r1, _021DDD80 ; =0x0000B3A8 + ldr r0, [r0, r1] + bx lr + nop +_021DDD80: .word 0x0000B3A8 + + thumb_func_start MOD14_021DDD84 +MOD14_021DDD84: ; 0x021DDD84 + ldr r1, _021DDD8C ; =0x0000662C + add r0, r0, r1 + bx lr + nop +_021DDD8C: .word 0x0000662C + + thumb_func_start MOD14_021DDD90 +MOD14_021DDD90: ; 0x021DDD90 + mov r1, #0x56 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD14_021DDD98 +MOD14_021DDD98: ; 0x021DDD98 + push {r3, lr} + mov r1, #0x16 + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021DDDAC + mov r0, #0 + pop {r3, pc} +_021DDDAC: + mov r0, #0x2b + mvn r0, r0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD14_021DDDB4 +MOD14_021DDDB4: ; 0x021DDDB4 + str r1, [r0] + str r2, [r0, #8] + ldr r1, [sp] + str r3, [r0, #0xc] + str r1, [r0, #0x10] + add r1, r0, #0 + ldr r2, [sp, #4] + add r1, #0x20 + strb r2, [r1] + mov r1, #0 + str r1, [r0, #4] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DDDD4 +MOD14_021DDDD4: ; 0x021DDDD4 + push {r3, r4, r5, lr} + sub sp, #0x20 + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #8] + lsl r0, r3, #0xc + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + str r1, [sp, #4] + str r0, [sp, #0x14] + ldr r0, [sp, #0x34] + str r0, [sp, #0x18] + mov r0, #0xa + str r0, [sp, #0x1c] + bl OS_DisableInterrupts + add r4, r0, #0 + add r0, sp, #0 + bl FUN_0201FF84 + add r5, r0, #0 + add r0, r4, #0 + bl OS_RestoreInterrupts + cmp r5, #0 + beq _021DDE1E + add r0, r5, #0 + mov r1, #1 + bl FUN_020200BC + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021DDE1E: + add r0, r5, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021DDE24 +MOD14_021DDE24: ; 0x021DDE24 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl OS_DisableInterrupts + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020310 + add r0, r6, #0 + bl OS_RestoreInterrupts + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021DDE40 +MOD14_021DDE40: ; 0x021DDE40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + lsl r1, r3, #0x1b + lsr r1, r1, #0x13 + mov ip, r1 + asr r1, r3, #5 + lsl r1, r1, #0x1b + lsr r1, r1, #0x13 + mov lr, r1 + asr r1, r3, #0xa + lsl r1, r1, #0x1b + lsr r1, r1, #0x13 + str r1, [sp, #4] + add r7, r0, #0 + str r2, [sp] + add r1, r2, #0 + sub r2, r2, #1 + ldr r0, [sp, #0x20] + str r2, [sp] + cmp r1, #0 + beq _021DDED6 +_021DDE6C: + ldrh r1, [r7] + add r7, r7, #2 + lsl r2, r1, #0x1b + lsr r4, r2, #0x13 + asr r2, r1, #5 + asr r1, r1, #0xa + lsl r2, r2, #0x1b + lsl r1, r1, #0x1b + lsr r3, r2, #0x13 + lsr r2, r1, #0x13 + mov r1, ip + sub r5, r1, r4 + asr r1, r5, #3 + lsr r1, r1, #0x1c + add r1, r5, r1 + asr r1, r1, #4 + mul r1, r0 + add r5, r4, r1 + mov r1, lr + sub r1, r1, r3 + asr r4, r1, #3 + lsr r4, r4, #0x1c + add r4, r1, r4 + asr r1, r4, #4 + mul r1, r0 + add r3, r3, r1 + ldr r1, [sp, #4] + sub r1, r1, r2 + asr r4, r1, #3 + lsr r4, r4, #0x1c + add r4, r1, r4 + asr r1, r4, #4 + mul r1, r0 + add r4, r2, r1 + asr r2, r5, #8 + mov r1, #0x1f + and r1, r2 + asr r2, r3, #8 + asr r3, r4, #8 + lsl r3, r3, #0x1b + lsl r2, r2, #0x1b + lsr r3, r3, #0x11 + lsr r2, r2, #0x16 + orr r2, r3 + orr r1, r2 + strh r1, [r6] + ldr r1, [sp] + add r6, r6, #2 + add r2, r1, #0 + sub r2, r2, #1 + str r2, [sp] + cmp r1, #0 + bne _021DDE6C +_021DDED6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DDEDC +MOD14_021DDEDC: ; 0x021DDEDC + ldr r1, _021DDEE4 ; =0x0000B3B0 + ldr r0, [r0, r1] + bx lr + nop +_021DDEE4: .word 0x0000B3B0 + + thumb_func_start MOD14_021DDEE8 +MOD14_021DDEE8: ; 0x021DDEE8 + ldr r0, _021DDEF0 ; =0x021E6A0C + mov r1, #0 + str r1, [r0] + bx lr + .align 2, 0 +_021DDEF0: .word 0x021E6A0C + + thumb_func_start MOD14_021DDEF4 +MOD14_021DDEF4: ; 0x021DDEF4 + push {r4, r5, r6, lr} + ldr r6, _021DDF28 ; =0x021E6A0C + ldr r0, [r6] + cmp r0, #0 + beq _021DDF26 + mov r4, #0 + cmp r0, #0 + bls _021DDF20 + ldr r5, _021DDF2C ; =0x021E6A10 +_021DDF06: + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r1, [r5] + cmp r1, #0 + beq _021DDF16 + ldr r0, [r5, #4] + blx r1 +_021DDF16: + ldr r0, [r6] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blo _021DDF06 +_021DDF20: + ldr r0, _021DDF28 ; =0x021E6A0C + mov r1, #0 + str r1, [r0] +_021DDF26: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DDF28: .word 0x021E6A0C +_021DDF2C: .word 0x021E6A10 + + thumb_func_start MOD14_021DDF30 +MOD14_021DDF30: ; 0x021DDF30 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021DDF60 ; =0x021E6A0C + add r4, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + cmp r0, #0x20 + blo _021DDF44 + bl ErrorHandling +_021DDF44: + ldr r2, _021DDF60 ; =0x021E6A0C + mov r1, #0xc + ldr r0, [r2] + ldr r3, _021DDF64 ; =0x021E6A18 + mul r1, r0 + str r5, [r3, r1] + ldr r3, _021DDF68 ; =0x021E6A10 + add r0, r0, #1 + str r4, [r3, r1] + ldr r3, _021DDF6C ; =0x021E6A14 + str r0, [r2] + str r6, [r3, r1] + pop {r4, r5, r6, pc} + nop +_021DDF60: .word 0x021E6A0C +_021DDF64: .word 0x021E6A18 +_021DDF68: .word 0x021E6A10 +_021DDF6C: .word 0x021E6A14 + + thumb_func_start MOD14_021DDF70 +MOD14_021DDF70: ; 0x021DDF70 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r0, #0x40 + ldrb r0, [r0] + add r4, r1, #0 + add r7, r3, #0 + strb r0, [r5] + mov r0, #0xb + strb r0, [r5, #1] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + bl MOD14_021DDD98 + ldr r1, _021DDFE0 ; =0x0000585C + str r0, [r5, r1] + ldr r2, [r5, r1] + add r0, r1, #0 + add r2, #0x48 + sub r0, #8 + str r2, [r5, r0] + mov r0, #0x11 + ldr r2, [r5, r1] + lsl r0, r0, #4 + add r2, r2, r0 + sub r0, r1, #4 + str r2, [r5, r0] + add r0, r4, #0 + bl MOD14_021DDD50 + ldr r1, _021DDFE4 ; =0x00005980 + mov r2, #0x1e + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, r5, #0 + add r1, #0xa8 + bl MOD14_021E08E4 + ldr r0, _021DDFE4 ; =0x00005980 + mov r1, #0x1b + lsl r1, r1, #6 + ldr r0, [r5, r0] + add r1, r5, r1 + mov r2, #0x1e + bl MOD14_021E08E4 + ldr r1, _021DDFE8 ; =0x00005984 + str r7, [r5, r1] + add r0, r1, #4 + str r6, [r5, r0] + add r1, #8 + str r4, [r5, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DDFE0: .word 0x0000585C +_021DDFE4: .word 0x00005980 +_021DDFE8: .word 0x00005984 + + thumb_func_start MOD14_021DDFEC +MOD14_021DDFEC: ; 0x021DDFEC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DE010 ; =0x00005980 + add r1, r4, #0 + ldr r0, [r4, r0] + add r1, #0xa8 + mov r2, #0x1e + bl MOD14_021E0908 + ldr r0, _021DE010 ; =0x00005980 + mov r1, #0x1b + lsl r1, r1, #6 + ldr r0, [r4, r0] + add r1, r4, r1 + mov r2, #0x1e + bl MOD14_021E0908 + pop {r4, pc} + .align 2, 0 +_021DE010: .word 0x00005980 + + thumb_func_start MOD14_021DE014 +MOD14_021DE014: ; 0x021DE014 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _021DE060 ; =0x00005984 + mov r1, #3 + ldr r0, [r4, r0] + bl FUN_02017B48 + ldr r1, _021DE064 ; =0x0000585C + str r0, [r4, #0xc] + ldr r1, [r4, r1] + mov r2, #0 + sub r1, r0, r1 + add r3, r1, #0 + ldr r0, _021DE068 ; =0x000001FF + mov r1, #3 + and r3, r0 + ldr r0, _021DE060 ; =0x00005984 + str r3, [r4, #0xc] + ldr r0, [r4, r0] + bl FUN_020179E0 + mov r3, #0 + str r3, [sp] + mov r0, #0x40 + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, _021DE060 ; =0x00005984 + mov r1, #3 + ldr r0, [r4, r0] + mov r2, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021DE060: .word 0x00005984 +_021DE064: .word 0x0000585C +_021DE068: .word 0x000001FF + + thumb_func_start MOD14_021DE06C +MOD14_021DE06C: ; 0x021DE06C + push {r4, r5, r6, r7} + ldr r5, [sp, #0x10] + cmp r1, #0 + beq _021DE0A2 + ldrb r6, [r0, #2] + mov r4, #1 + add r7, r6, #0 + mov r6, #0x69 + eor r7, r4 + lsl r6, r6, #2 + mul r6, r7 + str r6, [r2] + mov r2, #0x17 + mul r2, r1 + ldrb r6, [r0, #1] + mov r1, #0x3f + add r2, r6, r2 + and r1, r2 + str r1, [r3] + ldrb r0, [r0, #2] + eor r0, r4 + lsl r1, r0, #1 + ldr r0, _021DE0C0 ; =0x021E656C + ldrh r0, [r0, r1] + str r0, [r5] + pop {r4, r5, r6, r7} + bx lr +_021DE0A2: + ldrb r4, [r0, #2] + mov r1, #0x69 + lsl r1, r1, #2 + mul r1, r4 + str r1, [r2] + ldrb r1, [r0, #1] + str r1, [r3] + ldrb r0, [r0, #2] + lsl r1, r0, #1 + ldr r0, _021DE0C0 ; =0x021E656C + ldrh r0, [r0, r1] + str r0, [r5] + pop {r4, r5, r6, r7} + bx lr + nop +_021DE0C0: .word 0x021E656C + + thumb_func_start MOD14_021DE0C4 +MOD14_021DE0C4: ; 0x021DE0C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r2, #0 + add r1, sp, #8 + add r7, r3, #0 + str r1, [sp] + add r1, r6, #0 + add r2, sp, #0x10 + add r3, sp, #0xc + add r5, r0, #0 + bl MOD14_021DE06C + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD14_021DE138 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021DE1D0 + ldr r0, [sp, #8] + add r1, r4, #0 + str r0, [sp] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r5, #0 + bl MOD14_021DE278 + cmp r7, #0 + beq _021DE12C + cmp r6, #0 + bne _021DE12C + ldrb r3, [r5, #2] + mov r0, #0xb8 + mul r0, r6 + str r0, [sp] + ldr r0, _021DE130 ; =0x00000618 + add r1, r5, #0 + add r1, #0xa8 + mul r0, r3 + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, _021DE134 ; =0x00005980 + ldrb r2, [r4] + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD14_021DEB34 +_021DE12C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE130: .word 0x00000618 +_021DE134: .word 0x00005980 + + thumb_func_start MOD14_021DE138 +MOD14_021DE138: ; 0x021DE138 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + ldrb r2, [r1, #1] + add r7, r0, #0 + add r5, r3, #0 + lsl r1, r2, #1 + add r2, r2, r1 + ldr r1, _021DE1C4 ; =0x021E65AE + mov r0, #0x12 + ldrb r1, [r1, r2] + add r2, sp, #8 + mov r3, #0xa + bl FUN_02006C08 + str r0, [sp, #4] + cmp r0, #0 + beq _021DE1C0 + cmp r5, #0 + beq _021DE176 + ldr r0, [sp, #8] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp, #8] + lsl r1, r4, #5 + ldr r0, [r0, #0xc] + mov r2, #0x20 + bl GX_LoadBGPltt +_021DE176: + ldr r0, _021DE1C8 ; =0x00005860 + mov r6, #0 + add r4, r6, #0 + add r5, r7, r0 +_021DE17E: + str r4, [sp] + ldr r0, [sp, #8] + ldr r3, _021DE1CC ; =0x00007FFF + ldr r0, [r0, #0xc] + add r1, r5, #0 + mov r2, #0x10 + bl MOD14_021DDE40 + add r6, r6, #1 + add r4, r4, #2 + add r5, #0x20 + cmp r6, #8 + blt _021DE17E + mov r2, #0x10 + str r2, [sp] + ldr r1, _021DE1C8 ; =0x00005860 + ldr r0, [sp, #8] + add r3, r7, r1 + lsl r1, r6, #5 + add r1, r3, r1 + ldr r0, [r0, #0xc] + ldr r3, _021DE1CC ; =0x00007FFF + bl MOD14_021DDE40 + ldr r0, _021DE1C8 ; =0x00005860 + mov r1, #0x12 + add r0, r7, r0 + lsl r1, r1, #4 + bl DC_FlushRange + ldr r0, [sp, #4] + bl FUN_02016A18 +_021DE1C0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE1C4: .word 0x021E65AE +_021DE1C8: .word 0x00005860 +_021DE1CC: .word 0x00007FFF + + thumb_func_start MOD14_021DE1D0 +MOD14_021DE1D0: ; 0x021DE1D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r2, #0 + mov r2, #1 + add r5, r1, #0 + str r2, [sp] + ldrb r3, [r5, #1] + add r6, r0, #0 + mov r0, #0x12 + lsl r1, r3, #1 + add r3, r3, r1 + ldr r1, _021DE26C ; =0x021E65AD + ldrb r1, [r1, r3] + mov r3, #0xa + bl FUN_02006C98 + str r0, [sp, #0x10] + cmp r0, #0 + beq _021DE268 + add r1, sp, #0x14 + bl FUN_020B0030 + cmp r0, #0 + beq _021DE262 + mov r0, #0xa + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + beq _021DE250 + ldr r0, _021DE270 ; =0x00005984 + ldr r0, [r6, r0] + str r0, [r4] + mov r0, #0x15 + strb r0, [r4, #7] + mov r0, #4 + strb r0, [r4, #8] + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x14] + str r0, [r4, #0xc] + mov r0, #0 + ldr r1, [r5, #4] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0xd + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DE274 ; =0x00020100 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #4] + lsr r5, r3, #1 + mov r3, #0x54 + add r0, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02016A18 +_021DE250: + ldr r3, [sp, #0x14] + ldr r0, _021DE270 ; =0x00005984 + str r7, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r6, r0] + ldr r3, [r3, #0x10] + mov r1, #3 + bl FUN_02017E14 +_021DE262: + ldr r0, [sp, #0x10] + bl FUN_02016A18 +_021DE268: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE26C: .word 0x021E65AD +_021DE270: .word 0x00005984 +_021DE274: .word 0x00020100 + + thumb_func_start MOD14_021DE278 +MOD14_021DE278: ; 0x021DE278 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + mov r2, #1 + str r2, [sp] + add r6, r3, #0 + ldrb r3, [r1, #1] + add r5, r0, #0 + mov r0, #0x12 + lsl r1, r3, #1 + add r3, r3, r1 + ldr r1, _021DE2E0 ; =0x021E65AC + ldrb r1, [r1, r3] + mov r3, #0xa + bl FUN_02006C98 + str r0, [sp, #4] + cmp r0, #0 + beq _021DE2DC + add r1, sp, #8 + bl FUN_020B0180 + ldr r0, _021DE2E4 ; =0x00005984 + mov r1, #3 + ldr r0, [r5, r0] + bl FUN_0201886C + add r7, r0, #0 + beq _021DE2C2 + ldr r1, [sp, #0x20] + add r2, r4, #0 + str r1, [sp] + ldr r1, [sp, #8] + add r3, r6, #0 + add r1, #0xc + bl MOD14_021DECD4 +_021DE2C2: + ldr r0, [sp, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [sp] + ldr r0, _021DE2E4 ; =0x00005984 + mov r3, #1 + ldr r0, [r5, r0] + mov r1, #3 + add r2, r7, #0 + lsl r3, r3, #0xc + bl FUN_02017CE8 +_021DE2DC: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE2E0: .word 0x021E65AC +_021DE2E4: .word 0x00005984 + + thumb_func_start MOD14_021DE2E8 +MOD14_021DE2E8: ; 0x021DE2E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DE384 ; =0x00005984 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #3 + add r6, r2, #0 + bl FUN_02017B48 + lsl r0, r0, #0x17 + lsr r1, r0, #0xb + mov r0, #0xb8 + add r7, r6, #0 + mul r7, r0 + lsl r0, r7, #0xc + str r1, [r5, #8] + add r1, r1, r0 + str r1, [r5, #0x14] + ldr r0, [r5, #8] + sub r0, r1, r0 + mov r1, #0x1e + bl _s32_div_f + str r0, [r5, #0x10] + ldr r0, [r5, #0x14] + asr r1, r0, #0xc + ldr r0, _021DE388 ; =0x000001FF + and r0, r1 + str r0, [r5, #0x14] + mov r0, #0x1e + str r0, [r5, #4] + ldrb r0, [r5, #2] + strb r0, [r5, #3] + mov r0, #0x17 + ldrb r1, [r5, #1] + mul r0, r6 + add r0, r1, r0 + strb r0, [r5, #1] + ldrb r1, [r5, #1] + mov r0, #0x3f + and r0, r1 + strb r0, [r5, #1] + ldrb r1, [r5, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r5, #2] + ldrb r1, [r4] + add r0, r5, #0 + bl MOD14_021DE6B4 + ldr r1, [r5, #0x10] + add r0, r5, #0 + add r2, r7, #0 + bl MOD14_021DE48C + ldrb r0, [r4] + mov r1, #1 + mov r2, #0 + str r0, [r5, #0x30] + ldrb r0, [r5, #2] + str r0, [r5, #0x34] + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + add r0, r5, #0 + add r0, #0x9c + str r2, [r0] + ldr r0, _021DE38C ; =MOD14_021DE39C + add r1, r5, #0 + bl FUN_0200CA44 + ldr r0, _021DE390 ; =MOD14_021DE3E4 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021DDD40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE384: .word 0x00005984 +_021DE388: .word 0x000001FF +_021DE38C: .word MOD14_021DE39C +_021DE390: .word MOD14_021DE3E4 + + thumb_func_start MOD14_021DE394 +MOD14_021DE394: ; 0x021DE394 + add r0, #0x9c + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021DE39C +MOD14_021DE39C: ; 0x021DE39C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DE3C2 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #2 + bne _021DE3DC + ldr r1, [r4, #0x10] + add r0, r4, #0 + bl MOD14_021DE514 + mov r0, #0 + add r4, #0x98 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DE3C2: + ldr r0, [r4, #0x14] + str r0, [r4, #0xc] + ldr r0, _021DE3E0 ; =0x00005988 + ldr r0, [r4, r0] + bl MOD14_021DC424 + strb r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #1 + add r4, #0x9c + str r0, [r4] +_021DE3DC: + pop {r3, r4, r5, pc} + nop +_021DE3E0: .word 0x00005988 + + thumb_func_start MOD14_021DE3E4 +MOD14_021DE3E4: ; 0x021DE3E4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r3, [r5, #3] + add r6, r0, #0 + mov r0, #1 + add r4, r3, #0 + eor r4, r0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021DE45C + add r0, r5, #0 + add r0, #0x98 + ldr r2, [r0] + cmp r2, #2 + bhs _021DE47E + ldr r6, _021DE480 ; =0x00000618 + add r1, #0xa8 + mul r6, r3 + add r0, r5, #0 + add r1, r1, r6 + bl MOD14_021DEBCC + ldr r1, _021DE480 ; =0x00000618 + add r2, r5, #0 + add r2, #0xa8 + mul r1, r4 + add r1, r2, r1 + add r2, r5, #0 + add r2, #0x98 + ldr r2, [r2] + add r0, r5, #0 + bl MOD14_021DEC24 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + mov r2, #0 + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r5, #8] + asr r1, r0, #0xc + ldr r0, _021DE484 ; =0x000001FF + and r0, r1 + str r0, [r5, #0xc] + ldr r1, [r5, #8] + ldr r0, [r5, #0x10] + add r0, r1, r0 + str r0, [r5, #8] + ldr r0, _021DE488 ; =0x00005984 + ldr r3, [r5, #0xc] + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020179E0 + ldr r0, [r5, #4] + sub r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} +_021DE45C: + ldr r0, _021DE488 ; =0x00005984 + ldr r3, [r5, #0x14] + ldr r0, [r5, r0] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + ldr r1, _021DE480 ; =0x00000618 + add r0, r5, #0 + add r5, #0xa8 + mul r1, r4 + add r1, r5, r1 + bl MOD14_021DEC7C + add r0, r6, #0 + bl FUN_0200CAB4 +_021DE47E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021DE480: .word 0x00000618 +_021DE484: .word 0x000001FF +_021DE488: .word 0x00005984 + + thumb_func_start MOD14_021DE48C +MOD14_021DE48C: ; 0x021DE48C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r7, #0 + str r0, [sp, #8] + add r0, #0xa8 + str r1, [sp] + str r2, [sp, #4] + add r6, r7, #0 + add r4, r5, #0 + str r0, [sp, #8] +_021DE4A2: + ldr r0, _021DE504 ; =0x0000585C + ldr r0, [r5, r0] + add r0, #0x70 + add r0, r0, r6 + lsl r1, r0, #0xc + ldr r0, [sp] + str r1, [r4, #0x68] + sub r1, r1, r0 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, _021DE504 ; =0x0000585C + ldr r0, [r5, r0] + add r0, #0x70 + add r1, r0, r6 + ldr r0, [sp, #4] + add r0, r0, r1 + lsl r1, r0, #0xc + ldr r0, [sp] + str r1, [r4, #0x38] + sub r0, r1, r0 + str r0, [r4, #0x50] + asr r2, r0, #0xc + ldr r0, _021DE508 ; =0x00005854 + ldr r0, [r5, r0] + cmp r2, r0 + ble _021DE4F6 + ldr r0, _021DE50C ; =0x00005858 + ldr r0, [r5, r0] + cmp r2, r0 + bge _021DE4F6 + ldrb r3, [r5, #3] + mov r1, #1 + add r0, r5, #0 + eor r1, r3 + ldr r3, _021DE510 ; =0x00000618 + mul r3, r1 + ldr r1, [sp, #8] + add r1, r1, r3 + add r3, r7, #0 + bl MOD14_021DE5B4 +_021DE4F6: + add r7, r7, #1 + add r6, #0x18 + add r4, r4, #4 + cmp r7, #6 + blt _021DE4A2 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE504: .word 0x0000585C +_021DE508: .word 0x00005854 +_021DE50C: .word 0x00005858 +_021DE510: .word 0x00000618 + + thumb_func_start MOD14_021DE514 +MOD14_021DE514: ; 0x021DE514 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + ldrb r1, [r5, #3] + str r0, [sp] + add r0, #0xa8 + str r0, [sp] + ldr r0, _021DE5A8 ; =0x00000618 + add r2, r1, #0 + mul r2, r0 + str r2, [sp, #4] + mov r2, #1 + eor r1, r2 + mul r0, r1 + mov r7, #0 + add r4, r5, #0 + str r0, [sp, #8] +_021DE538: + add r0, r4, #0 + add r0, #0x80 + ldr r1, _021DE5AC ; =0x00005854 + ldr r0, [r0] + ldr r1, [r5, r1] + asr r0, r0, #0xc + cmp r0, r1 + ble _021DE550 + ldr r1, _021DE5B0 ; =0x00005858 + ldr r1, [r5, r1] + cmp r0, r1 + blt _021DE55E +_021DE550: + ldr r2, [sp] + ldr r1, [sp, #4] + add r0, r5, #0 + add r1, r2, r1 + add r2, r7, #0 + bl MOD14_021DE68C +_021DE55E: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + sub r0, r0, r6 + str r0, [r4, #0x68] + sub r1, r0, r6 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + ldr r0, [r4, #0x50] + sub r0, r0, r6 + str r0, [r4, #0x38] + sub r0, r0, r6 + str r0, [r4, #0x50] + asr r2, r0, #0xc + ldr r0, _021DE5AC ; =0x00005854 + ldr r0, [r5, r0] + cmp r2, r0 + ble _021DE59A + ldr r0, _021DE5B0 ; =0x00005858 + ldr r0, [r5, r0] + cmp r2, r0 + bge _021DE59A + ldr r3, [sp] + ldr r1, [sp, #8] + add r0, r5, #0 + add r1, r3, r1 + add r3, r7, #0 + bl MOD14_021DE5B4 +_021DE59A: + add r7, r7, #1 + add r4, r4, #4 + cmp r7, #6 + blt _021DE538 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021DE5A8: .word 0x00000618 +_021DE5AC: .word 0x00005854 +_021DE5B0: .word 0x00005858 + + thumb_func_start MOD14_021DE5B4 +MOD14_021DE5B4: ; 0x021DE5B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r1, #0 + ldr r1, _021DE678 ; =0x00005988 + str r0, [sp, #0x1c] + ldr r0, [r0, r1] + str r2, [sp, #0x20] + add r4, r3, #0 + bl MOD14_021DC44C + str r0, [sp, #0x30] + ldr r0, [sp, #0x1c] + mov r7, #0x28 + ldr r1, [r0, #0x34] + mov r0, #0x1e + add r2, r1, #0 + lsl r0, r0, #4 + mul r2, r0 + add r2, #0x58 + lsl r0, r4, #4 + add r0, r2, r0 + str r0, [sp, #0x28] + mov r0, #0x34 + mul r0, r4 + add r5, r5, r0 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r1, _021DE67C ; =0x00000CD8 + ldr r0, [sp, #0x1c] + add r1, r0, r1 + lsl r0, r7, #4 + mul r0, r4 + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + lsl r1, r4, #1 + add r6, r0, r1 +_021DE5FE: + ldr r0, [r5] + cmp r0, #0 + bne _021DE64E + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x30] + ldr r1, [r1, #0x30] + add r2, r4, #0 + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x34] + bl FUN_020672BC + cmp r0, #0 + beq _021DE64E + add r0, r4, #0 + bl MOD14_021DEB24 + ldr r1, [sp, #0x24] + ldr r2, _021DE680 ; =0x00005814 + str r1, [sp] + ldr r1, [sp, #0x20] + ldr r3, _021DE684 ; =0x000057D8 + str r1, [sp, #4] + str r7, [sp, #8] + mov r1, #2 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x14] + str r5, [sp, #0x18] + ldr r0, _021DE688 ; =0x00005980 + ldrh r2, [r6, r2] + ldr r0, [r1, r0] + ldrh r3, [r6, r3] + ldr r1, [sp, #0x34] + bl MOD14_021E0A60 +_021DE64E: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + add r0, #0x60 + str r0, [sp, #0x28] + mov r0, #0x4e + lsl r0, r0, #2 + add r5, r5, r0 + mov r0, #0xf + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + add r6, #0xc + add r0, r0, #1 + add r4, r4, #6 + add r7, #0x18 + str r0, [sp, #0x2c] + cmp r0, #5 + blt _021DE5FE + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE678: .word 0x00005988 +_021DE67C: .word 0x00000CD8 +_021DE680: .word 0x00005814 +_021DE684: .word 0x000057D8 +_021DE688: .word 0x00005980 + + thumb_func_start MOD14_021DE68C +MOD14_021DE68C: ; 0x021DE68C + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x34 + mov r4, #0 + mov r7, #0x4e + add r5, r1, #0 + mul r0, r2 + add r5, r5, r0 + add r6, r4, #0 + lsl r7, r7, #2 +_021DE69E: + ldr r0, [r5] + cmp r0, #0 + beq _021DE6AA + bl FUN_0201FFC8 + str r6, [r5] +_021DE6AA: + add r4, r4, #1 + add r5, r5, r7 + cmp r4, #5 + blt _021DE69E + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021DE6B4 +MOD14_021DE6B4: ; 0x021DE6B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r1, [sp, #4] + ldr r1, _021DE71C ; =0x00005988 + str r0, [sp] + ldr r0, [r0, r1] + bl MOD14_021DC44C + ldr r4, [sp] + str r0, [sp, #8] + ldr r1, _021DE720 ; =0x00000CD8 + add r0, r4, #0 + mov r6, #0 + add r5, r0, r1 +_021DE6D0: + ldr r0, [sp, #8] + ldr r1, [sp, #4] + add r2, r6, #0 + bl FUN_0206B5E4 + mov r1, #5 + mov r2, #0 + add r7, r0, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021DE70A + ldr r1, _021DE724 ; =0x00005814 + strh r0, [r4, r1] + add r0, r7, #0 + bl FUN_0206B688 + ldr r1, _021DE728 ; =0x000057D8 + mov r3, #0xa + strh r0, [r4, r1] + ldr r2, _021DE728 ; =0x000057D8 + ldr r1, [sp] + ldr r0, _021DE72C ; =0x00005980 + ldrh r2, [r4, r2] + ldr r0, [r1, r0] + add r1, r5, #0 + lsl r3, r3, #6 + bl MOD14_021E0BAC +_021DE70A: + mov r0, #0xa + lsl r0, r0, #6 + add r6, r6, #1 + add r4, r4, #2 + add r5, r5, r0 + cmp r6, #0x1e + blo _021DE6D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DE71C: .word 0x00005988 +_021DE720: .word 0x00000CD8 +_021DE724: .word 0x00005814 +_021DE728: .word 0x000057D8 +_021DE72C: .word 0x00005980 + + thumb_func_start MOD14_021DE730 +MOD14_021DE730: ; 0x021DE730 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, #0xa3 + strb r1, [r0] + mov r0, #0xa + mov r1, #0x10 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DE782 + str r5, [r4] + strh r6, [r4, #4] + ldr r0, [sp] + strh r7, [r4, #6] + str r0, [r4, #0xc] + mov r0, #2 + strh r0, [r4, #0xa] + cmp r7, r6 + ble _021DE762 + mov r0, #1 + b _021DE764 +_021DE762: + sub r0, r0, #3 +_021DE764: + strh r0, [r4, #8] + ldr r0, _021DE784 ; =MOD14_021DE788 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DE77C + mov r0, #1 + add r5, #0xa3 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021DE77C: + add r0, r4, #0 + bl FUN_02016A18 +_021DE782: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE784: .word MOD14_021DE788 + + thumb_func_start MOD14_021DE788 +MOD14_021DE788: ; 0x021DE788 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + beq _021DE79C + sub r0, r0, #1 + strh r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_021DE79C: + mov r2, #4 + mov r1, #6 + ldrsh r0, [r4, r2] + ldrsh r1, [r4, r1] + cmp r0, r1 + beq _021DE7CA + mov r1, #8 + ldrsh r1, [r4, r1] + add r0, r0, r1 + strh r0, [r4, #4] + ldr r1, [r4] + ldr r0, _021DE7DC ; =0x00005860 + add r1, r1, r0 + ldrsh r0, [r4, r2] + mov r2, #0x20 + lsl r0, r0, #5 + add r0, r1, r0 + ldr r1, [r4, #0xc] + bl GX_LoadBGPltt + mov r0, #2 + strh r0, [r4, #0xa] + pop {r3, r4, r5, pc} +_021DE7CA: + ldr r1, _021DE7E0 ; =MOD14_021DE7E4 + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DE7DC: .word 0x00005860 +_021DE7E0: .word MOD14_021DE7E4 + + thumb_func_start MOD14_021DE7E4 +MOD14_021DE7E4: ; 0x021DE7E4 + mov r1, #0 + add r0, #0xa3 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021DE7EC +MOD14_021DE7EC: ; 0x021DE7EC + push {r3, r4, lr} + sub sp, #4 + ldr r3, _021DE878 ; =0x021E6B90 + add r4, r1, #0 + ldr r1, [r3, #0xc] + cmp r1, #0 + beq _021DE806 + cmp r1, #1 + beq _021DE83C + cmp r1, #2 + beq _021DE868 + add sp, #4 + pop {r3, r4, pc} +_021DE806: + ldr r0, _021DE87C ; =0x021E6B94 + ldr r2, _021DE880 ; =0x021E6B98 + str r0, [sp] + ldr r3, _021DE884 ; =0x021E6B90 + add r0, r4, #0 + mov r1, #0 + bl MOD14_021DE06C + ldr r0, _021DE888 ; =0x00005988 + ldr r0, [r4, r0] + bl MOD14_021DC448 + ldr r2, _021DE878 ; =0x021E6B90 + add r1, r0, #0 + ldr r0, _021DE88C ; =0x021E69E0 + ldr r2, [r2, #4] + str r1, [r0] + add r0, r4, #0 + mov r3, #0 + bl MOD14_021DE138 + ldr r0, _021DE878 ; =0x021E6B90 + add sp, #4 + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + pop {r3, r4, pc} +_021DE83C: + ldr r0, [r3, #4] + ldr r1, _021DE88C ; =0x021E69E0 + str r0, [sp] + ldr r2, [r3] + ldr r1, [r1] + ldr r3, [r3, #8] + add r0, r4, #0 + bl MOD14_021DE278 + ldr r1, _021DE88C ; =0x021E69E0 + ldr r2, _021DE878 ; =0x021E6B90 + ldr r1, [r1] + ldr r2, [r2, #8] + add r0, r4, #0 + bl MOD14_021DE1D0 + ldr r0, _021DE878 ; =0x021E6B90 + add sp, #4 + ldr r1, [r0, #0xc] + add r1, r1, #1 + str r1, [r0, #0xc] + pop {r3, r4, pc} +_021DE868: + mov r1, #0 + add r4, #0xa3 + strb r1, [r4] + str r1, [r3, #0xc] + bl FUN_0200CAB4 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021DE878: .word 0x021E6B90 +_021DE87C: .word 0x021E6B94 +_021DE880: .word 0x021E6B98 +_021DE884: .word 0x021E6B90 +_021DE888: .word 0x00005988 +_021DE88C: .word 0x021E69E0 + + thumb_func_start MOD14_021DE890 +MOD14_021DE890: ; 0x021DE890 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DE8C0 ; =MOD14_021DE7EC + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + cmp r0, #0 + beq _021DE8A6 + mov r1, #1 + b _021DE8A8 +_021DE8A6: + mov r1, #0 +_021DE8A8: + add r0, r4, #0 + add r0, #0xa3 + add r4, #0xa3 + strb r1, [r0] + ldrb r0, [r4] + cmp r0, #0 + beq _021DE8BC + ldr r0, _021DE8C4 ; =0x021E6B90 + mov r1, #0 + str r1, [r0, #0xc] +_021DE8BC: + pop {r4, pc} + nop +_021DE8C0: .word MOD14_021DE7EC +_021DE8C4: .word 0x021E6B90 + + thumb_func_start MOD14_021DE8C8 +MOD14_021DE8C8: ; 0x021DE8C8 + push {r4, lr} + add r2, r0, #0 + mov r1, #0 + add r2, #0xa2 + strb r1, [r2] + ldrb r3, [r0, #2] + mov r2, #8 + lsl r4, r3, #1 + ldr r3, _021DE8E4 ; =0x021E656C + ldrh r3, [r3, r4] + lsl r3, r3, #5 + bl MOD14_021DE730 + pop {r4, pc} + .align 2, 0 +_021DE8E4: .word 0x021E656C + + thumb_func_start MOD14_021DE8E8 +MOD14_021DE8E8: ; 0x021DE8E8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xa2 + ldrb r1, [r1] + cmp r1, #4 + bhi _021DE976 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DE902: ; jump table + .short _021DE90C - _021DE902 - 2 ; case 0 + .short _021DE922 - _021DE902 - 2 ; case 1 + .short _021DE934 - _021DE902 - 2 ; case 2 + .short _021DE94A - _021DE902 - 2 ; case 3 + .short _021DE96A - _021DE902 - 2 ; case 4 +_021DE90C: + add r0, #0xa3 + ldrb r0, [r0] + cmp r0, #0 + bne _021DE976 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE922: + bl MOD14_021DE890 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE934: + add r0, #0xa3 + ldrb r0, [r0] + cmp r0, #0 + bne _021DE976 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE94A: + ldrb r3, [r4, #2] + mov r1, #8 + mov r2, #0 + lsl r5, r3, #1 + ldr r3, _021DE97C ; =0x021E656C + ldrh r3, [r3, r5] + lsl r3, r3, #5 + bl MOD14_021DE730 + add r0, r4, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r4, #0xa2 + add r0, r0, #1 + strb r0, [r4] + b _021DE976 +_021DE96A: + add r4, #0xa3 + ldrb r0, [r4] + cmp r0, #0 + bne _021DE976 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DE976: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021DE97C: .word 0x021E656C + + thumb_func_start MOD14_021DE980 +MOD14_021DE980: ; 0x021DE980 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + add r4, r1, #0 + mov r0, #0x34 + mul r4, r0 + add r0, r5, #0 + ldrb r2, [r5, #2] + ldr r1, _021DE9CC ; =0x00000618 + add r0, #0xa8 + mul r1, r2 + add r0, r0, r1 + add r6, r3, #0 + add r0, r0, r4 + add r1, r6, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, _021DE9D0 ; =0x00005980 + add r1, r6, #0 + ldr r0, [r5, r0] + add r2, r7, #0 + bl MOD14_021E0BBC + ldr r0, _021DE9D0 ; =0x00005980 + add r3, r5, #0 + ldrb r2, [r5, #2] + ldr r1, _021DE9CC ; =0x00000618 + add r3, #0xa8 + mul r1, r2 + add r1, r3, r1 + ldr r0, [r5, r0] + add r1, r1, r4 + mov r2, #1 + bl MOD14_021E08E4 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE9CC: .word 0x00000618 +_021DE9D0: .word 0x00005980 + + thumb_func_start MOD14_021DE9D4 +MOD14_021DE9D4: ; 0x021DE9D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldrb r0, [r6, #2] + add r7, r1, #0 + add r3, r6, #0 + str r0, [sp] + ldr r1, _021DEA30 ; =0x00000618 + ldr r0, [sp] + add r3, #0xa8 + mul r1, r0 + mov r0, #0x34 + add r4, r7, #0 + mul r4, r0 + add r5, r3, r1 + add r0, r2, #0 + add r1, r5, r4 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, _021DEA34 ; =0x00005980 + add r1, r5, r4 + ldr r0, [r6, r0] + mov r2, #0 + bl MOD14_021E0C5C + mov r2, #0x1e + ldr r0, _021DEA34 ; =0x00005980 + ldr r3, [sp] + lsl r2, r2, #4 + mul r2, r3 + ldr r0, [r6, r0] + add r2, #0x58 + lsl r3, r7, #4 + add r1, r5, r4 + add r2, r2, r3 + bl MOD14_021E0BBC + add r0, r7, #0 + bl MOD14_021DEB24 + add r1, r0, #0 + ldr r0, [r5, r4] + bl MOD14_021DDE24 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEA30: .word 0x00000618 +_021DEA34: .word 0x00005980 + + thumb_func_start MOD14_021DEA38 +MOD14_021DEA38: ; 0x021DEA38 + ldrb r2, [r0, #2] + add r3, r0, #0 + ldr r0, _021DEA4C ; =0x00000618 + add r3, #0xa8 + mul r0, r2 + add r2, r3, r0 + mov r0, #0x34 + mul r0, r1 + add r0, r2, r0 + bx lr + .align 2, 0 +_021DEA4C: .word 0x00000618 + + thumb_func_start MOD14_021DEA50 +MOD14_021DEA50: ; 0x021DEA50 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, _021DEB14 ; =0x00005988 + ldr r0, [r5, r0] + ldr r0, [r0] + bl FUN_0206B330 + mov r4, #0 + str r0, [sp, #0x1c] + add r0, r5, #0 + str r0, [sp, #0x28] + add r0, #0xa8 + add r7, r4, #0 + str r4, [sp, #0x2c] + str r0, [sp, #0x28] +_021DEA70: + ldr r0, _021DEB14 ; =0x00005988 + ldr r1, [sp, #0x1c] + ldr r0, [r5, r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0206B5E4 + mov r1, #0xab + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020672BC + cmp r0, #0 + beq _021DEB02 + ldrb r1, [r5, #2] + ldr r0, _021DEB18 ; =0x00000618 + mul r0, r1 + str r0, [sp, #0x18] + add r0, r5, r0 + add r0, r7, r0 + str r1, [sp, #0x14] + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + bne _021DEB02 + add r0, r4, #0 + bl MOD14_021DEB24 + str r0, [sp, #0x24] + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + str r1, [sp, #0x10] + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + mov ip, r0 + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + mov r0, #0x1e + add r2, r1, #0 + lsl r0, r0, #4 + mul r2, r0 + ldr r0, [sp, #0x2c] + add r2, #0x58 + add r0, r2, r0 + str r0, [sp, #8] + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x18] + ldr r2, _021DEB1C ; =0x0000585C + add r0, r1, r0 + add r0, r0, r7 + str r0, [sp, #0xc] + ldr r6, [r5, r2] + mov r2, #0x18 + ldr r0, _021DEB20 ; =0x00005980 + mul r2, r3 + add r6, #0x70 + add r2, r6, r2 + mov r6, ip + mov r3, #0x18 + mul r3, r6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x20] + add r3, #0x28 + bl MOD14_021E0940 +_021DEB02: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + add r0, #0x10 + add r7, #0x34 + str r0, [sp, #0x2c] + cmp r4, #0x1e + blt _021DEA70 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEB14: .word 0x00005988 +_021DEB18: .word 0x00000618 +_021DEB1C: .word 0x0000585C +_021DEB20: .word 0x00005980 + + thumb_func_start MOD14_021DEB24 +MOD14_021DEB24: ; 0x021DEB24 + lsl r1, r0, #1 + ldr r0, _021DEB30 ; =0x021E6570 + ldrh r0, [r0, r1] + add r0, #0xb + bx lr + nop +_021DEB30: .word 0x021E6570 + + thumb_func_start MOD14_021DEB34 +MOD14_021DEB34: ; 0x021DEB34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x10] + mov r0, #0x1e + lsl r0, r0, #4 + add r6, r3, #0 + mul r6, r0 + mov r0, #0x28 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x48] + mov r4, #0 + ldr r7, [sp, #0x4c] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + add r6, #0x58 + str r4, [sp, #0x24] + str r0, [sp, #0x20] +_021DEB56: + mov r0, #0 + str r0, [sp, #0x28] + add r5, r0, #0 +_021DEB5C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r0, [r0, #0x40] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0206B5E4 + mov r1, #5 + mov r2, #0 + str r0, [sp, #0x2c] + bl FUN_020672BC + cmp r0, #0 + beq _021DEBA0 + add r0, r4, #0 + bl MOD14_021DEB24 + mov r1, #2 + str r1, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + ldr r2, _021DEBC8 ; =0x0000585C + str r7, [sp, #0xc] + ldr r2, [r3, r2] + ldr r0, [sp, #0x14] + add r2, #0x70 + add r3, r2, r5 + ldr r2, [sp, #0x20] + ldr r1, [sp, #0x2c] + add r2, r2, r3 + ldr r3, [sp, #0x1c] + bl MOD14_021E0940 +_021DEBA0: + ldr r0, [sp, #0x28] + add r7, #0x34 + add r0, r0, #1 + add r4, r4, #1 + add r6, #0x10 + add r5, #0x18 + str r0, [sp, #0x28] + cmp r0, #6 + blo _021DEB5C + ldr r0, [sp, #0x1c] + add r0, #0x18 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #5 + blo _021DEB56 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEBC8: .word 0x0000585C + + thumb_func_start MOD14_021DEBCC +MOD14_021DEBCC: ; 0x021DEBCC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x18 + mul r0, r2 + add r5, r1, #0 + str r0, [sp, #8] +_021DEBDE: + ldr r1, [sp] + ldr r0, [sp, #8] + mov r7, #0 + add r4, r1, r0 +_021DEBE6: + ldr r0, [r5] + cmp r0, #0 + beq _021DEC0A + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0xc + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x68] + str r0, [sp, #0xc] + ldr r0, [r5] + bl FUN_02020044 +_021DEC0A: + add r7, r7, #1 + add r5, #0x34 + add r4, r4, #4 + cmp r7, #6 + blt _021DEBE6 + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEBDE + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DEC24 +MOD14_021DEC24: ; 0x021DEC24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x18 + mul r0, r2 + add r5, r1, #0 + str r0, [sp, #8] +_021DEC36: + ldr r1, [sp] + ldr r0, [sp, #8] + mov r7, #0 + add r4, r1, r0 +_021DEC3E: + ldr r0, [r5] + cmp r0, #0 + beq _021DEC62 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0xc + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x38] + str r0, [sp, #0xc] + ldr r0, [r5] + bl FUN_02020044 +_021DEC62: + add r7, r7, #1 + add r5, #0x34 + add r4, r4, #4 + cmp r7, #6 + blt _021DEC3E + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEC36 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021DEC7C +MOD14_021DEC7C: ; 0x021DEC7C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x28 + add r5, r1, #0 + str r0, [sp] +_021DEC8E: + ldr r0, [sp] + mov r6, #0 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r4, r6, #0 +_021DEC98: + ldr r0, _021DECD0 ; =0x0000585C + ldr r0, [r7, r0] + add r0, #0x70 + add r0, r0, r4 + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r5] + cmp r0, #0 + beq _021DECB0 + add r1, sp, #8 + bl FUN_02020044 +_021DECB0: + add r6, r6, #1 + add r5, #0x34 + add r4, #0x18 + cmp r6, #6 + blt _021DEC98 + ldr r0, [sp] + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blt _021DEC8E + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DECD0: .word 0x0000585C + + thumb_func_start MOD14_021DECD4 +MOD14_021DECD4: ; 0x021DECD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + add r0, r2, #0 + add r7, r3, #0 + str r1, [sp, #4] + str r2, [sp, #8] + cmp r0, #0x20 + blo _021DECF0 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp] +_021DECF0: + mov r0, #0 + mov ip, r0 + ldr r0, [sp, #0x28] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + orr r0, r7 + mov lr, r0 +_021DECFE: + ldr r0, [sp, #8] + mov r2, #0 + lsl r0, r0, #0x1b + lsr r1, r0, #0x1a + ldr r0, [sp] + add r4, r2, #0 + add r3, r0, r1 + mov r0, ip + lsl r1, r0, #1 + ldr r0, [sp, #4] + add r6, r0, r1 +_021DED14: + lsl r0, r4, #1 + ldrh r1, [r6, r0] + mov r0, #3 + lsl r0, r0, #0xa + add r5, r1, #0 + and r5, r0 + ldr r0, _021DEDCC ; =0x000003FF + add r2, r2, #1 + and r0, r1 + add r0, r0, r7 + add r1, r5, #0 + orr r1, r0 + ldr r0, [sp, #0xc] + add r4, #0x15 + orr r0, r1 + strh r0, [r3] + add r3, #0x40 + cmp r2, #0x14 + blo _021DED14 + mov r1, lr + lsl r1, r1, #0x10 + mov r0, #0 + lsr r1, r1, #0x10 +_021DED42: + add r0, r0, #1 + strh r1, [r3] + add r3, #0x40 + cmp r0, #4 + blo _021DED42 + ldr r0, [sp, #8] + add r1, r0, #1 + mov r0, #0x3f + and r0, r1 + str r0, [sp, #8] + bne _021DED62 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + sub r0, r0, r1 + str r0, [sp] +_021DED62: + ldr r0, [sp, #8] + cmp r0, #0x20 + bne _021DED72 + mov r1, #2 + ldr r0, [sp] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp] +_021DED72: + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0x15 + blo _021DECFE + mov r1, lr + mov r3, #2 + mov r0, #0 + lsl r1, r1, #0x10 + lsl r3, r3, #0xa + lsr r5, r1, #0x10 + add r7, r0, #0 + mov r4, #0x3f + add r2, r3, #0 +_021DED8E: + ldr r1, [sp, #8] + lsl r1, r1, #0x1b + lsr r6, r1, #0x1a + ldr r1, [sp] + add r1, r1, r6 + add r6, r7, #0 +_021DED9A: + add r6, r6, #1 + strh r5, [r1] + add r1, #0x40 + cmp r6, #0x18 + blo _021DED9A + ldr r1, [sp, #8] + add r1, r1, #1 + and r1, r4 + str r1, [sp, #8] + bne _021DEDB4 + ldr r1, [sp] + sub r1, r1, r3 + str r1, [sp] +_021DEDB4: + ldr r1, [sp, #8] + cmp r1, #0x20 + bne _021DEDC0 + ldr r1, [sp] + add r1, r1, r2 + str r1, [sp] +_021DEDC0: + add r0, r0, #1 + cmp r0, #2 + blo _021DED8E + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEDCC: .word 0x000003FF + + thumb_func_start MOD14_021DEDD0 +MOD14_021DEDD0: ; 0x021DEDD0 + push {r4, lr} + add r2, r0, #0 + add r0, #0xa0 + strh r1, [r0] + add r0, r2, #0 + mov r3, #0 + add r0, #0xa4 + strb r3, [r0] + ldr r0, _021DEE00 ; =0x00005980 + add r4, r2, #0 + ldrb r3, [r2, #2] + ldr r0, [r2, r0] + ldr r2, _021DEE04 ; =0x00000618 + add r4, #0xa8 + mul r2, r3 + add r3, r4, r2 + mov r2, #0x34 + mul r2, r1 + add r1, r3, r2 + mov r2, #1 + bl MOD14_021E0C20 + pop {r4, pc} + nop +_021DEE00: .word 0x00005980 +_021DEE04: .word 0x00000618 + + thumb_func_start MOD14_021DEE08 +MOD14_021DEE08: ; 0x021DEE08 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEE9C ; =0x00000618 + add r2, r5, #0 + add r2, #0xa8 + mul r0, r1 + add r4, r2, r0 + add r0, r5, #0 + add r0, #0xa0 + ldrh r1, [r0] + mov r0, #0x34 + add r6, r1, #0 + mul r6, r0 + add r0, r5, #0 + add r0, #0xa4 + ldrb r0, [r0] + cmp r0, #0 + beq _021DEE34 + cmp r0, #1 + beq _021DEE86 + b _021DEE98 +_021DEE34: + ldr r0, _021DEEA0 ; =0x00005980 + add r1, r4, r6 + ldr r0, [r5, r0] + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DEE98 + ldr r0, _021DEEA4 ; =0x0000598C + ldr r0, [r5, r0] + bl MOD14_021DDEDC + add r7, r0, #0 + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021DEE98 + add r0, r7, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + ldr r0, _021DEEA0 ; =0x00005980 + beq _021DEE6E + ldr r0, [r5, r0] + add r1, r4, r6 + mov r2, #1 + bl MOD14_021E0908 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DEE6E: + ldr r0, [r5, r0] + add r1, r4, r6 + mov r2, #2 + bl MOD14_021E0C20 + add r0, r5, #0 + add r0, #0xa4 + ldrb r0, [r0] + add r5, #0xa4 + add r0, r0, #1 + strb r0, [r5] + b _021DEE98 +_021DEE86: + ldr r0, _021DEEA0 ; =0x00005980 + add r1, r4, r6 + ldr r0, [r5, r0] + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DEE98 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DEE98: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEE9C: .word 0x00000618 +_021DEEA0: .word 0x00005980 +_021DEEA4: .word 0x0000598C + + thumb_func_start MOD14_021DEEA8 +MOD14_021DEEA8: ; 0x021DEEA8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DEEEC ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC484 + mov r6, #0 + add r7, r5, #0 + str r0, [sp] + add r4, r6, #0 + add r7, #0xa8 +_021DEEBE: + ldrb r2, [r5, #2] + ldr r0, _021DEEF0 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r5, r1 + add r0, r4, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DEEE0 + ldr r0, _021DEEF4 ; =0x00005980 + add r1, r7, r1 + ldr r0, [r5, r0] + ldr r2, [sp] + add r1, r1, r4 + bl MOD14_021E0B54 +_021DEEE0: + add r6, r6, #1 + add r4, #0x34 + cmp r6, #0x1e + blt _021DEEBE + pop {r3, r4, r5, r6, r7, pc} + nop +_021DEEEC: .word 0x00005988 +_021DEEF0: .word 0x00000618 +_021DEEF4: .word 0x00005980 + + thumb_func_start MOD14_021DEEF8 +MOD14_021DEEF8: ; 0x021DEEF8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x34 + mul r4, r0 + add r3, r5, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEF40 ; =0x00000618 + add r3, #0xa8 + mul r0, r1 + add r1, r3, r0 + ldr r0, [r1, r4] + cmp r0, #0 + beq _021DEF3E + ldr r0, _021DEF44 ; =0x00005980 + add r1, r1, r4 + ldr r0, [r5, r0] + bl MOD14_021E0BA8 + ldr r0, _021DEF48 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, _021DEF44 ; =0x00005980 + add r1, r5, #0 + ldr r0, [r5, r0] + ldrb r5, [r5, #2] + ldr r3, _021DEF40 ; =0x00000618 + add r1, #0xa8 + mul r3, r5 + add r1, r1, r3 + add r1, r1, r4 + bl MOD14_021E0B54 +_021DEF3E: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DEF40: .word 0x00000618 +_021DEF44: .word 0x00005980 +_021DEF48: .word 0x00005988 + + thumb_func_start MOD14_021DEF4C +MOD14_021DEF4C: ; 0x021DEF4C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DEF88 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r4, r0, #0 + ldr r0, _021DEF88 ; =0x00005988 + ldr r0, [r5, r0] + bl MOD14_021DC45C + add r2, r0, #0 + add r3, r5, #0 + ldrb r1, [r5, #2] + ldr r0, _021DEF8C ; =0x00000618 + add r3, #0xa8 + mul r0, r1 + add r3, r3, r0 + mov r0, #0x34 + add r1, r4, #0 + mul r1, r0 + ldr r0, [r3, r1] + cmp r0, #0 + beq _021DEF86 + ldr r0, _021DEF90 ; =0x00005980 + add r1, r3, r1 + ldr r0, [r5, r0] + bl MOD14_021E0BA4 +_021DEF86: + pop {r3, r4, r5, pc} + .align 2, 0 +_021DEF88: .word 0x00005988 +_021DEF8C: .word 0x00000618 +_021DEF90: .word 0x00005980 + + thumb_func_start MOD14_021DEF94 +MOD14_021DEF94: ; 0x021DEF94 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + add r0, sp, #0xc + str r0, [sp] + ldr r0, _021DF030 ; =0x00005988 + add r1, sp, #0x18 + ldr r0, [r4, r0] + add r2, sp, #0x14 + add r3, sp, #0x10 + bl MOD14_021DC4A4 + mov r5, #0 + str r5, [sp, #4] +_021DEFB0: + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0xa8 + mov r7, #0 + str r0, [sp, #8] +_021DEFBA: + ldrb r2, [r4, #2] + ldr r0, _021DF034 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r4, r1 + add r0, r5, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DF018 + ldr r6, [sp, #0x18] + ldr r2, [sp, #0x14] + sub r3, r7, r6 + sub r2, r2, r6 + ldr r0, [sp, #0x10] + cmp r3, r2 + bhi _021DEFE0 + mov r6, #1 + b _021DEFE2 +_021DEFE0: + mov r6, #0 +_021DEFE2: + ldr r2, [sp, #4] + sub r3, r2, r0 + ldr r2, [sp, #0xc] + sub r0, r2, r0 + cmp r3, r0 + bhi _021DEFF2 + mov r0, #1 + b _021DEFF4 +_021DEFF2: + mov r0, #0 +_021DEFF4: + tst r0, r6 + ldr r0, _021DF038 ; =0x00005980 + beq _021DF00A + ldr r2, [sp, #8] + ldr r0, [r4, r0] + add r1, r2, r1 + add r1, r1, r5 + mov r2, #1 + bl MOD14_021E0C5C + b _021DF018 +_021DF00A: + ldr r2, [sp, #8] + ldr r0, [r4, r0] + add r1, r2, r1 + add r1, r1, r5 + mov r2, #0 + bl MOD14_021E0C5C +_021DF018: + add r7, r7, #1 + add r5, #0x34 + cmp r7, #6 + blo _021DEFBA + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #5 + blo _021DEFB0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021DF030: .word 0x00005988 +_021DF034: .word 0x00000618 +_021DF038: .word 0x00005980 + + thumb_func_start MOD14_021DF03C +MOD14_021DF03C: ; 0x021DF03C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r7, r5, #0 + add r4, r6, #0 + add r7, #0xa8 +_021DF048: + ldrb r2, [r5, #2] + ldr r0, _021DF074 ; =0x00000618 + add r1, r2, #0 + mul r1, r0 + add r0, r5, r1 + add r0, r4, r0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DF06A + ldr r0, _021DF078 ; =0x00005980 + add r1, r7, r1 + ldr r0, [r5, r0] + add r1, r1, r4 + mov r2, #0 + bl MOD14_021E0C5C +_021DF06A: + add r6, r6, #1 + add r4, #0x34 + cmp r6, #0x1e + blt _021DF048 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF074: .word 0x00000618 +_021DF078: .word 0x00005980 + + thumb_func_start MOD14_021DF07C +MOD14_021DF07C: ; 0x021DF07C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _021DF128 ; =0x00000794 + add r6, r1, #0 + str r6, [r5, r0] + add r4, r2, #0 + sub r0, r0, #4 + str r4, [r5, r0] + add r0, r6, #0 + str r3, [r5] + bl MOD14_021DDD58 + ldr r1, _021DF12C ; =0x00000758 + str r0, [r5, r1] + add r0, r6, #0 + bl MOD14_021DDD60 + ldr r1, _021DF130 ; =0x0000075C + str r0, [r5, r1] + add r0, r6, #0 + bl MOD14_021DDD50 + str r0, [r5, #0x48] + add r0, r4, #0 + bl MOD14_021DC3CC + ldr r1, _021DF134 ; =0x00000785 + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3D0 + ldr r1, _021DF138 ; =0x00000789 + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3D8 + ldr r1, _021DF13C ; =0x0000078A + strb r0, [r5, r1] + add r0, r4, #0 + bl MOD14_021DC3E8 + ldr r1, _021DF140 ; =0x0000078B + add r3, r5, #0 + strb r0, [r5, r1] + mov r2, #0 + str r2, [r5, #4] + str r2, [r5, #8] + str r2, [r5, #0xc] + add r0, r1, #0 + str r2, [r5, #0x10] + sub r0, #0x37 + str r2, [r5, r0] + add r0, r1, #3 + mov r2, #1 + strb r2, [r5, r0] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + mov r1, #0xd + add r3, #0x1c + bl FUN_02006C30 + str r0, [r5, #0x14] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0xe + mov r2, #1 + add r3, #0x20 + bl FUN_02006C5C + str r0, [r5, #0x18] + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021DF11C + ldr r0, [r5, #0x18] + cmp r0, #0 + bne _021DF122 +_021DF11C: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021DF122: + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF128: .word 0x00000794 +_021DF12C: .word 0x00000758 +_021DF130: .word 0x0000075C +_021DF134: .word 0x00000785 +_021DF138: .word 0x00000789 +_021DF13C: .word 0x0000078A +_021DF140: .word 0x0000078B + + thumb_func_start MOD14_021DF144 +MOD14_021DF144: ; 0x021DF144 + push {r4, r5, r6, lr} + sub sp, #0x38 + add r4, r0, #0 + add r0, #0x24 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x24 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0xc + bl FUN_02006AE4 + ldr r0, _021DF310 ; =0x00000785 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _021DF178 + mov r5, #1 + b _021DF17A +_021DF178: + mov r5, #2 +_021DF17A: + ldr r0, _021DF314 ; =0x00000794 + ldr r0, [r4, r0] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x20] + add r1, r4, #0 + str r0, [sp] + str r5, [sp, #4] + ldr r3, [r4, #0x1c] + add r0, sp, #0x14 + add r1, #0x24 + bl MOD14_021DDDB4 + ldr r2, _021DF318 ; =0x00000764 + add r3, r4, #0 + add r1, r2, #4 + add r0, r4, r2 + add r2, #0x21 + add r1, r4, r1 + add r2, r4, r2 + bl MOD14_021E0264 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r3, _021DF318 ; =0x00000764 + ldr r0, [r4] + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #4] + mov r0, #0x2a + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, _021DF318 ; =0x00000764 + ldr r0, [r4] + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r1, sp, #0x14 + add r3, #0x18 + bl MOD14_021DDDD4 + str r0, [r4, #8] + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3C4 + add r6, r0, #0 + cmp r6, #4 + beq _021DF1FC + mov r2, #0x6c + mov r5, #0xec + b _021DF200 +_021DF1FC: + mov r2, #0x40 + mov r5, #0xc0 +_021DF200: + mov r1, #2 + add r0, sp, #0x34 + strb r1, [r0] + mov r0, #0x2b + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + mov r3, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #0xc] + mov r0, #0x2b + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, r5, #0 + mov r3, #0x14 + bl MOD14_021DDDD4 + str r0, [r4, #0x10] + ldr r0, [r4, #8] + mov r1, #5 + bl FUN_02020130 + ldr r0, [r4, #8] + mov r1, #2 + bl FUN_02020238 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + add r5, r0, #0 + cmp r5, #2 + ldr r0, [r4, #0xc] + beq _021DF262 + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02020130 + b _021DF270 +_021DF262: + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #9 + bl FUN_02020130 +_021DF270: + cmp r5, #0 + beq _021DF27C + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_020200A0 +_021DF27C: + cmp r6, #3 + beq _021DF2C0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3F4 + cmp r0, #1 + ldr r0, [r4, #4] + bne _021DF2A6 + mov r1, #0 + bl FUN_02020130 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #0x1e + bl MOD14_021E08E4 + mov r1, #0 + b _021DF2B4 +_021DF2A6: + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021DF324 + mov r1, #1 +_021DF2B4: + ldr r0, _021DF31C ; =0x0000078C + strb r1, [r4, r0] + ldr r0, _021DF320 ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] + b _021DF2F8 +_021DF2C0: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC538 + cmp r0, #0 + ldr r0, [r4, #4] + bne _021DF2DA + mov r1, #0 + bl FUN_02020130 + mov r1, #0 + b _021DF2E2 +_021DF2DA: + mov r1, #2 + bl FUN_02020130 + mov r1, #1 +_021DF2E2: + ldr r0, _021DF320 ; =0x0000078D + mov r2, #0x1e + strb r1, [r4, r0] + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + bl MOD14_021E08E4 + ldr r0, _021DF31C ; =0x0000078C + mov r1, #0 + strb r1, [r4, r0] +_021DF2F8: + ldr r0, _021DF314 ; =0x00000794 + ldr r0, [r4, r0] + bl MOD14_021DDD78 + mov r1, #0x76 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD14_021E0008 + add sp, #0x38 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF310: .word 0x00000785 +_021DF314: .word 0x00000794 +_021DF318: .word 0x00000764 +_021DF31C: .word 0x0000078C +_021DF320: .word 0x0000078D + + thumb_func_start MOD14_021DF324 +MOD14_021DF324: ; 0x021DF324 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #0 + str r0, [r2] + ldr r0, [r5, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E08E4 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC458 + add r4, r0, #0 + ldr r0, [r5, #4] + bl FUN_02020240 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, _021DF398 ; =0x000004D8 + add r1, r4, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x4c + str r0, [sp, #0xc] + ldr r3, [sp, #0x14] + ldr r2, [sp, #0x10] + asr r3, r3, #0xc + ldr r0, [r5, #0x48] + asr r2, r2, #0xc + add r3, r3, #4 + bl MOD14_021E0940 + ldr r1, _021DF39C ; =0x00000664 + mov r0, #0 + str r0, [r5, r1] + add r0, r1, #4 + ldr r2, _021DF3A0 ; =0xFFFFC000 + add r1, #0xf0 + str r2, [r5, r0] + mov r2, #1 + ldr r0, _021DF3A4 ; =0x0000078C + str r2, [r5, r1] + strb r2, [r5, r0] + add sp, #0x1c + pop {r4, r5, pc} + nop +_021DF398: .word 0x000004D8 +_021DF39C: .word 0x00000664 +_021DF3A0: .word 0xFFFFC000 +_021DF3A4: .word 0x0000078C + + thumb_func_start MOD14_021DF3A8 +MOD14_021DF3A8: ; 0x021DF3A8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DF3BA + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] +_021DF3BA: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021DF3C8 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x18] +_021DF3C8: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DF3D6 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #4] +_021DF3D6: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DF3E4 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #8] +_021DF3E4: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021DF3F2 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0xc] +_021DF3F2: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DF400 + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0x10] +_021DF400: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DF404 +MOD14_021DF404: ; 0x021DF404 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0 + add r5, r1, #0 + str r0, [r2] + str r0, [r5] + ldr r0, _021DF47C ; =0x00000785 + ldrb r1, [r4, r0] + cmp r1, #4 + bhi _021DF478 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DF424: ; jump table + .short _021DF42E - _021DF424 - 2 ; case 0 + .short _021DF478 - _021DF424 - 2 ; case 1 + .short _021DF458 - _021DF424 - 2 ; case 2 + .short _021DF46C - _021DF424 - 2 ; case 3 + .short _021DF46C - _021DF424 - 2 ; case 4 +_021DF42E: + add r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021DF478 + add r0, #0xb + ldr r0, [r4, r0] + bl MOD14_021DC3D0 + ldr r1, _021DF480 ; =0x00000789 + ldrsb r1, [r4, r1] + cmp r1, #0 + bne _021DF44A + cmp r0, #5 + beq _021DF452 +_021DF44A: + cmp r1, #5 + bne _021DF478 + cmp r0, #0 + bne _021DF478 +_021DF452: + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, pc} +_021DF458: + add r0, r0, #1 + ldrb r0, [r4, r0] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _021DF478 + mov r0, #1 + str r0, [r2] + pop {r3, r4, r5, pc} +_021DF46C: + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #2 + bne _021DF478 + mov r0, #1 + str r0, [r2] +_021DF478: + pop {r3, r4, r5, pc} + nop +_021DF47C: .word 0x00000785 +_021DF480: .word 0x00000789 + + thumb_func_start MOD14_021DF484 +MOD14_021DF484: ; 0x021DF484 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r2, _021DF584 ; =0x0000076C + add r5, r0, #0 + add r1, r2, #4 + add r0, r5, r2 + add r2, #0x1a + add r1, r5, r1 + add r2, r5, r2 + add r3, r5, #0 + bl MOD14_021E0264 + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD14_021DF404 + ldr r0, _021DF588 ; =0x00000786 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _021DF4B6 + ldr r0, [r5, #8] + mov r1, #0 + bl FUN_020200A0 +_021DF4B6: + ldr r1, _021DF58C ; =0x00000764 + ldr r0, [r5, r1] + lsl r2, r0, #0xc + add r0, r1, #0 + add r0, #0x10 + str r2, [r5, r0] + add r0, r1, #4 + ldr r0, [r5, r0] + lsl r2, r0, #0xc + add r0, r1, #0 + add r0, #0x14 + str r2, [r5, r0] + add r0, r1, #0 + add r0, #8 + ldr r6, [r5, r0] + add r0, r1, #0 + add r0, #0xc + ldr r2, [r5, r0] + ldr r7, [sp, #4] + lsl r4, r6, #0xc + lsl r0, r2, #0xc + cmp r7, #0 + bne _021DF4EC + add r1, #0x10 + ldr r1, [r5, r1] + sub r1, r4, r1 + b _021DF514 +_021DF4EC: + add r3, r1, #0 + add r3, #0x10 + ldr r3, [r5, r3] + cmp r4, r3 + ble _021DF506 + mov r3, #0x11 + ldr r1, [r5, r1] + lsl r3, r3, #4 + sub r3, r3, r6 + sub r1, #0x46 + add r1, r3, r1 + neg r1, r1 + b _021DF512 +_021DF506: + ldr r3, [r5, r1] + mov r1, #0x11 + lsl r1, r1, #4 + sub r1, r1, r3 + sub r6, #0x46 + add r1, r1, r6 +_021DF512: + lsl r1, r1, #0xc +_021DF514: + ldr r3, [sp] + cmp r3, #0 + bne _021DF522 + ldr r2, _021DF590 ; =0x00000778 + ldr r2, [r5, r2] + sub r4, r0, r2 + b _021DF548 +_021DF522: + ldr r4, _021DF590 ; =0x00000778 + ldr r6, [r5, r4] + cmp r0, r6 + ble _021DF53A + mov r0, #0xd0 + sub r4, #0x10 + sub r2, r0, r2 + ldr r0, [r5, r4] + add r0, #0x18 + add r0, r2, r0 + neg r4, r0 + b _021DF546 +_021DF53A: + sub r4, #0x10 + ldr r4, [r5, r4] + mov r0, #0xd0 + sub r0, r0, r4 + add r2, #0x18 + add r4, r0, r2 +_021DF546: + lsl r4, r4, #0xc +_021DF548: + cmp r7, #0 + bne _021DF550 + cmp r3, #0 + beq _021DF554 +_021DF550: + mov r6, #0xc + b _021DF556 +_021DF554: + mov r6, #6 +_021DF556: + add r0, r1, #0 + add r1, r6, #0 + bl _s32_div_f + ldr r1, _021DF594 ; =0x0000077C + str r0, [r5, r1] + add r0, r4, #0 + add r1, r6, #0 + bl _s32_div_f + mov r1, #0x1e + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #7 + strb r6, [r5, r0] + ldr r0, _021DF598 ; =MOD14_021DF5B0 + add r1, r5, #0 + mov r2, #0 + bl MOD14_021DDD40 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF584: .word 0x0000076C +_021DF588: .word 0x00000786 +_021DF58C: .word 0x00000764 +_021DF590: .word 0x00000778 +_021DF594: .word 0x0000077C +_021DF598: .word MOD14_021DF5B0 + + thumb_func_start MOD14_021DF59C +MOD14_021DF59C: ; 0x021DF59C + ldr r1, _021DF5AC ; =0x00000787 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DF5A8 + mov r0, #1 + bx lr +_021DF5A8: + mov r0, #0 + bx lr + .align 2, 0 +_021DF5AC: .word 0x00000787 + + thumb_func_start MOD14_021DF5B0 +MOD14_021DF5B0: ; 0x021DF5B0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + ldr r0, _021DF72C ; =0x00000787 + str r1, [sp, #8] + ldrb r2, [r4, r0] + cmp r2, #0 + beq _021DF68A + add r1, r0, #0 + sub r1, #0x13 + ldr r2, [r4, r1] + add r1, r0, #0 + sub r1, #0xb + ldr r1, [r4, r1] + add r2, r2, r1 + add r1, r0, #0 + sub r1, #0x13 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #0xb + ldr r1, [r4, r1] + cmp r1, #0 + ble _021DF5F8 + add r1, r0, #0 + sub r1, #0x13 + ldr r2, [r4, r1] + mov r1, #0x11 + lsl r1, r1, #0x10 + cmp r2, r1 + ble _021DF5F8 + ldr r1, _021DF730 ; =0x00156000 + sub r0, #0x13 + sub r1, r1, r2 + str r1, [r4, r0] +_021DF5F8: + ldr r1, _021DF734 ; =0x0000077C + ldr r0, [r4, r1] + cmp r0, #0 + bge _021DF61A + add r0, r1, #0 + sub r0, #8 + ldr r2, [r4, r0] + mov r0, #0x46 + lsl r0, r0, #0xc + cmp r2, r0 + bge _021DF61A + sub r2, r0, r2 + mov r0, #0x11 + lsl r0, r0, #0x10 + sub r0, r0, r2 + sub r1, #8 + str r0, [r4, r1] +_021DF61A: + ldr r1, _021DF738 ; =0x00000778 + add r0, r1, #0 + add r0, #8 + ldr r2, [r4, r1] + ldr r0, [r4, r0] + add r0, r2, r0 + str r0, [r4, r1] + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + ble _021DF644 + mov r0, #0xd + ldr r2, [r4, r1] + lsl r0, r0, #0x10 + cmp r2, r0 + ble _021DF644 + mov r0, #0x2e + lsl r0, r0, #0xe + sub r0, r0, r2 + str r0, [r4, r1] +_021DF644: + mov r1, #0x1e + lsl r1, r1, #6 + ldr r0, [r4, r1] + cmp r0, #0 + bge _021DF666 + add r0, r1, #0 + sub r0, #8 + ldr r2, [r4, r0] + ldr r0, _021DF73C ; =0xFFFE8000 + cmp r2, r0 + bge _021DF666 + sub r2, r0, r2 + mov r0, #0xd + lsl r0, r0, #0x10 + sub r0, r0, r2 + sub r1, #8 + str r0, [r4, r1] +_021DF666: + ldr r0, _021DF740 ; =0x00000774 + ldr r1, [r4, r0] + add r0, r0, #4 + str r1, [sp] + ldr r0, [r4, r0] + add r1, sp, #0 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF72C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, pc} +_021DF68A: + add r2, r0, #0 + sub r2, #0x1b + ldr r2, [r4, r2] + sub r0, #0x17 + lsl r2, r2, #0xc + str r2, [sp] + ldr r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF744 ; =0x0000076C + add r1, r0, #0 + ldr r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] + add r1, r0, #4 + ldr r2, [r4, r1] + sub r1, r0, #4 + str r2, [r4, r1] + add r1, r0, #0 + add r1, #0x1a + ldrb r2, [r4, r1] + add r1, r0, #0 + add r1, #0x19 + strb r2, [r4, r1] + add r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021DC3D0 + ldr r1, _021DF748 ; =0x00000789 + strb r0, [r4, r1] + add r0, r1, #7 + ldr r0, [r4, r0] + bl MOD14_021DC3D8 + ldr r1, _021DF74C ; =0x0000078A + strb r0, [r4, r1] + add r0, r1, #6 + ldr r0, [r4, r0] + bl MOD14_021DC3E8 + ldr r1, _021DF750 ; =0x0000078B + strb r0, [r4, r1] + sub r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DF6F8 + ldr r0, [r4, #8] + mov r1, #1 + bl FUN_020200A0 +_021DF6F8: + ldr r0, _021DF754 ; =0x00000786 + ldrb r0, [r4, r0] + cmp r0, #2 + ldr r0, [r4, #0xc] + beq _021DF712 + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #7 + bl FUN_02020130 + b _021DF720 +_021DF712: + mov r1, #8 + bl FUN_02020130 + ldr r0, [r4, #0x10] + mov r1, #9 + bl FUN_02020130 +_021DF720: + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r4, r5, pc} + nop +_021DF72C: .word 0x00000787 +_021DF730: .word 0x00156000 +_021DF734: .word 0x0000077C +_021DF738: .word 0x00000778 +_021DF73C: .word 0xFFFE8000 +_021DF740: .word 0x00000774 +_021DF744: .word 0x0000076C +_021DF748: .word 0x00000789 +_021DF74C: .word 0x0000078A +_021DF750: .word 0x0000078B +_021DF754: .word 0x00000786 + + thumb_func_start MOD14_021DF758 +MOD14_021DF758: ; 0x021DF758 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r1, #2 + mov r0, #0x1e + lsl r1, r1, #0xc + lsl r0, r0, #6 + str r1, [r4, r0] + add r1, r0, #0 + sub r1, #0x18 + ldr r2, [r4, r1] + add r1, r0, #0 + add r2, #0xc + sub r1, #0x10 + str r2, [r4, r1] + add r1, r0, #7 + mov r2, #6 + strb r2, [r4, r1] + mov r1, #0 + add r0, r0, #4 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD14_021E03CC + ldr r0, _021DF79C ; =MOD14_021DF7B4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + pop {r4, pc} + nop +_021DF79C: .word MOD14_021DF7B4 + + thumb_func_start MOD14_021DF7A0 +MOD14_021DF7A0: ; 0x021DF7A0 + ldr r1, _021DF7B0 ; =0x00000784 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _021DF7AC + mov r0, #1 + bx lr +_021DF7AC: + mov r0, #0 + bx lr + .align 2, 0 +_021DF7B0: .word 0x00000784 + + thumb_func_start MOD14_021DF7B4 +MOD14_021DF7B4: ; 0x021DF7B4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DF888 ; =0x00000784 + str r0, [r3] + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DF7E0 + cmp r0, #1 + beq _021DF83C + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DF7E0: + add r0, r1, #0 + mov r3, #0 + add r0, #0xa + strb r3, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DF80E + sub r0, r1, #4 + ldr r3, [sp, #4] + ldr r0, [r4, r0] + add r1, r2, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF88C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF80E: + sub r1, #0x14 + ldr r0, [r4, r1] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E0554 + ldr r0, _021DF88C ; =0x00000787 + mov r1, #6 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r0, r0, #3 + add r1, r1, #1 + strb r1, [r4, r0] +_021DF83C: + ldr r0, _021DF88C ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DF862 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF88C ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF862: + sub r0, #0x1f + ldr r0, [r4, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF888 ; =0x00000784 + mov r1, #0xff + strb r1, [r4, r0] + mov r1, #1 + add r0, #0xa + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF888: .word 0x00000784 +_021DF88C: .word 0x00000787 + + thumb_func_start MOD14_021DF890 +MOD14_021DF890: ; 0x021DF890 + add r1, r0, #0 + mov r2, #2 + mov r0, #0x1e + lsl r2, r2, #0xc + lsl r0, r0, #6 + str r2, [r1, r0] + add r2, r0, #0 + sub r2, #0x18 + ldr r3, [r1, r2] + add r2, r0, #0 + add r3, #0xc + sub r2, #0x10 + str r3, [r1, r2] + add r2, r0, #7 + mov r3, #6 + strb r3, [r1, r2] + ldr r3, _021DF8BC ; =MOD14_021DDD40 + mov r2, #0 + add r0, r0, #4 + strb r2, [r1, r0] + ldr r0, _021DF8C0 ; =MOD14_021DF8F8 + bx r3 + .align 2, 0 +_021DF8BC: .word MOD14_021DDD40 +_021DF8C0: .word MOD14_021DF8F8 + + thumb_func_start MOD14_021DF8C4 +MOD14_021DF8C4: ; 0x021DF8C4 + push {r4, lr} + ldr r1, _021DF8F0 ; =0x00000784 + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0xff + bne _021DF8EC + bl MOD14_021E0588 + ldr r2, _021DF8F4 ; =0x00000754 + add r1, r4, #0 + ldr r0, [r4, #0x48] + ldr r2, [r4, r2] + add r1, #0x4c + bl MOD14_021E08E4 + ldr r0, _021DF8F4 ; =0x00000754 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + pop {r4, pc} +_021DF8EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_021DF8F0: .word 0x00000784 +_021DF8F4: .word 0x00000754 + + thumb_func_start MOD14_021DF8F8 +MOD14_021DF8F8: ; 0x021DF8F8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + ldr r1, _021DF9D4 ; =0x00000784 + str r0, [r3] + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DF924 + cmp r0, #1 + beq _021DF980 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DF924: + add r0, r1, #0 + mov r3, #0 + add r0, #0xa + strb r3, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DF952 + sub r0, r1, #4 + ldr r3, [sp, #4] + ldr r0, [r4, r0] + add r1, r2, #0 + add r0, r3, r0 + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DF9D8 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF952: + sub r1, #0x14 + ldr r0, [r4, r1] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E0714 + ldr r0, _021DF9D8 ; =0x00000787 + mov r1, #6 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + sub r0, r0, #3 + add r1, r1, #1 + strb r1, [r4, r0] +_021DF980: + ldr r0, _021DF9D8 ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DF9A6 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl MOD14_021E0320 + ldr r0, _021DF9D8 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DF9A6: + sub r0, #0x1f + ldr r0, [r4, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021DF9D4 ; =0x00000784 + mov r1, #0xff + strb r1, [r4, r0] + mov r1, #1 + add r0, #0xa + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DF9D4: .word 0x00000784 +_021DF9D8: .word 0x00000787 + + thumb_func_start MOD14_021DF9DC +MOD14_021DF9DC: ; 0x021DF9DC + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020130 + ldr r0, _021DFA50 ; =0x00000788 + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD14_021E0740 + add r4, r0, #0 + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + bl FUN_0202032C + str r0, [sp] + ldr r1, [r5, #0x4c] + ldr r2, [sp, #0x14] + add r0, r5, #0 + mov r3, #1 + bl MOD14_021DFA7C + ldr r0, [r5, #0x4c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r5, #0x4c] + bl FUN_0202032C + str r0, [sp] + mov r3, #0 + ldr r2, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mvn r3, r3 + bl MOD14_021DFA7C + ldr r0, _021DFA54 ; =0x00000784 + mov r1, #0 + strb r1, [r5, r0] + add sp, #0x1c + pop {r4, r5, pc} + nop +_021DFA50: .word 0x00000788 +_021DFA54: .word 0x00000784 + + thumb_func_start MOD14_021DFA58 +MOD14_021DFA58: ; 0x021DFA58 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021DFB08 + cmp r0, #0 + beq _021DFA76 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + add r0, r4, #0 + bl MOD14_021E062C + mov r0, #1 + pop {r4, pc} +_021DFA76: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFA7C +MOD14_021DFA7C: ; 0x021DFA7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0xa + mov r1, #0x2c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021DFAFC + add r0, r6, #0 + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #4 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0xc + str r0, [r2] + str r6, [r4] + strh r1, [r4, #4] + mov r0, #6 + strh r0, [r4, #6] + ldr r0, [sp, #0x28] + str r0, [r4, #8] + ldr r0, [sp, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #4] + str r0, [r4, #0x14] + str r7, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x18] + ldr r0, [sp] + add r2, r0, #0 + mul r2, r1 + str r2, [r4, #0x24] + ldr r2, [r4, #0x10] + ldr r0, [r4, #0xc] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r4, #0x1c] + mov r0, #0xf + lsl r0, r0, #0xc + str r0, [r4, #0x20] + ldr r0, _021DFB00 ; =MOD14_021DFB28 + add r1, r4, #0 + mov r2, #0 + str r5, [r4, #0x28] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFAF6 + ldr r0, _021DFB04 ; =0x00000788 + mov r1, #1 + add sp, #0x10 + strb r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021DFAF6: + add r0, r4, #0 + bl FUN_02016A18 +_021DFAFC: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DFB00: .word MOD14_021DFB28 +_021DFB04: .word 0x00000788 + + thumb_func_start MOD14_021DFB08 +MOD14_021DFB08: ; 0x021DFB08 + ldr r1, _021DFB18 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DFB14 + mov r0, #1 + bx lr +_021DFB14: + mov r0, #0 + bx lr + .align 2, 0 +_021DFB18: .word 0x00000788 + + thumb_func_start MOD14_021DFB1C +MOD14_021DFB1C: ; 0x021DFB1C + ldr r1, _021DFB24 ; =0x00000788 + mov r2, #0 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_021DFB24: .word 0x00000788 + + thumb_func_start MOD14_021DFB28 +MOD14_021DFB28: ; 0x021DFB28 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldrh r0, [r4, #4] + cmp r0, #0 + beq _021DFB90 + sub r0, r0, #1 + strh r0, [r4, #4] + ldrh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r1, r0 + bne _021DFB5E + ldr r0, [r4] + ldr r1, [r4, #8] + bl MOD14_021DDE24 +_021DFB5E: + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [r4, #0xc] + str r0, [sp, #4] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x20] + add r0, r1, r0 + str r0, [r4, #0x18] + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B93C + ldr r1, [r4, #0x24] + add r2, r1, #0 + mul r2, r0 + ldr r0, [r4, #0x14] + add r1, sp, #0 + add r0, r0, r2 + str r0, [sp] + ldr r0, [r4] + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DFB90: + ldr r0, [r4, #0x14] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r4, #0x10] + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 + ldr r1, _021DFBB4 ; =MOD14_021DFB1C + ldr r2, [r4, #0x28] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DFBB4: .word MOD14_021DFB1C + + thumb_func_start MOD14_021DFBB8 +MOD14_021DFBB8: ; 0x021DFBB8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _021DFC1C ; =0x0000078C + ldrb r1, [r4, r0] + cmp r1, #0 + bne _021DFBD6 + add r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFBD6 + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_02020130 +_021DFBD6: + ldr r0, [r4, #4] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFC20 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + add r0, r0, #3 + strb r2, [r4, r0] + ldr r0, _021DFC24 ; =MOD14_021DFC40 + add r1, r4, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFC18 + ldr r0, _021DFC28 ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021DFC18: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DFC1C: .word 0x0000078C +_021DFC20: .word 0x00000784 +_021DFC24: .word MOD14_021DFC40 +_021DFC28: .word 0x00000788 + + thumb_func_start MOD14_021DFC2C +MOD14_021DFC2C: ; 0x021DFC2C + ldr r1, _021DFC3C ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021DFC38 + mov r0, #1 + bx lr +_021DFC38: + mov r0, #0 + bx lr + .align 2, 0 +_021DFC3C: .word 0x00000788 + + thumb_func_start MOD14_021DFC40 +MOD14_021DFC40: ; 0x021DFC40 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r1, _021DFD18 ; =0x00000784 + add r5, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _021DFC58 + cmp r0, #1 + beq _021DFCBE + add sp, #0x18 + pop {r4, r5, r6, pc} +_021DFC58: + add r0, r1, #3 + ldrb r0, [r4, r0] + add r2, r0, #1 + add r0, r1, #3 + strb r2, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #4 + blo _021DFD14 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0x10] + mov r2, #3 + asr r0, r0, #0xc + add r1, r0, #6 + mov r0, #0x77 + lsl r0, r0, #4 + str r1, [r4, r0] + add r1, r0, #0 + lsl r2, r2, #0xc + add r1, #0x10 + str r2, [r4, r1] + add r1, r0, #0 + mov r2, #2 + add r1, #0x17 + strb r2, [r4, r1] + add r1, r0, #0 + add r1, #0x1c + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021DFCB2 + add r0, #0x1d + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFCB2 + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_02020130 +_021DFCB2: + ldr r0, _021DFD18 ; =0x00000784 + add sp, #0x18 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021DFCBE: + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DFD1C ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFCF8 + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFD1C ; =0x00000787 + add sp, #0x18 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021DFCF8: + sub r0, #0x17 + ldr r0, [r4, r0] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DFD20 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021DFD14: + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DFD18: .word 0x00000784 +_021DFD1C: .word 0x00000787 +_021DFD20: .word 0x00000788 + + thumb_func_start MOD14_021DFD24 +MOD14_021DFD24: ; 0x021DFD24 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0x77 + str r0, [r2] + ldr r0, [sp, #4] + lsl r1, r1, #4 + asr r0, r0, #0xc + sub r0, r0, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _021DFD74 ; =0xFFFFF000 + add r0, #0x10 + str r2, [r4, r0] + add r0, r1, #0 + mov r2, #4 + add r0, #0x17 + strb r2, [r4, r0] + mov r2, #0 + add r1, #0x14 + strb r2, [r4, r1] + ldr r0, _021DFD78 ; =MOD14_021DFDBC + add r1, r4, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021DFD70 + ldr r0, _021DFD7C ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021DFD70: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021DFD74: .word 0xFFFFF000 +_021DFD78: .word MOD14_021DFDBC +_021DFD7C: .word 0x00000788 + + thumb_func_start MOD14_021DFD80 +MOD14_021DFD80: ; 0x021DFD80 + push {r4, lr} + ldr r1, _021DFDB8 ; =0x00000788 + add r4, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0 + bne _021DFDB2 + add r0, r1, #4 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFDAE + add r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021DFDAE + ldr r0, [r4, #4] + bl FUN_020201DC + cmp r0, #0 + beq _021DFDAE + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 +_021DFDAE: + mov r0, #1 + pop {r4, pc} +_021DFDB2: + mov r0, #0 + pop {r4, pc} + nop +_021DFDB8: .word 0x00000788 + + thumb_func_start MOD14_021DFDBC +MOD14_021DFDBC: ; 0x021DFDBC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, _021DFE20 ; =0x00000787 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFDFE + sub r0, r0, #7 + ldr r1, [sp, #4] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r2, #0 + bl MOD14_021E0320 + ldr r0, _021DFE20 ; =0x00000787 + add sp, #0xc + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_021DFDFE: + sub r0, #0x17 + ldr r0, [r4, r0] + add r1, r2, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r4, #0 + bl MOD14_021E0320 + ldr r0, _021DFE24 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021DFE20: .word 0x00000787 +_021DFE24: .word 0x00000788 + + thumb_func_start MOD14_021DFE28 +MOD14_021DFE28: ; 0x021DFE28 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC424 + mov r1, #0x79 + lsl r1, r1, #4 + mov r2, #0x11 + ldr r3, [r4, r1] + lsl r2, r2, #4 + ldrh r2, [r3, r2] + cmp r2, r0 + bne _021DFE4E + sub r1, #0x38 + ldr r0, [r4, r1] + bl MOD14_021DEA50 +_021DFE4E: + add r0, r4, #0 + bl MOD14_021E0720 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFE60 +MOD14_021DFE60: ; 0x021DFE60 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E0C20 + ldr r0, _021DFE80 ; =0x00000784 + mov r1, #0 + strb r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021DFE80: .word 0x00000784 + + thumb_func_start MOD14_021DFE84 +MOD14_021DFE84: ; 0x021DFE84 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021DFF14 ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDEDC + ldr r1, _021DFF18 ; =0x00000784 + add r4, r0, #0 + ldrb r1, [r5, r1] + cmp r1, #0 + beq _021DFEA4 + cmp r1, #1 + beq _021DFEBC + cmp r1, #2 + beq _021DFEF6 + b _021DFF10 +_021DFEA4: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DFF10 + ldr r0, _021DFF18 ; =0x00000784 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021DFF10 +_021DFEBC: + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021DFF10 + add r0, r4, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + beq _021DFEE0 + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E0720 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DFEE0: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + mov r2, #2 + bl MOD14_021E0C20 + ldr r0, _021DFF18 ; =0x00000784 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021DFF10 +_021DFEF6: + add r1, r5, #0 + ldr r0, [r5, #0x48] + add r1, #0x4c + bl MOD14_021E0C48 + cmp r0, #0 + beq _021DFF10 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02020130 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DFF10: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DFF14: .word 0x00000794 +_021DFF18: .word 0x00000784 + + thumb_func_start MOD14_021DFF1C +MOD14_021DFF1C: ; 0x021DFF1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020238 + ldr r0, _021DFF4C ; =0x0000078C + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DFF38 + ldr r0, [r4, #0x4c] + mov r1, #1 + bl FUN_02020238 +_021DFF38: + ldr r0, _021DFF50 ; =0x0000078D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFF4A + sub r0, #0x2d + ldr r0, [r4, r0] + mov r1, #1 + bl MOD14_021E501C +_021DFF4A: + pop {r4, pc} + .align 2, 0 +_021DFF4C: .word 0x0000078C +_021DFF50: .word 0x0000078D + + thumb_func_start MOD14_021DFF54 +MOD14_021DFF54: ; 0x021DFF54 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020238 + ldr r0, _021DFF84 ; =0x0000078C + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021DFF70 + ldr r0, [r4, #0x4c] + mov r1, #2 + bl FUN_02020238 +_021DFF70: + ldr r0, _021DFF88 ; =0x0000078D + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFF82 + sub r0, #0x2d + ldr r0, [r4, r0] + mov r1, #2 + bl MOD14_021E501C +_021DFF82: + pop {r4, pc} + .align 2, 0 +_021DFF84: .word 0x0000078C +_021DFF88: .word 0x0000078D + + thumb_func_start MOD14_021DFF8C +MOD14_021DFF8C: ; 0x021DFF8C + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DFFB0 ; =0x0000078C + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021DFFAC + add r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC45C + add r2, r0, #0 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0BA4 +_021DFFAC: + pop {r4, pc} + nop +_021DFFB0: .word 0x0000078C + + thumb_func_start MOD14_021DFFB4 +MOD14_021DFFB4: ; 0x021DFFB4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021DFFD4 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0B54 +_021DFFD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021DFFD8 +MOD14_021DFFD8: ; 0x021DFFD8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + add r2, r1, #0 + cmp r0, #0 + beq _021E0004 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + bl MOD14_021E0BA8 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r4, #0x48] + add r4, #0x4c + add r1, r4, #0 + bl MOD14_021E0B54 +_021E0004: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0008 +MOD14_021E0008: ; 0x021E0008 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC49C + cmp r0, #0 + ldr r0, [r4, #4] + beq _021E0024 + mov r1, #1 + bl FUN_02020248 + pop {r4, pc} +_021E0024: + mov r1, #0 + bl FUN_02020248 + pop {r4, pc} + + thumb_func_start MOD14_021E002C +MOD14_021E002C: ; 0x021E002C + ldr r3, _021E0034 ; =0x02020131 + ldr r0, [r0, #4] + mov r1, #1 + bx r3 + .align 2, 0 +_021E0034: .word 0x02020131 + + thumb_func_start MOD14_021E0038 +MOD14_021E0038: ; 0x021E0038 + push {r4, lr} + ldr r0, [r0, #4] + add r4, r1, #0 + bl FUN_0202011C + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0050 +MOD14_021E0050: ; 0x021E0050 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0074 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E0078 ; =MOD14_021E0094 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E0070 + ldr r0, _021E007C ; =0x0000078D + mov r1, #1 + strb r1, [r4, r0] + sub r0, r0, #5 + strb r1, [r4, r0] +_021E0070: + pop {r4, pc} + nop +_021E0074: .word 0x00000784 +_021E0078: .word MOD14_021E0094 +_021E007C: .word 0x0000078D + + thumb_func_start MOD14_021E0080 +MOD14_021E0080: ; 0x021E0080 + ldr r1, _021E0090 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E008C + mov r0, #1 + bx lr +_021E008C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0090: .word 0x00000788 + + thumb_func_start MOD14_021E0094 +MOD14_021E0094: ; 0x021E0094 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E00E8 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E00A8 + cmp r1, #1 + beq _021E00C4 + pop {r3, r4, r5, pc} +_021E00A8: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4D94 + ldr r0, _021E00E8 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E00C4: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4DE8 + cmp r0, #0 + beq _021E00E4 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + ldr r0, _021E00EC ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E00E4: + pop {r3, r4, r5, pc} + nop +_021E00E8: .word 0x00000784 +_021E00EC: .word 0x00000788 + + thumb_func_start MOD14_021E00F0 +MOD14_021E00F0: ; 0x021E00F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0114 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E0118 ; =MOD14_021E0134 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E0112 + ldr r0, _021E011C ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] + mov r1, #1 + sub r0, r0, #5 + strb r1, [r4, r0] +_021E0112: + pop {r4, pc} + .align 2, 0 +_021E0114: .word 0x00000784 +_021E0118: .word MOD14_021E0134 +_021E011C: .word 0x0000078D + + thumb_func_start MOD14_021E0120 +MOD14_021E0120: ; 0x021E0120 + ldr r1, _021E0130 ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E012C + mov r0, #1 + bx lr +_021E012C: + mov r0, #0 + bx lr + .align 2, 0 +_021E0130: .word 0x00000788 + + thumb_func_start MOD14_021E0134 +MOD14_021E0134: ; 0x021E0134 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E0188 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E0148 + cmp r1, #1 + beq _021E0164 + pop {r3, r4, r5, pc} +_021E0148: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4E58 + ldr r0, _021E0188 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E0164: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4EA4 + cmp r0, #0 + beq _021E0184 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021E018C ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E0184: + pop {r3, r4, r5, pc} + nop +_021E0188: .word 0x00000784 +_021E018C: .word 0x00000788 + + thumb_func_start MOD14_021E0190 +MOD14_021E0190: ; 0x021E0190 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E01B0 ; =0x00000784 + mov r2, #0 + strb r2, [r4, r0] + ldr r0, _021E01B4 ; =MOD14_021E01D0 + add r1, r4, #0 + bl FUN_0200CA44 + cmp r0, #0 + beq _021E01AC + ldr r0, _021E01B8 ; =0x00000788 + mov r1, #1 + strb r1, [r4, r0] +_021E01AC: + pop {r4, pc} + nop +_021E01B0: .word 0x00000784 +_021E01B4: .word MOD14_021E01D0 +_021E01B8: .word 0x00000788 + + thumb_func_start MOD14_021E01BC +MOD14_021E01BC: ; 0x021E01BC + ldr r1, _021E01CC ; =0x00000788 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E01C8 + mov r0, #1 + bx lr +_021E01C8: + mov r0, #0 + bx lr + .align 2, 0 +_021E01CC: .word 0x00000788 + + thumb_func_start MOD14_021E01D0 +MOD14_021E01D0: ; 0x021E01D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E0224 ; =0x00000784 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E01E4 + cmp r1, #1 + beq _021E0200 + pop {r3, r4, r5, pc} +_021E01E4: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x76 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021E4EB4 + ldr r0, _021E0224 ; =0x00000784 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_021E0200: + sub r0, #0x24 + ldr r0, [r4, r0] + bl MOD14_021E4F48 + cmp r0, #0 + beq _021E0220 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02020130 + ldr r0, _021E0228 ; =0x00000788 + mov r1, #0 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_021E0220: + pop {r3, r4, r5, pc} + nop +_021E0224: .word 0x00000784 +_021E0228: .word 0x00000788 + + thumb_func_start MOD14_021E022C +MOD14_021E022C: ; 0x021E022C + push {r3, lr} + ldr r1, _021E0240 ; =0x0000078D + ldrb r1, [r0, r1] + cmp r1, #0 + beq _021E023E + ldr r0, [r0, #4] + mov r1, #1 + bl FUN_02020130 +_021E023E: + pop {r3, pc} + .align 2, 0 +_021E0240: .word 0x0000078D + + thumb_func_start MOD14_021E0244 +MOD14_021E0244: ; 0x021E0244 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0260 ; =0x0000078D + ldrb r0, [r4, r0] + cmp r0, #0 + beq _021E025E + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, _021E0260 ; =0x0000078D + mov r1, #0 + strb r1, [r4, r0] +_021E025E: + pop {r4, pc} + .align 2, 0 +_021E0260: .word 0x0000078D + + thumb_func_start MOD14_021E0264 +MOD14_021E0264: ; 0x021E0264 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x79 + add r5, r3, #0 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r7, r2, #0 + add r4, r1, #0 + str r0, [sp] + bl MOD14_021DC3CC + strb r0, [r7] + ldrb r0, [r7] + cmp r0, #4 + bhi _021E0318 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E028E: ; jump table + .short _021E0298 - _021E028E - 2 ; case 0 + .short _021E02C2 - _021E028E - 2 ; case 1 + .short _021E02E4 - _021E028E - 2 ; case 2 + .short _021E02F6 - _021E028E - 2 ; case 3 + .short _021E0308 - _021E028E - 2 ; case 4 +_021E0298: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r5, r0, #0 + ldr r0, [sp] + bl MOD14_021DC3D0 + mov r1, #0x18 + add r5, #0x70 + mul r1, r0 + add r0, r5, r1 + str r0, [r6] + ldr r0, [sp] + bl MOD14_021DC3D8 + mov r1, #0x18 + mul r1, r0 + add r1, #0x18 + str r1, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02C2: + ldr r0, [sp] + bl MOD14_021DC3E8 + add r7, r0, #0 + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD60 + add r1, r7, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD14_021E3170 + ldr r0, [r4] + sub r0, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02E4: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0xa8 + str r0, [r6] + mov r0, #8 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E02F6: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0x9f + str r0, [r6] + mov r0, #0xa0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021E0308: + ldr r0, _021E031C ; =0x00000794 + ldr r0, [r5, r0] + bl MOD14_021DDD98 + add r0, #0xeb + str r0, [r6] + mov r0, #0xa0 + str r0, [r4] +_021E0318: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E031C: .word 0x00000794 + + thumb_func_start MOD14_021E0320 +MOD14_021E0320: ; 0x021E0320 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + ldr r0, [r7, #4] + add r6, r1, #0 + bl FUN_02020044 + ldr r1, _021E03B4 ; =0x0000078C + ldrb r0, [r7, r1] + cmp r0, #0 + beq _021E0378 + mov r0, #0 + sub r1, #0x38 + str r0, [sp] + str r0, [sp, #0x18] + ldr r0, [r7, r1] + cmp r0, #0 + bls _021E0378 + add r4, r7, #0 + add r5, r7, #0 +_021E0348: + ldr r0, _021E03B8 ; =0x00000664 + ldr r1, [r6] + ldr r0, [r4, r0] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, _021E03BC ; =0x00000668 + ldr r1, [r6, #4] + ldr r0, [r4, r0] + sub r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [sp] + add r4, #8 + add r0, r0, #1 + str r0, [sp] + ldr r0, _021E03C0 ; =0x00000754 + add r5, #0x34 + ldr r1, [r7, r0] + ldr r0, [sp] + cmp r0, r1 + blo _021E0348 +_021E0378: + ldr r0, _021E03C4 ; =0x0000078D + ldrb r1, [r7, r0] + cmp r1, #0 + beq _021E038A + sub r0, #0x2d + ldr r0, [r7, r0] + add r1, r6, #0 + bl MOD14_021E4FDC +_021E038A: + ldr r0, _021E03C8 ; =0x0000078E + ldrb r0, [r7, r0] + cmp r0, #0 + beq _021E03B0 + ldmia r6!, {r0, r1} + add r3, sp, #4 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r7, #8] + add r1, r2, #0 + bl FUN_02020044 +_021E03B0: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E03B4: .word 0x0000078C +_021E03B8: .word 0x00000664 +_021E03BC: .word 0x00000668 +_021E03C0: .word 0x00000754 +_021E03C4: .word 0x0000078D +_021E03C8: .word 0x0000078E + + thumb_func_start MOD14_021E03CC +MOD14_021E03CC: ; 0x021E03CC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + mov r1, #0x79 + lsl r1, r1, #4 + str r0, [sp, #4] + ldr r0, [r0, r1] + bl MOD14_021DC3CC + cmp r0, #0 + beq _021E03E2 + b _021E0504 +_021E03E2: + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC4DC + cmp r0, #0 + beq _021E042A + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r3, [sp, #4] + ldr r2, _021E053C ; =0x00000758 + ldr r0, [sp, #4] + add r3, #0x4c + ldr r0, [r0, r2] + ldr r2, _021E0540 ; =0x000004D8 + bl MOD14_021DE980 + ldr r0, [sp, #4] + ldr r2, _021E0544 ; =0x00000754 + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + mov r3, #0 + sub r1, #0xf0 + str r3, [r0, r1] + ldr r1, _021E0548 ; =0xFFFFC000 + sub r2, #0xec + str r1, [r0, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E042A: + add r0, sp, #0x24 + str r0, [sp] + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + add r1, sp, #0x30 + add r2, sp, #0x2c + add r3, sp, #0x28 + bl MOD14_021DC4A4 + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3D0 + str r0, [sp, #0x18] + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3D8 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + str r0, [sp, #0x1c] + cmp r0, r1 + bhi _021E04F8 + ldr r0, [sp, #4] + ldr r6, [sp, #4] + str r0, [sp, #0x10] + add r0, #0x4c + str r0, [sp, #0x10] + mov r7, #0x5f + ldr r0, [sp, #0x1c] + mov r1, #6 + mul r1, r0 + lsl r7, r7, #4 + str r1, [sp, #0xc] + add r5, r6, #0 +_021E0482: + ldr r4, [sp, #0x30] + ldr r0, [sp, #0x2c] + cmp r4, r0 + bhi _021E04E6 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + sub r1, r1, r0 + mov r0, #0x18 + add r2, r1, #0 + mul r2, r0 + sub r0, #0x1c + sub r0, r0, r2 + lsl r0, r0, #0xc + str r0, [sp, #8] +_021E049E: + ldr r1, [sp, #4] + ldr r0, _021E053C ; =0x00000758 + ldr r3, [sp, #0x10] + ldr r0, [r1, r0] + ldr r1, [sp, #0xc] + add r2, r7, #0 + add r1, r4, r1 + bl MOD14_021DE980 + ldr r0, [r6, #0x4c] + cmp r0, #0 + beq _021E04DE + ldr r0, [sp, #0x18] + add r7, #0x10 + sub r1, r4, r0 + mov r0, #6 + add r2, r1, #0 + lsl r0, r0, #0xe + mul r2, r0 + ldr r0, _021E054C ; =0x00000664 + ldr r1, [sp, #8] + str r2, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + ldr r0, [sp, #0x10] + add r6, #0x34 + add r0, #0x34 + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x20] +_021E04DE: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + cmp r4, r0 + bls _021E049E +_021E04E6: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + bls _021E0482 +_021E04F8: + ldr r2, _021E0544 ; =0x00000754 + ldr r1, [sp, #0x20] + ldr r0, [sp, #4] + add sp, #0x34 + str r1, [r0, r2] + pop {r4, r5, r6, r7, pc} +_021E0504: + mov r1, #0x79 + ldr r0, [sp, #4] + lsl r1, r1, #4 + ldr r0, [r0, r1] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r3, [sp, #4] + ldr r2, _021E0550 ; =0x0000075C + ldr r0, [sp, #4] + add r3, #0x4c + ldr r0, [r0, r2] + ldr r2, _021E0540 ; =0x000004D8 + bl MOD14_021E3084 + ldr r2, _021E0544 ; =0x00000754 + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0, r2] + add r1, r2, #0 + mov r3, #0 + sub r1, #0xf0 + str r3, [r0, r1] + ldr r1, _021E0548 ; =0xFFFFC000 + sub r2, #0xec + str r1, [r0, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E053C: .word 0x00000758 +_021E0540: .word 0x000004D8 +_021E0544: .word 0x00000754 +_021E0548: .word 0xFFFFC000 +_021E054C: .word 0x00000664 +_021E0550: .word 0x0000075C + + thumb_func_start MOD14_021E0554 +MOD14_021E0554: ; 0x021E0554 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021E0580 ; =0x00000754 + mov r4, #0 + ldr r0, [r6, r0] + cmp r0, #0 + bls _021E0578 + ldr r7, _021E0580 ; =0x00000754 + add r5, r6, #0 +_021E0566: + ldr r0, [r5, #0x4c] + mov r1, #2 + bl MOD14_021DDE24 + ldr r0, [r6, r7] + add r4, r4, #1 + add r5, #0x34 + cmp r4, r0 + blo _021E0566 +_021E0578: + ldr r0, _021E0584 ; =0x0000078C + mov r1, #1 + strb r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E0580: .word 0x00000754 +_021E0584: .word 0x0000078C + + thumb_func_start MOD14_021E0588 +MOD14_021E0588: ; 0x021E0588 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E0604 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC4DC + cmp r0, #0 + beq _021E05C2 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r0, _021E0620 ; =0x00000758 + ldr r0, [r5, r0] + add r5, #0x4c + add r2, r5, #0 + bl MOD14_021DE9D4 + pop {r3, r4, r5, r6, r7, pc} +_021E05C2: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC4F8 + add r7, r0, #0 + ldr r0, _021E0624 ; =0x00000754 + mov r4, #0 + ldr r0, [r5, r0] + cmp r0, #0 + bls _021E061C + add r6, r5, #0 + add r6, #0x4c +_021E05DC: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MOD14_021DC528 + add r1, r0, #0 + ldr r0, _021E0620 ; =0x00000758 + add r1, r7, r1 + ldr r0, [r5, r0] + add r2, r6, #0 + bl MOD14_021DE9D4 + ldr r0, _021E0624 ; =0x00000754 + add r4, r4, #1 + ldr r0, [r5, r0] + add r6, #0x34 + cmp r4, r0 + blo _021E05DC + pop {r3, r4, r5, r6, r7, pc} +_021E0604: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021E0628 ; =0x0000075C + ldr r0, [r5, r0] + add r5, #0x4c + add r2, r5, #0 + bl MOD14_021E30C0 +_021E061C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0620: .word 0x00000758 +_021E0624: .word 0x00000754 +_021E0628: .word 0x0000075C + + thumb_func_start MOD14_021E062C +MOD14_021E062C: ; 0x021E062C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E06A2 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E0 + add r4, r0, #0 + ldr r0, _021E0708 ; =0x00000758 + add r1, r4, #0 + ldr r0, [r5, r0] + bl MOD14_021DEA38 + add r6, r0, #0 + add r1, r5, #0 + mov r2, #0x5f + ldr r0, [r5, #0x48] + add r1, #0x4c + lsl r2, r2, #4 + bl MOD14_021E0BBC + mov r2, #6 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #8 + bl MOD14_021E0BBC + bl OS_WaitVBlankIntr + ldr r0, _021E0708 ; =0x00000758 + add r3, r5, #0 + ldr r0, [r5, r0] + ldr r2, _021E070C ; =0x000004D8 + add r1, r4, #0 + add r3, #0x80 + bl MOD14_021DE980 + ldr r0, _021E0708 ; =0x00000758 + add r2, r5, #0 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, #0x4c + bl MOD14_021DE9D4 + add r0, r5, #0 + add r5, #0x4c + add r0, #0x80 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + pop {r4, r5, r6, pc} +_021E06A2: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl MOD14_021DC3E8 + add r4, r0, #0 + ldr r0, _021E0710 ; =0x0000075C + add r1, r4, #0 + ldr r0, [r5, r0] + bl MOD14_021E3158 + add r6, r0, #0 + add r1, r5, #0 + mov r2, #0x5f + ldr r0, [r5, #0x48] + add r1, #0x4c + lsl r2, r2, #4 + bl MOD14_021E0BBC + mov r2, #6 + ldr r0, [r5, #0x48] + add r1, r6, #0 + lsl r2, r2, #8 + bl MOD14_021E0BBC + bl OS_WaitVBlankIntr + ldr r0, _021E0710 ; =0x0000075C + add r3, r5, #0 + ldr r0, [r5, r0] + ldr r2, _021E070C ; =0x000004D8 + add r1, r4, #0 + add r3, #0x80 + bl MOD14_021E3084 + ldr r0, _021E0710 ; =0x0000075C + add r2, r5, #0 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, #0x4c + bl MOD14_021E3114 + add r0, r5, #0 + add r5, #0x4c + add r0, #0x80 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + pop {r4, r5, r6, pc} + nop +_021E0708: .word 0x00000758 +_021E070C: .word 0x000004D8 +_021E0710: .word 0x0000075C + + thumb_func_start MOD14_021E0714 +MOD14_021E0714: ; 0x021E0714 + ldr r1, _021E071C ; =0x0000078C + mov r2, #0 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_021E071C: .word 0x0000078C + + thumb_func_start MOD14_021E0720 +MOD14_021E0720: ; 0x021E0720 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #0x48] + add r1, #0x4c + mov r2, #1 + bl MOD14_021E0908 + ldr r0, _021E073C ; =0x0000078C + mov r1, #0 + strb r1, [r4, r0] + sub r0, #0x38 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021E073C: .word 0x0000078C + + thumb_func_start MOD14_021E0740 +MOD14_021E0740: ; 0x021E0740 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E076A + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3E0 + add r1, r0, #0 + ldr r0, _021E0784 ; =0x00000758 + ldr r0, [r4, r0] + bl MOD14_021DEA38 + ldr r0, [r0] + pop {r4, pc} +_021E076A: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD14_021DC3E8 + add r1, r0, #0 + ldr r0, _021E0788 ; =0x0000075C + ldr r0, [r4, r0] + bl MOD14_021E3158 + ldr r0, [r0] + pop {r4, pc} + nop +_021E0784: .word 0x00000758 +_021E0788: .word 0x0000075C + + thumb_func_start MOD14_021E078C +MOD14_021E078C: ; 0x021E078C + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, sp, #0x18 + add r4, r1, #0 + add r6, r2, #0 + str r3, [sp, #8] + bl FUN_020B19DC + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #1 + mov r3, #0x40 + bl FUN_02006A8C + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + str r0, [sp, #0xc] + cmp r0, #0 + beq _021E0818 + add r0, sp, #0x18 + bl FUN_020B19DC + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl FUN_020B00F0 + ldr r2, [sp, #0x14] + add r7, r0, #0 + ldr r0, [r2, #0xc] + mov r1, #8 + str r1, [sp] + ldr r2, [r2, #8] + ldr r3, _021E0898 ; =0x0000057F + add r1, r0, #0 + lsr r2, r2, #1 + bl MOD14_021DDE40 + cmp r7, #0 + beq _021E0806 + add r0, sp, #0x18 + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + mov r2, #0xc0 + mov r3, #1 + bl FUN_020B10E8 + b _021E0812 +_021E0806: + ldr r0, [sp, #0x14] + mov r1, #0xc0 + mov r2, #1 + add r3, sp, #0x18 + bl FUN_020B1240 +_021E0812: + ldr r0, [sp, #0xc] + bl FUN_02016A18 +_021E0818: + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x15 + mov r2, #1 + add r3, #0x10 + bl FUN_02006C30 + str r0, [r5, #8] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + mov r1, #0x16 + mov r2, #1 + add r3, r5, #4 + bl FUN_02006C5C + str r0, [r5] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x17 + mov r2, #1 + add r3, #0x1c + bl FUN_02006C30 + str r0, [r5, #0x14] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x18 + mov r2, #1 + add r3, #0x20 + bl FUN_02006C5C + str r0, [r5, #0x18] + mov r0, #0x13 + mov r1, #0xa + bl FUN_02006670 + str r0, [r5, #0x48] + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E0882 + ldr r0, [r5] + cmp r0, #0 + beq _021E0882 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _021E0888 +_021E0882: + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021E0888: + ldr r0, [sp, #8] + str r0, [r5, #0x24] + str r6, [r5, #0x40] + str r4, [r5, #0x44] + mov r0, #1 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021E0898: .word 0x0000057F + + thumb_func_start MOD14_021E089C +MOD14_021E089C: ; 0x021E089C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E08AE + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] +_021E08AE: + ldr r0, [r4] + cmp r0, #0 + beq _021E08BC + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] +_021E08BC: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E08CA + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] +_021E08CA: + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021E08D8 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x18] +_021E08D8: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _021E08E2 + bl FUN_020066F4 +_021E08E2: + pop {r4, pc} + + thumb_func_start MOD14_021E08E4 +MOD14_021E08E4: ; 0x021E08E4 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r0, r4, #0 + add r5, r1, #0 + sub r4, r4, #1 + cmp r0, #0 + beq _021E0906 + mov r6, #0 +_021E08F4: + add r0, r5, #4 + str r6, [r5] + bl FUN_020B1A24 + add r0, r4, #0 + add r5, #0x34 + sub r4, r4, #1 + cmp r0, #0 + bne _021E08F4 +_021E0906: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0908 +MOD14_021E0908: ; 0x021E0908 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r0, r4, #0 + add r5, r1, #0 + sub r4, r4, #1 + cmp r0, #0 + beq _021E092E + mov r6, #0 +_021E0918: + ldr r0, [r5] + cmp r0, #0 + beq _021E0924 + bl FUN_0201FFC8 + str r6, [r5] +_021E0924: + add r0, r4, #0 + add r5, #0x34 + sub r4, r4, #1 + cmp r0, #0 + bne _021E0918 +_021E092E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0930 +MOD14_021E0930: ; 0x021E0930 + mov r3, #0x34 + mul r3, r2 + add r2, r3, #0 + ldr r3, _021E093C ; =0x020CE210 + bx r3 + nop +_021E093C: .word 0x020CE210 + + thumb_func_start MOD14_021E0940 +MOD14_021E0940: ; 0x021E0940 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r4, [sp, #0x64] + bl FUN_02066A6C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [r5, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x58] + str r0, [sp, #4] + ldr r3, [r5, #0x10] + add r0, sp, #0x20 + bl MOD14_021DDDB4 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r6, #0 + bl FUN_0206B688 + str r0, [r4, #0x28] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl FUN_0206B7BC + strh r0, [r4, #0x2c] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x30] + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x2e] + add r0, r4, #4 + bl FUN_020B1A24 + add r0, r5, #0 + add r0, #0x4c + str r0, [sp] + mov r3, #0xa + ldr r0, [r5, #0x48] + ldr r1, [r4, #0x28] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + add r0, r5, #0 + add r0, #0x4c + add r1, sp, #0x1c + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0A5C ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #0x1c] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #0x1c] + mov r2, #1 + str r1, [r0, #0x10] + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x1c] + lsl r1, r1, #5 + bl FUN_020B1768 + add r0, r4, #4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x5c] + ldr r2, [sp, #8] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r3, [sp, #0xc] + add r1, sp, #0x20 + bl MOD14_021DDDD4 + str r0, [r4] + cmp r0, #0 + bne _021E0A36 + bl ErrorHandling +_021E0A36: + ldrh r1, [r4, #0x2c] + ldr r0, [r4] + add r1, r1, #2 + bl FUN_02020248 + ldr r0, [r5, #0x40] + bl MOD14_021DC484 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E0B54 + ldr r1, [sp, #0x10] + add r0, r6, #0 + bl FUN_02066A94 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E0A5C: .word 0x00300010 + + thumb_func_start MOD14_021E0A60 +MOD14_021E0A60: ; 0x021E0A60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + str r2, [sp, #8] + add r7, r3, #0 + ldr r4, [sp, #0x70] + bl FUN_02066A6C + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [r5, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + str r0, [sp] + ldr r0, [sp, #0x64] + str r0, [sp, #4] + ldr r3, [r5, #0x10] + add r0, sp, #0x1c + bl MOD14_021DDDB4 + str r7, [r4, #0x28] + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_0206B7BC + strh r0, [r4, #0x2c] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x30] + add r0, r6, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020672BC + strh r0, [r4, #0x2e] + add r0, r4, #4 + bl FUN_020B1A24 + ldr r0, [sp, #0x58] + add r1, sp, #0x18 + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0B50 ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #0x18] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #0x18] + mov r2, #1 + str r1, [r0, #0x10] + ldr r1, [sp, #0x6c] + ldr r0, [sp, #0x18] + lsl r1, r1, #5 + bl FUN_020B1768 + add r0, r4, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x68] + ldr r2, [sp, #0x5c] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r3, [sp, #0x60] + add r1, sp, #0x1c + bl MOD14_021DDDD4 + str r0, [r4] + cmp r0, #0 + bne _021E0B28 + bl ErrorHandling +_021E0B28: + ldrh r1, [r4, #0x2c] + ldr r0, [r4] + add r1, r1, #2 + bl FUN_02020248 + ldr r0, [r5, #0x40] + bl MOD14_021DC484 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E0B54 + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl FUN_02066A94 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0B50: .word 0x00300010 + + thumb_func_start MOD14_021E0B54 +MOD14_021E0B54: ; 0x021E0B54 + push {r4, r5, r6, lr} + cmp r2, #0 + beq _021E0B9A + mov r3, #1 + add r0, r2, #0 + tst r0, r3 + beq _021E0B72 + ldrh r0, [r1, #0x30] + cmp r0, #0 + bne _021E0B72 + ldr r0, [r1] + add r1, r3, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} +_021E0B72: + mov r3, #0 + mov r4, #1 + mov r0, #2 +_021E0B78: + add r5, r0, #0 + lsl r5, r3 + tst r5, r2 + beq _021E0B94 + add r5, r4, #0 + ldrh r6, [r1, #0x2e] + lsl r5, r3 + tst r5, r6 + bne _021E0B94 + ldr r0, [r1] + add r1, r4, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} +_021E0B94: + add r3, r3, #1 + cmp r3, #6 + blt _021E0B78 +_021E0B9A: + ldr r0, [r1] + mov r1, #0 + bl FUN_02020398 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0BA4 +MOD14_021E0BA4: ; 0x021E0BA4 + strh r2, [r1, #0x2e] + bx lr + + thumb_func_start MOD14_021E0BA8 +MOD14_021E0BA8: ; 0x021E0BA8 + strh r2, [r1, #0x30] + bx lr + + thumb_func_start MOD14_021E0BAC +MOD14_021E0BAC: ; 0x021E0BAC + push {r3, lr} + str r1, [sp] + ldr r0, [r0, #0x48] + add r1, r2, #0 + mov r2, #0 + bl FUN_02006814 + pop {r3, pc} + + thumb_func_start MOD14_021E0BBC +MOD14_021E0BBC: ; 0x021E0BBC + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #0 + beq _021E0C18 + add r0, r4, #4 + bl FUN_020B1A24 + add r0, r5, #0 + add r0, #0x4c + str r0, [sp] + mov r3, #0xa + ldr r0, [r5, #0x48] + ldr r1, [r4, #0x28] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + add r5, #0x4c + add r0, r5, #0 + add r1, sp, #4 + bl FUN_020B0088 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E0C1C ; =0x00300010 + add r3, r4, #4 + and r1, r0 + ldr r0, [sp, #4] + str r1, [r0, #8] + lsr r1, r2, #0x11 + ldr r0, [sp, #4] + mov r2, #1 + str r1, [r0, #0x10] + ldr r0, [sp, #4] + lsl r1, r6, #5 + bl FUN_020B1768 + ldr r0, [r4] + add r1, r4, #4 + bl FUN_02020334 +_021E0C18: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E0C1C: .word 0x00300010 + + thumb_func_start MOD14_021E0C20 +MOD14_021E0C20: ; 0x021E0C20 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + sub r0, r4, #1 + cmp r0, #1 + ldr r0, [r5] + bhi _021E0C36 + mov r1, #1 + bl FUN_020200EC + b _021E0C3C +_021E0C36: + mov r1, #0 + bl FUN_020200EC +_021E0C3C: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_02020130 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0C48 +MOD14_021E0C48: ; 0x021E0C48 + push {r3, lr} + ldr r0, [r1] + bl FUN_02020388 + cmp r0, #0 + bne _021E0C58 + mov r0, #1 + pop {r3, pc} +_021E0C58: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD14_021E0C5C +MOD14_021E0C5C: ; 0x021E0C5C + cmp r2, #0 + beq _021E0C64 + mov r2, #6 + b _021E0C66 +_021E0C64: + mov r2, #2 +_021E0C66: + ldr r0, [r1] + ldrh r1, [r1, #0x2c] + ldr r3, _021E0C70 ; =0x02020249 + add r1, r1, r2 + bx r3 + .align 2, 0 +_021E0C70: .word 0x02020249 + + thumb_func_start MOD14_021E0C74 +MOD14_021E0C74: ; 0x021E0C74 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD14_021E0C78 +MOD14_021E0C78: ; 0x021E0C78 + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD14_021E0C7C +MOD14_021E0C7C: ; 0x021E0C7C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + str r1, [r4, #0x44] + str r3, [r4, #0x3c] + str r2, [r4, #0x40] + str r3, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r1, #0xa + add r3, r4, #0 + str r1, [sp] + mov r0, #0x12 + mov r2, #1 + add r3, #0x10 + bl FUN_02006C30 + str r0, [r4, #8] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0xb + mov r2, #1 + add r3, #0x14 + bl FUN_02006C5C + str r0, [r4, #0xc] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E0CC0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E0CC6 +_021E0CC0: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_021E0CC6: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD14_021E0CCC +MOD14_021E0CCC: ; 0x021E0CCC + push {r4, lr} + sub sp, #0x38 + add r4, r0, #0 + add r0, #0x18 + bl FUN_020B1A24 + mov r3, #0 + mov r0, #0x9d + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x18 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #9 + bl FUN_02006AE4 + ldr r0, [r4, #0x44] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x14] + add r1, r4, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r3, [r4, #0x10] + add r0, sp, #0x14 + add r1, #0x18 + bl MOD14_021DDDB4 + ldr r0, [r4, #0x44] + bl MOD14_021DDD98 + add r2, r0, #0 + mov r0, #0x2c + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, #0xb7 + mov r3, #0xb0 + bl MOD14_021DDDD4 + mov r1, #1 + str r0, [r4, #4] + bl FUN_02020248 + add sp, #0x38 + pop {r4, pc} + + thumb_func_start MOD14_021E0D3C +MOD14_021E0D3C: ; 0x021E0D3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E0D4E + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] +_021E0D4E: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021E0D5C + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] +_021E0D5C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0D60 +MOD14_021E0D60: ; 0x021E0D60 + push {r3, lr} + cmp r1, #0 + beq _021E0D70 + cmp r1, #1 + beq _021E0D7A + cmp r1, #2 + beq _021E0D84 + pop {r3, pc} +_021E0D70: + ldr r0, [r0, #4] + mov r1, #0 + bl FUN_02020130 + pop {r3, pc} +_021E0D7A: + ldr r0, [r0, #4] + mov r1, #1 + bl FUN_02020130 + pop {r3, pc} +_021E0D84: + ldr r0, [r0, #4] + mov r1, #2 + bl FUN_02020130 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0D90 +MOD14_021E0D90: ; 0x021E0D90 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + add r7, r3, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021E0DAC + mov r0, #0 + str r0, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E0DAC: + str r4, [r5, #0x14] + str r7, [r5, #8] + ldr r0, [sp, #0x18] + str r6, [r5, #0x10] + str r0, [r5, #0xc] + mov r0, #0 + str r0, [r5, #4] + str r0, [r5, #0x4c] + str r0, [r5, #0x24] + add r0, r4, #0 + bl MOD14_021DDD90 + str r0, [r5, #0x20] + mov r0, #9 + mov r1, #6 + mov r2, #0xf + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x18] + mov r0, #1 + mov r1, #2 + mov r2, #0xf + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x10 + mov r2, #1 + add r3, #0x2c + bl FUN_02006C30 + str r0, [r5, #0x28] + mov r0, #0 + str r0, [r5, #0x30] + ldr r0, [sp, #0x1c] + mov r1, #0x15 + bl FUN_0200A914 + str r0, [r5, #0x44] + ldr r0, [sp, #0x1c] + mov r1, #0x16 + bl FUN_0200A914 + str r0, [r5, #0x48] + bl FUN_0206E12C + add r4, r0, #0 + bl FUN_0206E10C + add r1, r0, #0 + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + add r0, r4, #0 + mov r2, #1 + add r3, #0x38 + bl FUN_02006C30 + mov r1, #0 + str r0, [r5, #0x34] + add r2, r5, #0 + add r0, r1, #0 +_021E0E32: + add r1, r1, #1 + str r0, [r2, #0x3c] + add r2, r2, #4 + cmp r1, #2 + blt _021E0E32 + mov r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E0E44 +MOD14_021E0E44: ; 0x021E0E44 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E0EE2 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E0E72 + mov r6, #0 + add r4, r6, #0 +_021E0E58: + ldr r0, [r5, #4] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #4 + blt _021E0E58 + ldr r0, [r5, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #4] +_021E0E72: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E0E7C + bl FUN_0200B990 +_021E0E7C: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E0E86 + bl FUN_0200B990 +_021E0E86: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E0E90 + bl FUN_02021A20 +_021E0E90: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021E0E9A + bl FUN_02021A20 +_021E0E9A: + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E0EA8 + bl FUN_02007534 + mov r0, #0 + str r0, [r5, #0x24] +_021E0EA8: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021E0EB2 + bl FUN_02016A18 +_021E0EB2: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E0EBC + bl FUN_0201FFC8 +_021E0EBC: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E0EC6 + bl FUN_02016A18 +_021E0EC6: + mov r6, #0 + add r4, r5, #0 +_021E0ECA: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E0ED4 + bl FUN_0201FFC8 +_021E0ED4: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #2 + blt _021E0ECA + add r0, r5, #0 + bl MOD14_021E10F4 +_021E0EE2: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E0EE4 +MOD14_021E0EE4: ; 0x021E0EE4 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + beq _021E0EF2 + ldr r0, [r0, #0x20] + bl FUN_020081C4 +_021E0EF2: + pop {r3, pc} + + thumb_func_start MOD14_021E0EF4 +MOD14_021E0EF4: ; 0x021E0EF4 + push {r4, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + add r4, r0, #0 + str r2, [sp, #4] + add r0, sp, #0x10 + mov r1, #1 + add r3, r2, #0 + str r2, [sp, #8] + bl FUN_02068C00 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x20] + add r1, sp, #0x10 + mov r2, #0x2c + mov r3, #0x54 + bl FUN_020073A0 + str r0, [r4, #0x24] + add sp, #0x20 + pop {r4, pc} + + thumb_func_start MOD14_021E0F28 +MOD14_021E0F28: ; 0x021E0F28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E0F3C + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] + pop {r4, pc} +_021E0F3C: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E0F40 +MOD14_021E0F40: ; 0x021E0F40 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E0FA0 + mov r0, #0xa + mov r1, #4 + bl FUN_02018FF4 + str r0, [r5, #4] + cmp r0, #0 + beq _021E0F94 + mov r7, #0 + ldr r6, _021E0FA4 ; =0x021E65F4 + add r4, r7, #0 +_021E0F5E: + ldr r1, [r5, #4] + ldr r0, [r5, #8] + add r1, r1, r4 + add r2, r6, #0 + bl FUN_02019150 + cmp r7, #3 + ldr r0, [r5, #4] + beq _021E0F78 + add r0, r0, r4 + bl FUN_02019270 + b _021E0F82 +_021E0F78: + add r0, r0, r4 + mov r1, #0xc + mov r2, #2 + bl FUN_0201928C +_021E0F82: + add r7, r7, #1 + add r6, #8 + add r4, #0x10 + cmp r7, #4 + blt _021E0F5E + ldr r0, [r5, #8] + mov r1, #2 + bl FUN_02017CD0 +_021E0F94: + add r0, r5, #0 + bl MOD14_021E0FA8 + add r0, r5, #0 + bl MOD14_021E10B0 +_021E0FA0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E0FA4: .word 0x021E65F4 + + thumb_func_start MOD14_021E0FA8 +MOD14_021E0FA8: ; 0x021E0FA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x68 + add r5, r0, #0 + bl FUN_0206E12C + str r0, [sp, #0x1c] + mov r0, #2 + bl FUN_0206E0F0 + str r0, [sp, #0x18] + bl FUN_0206E108 + add r1, r0, #0 + mov r0, #0x60 + str r0, [sp] + mov r3, #0xa + str r3, [sp, #4] + ldr r0, [sp, #0x1c] + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + mov r0, #0 + mov r6, #0x5e + str r0, [sp, #0x14] + lsl r6, r6, #4 + mov r7, #0x18 + add r4, r5, #0 +_021E0FE0: + add r0, sp, #0x44 + bl FUN_020B1A24 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r0, r6, #5 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x44 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + mov r2, #1 + mov r3, #0 + bl FUN_02006B38 + ldr r0, [r5, #0x14] + bl MOD14_021DDD48 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, [r5, #0x38] + add r0, sp, #0x20 + add r1, sp, #0x44 + bl MOD14_021DDDB4 + mov r0, #0x2e + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r1, sp, #0x20 + add r2, r7, #0 + mov r3, #0xb0 + bl MOD14_021DDDD4 + str r0, [r4, #0x3c] + cmp r0, #0 + bne _021E103E + bl ErrorHandling +_021E103E: + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #0x14] + add r6, #8 + add r0, r0, #1 + add r7, #0x24 + add r4, r4, #4 + str r0, [sp, #0x14] + cmp r0, #2 + blo _021E0FE0 + add r0, sp, #0x44 + bl FUN_020B1A24 + mov r3, #0 + mov r0, #0xb9 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + lsl r0, r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x44 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0xf + bl FUN_02006AE4 + ldr r0, [r5, #0x14] + bl MOD14_021DDD48 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r3, [r5, #0x2c] + add r0, sp, #0x20 + add r1, sp, #0x44 + bl MOD14_021DDDB4 + mov r0, #0x2f + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0xc] + add r1, sp, #0x20 + mov r2, #0x38 + mov r3, #0xb0 + bl MOD14_021DDDD4 + str r0, [r5, #0x30] + add sp, #0x68 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E10B0 +MOD14_021E10B0: ; 0x021E10B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + cmp r0, #0 + bne _021E10EE + mov r0, #0xa + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + beq _021E10EA + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _021E10D6 + mov r0, #4 + b _021E10D8 +_021E10D6: + mov r0, #0 +_021E10D8: + strh r0, [r4] + ldr r0, _021E10F0 ; =MOD14_021E115C + str r5, [r4, #8] + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + str r0, [r5, #0x4c] + pop {r3, r4, r5, pc} +_021E10EA: + bl ErrorHandling +_021E10EE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E10F0: .word MOD14_021E115C + + thumb_func_start MOD14_021E10F4 +MOD14_021E10F4: ; 0x021E10F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _021E1110 + bl FUN_0201B6C8 + bl FUN_02016A18 + ldr r0, [r4, #0x4c] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x4c] +_021E1110: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1114 +MOD14_021E1114: ; 0x021E1114 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + bl FUN_0201B6C8 + add r4, r0, #0 + beq _021E113C + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _021E1132 + mov r0, #4 + b _021E1134 +_021E1132: + mov r0, #0 +_021E1134: + strh r0, [r4] + add r0, r5, #0 + bl MOD14_021E1268 +_021E113C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1140 +MOD14_021E1140: ; 0x021E1140 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + bl FUN_0201B6C8 + cmp r0, #0 + beq _021E1158 + mov r1, #4 + strh r1, [r0] + add r0, r4, #0 + bl MOD14_021E1268 +_021E1158: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E115C +MOD14_021E115C: ; 0x021E115C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrh r0, [r4] + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E1220 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1174: ; jump table + .short _021E117E - _021E1174 - 2 ; case 0 + .short _021E1190 - _021E1174 - 2 ; case 1 + .short _021E11B0 - _021E1174 - 2 ; case 2 + .short _021E11CE - _021E1174 - 2 ; case 3 + .short _021E1220 - _021E1174 - 2 ; case 4 +_021E117E: + ldr r0, [r5, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E1220 + mov r0, #0 + strh r0, [r4, #2] + mov r0, #1 + strh r0, [r4] +_021E1190: + ldr r0, [r5, #4] + ldrh r2, [r4, #2] + add r0, #0x30 + add r1, r5, #0 + mov r3, #0 + bl MOD14_021E12B8 + ldr r0, [r5, #4] + add r0, #0x30 + bl FUN_02019548 + mov r0, #0 + strh r0, [r4, #4] + mov r0, #2 + strh r0, [r4] + pop {r3, r4, r5, pc} +_021E11B0: + ldrh r0, [r4, #4] + add r0, r0, #1 + strh r0, [r4, #4] + ldrh r0, [r4, #4] + cmp r0, #0x50 + bls _021E1220 + add r0, r4, #0 + bl MOD14_021E1284 + mov r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + mov r0, #3 + strh r0, [r4] + pop {r3, r4, r5, pc} +_021E11CE: + ldrh r0, [r4, #6] + mov r1, #1 + lsl r1, r1, #0xe + add r0, r0, #4 + strh r0, [r4, #6] + add r0, r5, #0 + bl MOD14_021E1224 + ldr r0, [r5, #4] + mov r1, #0 + add r0, #0x30 + mov r2, #4 + add r3, r1, #0 + bl FUN_0201A8C8 + ldr r0, [r5, #4] + add r0, #0x30 + bl FUN_02019548 + ldrh r0, [r4, #6] + cmp r0, #0x10 + blo _021E1220 + ldrh r0, [r4, #2] + cmp r0, #1 + bne _021E1206 + add r0, r5, #0 + bl MOD14_021E1268 +_021E1206: + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #4 + blo _021E1216 + mov r0, #0 + strh r0, [r4, #2] +_021E1216: + mov r0, #0 + strh r0, [r4, #6] + strh r0, [r4, #4] + mov r0, #2 + strh r0, [r4] +_021E1220: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1224 +MOD14_021E1224: ; 0x021E1224 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r1, #0 + mov r4, #0 +_021E122E: + ldr r0, [r5, #0x3c] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [sp, #4] + sub r0, r0, r7 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + bl FUN_02020044 + cmp r4, #0 + bne _021E125A + ldr r0, [r5, #0x3c] + bl FUN_02020128 +_021E125A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E122E + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1268 +MOD14_021E1268: ; 0x021E1268 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E1270: + ldr r0, [r5, #0x3c] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E1270 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1284 +MOD14_021E1284: ; 0x021E1284 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + mov r1, #0 + ldr r4, [r0, #4] + add r4, #0x30 + add r0, r4, #0 + bl FUN_02019620 + ldrh r2, [r5, #2] + ldr r1, [r5, #8] + add r0, r4, #0 + mov r3, #0 + bl MOD14_021E12B8 + ldrh r0, [r5, #2] + add r2, r0, #1 + cmp r2, #4 + blo _021E12AC + mov r2, #0 +_021E12AC: + ldr r1, [r5, #8] + add r0, r4, #0 + mov r3, #1 + bl MOD14_021E12B8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E12B8 +MOD14_021E12B8: ; 0x021E12B8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + lsl r5, r3, #4 + cmp r2, #3 + bls _021E12C6 + b _021E13E6 +_021E12C6: + add r1, r2, r2 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E12D2: ; jump table + .short _021E12DA - _021E12D2 - 2 ; case 0 + .short _021E12EC - _021E12D2 - 2 ; case 1 + .short _021E12E0 - _021E12D2 - 2 ; case 2 + .short _021E12E6 - _021E12D2 - 2 ; case 3 +_021E12DA: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x68] + b _021E13D2 +_021E12E0: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x6c] + b _021E13D2 +_021E12E6: + ldr r1, [r4, #0x10] + ldr r2, [r1, #0x70] + b _021E13D2 +_021E12EC: + bl FUN_0206E12C + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E0F0 + bl FUN_0206E12C + add r6, r0, #0 + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E0F0 + mov r2, #0 + add r1, r0, #0 + mov r3, #0x2f + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + lsl r3, r3, #0xa + bl FUN_02006A34 + ldr r0, [r4, #0x3c] + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r5, #0xb0 + str r0, [r3] + lsl r0, r5, #0xc + str r0, [sp, #0x14] + ldr r0, [r4, #0x3c] + add r1, r2, #0 + bl FUN_02020044 + ldr r0, [r4, #0x10] + add r0, #0x58 + ldrb r0, [r0] + bl FUN_0206E114 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + add r1, #0xa + bl FUN_02020248 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [r4, #0x10] + add r0, r1, #0 + add r0, #0x59 + add r1, #0x58 + ldrb r5, [r0] + ldrb r0, [r1] + cmp r0, r5 + beq _021E13C6 + bl FUN_0206E12C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0206E0F0 + mov r2, #0 + add r1, r0, #0 + mov r3, #0xbd + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #9 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x40] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [r4, #0x10] + add r0, #0x59 + ldrb r0, [r0] + bl FUN_0206E114 + add r1, r0, #0 + ldr r0, [r4, #0x40] + add r1, #0xa + bl FUN_02020248 + ldr r0, [r4, #0x40] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021E13C6: + ldr r0, [r4, #0x40] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021E13D2: + str r5, [sp] + mov r1, #0xff + str r1, [sp, #4] + ldr r1, _021E13EC ; =0x00090600 + str r1, [sp, #8] + mov r1, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_021E13E6: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021E13EC: .word 0x00090600 + + thumb_func_start MOD14_021E13F0 +MOD14_021E13F0: ; 0x021E13F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E144E + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E1430 + add r0, r4, #0 + bl MOD14_021E153C +_021E1430: + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 +_021E144E: + pop {r4, pc} + + thumb_func_start MOD14_021E1450 +MOD14_021E1450: ; 0x021E1450 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E14CC + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E148E + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_021E148E: + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E14A0 + add r0, r4, #0 + bl MOD14_021E153C + b _021E14A8 +_021E14A0: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E16A0 +_021E14A8: + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 + add r0, r4, #0 + bl MOD14_021E1114 +_021E14CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E14D0 +MOD14_021E14D0: ; 0x021E14D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E153A + ldr r0, [r4, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x10 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0xf + add r0, #0x20 + bl FUN_02019620 + ldr r0, [r4, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E150E + bl FUN_02007534 + mov r0, #0 + str r0, [r4, #0x24] +_021E150E: + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E16A0 + ldr r0, [r4, #4] + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x10 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x20 + bl FUN_02019548 + ldr r0, [r4, #4] + add r0, #0x30 + bl FUN_02019548 + add r0, r4, #0 + bl MOD14_021E1140 +_021E153A: + pop {r4, pc} + + thumb_func_start MOD14_021E153C +MOD14_021E153C: ; 0x021E153C + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1660 ; =0x0009060F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x18] + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1664 ; =0x0001020F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x14] + add r0, #0x20 + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1664 ; =0x0001020F + mov r3, #2 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x14] + add r0, #0x20 + bl FUN_0201BDE0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _021E15A2 + cmp r0, #1 + beq _021E15BE + b _021E15D8 +_021E15A2: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1668 ; =0x0007080F + mov r3, #0x46 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x44] + add r0, #0x20 + bl FUN_0201BDE0 + b _021E15D8 +_021E15BE: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E166C ; =0x0003040F + mov r3, #0x46 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x48] + add r0, #0x20 + bl FUN_0201BDE0 +_021E15D8: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021E1632 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1670 ; =0x00090600 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x1c] + add r0, #0x30 + bl FUN_0201BDE0 + ldrh r2, [r4, #8] + cmp r2, #0 + beq _021E1616 + mov r1, #2 + str r1, [sp] + ldr r0, [r5, #4] + mov r3, #3 + add r0, #0x10 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + bl FUN_0200BA78 +_021E1616: + mov r1, #1 + str r1, [sp] + ldr r0, [r5, #4] + mov r3, #3 + add r0, #0x20 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xa] + ldr r0, [r5, #0x1c] + bl FUN_0200BA78 +_021E1632: + ldr r1, [r4] + add r0, sp, #0x10 + mov r2, #2 + bl FUN_02068B70 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x20] + add r1, sp, #0x10 + mov r2, #0x2c + mov r3, #0x54 + bl FUN_020073A0 + str r0, [r5, #0x24] + ldrb r1, [r4, #0xb] + add r0, r5, #0 + bl MOD14_021E16A0 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E1660: .word 0x0009060F +_021E1664: .word 0x0001020F +_021E1668: .word 0x0007080F +_021E166C: .word 0x0003040F +_021E1670: .word 0x00090600 + + thumb_func_start MOD14_021E1674 +MOD14_021E1674: ; 0x021E1674 + mov r0, #1 + bx lr + + thumb_func_start MOD14_021E1678 +MOD14_021E1678: ; 0x021E1678 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E169C + ldr r0, [r4, #0x10] + bl MOD14_021DC408 + cmp r0, #0 + beq _021E169C + ldr r0, [r4, #0x10] + bl MOD14_021DC42C + add r1, r0, #0 + ldrb r1, [r1, #0xb] + add r0, r4, #0 + bl MOD14_021E16A0 +_021E169C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E16A0 +MOD14_021E16A0: ; 0x021E16A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r4, r1, #0 + ldr r0, [r0, #8] + mov r1, #2 + bl FUN_0201886C + mov ip, r0 + add r2, r0, #0 + mov r0, #1 + ldr r6, _021E1700 ; =0x000004C8 + mov r1, #0 + lsl r7, r0, #0xd +_021E16BC: + add r3, r0, #0 + lsl r3, r1 + tst r3, r4 + beq _021E16CE + add r3, r1, #0 + add r3, #0x98 + orr r3, r7 + strh r3, [r2, r6] + b _021E16DC +_021E16CE: + add r5, r1, #0 + mov r3, #2 + add r5, #0x84 + lsl r3, r3, #0xc + orr r5, r3 + ldr r3, _021E1700 ; =0x000004C8 + strh r5, [r2, r3] +_021E16DC: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #6 + blt _021E16BC + mov r2, #0x99 + lsl r2, r2, #2 + ldr r0, [sp, #4] + str r2, [sp] + lsl r3, r2, #1 + mov r2, ip + add r2, r2, r3 + ldr r0, [r0, #8] + mov r1, #2 + mov r3, #0xc + bl FUN_02017CE8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1700: .word 0x000004C8 + + thumb_func_start MOD14_021E1704 +MOD14_021E1704: ; 0x021E1704 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021E1748 + ldr r0, [r5, #0x10] + bl MOD14_021DC42C + add r4, r0, #0 + ldr r0, [r5, #4] + mov r1, #0 + add r0, #0x30 + bl FUN_02019620 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _021E1742 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E174C ; =0x00090600 + add r3, r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r4, #0x1c] + add r0, #0x30 + bl FUN_0201BDE0 +_021E1742: + add r0, r5, #0 + bl MOD14_021E1114 +_021E1748: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E174C: .word 0x00090600 + + thumb_func_start MOD14_021E1750 +MOD14_021E1750: ; 0x021E1750 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + str r1, [r4, #0xc] + str r3, [r4] + str r2, [r4, #8] + ldr r0, [sp, #0x18] + mov r1, #0x1a + str r0, [r4, #0x2c] + ldr r0, [sp, #0x1c] + mov r2, #0xe + str r0, [r4, #0x20] + ldr r0, [sp, #0x14] + mov r3, #0xa + str r0, [r4, #0x10] + mov r0, #0 + bl FUN_0200A86C + str r0, [r4, #0x14] + mov r0, #0x40 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x30] + mov r0, #0x40 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x34] + mov r0, #0 + strh r0, [r4, #0x1c] + strh r0, [r4, #0x1e] + str r0, [r4, #0x18] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x19 + mov r2, #1 + add r3, #0x28 + bl FUN_02006BB0 + str r0, [r4, #0x24] + cmp r0, #0 + beq _021E17B6 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021E17B6 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021E17BC +_021E17B6: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_021E17BC: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E17C4 +MOD14_021E17C4: ; 0x021E17C4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E1814 + mov r6, #0 + add r4, r6, #0 +_021E17D2: + ldr r0, [r5, #0x18] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #2 + blt _021E17D2 + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E17EC + bl FUN_02016A18 +_021E17EC: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E17F6 + bl FUN_0200A8B8 +_021E17F6: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E1800 + bl FUN_02021A20 +_021E1800: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E180A + bl FUN_02021A20 +_021E180A: + ldr r0, [r5, #0x18] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x18] +_021E1814: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1818 +MOD14_021E1818: ; 0x021E1818 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + mov r0, #0xa + mov r1, #2 + bl FUN_02018FF4 + str r0, [r6, #0x18] + cmp r0, #0 + beq _021E1848 + mov r7, #0 + ldr r4, _021E1894 ; =0x021E6614 + add r5, r7, #0 +_021E1832: + ldr r1, [r6, #0x18] + ldr r0, [r6] + add r1, r1, r5 + add r2, r4, #0 + bl FUN_02019150 + add r7, r7, #1 + add r4, #8 + add r5, #0x10 + cmp r7, #2 + blt _021E1832 +_021E1848: + mov r0, #2 + lsl r0, r0, #8 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r6] + mov r0, #0x26 + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x26 + mov r1, #0x18 + mov r2, #0 + mov r3, #0xe0 + bl FUN_02006930 + ldr r0, [r6, #0x20] + ldr r2, _021E1898 ; =0x00000209 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + ldr r0, [r6] + mov r1, #1 + mov r3, #8 + bl FUN_0200CD68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E1894: .word 0x021E6614 +_021E1898: .word 0x00000209 + + thumb_func_start MOD14_021E189C +MOD14_021E189C: ; 0x021E189C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r4, r1, #0 + bl FUN_02019270 + ldr r3, [r5, #0x18] + ldrb r0, [r3, #7] + str r0, [sp] + ldrb r0, [r3, #8] + str r0, [sp, #4] + ldrb r1, [r3, #4] + ldrb r2, [r3, #5] + ldrb r3, [r3, #6] + ldr r0, [r5] + bl MOD14_021E1908 + ldr r0, [r5, #0x18] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x30] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x34] + ldr r2, [r5, #0x30] + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0x18] + ldr r2, [r5, #0x34] + mov r1, #1 + bl FUN_0201BD84 + ldr r0, [r5, #0x18] + bl FUN_02019548 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #1 + strh r0, [r5, #0x1c] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1908 +MOD14_021E1908: ; 0x021E1908 + push {r3, r4, r5, r6, r7, lr} + lsl r1, r1, #0x18 + add r7, r3, #0 + lsr r1, r1, #0x18 + add r6, r2, #0 + ldr r4, [sp, #0x18] + ldr r5, [sp, #0x1c] + bl FUN_0201886C + sub r1, r7, #1 + sub r2, r6, #2 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r3, r1, #1 + ldr r2, _021E19AC ; =0x00008209 + add r1, r0, r3 + strh r2, [r0, r3] + add r0, r2, #1 + mov r2, #0 + strh r0, [r1, #2] + cmp r4, #0 + bls _021E1942 + ldr r0, _021E19B0 ; =0x0000820B + add r3, r1, #0 +_021E1938: + add r2, r2, #1 + strh r0, [r3, #4] + add r3, r3, #2 + cmp r2, r4 + blo _021E1938 +_021E1942: + lsl r0, r4, #1 + add r2, r1, r0 + ldr r3, _021E19B4 ; =0x0000820C + mov ip, r0 + strh r3, [r2, #4] + add r0, r3, #1 + strh r0, [r2, #6] + add r0, r3, #2 + strh r0, [r2, #8] + add r1, #0x40 + mov r3, #0 + cmp r5, #0 + bls _021E197E + mov r0, ip + add r2, r0, r1 + ldr r0, _021E19B8 ; =0x0000820F + add r7, r0, #1 +_021E1964: + strh r0, [r1] + strh r7, [r1, #2] + ldr r6, _021E19BC ; =0x00008212 + add r3, r3, #1 + strh r6, [r2, #4] + add r6, r6, #1 + strh r6, [r2, #6] + ldr r6, _021E19C0 ; =0x00008214 + add r1, #0x40 + strh r6, [r2, #8] + add r2, #0x40 + cmp r3, r5 + blo _021E1964 +_021E197E: + ldr r0, _021E19C4 ; =0x00008215 + mov r3, #0 + strh r0, [r1] + add r0, r0, #1 + strh r0, [r1, #2] + cmp r4, #0 + bls _021E199A + ldr r0, _021E19C8 ; =0x00008217 + add r2, r1, #0 +_021E1990: + add r3, r3, #1 + strh r0, [r2, #4] + add r2, r2, #2 + cmp r3, r4 + blo _021E1990 +_021E199A: + mov r0, ip + ldr r2, _021E19CC ; =0x00008218 + add r1, r1, r0 + strh r2, [r1, #4] + add r0, r2, #1 + strh r0, [r1, #6] + add r0, r2, #2 + strh r0, [r1, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E19AC: .word 0x00008209 +_021E19B0: .word 0x0000820B +_021E19B4: .word 0x0000820C +_021E19B8: .word 0x0000820F +_021E19BC: .word 0x00008212 +_021E19C0: .word 0x00008214 +_021E19C4: .word 0x00008215 +_021E19C8: .word 0x00008217 +_021E19CC: .word 0x00008218 + + thumb_func_start MOD14_021E19D0 +MOD14_021E19D0: ; 0x021E19D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldrh r0, [r5, #0x1e] + str r1, [sp, #0x10] + cmp r0, #0 + beq _021E19E8 + ldr r1, [r5, #0x18] + ldr r0, [r5] + add r1, #0x10 + bl MOD14_021E1CA0 +_021E19E8: + ldr r0, [r5, #0x18] + mov r1, #0xf + str r0, [sp, #0x14] + add r0, #0x10 + str r0, [sp, #0x14] + bl FUN_02019620 + ldr r0, [sp, #0x10] + mov r6, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #8 + sub r0, r0, r1 + lsl r7, r0, #4 + cmp r1, #0 + bls _021E1A5C + ldr r4, [sp, #0x10] +_021E1A0A: + ldr r3, [r4] + cmp r3, #0x38 + blt _021E1A26 + cmp r3, #0x3d + bgt _021E1A26 + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, #0x22 + ldrb r2, [r2] + add r0, r5, #0 + sub r3, #0x38 + bl MOD14_021E1A8C + b _021E1A4C +_021E1A26: + add r3, #0x18 + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x30] + add r1, r3, #0 + bl FUN_0200A8E0 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E1A88 ; =0x000B0C0F + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + ldr r2, [r5, #0x30] + mov r3, #0xa + bl FUN_0201BDE0 +_021E1A4C: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, #0x21 + ldrb r0, [r0] + add r7, #0x10 + add r4, r4, #4 + cmp r6, r0 + blo _021E1A0A +_021E1A5C: + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl MOD14_021E1B9C + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r1, #0x21 + str r1, [sp, #0x10] + ldrb r1, [r1] + bl MOD14_021E1AD8 + ldr r0, [sp, #0x14] + bl FUN_02019548 + ldr r0, [r5] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #1 + strh r0, [r5, #0x1e] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1A88: .word 0x000B0C0F + + thumb_func_start MOD14_021E1A8C +MOD14_021E1A8C: ; 0x021E1A8C + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #1 + lsl r0, r3 + tst r0, r2 + beq _021E1A9E + mov r4, #0 + b _021E1AA0 +_021E1A9E: + mov r4, #8 +_021E1AA0: + mov r0, #0x30 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + lsl r0, r3, #4 + add r0, r0, #4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + lsl r2, r3, #0x13 + str r0, [sp, #0x14] + mov r0, #0xff + str r0, [sp, #0x18] + add r0, r1, #0 + ldr r1, [r5, #0x28] + lsl r3, r4, #0x10 + ldr r1, [r1, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_02019684 + add sp, #0x1c + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1AD8 +MOD14_021E1AD8: ; 0x021E1AD8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #8] + add r5, r1, #0 + ldr r0, [r0] + mov r1, #1 + bl FUN_0201886C + mov r2, #8 + sub r2, r2, r5 + mov ip, r2 + add r0, #0xe6 + lsl r2, r2, #7 + add r2, r0, r2 + ldr r1, _021E1B40 ; =0x00000251 + mov r3, #0x18 + mov r0, ip + mul r3, r0 + add r4, r1, r3 + mov r6, #0 + lsl r7, r5, #1 + beq _021E1B24 + mov r0, #1 + lsl r0, r0, #0xe +_021E1B08: + mov r3, #0 + add r5, r2, #0 +_021E1B0C: + add r1, r4, #0 + orr r1, r0 + strh r1, [r5] + add r3, r3, #1 + add r4, r4, #1 + add r5, r5, #2 + cmp r3, #0xc + blo _021E1B0C + add r6, r6, #1 + add r2, #0x40 + cmp r6, r7 + blo _021E1B08 +_021E1B24: + mov r0, #0xc + str r0, [sp] + mov r3, ip + lsl r3, r3, #1 + ldr r0, [sp, #8] + str r7, [sp, #4] + ldr r0, [r0] + mov r1, #1 + mov r2, #0x13 + add r3, r3, #3 + bl MOD14_021E1C10 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E1B40: .word 0x00000251 + + thumb_func_start MOD14_021E1B44 +MOD14_021E1B44: ; 0x021E1B44 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1c] + cmp r0, #0 + beq _021E1B5A + ldr r0, [r4] + ldr r1, [r4, #0x18] + bl MOD14_021E1CEC + mov r0, #0 + strh r0, [r4, #0x1c] +_021E1B5A: + ldrh r0, [r4, #0x1e] + cmp r0, #0 + beq _021E1B6E + ldr r1, [r4, #0x18] + ldr r0, [r4] + add r1, #0x10 + bl MOD14_021E1CA0 + mov r0, #0 + strh r0, [r4, #0x1e] +_021E1B6E: + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + + thumb_func_start MOD14_021E1B78 +MOD14_021E1B78: ; 0x021E1B78 + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4, #0x1e] + cmp r0, #0 + beq _021E1B90 + ldr r1, [r4, #0x18] + ldr r0, [r4] + add r1, #0x10 + bl MOD14_021E1CA0 + mov r0, #0 + strh r0, [r4, #0x1e] +_021E1B90: + ldr r0, [r4] + mov r1, #1 + bl FUN_02017CD0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1B9C +MOD14_021E1B9C: ; 0x021E1B9C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + ldr r4, [r0, #0x18] + add r0, r6, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #8 + add r4, #0x10 + sub r0, r0, r1 + lsl r5, r0, #4 + mov r0, #0xa + str r0, [sp] + lsl r0, r1, #0x14 + lsr r0, r0, #0x10 + lsl r3, r5, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xf + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_020196F4 + add r6, #0x20 + ldrb r2, [r6] + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #4 + add r2, r5, r2 + bl FUN_02002218 + add r0, r4, #0 + bl FUN_02019548 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E1BE4 +MOD14_021E1BE4: ; 0x021E1BE4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r4, [r6, #0x18] + add r7, r1, #0 + add r4, #0x10 + mov r5, #0 +_021E1BF0: + add r2, r7, #0 + add r2, #0x22 + ldrb r2, [r2] + add r0, r6, #0 + add r1, r4, #0 + add r3, r5, #0 + bl MOD14_021E1A8C + add r5, r5, #1 + cmp r5, #6 + blt _021E1BF0 + add r0, r4, #0 + bl FUN_02019548 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E1C10 +MOD14_021E1C10: ; 0x021E1C10 + push {r3, r4, r5, r6, r7, lr} + lsl r1, r1, #0x18 + add r7, r3, #0 + lsr r1, r1, #0x18 + add r6, r2, #0 + ldr r5, [sp, #0x18] + ldr r4, [sp, #0x1c] + bl FUN_0201886C + sub r1, r7, #1 + sub r2, r6, #1 + lsl r1, r1, #5 + add r1, r2, r1 + mov r2, #0x72 + lsl r3, r1, #1 + lsl r2, r2, #8 + strh r2, [r0, r3] + add r1, r0, r3 + mov r2, #0 + cmp r5, #0 + bls _021E1C48 + ldr r0, _021E1C8C ; =0x00007201 + add r3, r1, #0 +_021E1C3E: + add r2, r2, #1 + strh r0, [r3, #2] + add r3, r3, #2 + cmp r2, r5 + blo _021E1C3E +_021E1C48: + lsl r0, r5, #1 + add r2, r1, r0 + ldr r3, _021E1C90 ; =0x00007202 + add r1, #0x40 + mov r7, #0 + strh r3, [r2, #2] + cmp r4, #0 + bls _021E1C6C + ldr r2, _021E1C94 ; =0x00007205 + add r6, r0, r1 + add r3, r3, #1 +_021E1C5E: + strh r3, [r1] + strh r2, [r6, #2] + add r7, r7, #1 + add r6, #0x40 + add r1, #0x40 + cmp r7, r4 + blo _021E1C5E +_021E1C6C: + ldr r2, _021E1C98 ; =0x00007206 + mov r4, #0 + strh r2, [r1] + cmp r5, #0 + bls _021E1C84 + add r3, r1, #0 + add r2, r2, #1 +_021E1C7A: + add r4, r4, #1 + strh r2, [r3, #2] + add r3, r3, #2 + cmp r4, r5 + blo _021E1C7A +_021E1C84: + ldr r2, _021E1C9C ; =0x00007208 + add r0, r1, r0 + strh r2, [r0, #2] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1C8C: .word 0x00007201 +_021E1C90: .word 0x00007202 +_021E1C94: .word 0x00007205 +_021E1C98: .word 0x00007206 +_021E1C9C: .word 0x00007208 + + thumb_func_start MOD14_021E1CA0 +MOD14_021E1CA0: ; 0x021E1CA0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + bl FUN_0201886C + ldrb r1, [r4, #5] + mov r5, #0 + sub r2, r1, #1 + ldrb r1, [r4, #6] + sub r1, r1, #1 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r1, r1, #1 + add r2, r0, r1 + ldrb r0, [r4, #8] + add r0, r0, #2 + beq _021E1CEA + add r0, r5, #0 + add r1, r5, #0 +_021E1CC6: + ldrb r6, [r4, #7] + add r3, r1, #0 + add r6, r6, #2 + beq _021E1CDE + add r6, r2, #0 +_021E1CD0: + strh r0, [r6] + ldrb r7, [r4, #7] + add r3, r3, #1 + add r6, r6, #2 + add r7, r7, #2 + cmp r3, r7 + blo _021E1CD0 +_021E1CDE: + ldrb r3, [r4, #8] + add r5, r5, #1 + add r2, #0x40 + add r3, r3, #2 + cmp r5, r3 + blo _021E1CC6 +_021E1CEA: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E1CEC +MOD14_021E1CEC: ; 0x021E1CEC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldrb r1, [r4, #4] + bl FUN_0201886C + ldrb r1, [r4, #5] + mov r5, #0 + sub r2, r1, #2 + ldrb r1, [r4, #6] + sub r1, r1, #1 + lsl r1, r1, #5 + add r1, r2, r1 + lsl r1, r1, #1 + add r2, r0, r1 + ldrb r0, [r4, #8] + add r0, r0, #2 + beq _021E1D36 + add r0, r5, #0 + add r1, r5, #0 +_021E1D12: + ldrb r6, [r4, #7] + add r3, r1, #0 + add r6, r6, #5 + beq _021E1D2A + add r6, r2, #0 +_021E1D1C: + strh r0, [r6] + ldrb r7, [r4, #7] + add r3, r3, #1 + add r6, r6, #2 + add r7, r7, #5 + cmp r3, r7 + blo _021E1D1C +_021E1D2A: + ldrb r3, [r4, #8] + add r5, r5, #1 + add r2, #0x40 + add r3, r3, #2 + cmp r5, r3 + blo _021E1D12 +_021E1D36: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E1D38 +MOD14_021E1D38: ; 0x021E1D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + str r1, [r5] + str r3, [r5, #4] + str r2, [r5, #0xc] + ldr r0, [sp, #0x30] + mov r4, #1 + str r0, [r5, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + add r2, r3, #0 + str r4, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #0x12 + mov r1, #4 + add r3, r4, #0 + bl FUN_0200687C + mov r0, #0x12 + mov r1, #0x1b + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + add r1, r5, #0 + ldr r0, [r0, #0xc] + add r1, #0xe4 + mov r2, #0x40 + bl MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0x12 + mov r1, #0x14 + add r2, sp, #0x14 + mov r3, #0xa + bl FUN_02006C08 + add r4, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, #0xc] + add r1, r5, r1 + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x2a + mov r4, #1 + str r0, [sp, #0x10] + add r0, #0xe4 + lsl r1, r1, #4 + lsl r4, r4, #0x10 + mov r7, #7 + str r0, [sp, #0x10] + add r6, r0, r1 +_021E1DBC: + asr r0, r4, #0xc + str r0, [sp] + ldr r0, [sp, #0x10] + ldr r3, _021E1ED8 ; =0x00007FFF + add r1, r6, #0 + mov r2, #0x30 + bl MOD14_021DDE40 + ldr r0, _021E1EDC ; =0x00002492 + sub r7, r7, #1 + sub r4, r4, r0 + sub r6, #0x60 + cmp r7, #1 + bge _021E1DBC + add r0, r5, #0 + mov r1, #3 + add r0, #0xe4 + lsl r1, r1, #8 + bl DC_FlushRange + mov r0, #0xe1 + lsl r0, r0, #2 + mov r1, #0x1a + add r0, r5, r0 + lsl r1, r1, #4 + mov r2, #0x60 + bl GX_LoadOBJPltt + add r0, r5, #0 + mov r1, #0x1a + add r0, #0xe4 + lsl r1, r1, #4 + mov r2, #0x60 + bl GXS_LoadOBJPltt + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x11 + mov r2, #1 + add r3, #0x18 + bl FUN_02006BB0 + str r0, [r5, #0x14] + mov r0, #0xa + str r0, [sp] + mov r0, #0x12 + add r3, r5, #0 + add r1, r0, #0 + mov r2, #1 + add r3, #0x20 + bl FUN_02006C30 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #2 + mov r2, #1 + add r3, #0x38 + bl FUN_02006BDC + str r0, [r5, #0x34] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #3 + mov r2, #1 + add r3, #0x30 + bl FUN_02006BDC + str r0, [r5, #0x2c] + mov r0, #2 + mov r1, #0xd + mov r2, #4 + mov r3, #0xa + bl FUN_0200B870 + str r0, [r5, #0x44] + mov r0, #0x7d + lsl r0, r0, #2 + mov r1, #0xa + bl FUN_020219F4 + ldr r1, _021E1EE0 ; =0x00004BFC + ldr r2, _021E1EE4 ; =0x00000157 + str r0, [r5, r1] + mov r0, #0 + str r0, [r5, #0x10] + ldr r0, [r5, #0x18] + mov r1, #0x20 + ldr r0, [r0, #0x14] + mov r3, #0xa + str r0, [r5, #0x3c] + add r0, r5, #0 + add r0, #0x40 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x42 + strh r1, [r0] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + ldr r1, _021E1EE8 ; =0x00004BF8 + add r2, r5, #0 + str r0, [r5, r1] + mov r1, #0 + add r0, r1, #0 +_021E1E9C: + add r1, r1, #1 + str r0, [r2, #0x48] + add r2, r2, #4 + cmp r1, #0x12 + blt _021E1E9C + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E1ECC + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E1ECC + ldr r0, _021E1EE0 ; =0x00004BFC + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E1ED2 +_021E1ECC: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1ED2: + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1ED8: .word 0x00007FFF +_021E1EDC: .word 0x00002492 +_021E1EE0: .word 0x00004BFC +_021E1EE4: .word 0x00000157 +_021E1EE8: .word 0x00004BF8 + + thumb_func_start MOD14_021E1EEC +MOD14_021E1EEC: ; 0x021E1EEC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xa + mov r1, #3 + bl FUN_02018FF4 + str r0, [r7, #0x10] + cmp r0, #0 + beq _021E1F1A + mov r6, #0 + ldr r4, _021E1F1C ; =0x021E662C + add r5, r6, #0 +_021E1F04: + ldr r1, [r7, #0x10] + ldr r0, [r7, #4] + add r1, r1, r5 + add r2, r4, #0 + bl FUN_02019150 + add r6, r6, #1 + add r4, #8 + add r5, #0x10 + cmp r6, #3 + blo _021E1F04 +_021E1F1A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1F1C: .word 0x021E662C + + thumb_func_start MOD14_021E1F20 +MOD14_021E1F20: ; 0x021E1F20 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021E1F90 ; =0x00004BF8 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021E1F30 + bl FUN_0200A8B8 +_021E1F30: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E1F3A + bl FUN_02016A18 +_021E1F3A: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E1F44 + bl FUN_02016A18 +_021E1F44: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021E1F4E + bl FUN_02016A18 +_021E1F4E: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E1F58 + bl FUN_02016A18 +_021E1F58: + ldr r0, [r5, #0x44] + cmp r0, #0 + beq _021E1F62 + bl FUN_0200B990 +_021E1F62: + ldr r0, _021E1F94 ; =0x00004BFC + ldr r0, [r5, r0] + cmp r0, #0 + beq _021E1F6E + bl FUN_02021A20 +_021E1F6E: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021E1F8E + mov r6, #0 + add r4, r6, #0 +_021E1F78: + ldr r0, [r5, #0x10] + add r0, r0, r4 + bl FUN_02019178 + add r6, r6, #1 + add r4, #0x10 + cmp r6, #3 + blt _021E1F78 + ldr r0, [r5, #0x10] + bl FUN_02016A18 +_021E1F8E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E1F90: .word 0x00004BF8 +_021E1F94: .word 0x00004BFC + + thumb_func_start MOD14_021E1F98 +MOD14_021E1F98: ; 0x021E1F98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD14_021DC464 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r4, #0 + bl MOD14_021E223C + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E247C + pop {r4, pc} + + thumb_func_start MOD14_021E1FB8 +MOD14_021E1FB8: ; 0x021E1FB8 + ldr r3, _021E1FBC ; =MOD14_021E24D8 + bx r3 + .align 2, 0 +_021E1FBC: .word MOD14_021E24D8 + + thumb_func_start MOD14_021E1FC0 +MOD14_021E1FC0: ; 0x021E1FC0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD14_021DC464 + add r1, r4, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r4, #0 + bl MOD14_021E2360 + add r0, r4, #0 + bl MOD14_021E2394 + add r0, r4, #0 + bl MOD14_021E240C + pop {r4, pc} + + thumb_func_start MOD14_021E1FE4 +MOD14_021E1FE4: ; 0x021E1FE4 + ldr r3, _021E1FEC ; =MOD14_021E247C + mov r1, #1 + bx r3 + nop +_021E1FEC: .word MOD14_021E247C + + thumb_func_start MOD14_021E1FF0 +MOD14_021E1FF0: ; 0x021E1FF0 + ldr r3, _021E1FF4 ; =MOD14_021E24D8 + bx r3 + .align 2, 0 +_021E1FF4: .word MOD14_021E24D8 + + thumb_func_start MOD14_021E1FF8 +MOD14_021E1FF8: ; 0x021E1FF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #8] + ldr r0, [r0, #0xc] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl MOD14_021DC44C + ldr r1, [sp, #0xc] + str r0, [sp, #0x28] + bl FUN_0206B43C + add r0, #0xd0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xc + str r0, [sp] + ldr r0, [sp, #8] + str r1, [sp, #4] + add r0, #0x3c + mov r1, #9 + mov r2, #0xa + mov r3, #0xe + bl FUN_02018F4C + mov r4, #0 + mov r0, #0xc + str r4, [sp, #0x20] + str r0, [sp, #0x18] +_021E2034: + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [sp, #8] + mov r6, #0xa + str r0, [sp, #0x2c] + add r0, #0x3c + str r0, [sp, #0x2c] + ldr r0, [sp, #0x18] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x30] +_021E204A: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0206B5E4 + add r4, r4, #1 + add r5, r0, #0 + bl FUN_02066A6C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + add r7, r0, #0 + beq _021E20C8 + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021E209A + add r0, r5, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, r7, #0 + mov r2, #0x1b + bl FUN_02068654 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _021E20AA +_021E209A: + ldr r0, _021E2174 ; =0x000001EA + cmp r7, r0 + beq _021E20A4 + mov r0, #8 + b _021E20A6 +_021E20A4: + mov r0, #1 +_021E20A6: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 +_021E20AA: + ldr r0, _021E2178 ; =0x021E6644 + ldr r2, [sp, #0x30] + ldrb r0, [r0, r1] + mov r3, #2 + add r0, #0xe0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #2 + str r0, [sp] + str r1, [sp, #4] + lsl r1, r6, #0x10 + ldr r0, [sp, #0x2c] + lsr r1, r1, #0x10 + bl FUN_02018F4C +_021E20C8: + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl FUN_02066A94 + ldr r0, [sp, #0x24] + add r6, r6, #2 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #6 + blo _021E204A + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blo _021E2034 + ldr r0, [sp, #0x48] + cmp r0, #0 + beq _021E2132 + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _021E20FE + cmp r0, #2 + beq _021E2110 + b _021E211E +_021E20FE: + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E217C ; =0x00300010 + and r1, r0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + str r1, [r0, #8] + b _021E211E +_021E2110: + ldr r0, _021E2180 ; =0x04001000 + ldr r1, [r0] + ldr r0, _021E217C ; =0x00300010 + and r1, r0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x18] + str r1, [r0, #8] +_021E211E: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x18] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x48] + lsl r1, r1, #5 + bl FUN_020B1768 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E2132: + ldr r0, [sp, #8] + ldr r1, [r0, #0x18] + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + bl DC_FlushRange + ldr r0, [sp, #0x14] + cmp r0, #1 + beq _021E214C + cmp r0, #2 + beq _021E2160 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E214C: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x18] + lsl r1, r1, #5 + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + bl GX_LoadOBJ + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021E2160: + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x18] + lsl r1, r1, #5 + ldr r0, [r2, #0x14] + ldr r2, [r2, #0x10] + bl GXS_LoadOBJ + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2174: .word 0x000001EA +_021E2178: .word 0x021E6644 +_021E217C: .word 0x00300010 +_021E2180: .word 0x04001000 + + thumb_func_start MOD14_021E2184 +MOD14_021E2184: ; 0x021E2184 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start MOD14_021E2188 +MOD14_021E2188: ; 0x021E2188 + add r0, #0xe0 + ldr r0, [r0] + sub r0, r0, #3 + bpl _021E2192 + add r0, #0x12 +_021E2192: + bx lr + + thumb_func_start MOD14_021E2194 +MOD14_021E2194: ; 0x021E2194 + push {r3, r4} + mov r4, #0 + ldr r1, _021E21AC ; =0x00004BE4 + add r3, r4, #0 +_021E219C: + add r2, r0, r4 + add r4, r4, #1 + strb r3, [r2, r1] + cmp r4, #0x12 + blt _021E219C + pop {r3, r4} + bx lr + nop +_021E21AC: .word 0x00004BE4 + + thumb_func_start MOD14_021E21B0 +MOD14_021E21B0: ; 0x021E21B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + mov r2, #0xf9 + add r4, r1, #0 + lsl r2, r2, #2 + add r3, r5, r2 + lsl r1, r4, #0xa + ldr r0, [r0, #0x14] + add r1, r3, r1 + add r2, #0x1c + bl MIi_CpuCopy32 + mov r1, #0xf9 + lsl r1, r1, #2 + add r0, r5, r1 + add r1, #0x1c + bl DC_FlushRange + ldr r0, _021E21E0 ; =0x00004BE4 + mov r2, #1 + add r1, r5, r4 + strb r2, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_021E21E0: .word 0x00004BE4 + + thumb_func_start MOD14_021E21E4 +MOD14_021E21E4: ; 0x021E21E4 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #0x63 + lsl r1, r1, #5 + lsl r0, r0, #4 + add r6, r1, r0 + add r4, r2, #0 + ldr r0, _021E2238 ; =0x00004BE4 + add r1, r5, r4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021E2214 + mov r2, #0xf9 + lsl r2, r2, #2 + add r1, r5, r2 + lsl r0, r4, #0xa + add r0, r1, r0 + lsl r1, r6, #5 + add r2, #0x1c + bl GX_LoadOBJ + add sp, #0x28 + pop {r4, r5, r6, pc} +_021E2214: + add r0, sp, #4 + bl FUN_020B1A24 + add r0, sp, #4 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD14_021E1FF8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E21B0 + add sp, #0x28 + pop {r4, r5, r6, pc} + nop +_021E2238: .word 0x00004BE4 + + thumb_func_start MOD14_021E223C +MOD14_021E223C: ; 0x021E223C + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + add r6, r0, #0 + bl MOD14_021E2194 + ldr r0, [r6] + bl MOD14_021DDD50 + add r4, r0, #0 + ldr r0, [r6] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #4] + mov r1, #0 + str r0, [sp] + str r1, [sp, #4] + ldr r3, [r6, #0x20] + add r0, sp, #0x40 + bl MOD14_021DDDB4 + add r0, r6, #0 + bl MOD14_021E2188 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #0x63 + lsl r0, r0, #4 + str r0, [sp, #8] + add r4, r6, #0 + mov r5, #0x20 +_021E227C: + add r0, sp, #0x1c + bl FUN_020B1A24 + add r0, sp, #0x1c + str r0, [sp] + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD14_021E1FF8 + add r0, sp, #0x1c + str r0, [sp, #0x40] + mov r0, #0xb + str r0, [sp] + mov r0, #1 + mov r2, #2 + str r0, [sp, #4] + lsl r2, r2, #8 + ldr r0, [r6, #8] + add r1, sp, #0x40 + lsr r3, r2, #1 + bl MOD14_021DDDD4 + str r0, [r4, #0x48] + cmp r0, #0 + bne _021E22B6 + bl ErrorHandling +_021E22B6: + ldr r0, [r4, #0x48] + mov r1, #0 + bl FUN_020200A0 + cmp r5, #0 + ble _021E22D4 + lsl r0, r5, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021E22E2 +_021E22D4: + lsl r0, r5, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021E22E2: + bl _ffix + str r0, [sp, #0x10] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [r4, #0x48] + add r1, sp, #0x10 + bl FUN_02020044 + add r0, r6, #0 + add r1, r7, #0 + bl MOD14_021E21B0 + add r7, r7, #1 + cmp r7, #0x12 + blt _021E230A + mov r7, #0 +_021E230A: + ldr r0, [sp, #8] + add r4, r4, #4 + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r5, #0x20 + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #7 + blt _021E227C + mov r4, #0 + add r5, r6, #0 +_021E2322: + ldr r0, [r6, #0xc] + bl MOD14_021DC44C + add r1, r4, #0 + bl FUN_0206B4E4 + add r1, r5, #0 + add r1, #0x94 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #0x12 + blt _021E2322 + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E2340 +MOD14_021E2340: ; 0x021E2340 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E2348: + ldr r0, [r5, #0x48] + cmp r0, #0 + beq _021E2354 + bl FUN_0201FFC8 + str r6, [r5, #0x48] +_021E2354: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _021E2348 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2360 +MOD14_021E2360: ; 0x021E2360 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl MOD14_021E2188 + add r4, r0, #0 + mov r6, #0 + add r5, r7, #0 +_021E236E: + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD14_021E21E4 + ldr r0, [r5, #0x48] + mov r1, #1 + bl FUN_020200A0 + add r4, r4, #1 + cmp r4, #0x12 + blt _021E2388 + mov r4, #0 +_021E2388: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #7 + blt _021E236E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2394 +MOD14_021E2394: ; 0x021E2394 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC44C + add r1, r5, #0 + ldr r2, _021E23F0 ; =0x00004BFC + add r1, #0xe0 + ldr r1, [r1] + ldr r2, [r5, r2] + ldr r4, [r5, #0x10] + bl FUN_0206B484 + ldr r1, _021E23F0 ; =0x00004BFC + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #7 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E23F4 ; =0x00020807 + ldr r2, _021E23F0 ; =0x00004BFC + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, r2] + lsr r5, r6, #1 + mov r3, #0x30 + add r0, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021E23F0: .word 0x00004BFC +_021E23F4: .word 0x00020807 + + thumb_func_start MOD14_021E23F8 +MOD14_021E23F8: ; 0x021E23F8 + push {r4, lr} + ldr r4, [r0, #0x10] + mov r1, #7 + add r0, r4, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + + thumb_func_start MOD14_021E240C +MOD14_021E240C: ; 0x021E240C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + ldr r0, [r7, #0x10] + mov r1, #4 + str r0, [sp, #0xc] + add r0, #0x10 + str r0, [sp, #0xc] + bl FUN_02019620 + add r0, r7, #0 + bl MOD14_021E2188 + mov r6, #0 + add r4, r0, #0 + add r5, r6, #0 +_021E242C: + ldr r0, [sp, #0xc] + lsl r1, r4, #2 + str r0, [sp] + add r1, r7, r1 + str r5, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r1, #0x94 + mov r2, #2 + ldr r0, [r7, #0x44] + ldr r1, [r1] + add r3, r2, #0 + bl FUN_0200B9EC + add r4, r4, #1 + cmp r4, #0x12 + blt _021E2450 + mov r4, #0 +_021E2450: + add r6, r6, #1 + add r5, #0x20 + cmp r6, #7 + blt _021E242C + ldr r0, [sp, #0xc] + bl FUN_02019548 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2464 +MOD14_021E2464: ; 0x021E2464 + push {r4, lr} + ldr r4, [r0, #0x10] + mov r1, #4 + add r4, #0x10 + add r0, r4, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E247C +MOD14_021E247C: ; 0x021E247C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0xa + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + beq _021E24B6 + ldr r0, _021E24B8 ; =0x021E6624 + lsl r1, r6, #2 + ldr r0, [r0, r1] + str r5, [r4] + mov r2, #0 + strb r2, [r4, #4] + add r1, r4, #0 + strb r2, [r4, #5] + bl FUN_0200CA44 + add r1, r5, #0 + add r1, #0xdc + add r5, #0xdc + str r0, [r1] + ldr r0, [r5] + cmp r0, #0 + bne _021E24B6 + add r0, r4, #0 + bl FUN_02016A18 +_021E24B6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E24B8: .word 0x021E6624 + + thumb_func_start MOD14_021E24BC +MOD14_021E24BC: ; 0x021E24BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + mov r2, #0 + add r0, #0xdc + str r2, [r0] + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E24D8 +MOD14_021E24D8: ; 0x021E24D8 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E24E4 + mov r0, #1 + bx lr +_021E24E4: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021E24E8 +MOD14_021E24E8: ; 0x021E24E8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + ldrb r2, [r4, #4] + ldr r5, [r4] + cmp r2, #3 + bls _021E24F8 + b _021E260E +_021E24F8: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E2504: ; jump table + .short _021E250C - _021E2504 - 2 ; case 0 + .short _021E2592 - _021E2504 - 2 ; case 1 + .short _021E25B8 - _021E2504 - 2 ; case 2 + .short _021E260A - _021E2504 - 2 ; case 3 +_021E250C: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + ldrb r0, [r4, #5] + lsl r1, r0, #1 + cmp r1, #0xa + bge _021E2562 + mov r1, #0xa + sub r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + str r0, [sp, #8] + ldr r2, [r5, #0x30] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r6, [r4, #5] + mov r0, #0x20 + mov r3, #0xa + str r0, [sp] + str r6, [sp, #4] + ldr r1, [r5, #0x30] + mov r2, #0 + add r1, #0xc + str r1, [sp, #8] + sub r1, r3, r6 + lsl r1, r1, #0x18 + str r2, [sp, #0xc] + lsr r1, r1, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02018170 + b _021E2582 +_021E2562: + mov r0, #5 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r2, [r5, #0x30] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r0, [r4, #4] + add r0, r0, #1 + strb r0, [r4, #4] +_021E2582: + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02017CD0 + mov r0, #7 + add sp, #0x1c + strb r0, [r4, #5] + pop {r3, r4, r5, r6, pc} +_021E2592: + ldrb r0, [r4, #5] + add r3, r5, #0 + mov r2, #0x60 + add r1, r0, #0 + add r3, #0xe4 + mul r1, r2 + add r0, r3, r1 + mov r1, #0x1a + lsl r1, r1, #4 + bl GX_LoadOBJPltt + add r0, r5, #0 + bl MOD14_021E2360 + ldrb r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021E25B8: + ldrb r0, [r4, #5] + cmp r0, #0 + beq _021E25C2 + sub r0, r0, #1 + strb r0, [r4, #5] +_021E25C2: + ldrb r0, [r4, #5] + add r3, r5, #0 + mov r2, #0x60 + add r1, r0, #0 + add r3, #0xe4 + mul r1, r2 + add r0, r3, r1 + mov r1, #0x1a + lsl r1, r1, #4 + bl GX_LoadOBJPltt + ldrb r0, [r4, #5] + cmp r0, #0 + bne _021E260E + ldr r0, [r5, #0x10] + bl FUN_02019270 + ldr r0, [r5, #0x10] + add r0, #0x10 + bl FUN_02019270 + add r0, r5, #0 + bl MOD14_021E2394 + add r0, r5, #0 + bl MOD14_021E240C + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02017CD0 + ldrb r0, [r4, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r4, #4] + pop {r3, r4, r5, r6, pc} +_021E260A: + bl MOD14_021E24BC +_021E260E: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2614 +MOD14_021E2614: ; 0x021E2614 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r1, #0 + ldrb r2, [r5, #4] + ldr r4, [r5] + cmp r2, #0 + beq _021E262E + cmp r2, #1 + beq _021E264A + cmp r2, #2 + beq _021E26DC + add sp, #0x1c + pop {r4, r5, pc} +_021E262E: + add r0, r4, #0 + bl MOD14_021E2340 + add r0, r4, #0 + bl MOD14_021E23F8 + add r0, r4, #0 + bl MOD14_021E2464 + ldrb r0, [r5, #4] + add sp, #0x1c + add r0, r0, #1 + strb r0, [r5, #4] + pop {r4, r5, pc} +_021E264A: + mov r0, #5 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldrb r0, [r5, #5] + add r0, r0, #1 + strb r0, [r5, #5] + ldrb r0, [r5, #5] + lsl r1, r0, #1 + cmp r1, #0xa + bge _021E26CA + add r1, r0, #5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0x20 + str r1, [sp, #4] + mov r1, #5 + sub r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r2, [r4, #0x30] + ldr r0, [r4, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldrb r1, [r5, #5] + mov r2, #5 + mov r0, #0x20 + sub r2, r2, r1 + lsl r2, r2, #0x18 + mov r3, #0xa + sub r1, r3, r1 + lsl r1, r1, #0x18 + str r0, [sp] + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r4, #0x30] + lsr r1, r1, #0x18 + add r2, #0xc + str r2, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02018170 + b _021E26D0 +_021E26CA: + ldrb r0, [r5, #4] + add r0, r0, #1 + strb r0, [r5, #4] +_021E26D0: + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + add sp, #0x1c + pop {r4, r5, pc} +_021E26DC: + bl MOD14_021E24BC + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD14_021E26E4 +MOD14_021E26E4: ; 0x021E26E4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0xa + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021E2798 + ldr r0, [r5, #0xc] + bl MOD14_021DC544 + add r6, r0, #0 + ldr r0, [r5, #4] + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + mov r0, #0x18 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + ldr r2, [r5, #0x38] + ldr r0, [r5, #4] + mov r1, #1 + add r2, #0xc + mov r3, #0 + bl FUN_02018148 + ldr r0, [r5, #0x10] + mov r1, #4 + add r0, #0x20 + bl FUN_02019620 + ldr r2, _021E279C ; =0x00004BF8 + add r1, r6, #0 + ldr r0, [r5, r2] + add r2, r2, #4 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E27A0 ; =0x00020104 + ldr r2, _021E27A4 ; =0x00004BFC + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x10] + ldr r2, [r5, r2] + add r0, #0x20 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [r5, #0x10] + add r0, #0x20 + bl FUN_020191D0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD14_021E2940 + mov r1, #0 + strh r1, [r4, #0x16] + str r5, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + str r1, [r4, #8] + mov r1, #0xe + lsl r1, r1, #0xe + str r1, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + str r0, [r4, #0x10] + mov r0, #6 + strh r0, [r4, #0x14] + ldr r0, _021E27A8 ; =MOD14_021E27C4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + add r5, #0xdc + str r0, [r5] +_021E2798: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E279C: .word 0x00004BF8 +_021E27A0: .word 0x00020104 +_021E27A4: .word 0x00004BFC +_021E27A8: .word MOD14_021E27C4 + + thumb_func_start MOD14_021E27AC +MOD14_021E27AC: ; 0x021E27AC + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E27B8 + mov r0, #1 + bx lr +_021E27B8: + mov r0, #0 + bx lr + + thumb_func_start MOD14_021E27BC +MOD14_021E27BC: ; 0x021E27BC + mov r1, #0 + add r0, #0xdc + str r1, [r0] + bx lr + + thumb_func_start MOD14_021E27C4 +MOD14_021E27C4: ; 0x021E27C4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E27D6 + cmp r0, #1 + beq _021E27DC + pop {r3, r4, r5, pc} +_021E27D6: + add r0, r0, #1 + strh r0, [r4, #0x16] + pop {r3, r4, r5, pc} +_021E27DC: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E280A + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #3 + add r3, r1, r0 + str r3, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #8] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + pop {r3, r4, r5, pc} +_021E280A: + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #0xc] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + ldr r1, _021E2838 ; =MOD14_021E27BC + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E2838: .word MOD14_021E27BC + + thumb_func_start MOD14_021E283C +MOD14_021E283C: ; 0x021E283C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xa + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _021E287C + mov r1, #0 + strh r1, [r4, #0x16] + str r5, [r4] + ldr r0, [r5, #4] + str r0, [r4, #4] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [r4, #8] + str r1, [r4, #0xc] + ldr r0, [r4, #8] + sub r0, r1, r0 + mov r1, #6 + bl _s32_div_f + str r0, [r4, #0x10] + mov r0, #6 + strh r0, [r4, #0x14] + ldr r0, _021E2880 ; =MOD14_021E28B4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + add r5, #0xdc + str r0, [r5] +_021E287C: + pop {r3, r4, r5, pc} + nop +_021E2880: .word MOD14_021E28B4 + + thumb_func_start MOD14_021E2884 +MOD14_021E2884: ; 0x021E2884 + push {r4, lr} + add r4, r0, #0 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _021E28A6 + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + bl MOD14_021E2A28 + mov r0, #1 + pop {r4, pc} +_021E28A6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E28AC +MOD14_021E28AC: ; 0x021E28AC + mov r1, #0 + add r0, #0xdc + str r1, [r0] + bx lr + + thumb_func_start MOD14_021E28B4 +MOD14_021E28B4: ; 0x021E28B4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E28EC + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #3 + add r3, r1, r0 + str r3, [r4, #8] + ldr r0, [r4, #4] + mov r1, #1 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #8] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021E28EC: + ldr r3, [r4, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + mov r2, #3 + asr r3, r3, #0xc + bl FUN_020179E0 + mov r1, #0xe + ldr r2, [r4, #0xc] + lsl r1, r1, #0x10 + ldr r0, [r4] + sub r1, r1, r2 + bl MOD14_021E2A00 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02017CD0 + ldr r1, _021E293C ; =MOD14_021E28AC + ldr r2, [r4] + add r0, r4, #0 + bl MOD14_021DDF30 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E293C: .word MOD14_021E28AC + + thumb_func_start MOD14_021E2940 +MOD14_021E2940: ; 0x021E2940 + push {r3, r4, r5, r6, lr} + sub sp, #0x54 + add r5, r0, #0 + add r4, r1, #0 + beq _021E29F6 + ldr r0, [r5] + bl MOD14_021DDD50 + add r6, r0, #0 + ldr r0, [r5] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r6, #0x20] + add r1, sp, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r6, #0x1c] + add r0, sp, #0x30 + bl MOD14_021DDDB4 + add r0, sp, #0xc + bl FUN_020B1A24 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + mov r2, #0 + add r3, sp, #8 + bl FUN_02006BB0 + add r6, r0, #0 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E29FC ; =0x00300010 + mov r2, #1 + and r1, r0 + ldr r0, [sp, #8] + add r3, sp, #0xc + str r1, [r0, #8] + mov r1, #0xbe + ldr r0, [sp, #8] + lsl r1, r1, #8 + bl FUN_020B1768 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + mov r3, #0xc0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #8] + add r1, sp, #0x30 + mov r2, #0x12 + mov r3, #0xe0 + bl MOD14_021DDDD4 + add r1, r5, #0 + add r1, #0x90 + add r5, #0x90 + str r0, [r1] + ldr r0, [r5] + cmp r0, #0 + beq _021E29F0 + mov r1, #6 + bl FUN_02020248 +_021E29F0: + add r0, r6, #0 + bl FUN_02016A18 +_021E29F6: + add sp, #0x54 + pop {r3, r4, r5, r6, pc} + nop +_021E29FC: .word 0x00300010 + + thumb_func_start MOD14_021E2A00 +MOD14_021E2A00: ; 0x021E2A00 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, #0 + beq _021E2A24 + mov r2, #0x12 + lsl r2, r2, #0xc + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + str r2, [sp] + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #0 + bl FUN_02020044 +_021E2A24: + add sp, #0xc + pop {pc} + + thumb_func_start MOD14_021E2A28 +MOD14_021E2A28: ; 0x021E2A28 + push {r3, lr} + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _021E2A36 + bl FUN_0201FFC8 +_021E2A36: + pop {r3, pc} + + thumb_func_start MOD14_021E2A38 +MOD14_021E2A38: ; 0x021E2A38 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + str r4, [r5] + ldr r0, [sp, #0x18] + str r6, [r5, #0xc] + str r0, [r5, #8] + str r3, [r5, #4] + add r0, r4, #0 + bl MOD14_021DDD50 + str r0, [r5, #0x38] + add r0, r4, #0 + bl MOD14_021DDD58 + str r0, [r5, #0x10] + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E2A6E + mov r0, #0xe + str r0, [r5, #0x30] + mov r0, #0 + b _021E2A74 +_021E2A6E: + mov r0, #9 + str r0, [r5, #0x30] + sub r0, #0x31 +_021E2A74: + str r0, [r5, #0x34] + add r0, r5, #0 + mov r1, #0 + add r0, #0x2b + strb r1, [r0] + str r1, [r5, #0x2c] + add r1, r5, #0 + ldr r0, [r5, #0x38] + add r1, #0x3c + mov r2, #6 + bl MOD14_021E08E4 + mov r1, #9 + mov r0, #0xa + lsl r1, r1, #6 + bl FUN_02016998 + str r0, [r5, #0x1c] + mov r0, #0xa + add r3, r5, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #6 + mov r2, #1 + add r3, #0x18 + bl FUN_02006BDC + str r0, [r5, #0x14] + cmp r0, #0 + beq _021E2AB6 + ldr r1, [r5, #0x1c] + cmp r1, #0 + bne _021E2ABC +_021E2AB6: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021E2ABC: + add r0, r5, #0 + bl MOD14_021E31F4 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD14_021E2AC8 +MOD14_021E2AC8: ; 0x021E2AC8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E2AD6 + bl FUN_02016A18 +_021E2AD6: + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021E2AE0 + bl FUN_02016A18 +_021E2AE0: + add r0, r4, #0 + bl MOD14_021E3390 + pop {r4, pc} + + thumb_func_start MOD14_021E2AE8 +MOD14_021E2AE8: ; 0x021E2AE8 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + mov r2, #0 + add r1, #0x2b + strb r2, [r1] + add r1, r4, #0 + add r1, #0x2b + ldrb r1, [r1] + bl MOD14_021E31A4 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E32F8 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02017CD0 + pop {r4, pc} + + thumb_func_start MOD14_021E2B10 +MOD14_021E2B10: ; 0x021E2B10 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl MOD14_021E32F8 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x2b + strb r1, [r0] + ldr r0, _021E2B3C ; =MOD14_021E2B50 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2B34 + mov r0, #1 + b _021E2B36 +_021E2B34: + mov r0, #0 +_021E2B36: + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021E2B3C: .word MOD14_021E2B50 + + thumb_func_start MOD14_021E2B40 +MOD14_021E2B40: ; 0x021E2B40 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2B4A + mov r0, #1 + bx lr +_021E2B4A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2B50 +MOD14_021E2B50: ; 0x021E2B50 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #2 + bls _021E2B6C + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + ldr r4, _021E2BAC ; =0xFFFF0000 + sub r1, r0, #2 + b _021E2B72 +_021E2B6C: + lsl r0, r0, #0xf + neg r4, r0 + mov r1, #0 +_021E2B72: + add r0, r5, #0 + add r0, #0x2b + strb r1, [r0] + add r1, r5, #0 + add r1, #0x2b + ldrb r1, [r1] + add r0, r5, #0 + bl MOD14_021E31A4 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E3290 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0 + bne _021E2BA8 + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2BA8: + pop {r4, r5, r6, pc} + nop +_021E2BAC: .word 0xFFFF0000 + + thumb_func_start MOD14_021E2BB0 +MOD14_021E2BB0: ; 0x021E2BB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E2BCC ; =MOD14_021E2BE4 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2BC6 + mov r0, #1 + b _021E2BC8 +_021E2BC6: + mov r0, #0 +_021E2BC8: + str r0, [r4, #0x2c] + pop {r4, pc} + .align 2, 0 +_021E2BCC: .word MOD14_021E2BE4 + + thumb_func_start MOD14_021E2BD0 +MOD14_021E2BD0: ; 0x021E2BD0 + push {r3, lr} + ldr r1, [r0, #0x2c] + cmp r1, #0 + bne _021E2BE0 + bl MOD14_021E3390 + mov r0, #1 + pop {r3, pc} +_021E2BE0: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD14_021E2BE4 +MOD14_021E2BE4: ; 0x021E2BE4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0x18 + bhs _021E2C04 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + mov r4, #1 + lsl r4, r4, #0x10 + add r1, r0, #2 + b _021E2C0A +_021E2C04: + mov r1, #0x1a + sub r0, r1, r0 + lsl r4, r0, #0xf +_021E2C0A: + add r0, r5, #0 + add r0, #0x2b + strb r1, [r0] + add r0, r5, #0 + add r0, #0x2b + ldrb r1, [r0] + cmp r1, #2 + bls _021E2C46 + asr r0, r4, #0xc + lsr r0, r0, #3 + sub r1, r1, #2 + sub r1, r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp] + mov r1, #0xf + lsl r0, r0, #0x18 + str r1, [sp, #4] + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r3, [r5, #0x30] + ldr r0, [r5, #4] + lsl r3, r3, #0x18 + mov r1, #2 + mov r2, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 +_021E2C46: + add r1, r5, #0 + add r1, #0x2b + ldrb r1, [r1] + add r0, r5, #0 + bl MOD14_021E31A4 + ldr r0, [r5, #4] + mov r1, #2 + bl FUN_02017CD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E3290 + add r0, r5, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r0, #0x1a + bne _021E2C76 + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2C76: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2C7C +MOD14_021E2C7C: ; 0x021E2C7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r0, [r6, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + add r1, r6, #0 + add r1, #0x28 + ldrb r4, [r1] + cmp r4, r0 + bge _021E2D20 + sub r0, r0, r4 + str r0, [sp, #8] + cmp r4, #5 + bge _021E2CF8 + mov r0, #0x34 + add r1, r4, #0 + mul r1, r0 + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x3c + str r0, [sp, #0xc] + add r5, r0, r1 + add r7, r6, r1 + ldr r0, _021E2D28 ; =0x00000418 + lsl r1, r4, #5 + add r0, r1, r0 + str r0, [sp, #4] +_021E2CB6: + add r1, r4, #1 + mov r0, #0x34 + mul r0, r1 + ldr r1, [sp, #0xc] + str r0, [sp] + add r0, r1, r0 + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, [sp, #0xc] + ldr r1, [sp] + ldr r0, [r6, #0x38] + add r1, r2, r1 + mov r2, #1 + bl MOD14_021E08E4 + ldr r0, [r7, #0x3c] + cmp r0, #0 + beq _021E2CE8 + ldr r0, [r6, #0x38] + ldr r2, [sp, #4] + add r1, r5, #0 + bl MOD14_021E0BBC +_021E2CE8: + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, #0x20 + add r5, #0x34 + add r7, #0x34 + str r0, [sp, #4] + cmp r4, #5 + blt _021E2CB6 +_021E2CF8: + add r1, r6, #0 + ldr r0, [sp, #8] + add r1, #0x29 + strb r0, [r1] + add r0, r6, #0 + mov r2, #0 + add r0, #0x2a + strb r2, [r0] + ldr r0, _021E2D2C ; =MOD14_021E2D30 + add r1, r6, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2D18 + mov r0, #1 + b _021E2D1A +_021E2D18: + mov r0, #0 +_021E2D1A: + add sp, #0x10 + str r0, [r6, #0x2c] + pop {r3, r4, r5, r6, r7, pc} +_021E2D20: + mov r0, #0 + str r0, [r6, #0x2c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E2D28: .word 0x00000418 +_021E2D2C: .word MOD14_021E2D30 + + thumb_func_start MOD14_021E2D30 +MOD14_021E2D30: ; 0x021E2D30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp, #4] + ldr r2, [sp, #4] + str r0, [sp] + add r1, #0x28 + ldr r0, [sp, #4] + add r2, #0x2a + add r0, #0x29 + ldrb r7, [r0] + ldr r0, [sp, #4] + ldrb r1, [r1] + ldrb r3, [r2] + ldr r0, [r0, #0x1c] + lsl r2, r1, #3 + add r3, r3, r2 + mov r2, #0xc + mul r2, r3 + add r4, r0, r2 + mov r6, #0 + cmp r7, #0 + ble _021E2D7C + mov r0, #0x34 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #4] + add r5, r0, r2 +_021E2D66: + ldr r0, [r5, #0x3c] + cmp r0, #0 + beq _021E2D72 + add r1, r4, #0 + bl FUN_02020044 +_021E2D72: + add r6, r6, #1 + add r5, #0x34 + add r4, #0x60 + cmp r6, r7 + blt _021E2D66 +_021E2D7C: + ldr r0, [sp, #4] + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + add r0, #0x2a + strb r1, [r0] + ldr r0, [sp, #4] + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #8 + blo _021E2DA0 + ldr r0, [sp, #4] + mov r1, #0 + str r1, [r0, #0x2c] + ldr r0, [sp] + bl FUN_0200CAB4 +_021E2DA0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E2DA4 +MOD14_021E2DA4: ; 0x021E2DA4 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2DAE + mov r0, #1 + bx lr +_021E2DAE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2DB4 +MOD14_021E2DB4: ; 0x021E2DB4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + sub r4, r0, #1 + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + cmp r0, r4 + bls _021E2E3A + mov r0, #0x34 + mul r0, r4 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r1, _021E2E44 ; =0x021E6650 + str r0, [r2] + lsl r0, r4, #2 + ldrh r1, [r1, r0] + ldr r2, [r5, #0x34] + add r1, r2, r1 + lsl r2, r1, #0xc + ldr r1, [sp] + sub r2, r2, r1 + asr r1, r2, #2 + lsr r1, r1, #0x1d + add r1, r2, r1 + asr r1, r1, #3 + str r1, [r5, #0x20] + ldr r1, _021E2E48 ; =0x021E6652 + mov r2, #0 + ldrh r0, [r1, r0] + lsl r1, r0, #0xc + ldr r0, [sp, #4] + sub r1, r1, r0 + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r0, r0, #3 + str r0, [r5, #0x24] + add r0, r5, #0 + add r0, #0x2a + strb r2, [r0] + add r0, r5, #0 + add r0, #0x28 + strb r4, [r0] + ldr r0, _021E2E4C ; =MOD14_021E2E60 + add r1, r5, #0 + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E2E32 + mov r0, #1 + b _021E2E34 +_021E2E32: + mov r0, #0 +_021E2E34: + add sp, #0xc + str r0, [r5, #0x2c] + pop {r4, r5, pc} +_021E2E3A: + mov r0, #0 + str r0, [r5, #0x2c] + add sp, #0xc + pop {r4, r5, pc} + nop +_021E2E44: .word 0x021E6650 +_021E2E48: .word 0x021E6652 +_021E2E4C: .word MOD14_021E2E60 + + thumb_func_start MOD14_021E2E50 +MOD14_021E2E50: ; 0x021E2E50 + ldr r0, [r0, #0x2c] + cmp r0, #0 + bne _021E2E5A + mov r0, #1 + bx lr +_021E2E5A: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E2E60 +MOD14_021E2E60: ; 0x021E2E60 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + mov r0, #0x34 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r5, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #8 + blo _021E2EC6 + add r1, r5, #0 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r5, #0x34] + mov r4, #1 + lsl r2, r1, #2 + ldr r1, _021E2F00 ; =0x021E6650 + ldrh r1, [r1, r2] + add r0, r0, r1 + lsl r0, r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + lsl r1, r0, #2 + ldr r0, _021E2F04 ; =0x021E6652 + ldrh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp, #4] + b _021E2ED8 +_021E2EC6: + ldr r1, [sp] + ldr r0, [r5, #0x20] + mov r4, #0 + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r5, #0x24] + add r0, r1, r0 + str r0, [sp, #4] +_021E2ED8: + add r0, r5, #0 + add r0, #0x28 + ldrb r1, [r0] + mov r0, #0x34 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x3c] + add r1, sp, #0 + bl FUN_02020044 + cmp r4, #0 + beq _021E2EFA + mov r0, #0 + str r0, [r5, #0x2c] + add r0, r6, #0 + bl FUN_0200CAB4 +_021E2EFA: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E2F00: .word 0x021E6650 +_021E2F04: .word 0x021E6652 + + thumb_func_start MOD14_021E2F08 +MOD14_021E2F08: ; 0x021E2F08 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC424 + mov r1, #0x11 + ldr r2, [r5, #0xc] + lsl r1, r1, #4 + ldrh r1, [r2, r1] + cmp r1, r0 + bne _021E2F24 + ldr r0, [r5, #0x10] + bl MOD14_021DEA50 +_021E2F24: + ldr r0, [r5, #0xc] + bl MOD14_021DC3E8 + add r4, r0, #0 + add r2, r5, #0 + mov r1, #0x34 + ldr r0, [r5, #0x38] + add r2, #0x3c + mul r1, r4 + add r1, r2, r1 + mov r2, #1 + bl MOD14_021E0908 + add r5, #0x28 + strb r4, [r5] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E2F44 +MOD14_021E2F44: ; 0x021E2F44 + add r2, r0, #0 + mov r0, #0x5d + mov r3, #0 + lsl r0, r0, #2 + strb r3, [r2, r0] + add r0, r2, #0 + add r0, #0x28 + mov r3, #0x34 + strb r1, [r0] + ldr r0, [r2, #0x38] + add r2, #0x3c + mul r3, r1 + add r1, r2, r3 + ldr r3, _021E2F64 ; =MOD14_021E0C20 + mov r2, #1 + bx r3 + .align 2, 0 +_021E2F64: .word MOD14_021E0C20 + + thumb_func_start MOD14_021E2F68 +MOD14_021E2F68: ; 0x021E2F68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x28 + ldrb r1, [r0] + add r4, r5, #0 + mov r0, #0x34 + add r6, r1, #0 + mul r6, r0 + mov r0, #0x5d + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r4, #0x3c + cmp r0, #0 + beq _021E2F8A + cmp r0, #1 + beq _021E2FD2 + b _021E2FE2 +_021E2F8A: + ldr r0, [r5, #0x38] + add r1, r4, r6 + bl MOD14_021E0C48 + cmp r0, #0 + beq _021E2FE2 + ldr r0, [r5] + bl MOD14_021DDEDC + add r7, r0, #0 + bl MOD14_021DA1B8 + cmp r0, #0 + beq _021E2FE2 + add r0, r7, #0 + bl MOD14_021DA1C0 + cmp r0, #0 + ldr r0, [r5, #0x38] + beq _021E2FBE + add r1, r4, r6 + mov r2, #1 + bl MOD14_021E0908 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E2FBE: + add r1, r4, r6 + mov r2, #2 + bl MOD14_021E0C20 + mov r0, #0x5d + lsl r0, r0, #2 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + b _021E2FE2 +_021E2FD2: + ldr r0, [r5, #0x38] + add r1, r4, r6 + bl MOD14_021E0C48 + cmp r0, #0 + beq _021E2FE2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E2FE2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E2FE8 +MOD14_021E2FE8: ; 0x021E2FE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + bl MOD14_021DC3CC + cmp r0, #1 + bne _021E3020 + ldr r0, [r7, #0xc] + bl MOD14_021DC484 + add r5, r7, #0 + str r0, [sp] + mov r6, #0 + add r4, r7, #0 + add r5, #0x3c +_021E3006: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E3016 + ldr r0, [r7, #0x38] + ldr r2, [sp] + add r1, r5, #0 + bl MOD14_021E0B54 +_021E3016: + add r6, r6, #1 + add r4, #0x34 + add r5, #0x34 + cmp r6, #6 + blt _021E3006 +_021E3020: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3024 +MOD14_021E3024: ; 0x021E3024 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r5, #0 + mov r0, #0x34 + add r4, r1, #0 + mul r4, r0 + add r6, #0x3c + ldr r0, [r6, r4] + cmp r0, #0 + beq _021E3050 + ldr r0, [r5, #0x38] + add r1, r6, r4 + bl MOD14_021E0BA8 + ldr r0, [r5, #0xc] + bl MOD14_021DC484 + add r2, r0, #0 + ldr r0, [r5, #0x38] + add r1, r6, r4 + bl MOD14_021E0B54 +_021E3050: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3054 +MOD14_021E3054: ; 0x021E3054 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC3E8 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl MOD14_021DC45C + add r2, r0, #0 + add r1, r5, #0 + mov r0, #0x34 + add r3, r4, #0 + add r1, #0x3c + mul r3, r0 + ldr r0, [r1, r3] + cmp r0, #0 + beq _021E3080 + ldr r0, [r5, #0x38] + add r1, r1, r3 + bl MOD14_021E0BA4 +_021E3080: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3084 +MOD14_021E3084: ; 0x021E3084 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + mov r0, #0x34 + add r4, r6, #0 + mul r4, r0 + add r0, r5, #0 + add r7, r3, #0 + add r0, #0x3c + str r2, [sp] + add r0, r0, r4 + add r1, r7, #0 + mov r2, #1 + bl MOD14_021E0930 + ldr r0, [r5, #0x38] + ldr r2, [sp] + add r1, r7, #0 + bl MOD14_021E0BBC + add r1, r5, #0 + add r1, #0x3c + ldr r0, [r5, #0x38] + add r1, r1, r4 + mov r2, #1 + bl MOD14_021E08E4 + add r5, #0x28 + strb r6, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E30C0 +MOD14_021E30C0: ; 0x021E30C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0xc] + str r1, [sp] + ldr r0, [r0, #4] + str r2, [sp, #4] + bl FUN_0206B9AC + sub r6, r0, #1 + add r4, r5, #0 + mov r0, #0x34 + add r7, r6, #0 + mul r7, r0 + add r4, #0x3c + ldr r0, [sp, #4] + add r1, r4, r7 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, _021E3110 ; =0x00000418 + lsl r3, r6, #5 + ldr r0, [r5, #0x38] + add r1, r4, r7 + add r2, r3, r2 + bl MOD14_021E0BBC + ldr r0, [r4, r7] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r4, r7] + add r1, r6, #4 + bl MOD14_021DDE24 + ldr r0, [sp] + add r5, #0x28 + strb r0, [r5] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3110: .word 0x00000418 + + thumb_func_start MOD14_021E3114 +MOD14_021E3114: ; 0x021E3114 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + add r5, r7, #0 + mov r0, #0x34 + add r4, r6, #0 + mul r4, r0 + add r5, #0x3c + add r0, r2, #0 + add r1, r5, r4 + mov r2, #1 + bl MOD14_021E0930 + ldr r2, _021E3154 ; =0x00000418 + lsl r3, r6, #5 + ldr r0, [r7, #0x38] + add r1, r5, r4 + add r2, r3, r2 + bl MOD14_021E0BBC + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_02020238 + ldr r0, [r5, r4] + add r1, r6, #4 + bl MOD14_021DDE24 + add r7, #0x28 + strb r6, [r7] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E3154: .word 0x00000418 + + thumb_func_start MOD14_021E3158 +MOD14_021E3158: ; 0x021E3158 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #6 + blo _021E3166 + bl ErrorHandling +_021E3166: + mov r0, #0x34 + add r5, #0x3c + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E3170 +MOD14_021E3170: ; 0x021E3170 + push {r3, r4} + cmp r1, #6 + bne _021E3184 + ldr r0, [r0, #0x34] + add r0, #0xc0 + str r0, [r2] + mov r0, #0xb8 + str r0, [r3] + pop {r3, r4} + bx lr +_021E3184: + ldr r4, [r0, #0x34] + ldr r0, _021E319C ; =0x021E6650 + lsl r1, r1, #2 + ldrh r0, [r0, r1] + add r0, r4, r0 + str r0, [r2] + ldr r0, _021E31A0 ; =0x021E6652 + ldrh r0, [r0, r1] + str r0, [r3] + pop {r3, r4} + bx lr + nop +_021E319C: .word 0x021E6650 +_021E31A0: .word 0x021E6652 + + thumb_func_start MOD14_021E31A4 +MOD14_021E31A4: ; 0x021E31A4 + push {r3, r4, lr} + sub sp, #0xc + add r3, r0, #0 + cmp r1, #2 + bhi _021E31BE + mov r0, #2 + sub r1, r0, r1 + add r2, r1, #0 + mov r0, #0x1e + mul r2, r0 + mov r1, #0x18 + mov r0, #0 + b _021E31CC +_021E31BE: + cmp r1, #0x1a + bhs _021E31F0 + mov r0, #0x1a + sub r1, r0, r1 + mov r0, #0x18 + mov r2, #0 + sub r0, r0, r1 +_021E31CC: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r4, [r3, #0x18] + ldr r0, [r3, #4] + ldr r3, [r3, #0x30] + add r4, #0xc + lsl r3, r3, #0x18 + mov r1, #2 + add r2, r4, r2 + lsr r3, r3, #0x18 + bl FUN_02018148 +_021E31F0: + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD14_021E31F4 +MOD14_021E31F4: ; 0x021E31F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + mov r0, #0 + ldr r1, _021E328C ; =0x021E6650 + mov ip, r0 +_021E3202: + ldrh r3, [r1] + ldrh r2, [r1, #4] + mov r0, #0 + ldrh r4, [r1, #2] + sub r2, r3, r2 + lsl r3, r2, #0xc + asr r2, r3, #2 + lsr r2, r2, #0x1d + add r2, r3, r2 + ldrh r3, [r1, #6] + asr r2, r2, #3 + mov lr, r2 + sub r3, r4, r3 + lsl r4, r3, #0xc + asr r3, r4, #2 + lsr r3, r3, #0x1d + add r3, r4, r3 + ldr r2, [sp, #4] + add r6, r0, #0 + asr r7, r3, #3 + add r5, r0, #0 +_021E322C: + ldr r3, [sp] + add r5, r5, r7 + ldr r4, [r3, #0x34] + ldrh r3, [r1, #4] + add r0, r0, #1 + add r3, r4, r3 + lsl r4, r3, #0xc + mov r3, lr + add r6, r6, r3 + add r3, r4, r6 + str r3, [r2] + ldrh r3, [r1, #6] + lsl r3, r3, #0xc + add r3, r3, r5 + str r3, [r2, #4] + mov r3, #0 + str r3, [r2, #8] + add r2, #0xc + cmp r0, #7 + blo _021E322C + ldr r3, [sp] + mov r2, #0xc + ldr r4, [r3, #0x34] + ldrh r3, [r1] + mul r2, r0 + ldr r0, [sp, #4] + add r3, r4, r3 + lsl r4, r3, #0xc + ldr r3, [sp, #4] + add r0, r0, r2 + str r4, [r3, r2] + ldrh r2, [r1, #2] + add r1, r1, #4 + lsl r2, r2, #0xc + str r2, [r0, #4] + mov r2, #0 + str r2, [r0, #8] + add r0, r3, #0 + add r0, #0x60 + str r0, [sp, #4] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #5 + blo _021E3202 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E328C: .word 0x021E6650 + + thumb_func_start MOD14_021E3290 +MOD14_021E3290: ; 0x021E3290 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r7, #0 +_021E329A: + ldr r0, [r5, #0x3c] + cmp r0, #0 + beq _021E32F2 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [sp, #4] + add r0, r0, r4 + str r0, [sp, #4] + ldr r0, [r5, #0x3c] + bl FUN_02020044 + cmp r4, #0 + bge _021E32D8 + mov r0, #0xd + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _021E32EA + ldr r0, [r5, #0x3c] + mov r1, #1 + bl FUN_020200A0 + b _021E32EA +_021E32D8: + mov r0, #0xd + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + cmp r1, r0 + blt _021E32EA + ldr r0, [r5, #0x3c] + mov r1, #0 + bl FUN_020200A0 +_021E32EA: + add r7, r7, #1 + add r5, #0x34 + cmp r7, #6 + blt _021E329A +_021E32F2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E32F8 +MOD14_021E32F8: ; 0x021E32F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x24] + str r1, [sp, #0x10] + cmp r1, #0 + beq _021E330A + mov r0, #0 + str r0, [sp, #0x14] + b _021E330E +_021E330A: + mov r0, #0xd0 + str r0, [sp, #0x14] +_021E330E: + ldr r0, [sp, #0x24] + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + mov r4, #0 + str r0, [sp, #0x20] + cmp r0, #0 + ble _021E3384 + ldr r0, [sp, #0x24] + ldr r7, _021E3388 ; =0x00000418 + str r0, [sp, #0x1c] + add r0, #0x3c + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + ldr r5, _021E338C ; =0x021E6650 + str r0, [sp, #0x18] +_021E3330: + ldr r0, [sp, #0x24] + add r1, r4, #0 + ldr r0, [r0, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9B0 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + add r0, r4, #4 + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + str r7, [sp, #8] + str r0, [sp, #0xc] + ldr r2, [sp, #0x24] + ldr r0, [sp, #0x24] + ldr r3, [r2, #0x34] + ldrh r2, [r5] + ldrh r6, [r5, #2] + ldr r0, [r0, #0x38] + add r2, r3, r2 + ldr r3, [sp, #0x14] + add r3, r3, r6 + bl MOD14_021E0940 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x3c] + bl FUN_020200A0 + ldr r0, [sp, #0x1c] + add r4, r4, #1 + add r0, #0x34 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r7, #0x20 + add r0, #0x34 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r5, r5, #4 + cmp r4, r0 + blt _021E3330 +_021E3384: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3388: .word 0x00000418 +_021E338C: .word 0x021E6650 + + thumb_func_start MOD14_021E3390 +MOD14_021E3390: ; 0x021E3390 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + ldr r0, [r0, #4] + bl FUN_0206B9AC + mov r6, #0 + str r0, [sp] + cmp r0, #0 + ble _021E33C6 + add r5, r7, #0 + add r4, r7, #0 + add r5, #0x3c +_021E33AA: + ldr r0, [r4, #0x3c] + cmp r0, #0 + beq _021E33BA + ldr r0, [r7, #0x38] + add r1, r5, #0 + mov r2, #1 + bl MOD14_021E0908 +_021E33BA: + ldr r0, [sp] + add r6, r6, #1 + add r4, #0x34 + add r5, #0x34 + cmp r6, r0 + blt _021E33AA +_021E33C6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E33C8 +MOD14_021E33C8: ; 0x021E33C8 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r6, r0, #0 + add r0, r5, #0 + add r7, r1, #0 + str r3, [sp] + bl MOD14_021DC3C4 + cmp r0, #4 + bne _021E33E4 + mov r0, #0 + str r0, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E33E4: + mov r0, #0xa + mov r1, #0xf4 + bl FUN_02016998 + add r4, r0, #0 + beq _021E3460 + ldr r0, [sp] + mov r1, #0xa + str r0, [r4, #8] + str r7, [r4] + ldr r0, [sp, #0x18] + str r5, [r4, #4] + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + add r1, r4, #0 + add r1, #0x84 + str r0, [r1] + add r5, #0x9c + ldrb r0, [r5] + mov r1, #0 + add r2, r1, #0 + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + str r1, [r4, #0x2c] + str r1, [r4, #0x30] + add r0, r4, #0 +_021E3436: + add r1, r1, #1 + str r2, [r0, #0x34] + add r0, r0, #4 + cmp r1, #8 + blt _021E3436 + add r0, r4, #0 + mov r1, #0 +_021E3444: + add r2, r2, #1 + str r1, [r0, #0x54] + add r0, r0, #4 + cmp r2, #0xa + blt _021E3444 + add r0, r4, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + bl MOD14_021E3464 + str r4, [r6] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E3460: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E3464 +MOD14_021E3464: ; 0x021E3464 + push {r4, r5, r6, r7} + add r1, r0, #0 + mov r2, #0 + add r1, #0xd4 + strb r2, [r1] + add r1, r0, #0 + mov r4, #0x5a + mov r3, #0x10 + add r1, #0xe4 + strb r3, [r1] + ldr r1, _021E34BC ; =0x020EDF50 + mov r3, #1 + lsl r4, r4, #8 + mov r6, #0x10 +_021E3480: + add r2, r2, r4 + asr r5, r2, #0xc + lsl r5, r5, #2 + ldr r5, [r1, r5] + lsl r5, r5, #4 + asr r7, r5, #0xc + add r5, r0, r3 + add r5, #0xd4 + strb r7, [r5] + add r5, r0, r3 + add r5, #0xd4 + ldrb r5, [r5] + sub r7, r6, r5 + add r5, r0, r3 + add r5, #0xe4 + add r3, r3, #1 + strb r7, [r5] + cmp r3, #0xf + blt _021E3480 + add r1, r0, r3 + add r0, r0, r3 + mov r2, #0x10 + add r1, #0xd4 + strb r2, [r1] + mov r1, #0 + add r0, #0xe4 + strb r1, [r0] + pop {r4, r5, r6, r7} + bx lr + nop +_021E34BC: .word 0x020EDF50 + + thumb_func_start MOD14_021E34C0 +MOD14_021E34C0: ; 0x021E34C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + beq _021E3558 + add r0, #0x88 + bl FUN_02019178 + add r0, r6, #0 + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021E34DA + bl FUN_02016A18 +_021E34DA: + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021E34E8 + bl FUN_02016A18 +_021E34E8: + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E34F6 + bl FUN_02016A18 +_021E34F6: + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021E3504 + bl FUN_02016A18 +_021E3504: + ldr r0, [r6, #0x2c] + cmp r0, #0 + beq _021E350E + bl FUN_0201FFC8 +_021E350E: + ldr r0, [r6, #0x30] + cmp r0, #0 + beq _021E3518 + bl FUN_0201FFC8 +_021E3518: + add r0, r6, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E3526 + bl FUN_02021A20 +_021E3526: + mov r4, #0 + add r5, r6, #0 +_021E352A: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E3534 + bl FUN_0201FFC8 +_021E3534: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E352A + mov r5, #0 + add r4, r6, #0 +_021E3540: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _021E354A + bl FUN_0201FFC8 +_021E354A: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0xa + blt _021E3540 + add r0, r6, #0 + bl FUN_02016A18 +_021E3558: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E355C +MOD14_021E355C: ; 0x021E355C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + beq _021E365C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x67 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x64 + mov r3, #7 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x65 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #8] + mov r0, #0x12 + mov r1, #0x66 + mov r3, #5 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #4 + mov r3, #1 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #8] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_02017CD0 + ldr r3, [r4, #0x10] + ldr r0, [r4, #8] + lsl r5, r3, #2 + ldr r3, _021E3660 ; =0x021E6674 + mov r1, #5 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r3, #0 + add r1, r4, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r4, #8] + add r1, #0x88 + mov r2, #4 + bl FUN_02019064 + add r0, r4, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x88 + bl FUN_020191D0 + add r0, r4, #0 + bl MOD14_021E4764 + mov r0, #0x60 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x68 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r4, #0 + bl MOD14_021E3664 +_021E365C: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021E3660: .word 0x021E6674 + + thumb_func_start MOD14_021E3664 +MOD14_021E3664: ; 0x021E3664 + push {r3, r4, lr} + sub sp, #0x5c + add r4, r0, #0 + bl MOD14_021E36FC + add r0, sp, #0x14 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x14 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x72 + mov r2, #1 + bl FUN_02006AE4 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + add r3, r4, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + add r3, #0x9c + add r2, r4, #0 + ldr r3, [r3] + add r0, sp, #0x38 + add r1, sp, #0x14 + add r2, #0x18 + bl MOD14_021DDDB4 + mov r0, #0x31 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r3, #0x8e + ldr r0, [r4, #0xc] + add r1, sp, #0x38 + mov r2, #0 + lsl r3, r3, #2 + bl MOD14_021DDDD4 + str r0, [r4, #0x2c] + mov r0, #0x31 + mov r3, #0x8e + str r0, [sp] + mov r2, #2 + str r2, [sp, #4] + ldr r0, [r4, #0xc] + add r1, sp, #0x38 + add r2, #0xfe + lsl r3, r3, #2 + bl MOD14_021DDDD4 + str r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020100 + ldr r0, [r4, #4] + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021E36F6 + ldr r0, [r4, #0x30] + mov r1, #1 + bl FUN_02020130 +_021E36F6: + add sp, #0x5c + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E36FC +MOD14_021E36FC: ; 0x021E36FC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x73 + mov r2, #1 + add r3, #0x9c + bl FUN_02006C30 + add r1, r4, #0 + add r1, #0x98 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x74 + mov r2, #1 + add r3, #0xa4 + bl FUN_02006C5C + add r1, r4, #0 + add r1, #0xa0 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x76 + mov r2, #1 + add r3, #0xac + bl FUN_02006C30 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + mov r0, #0xa + add r3, r4, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x77 + mov r2, #1 + add r3, #0xb4 + bl FUN_02006C5C + add r1, r4, #0 + add r1, #0xb0 + str r0, [r1] + add r0, r4, #0 + add r0, #0x18 + bl FUN_020B19DC + mov r0, #0xa + str r0, [sp] + add r4, #0x18 + mov r0, #0x12 + mov r1, #0x78 + mov r2, #2 + mov r3, #0 + str r4, [sp, #4] + bl FUN_02006A8C + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3784 +MOD14_021E3784: ; 0x021E3784 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + mov r2, #0 + bl MOD14_021DDD40 + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3798 +MOD14_021E3798: ; 0x021E3798 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD14_021E37A8 +MOD14_021E37A8: ; 0x021E37A8 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021E37B2 + mov r0, #1 + bx lr +_021E37B2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E37B8 +MOD14_021E37B8: ; 0x021E37B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + beq _021E388A + ldr r1, [r5, #4] + add r1, #0x9c + ldrb r6, [r1] + ldr r1, [r5, #0x10] + cmp r1, r6 + beq _021E388A + add r1, r5, #0 + add r4, r5, #0 + add r1, #0xb8 + str r5, [r1] + add r4, #0xb8 + mov r1, #0 + str r1, [r4, #8] + str r1, [r4, #4] + cmp r6, #0 + beq _021E37E8 + cmp r6, #1 + beq _021E3800 + cmp r6, #2 + beq _021E3822 + b _021E384A +_021E37E8: + mov r1, #8 + strh r1, [r4, #0xc] + ldr r7, _021E388C ; =MOD14_021E3AB0 + bl MOD14_021E3DD8 + add r0, r5, #0 + bl MOD14_021E3EBC + add r0, r5, #0 + bl MOD14_021E4764 + b _021E3852 +_021E3800: + mov r0, #8 + strh r0, [r4, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E380E + ldr r7, _021E3890 ; =MOD14_021E38AC + b _021E3816 +_021E380E: + ldrh r0, [r4, #0xc] + ldr r7, _021E3894 ; =MOD14_021E3984 + add r0, #8 + strh r0, [r4, #0xc] +_021E3816: + add r0, r5, #0 + bl MOD14_021E3EBC + ldr r0, [r5, #0x2c] + str r0, [r4, #8] + b _021E3852 +_021E3822: + mov r0, #8 + strh r0, [r4, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E3830 + ldr r7, _021E3890 ; =MOD14_021E38AC + b _021E3838 +_021E3830: + ldrh r0, [r4, #0xc] + ldr r7, _021E3894 ; =MOD14_021E3984 + add r0, #8 + strh r0, [r4, #0xc] +_021E3838: + ldr r0, [r5, #0x30] + str r0, [r4, #8] + add r0, r5, #0 + bl MOD14_021E3DD8 + add r0, r5, #0 + bl MOD14_021E4764 + b _021E3852 +_021E384A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} +_021E3852: + str r6, [r5, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + bl FUN_02017B48 + lsl r0, r0, #0xc + ldr r1, _021E3898 ; =0x021E6674 + lsl r2, r6, #2 + str r0, [r4, #0x10] + ldr r6, [r1, r2] + ldrh r1, [r4, #0xc] + sub r0, r6, r0 + bl _s32_div_f + str r0, [r4, #0x14] + asr r0, r6, #0xc + str r0, [r4, #0x18] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E3880 + mov r1, #1 + bl FUN_02020130 +_021E3880: + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD14_021E3784 +_021E388A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E388C: .word MOD14_021E3AB0 +_021E3890: .word MOD14_021E38AC +_021E3894: .word MOD14_021E3984 +_021E3898: .word 0x021E6674 + + thumb_func_start MOD14_021E389C +MOD14_021E389C: ; 0x021E389C + push {r3, lr} + cmp r0, #0 + beq _021E38A8 + bl MOD14_021E37A8 + pop {r3, pc} +_021E38A8: + mov r0, #1 + pop {r3, pc} + + thumb_func_start MOD14_021E38AC +MOD14_021E38AC: ; 0x021E38AC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + cmp r0, #3 + bhi _021E3974 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E38C4: ; jump table + .short _021E38CC - _021E38C4 - 2 ; case 0 + .short _021E38DE - _021E38C4 - 2 ; case 1 + .short _021E3924 - _021E38C4 - 2 ; case 2 + .short _021E3942 - _021E38C4 - 2 ; case 3 +_021E38CC: + ldr r0, [r4, #8] + bl FUN_02020388 + cmp r0, #0 + bne _021E3974 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E38DE: + ldrh r0, [r4, #0xc] + cmp r0, #0 + beq _021E3900 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + mov r2, #0 + add r3, r1, r0 + str r3, [r4, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3900: + ldr r0, [r5, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E3978 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3924: + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E397C ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0 + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3942: + mov r1, #0xe + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3980 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r0, [r4, r1] + cmp r0, #0x10 + blt _021E3974 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E3798 +_021E3974: + pop {r3, r4, r5, pc} + nop +_021E3978: .word 0x04001050 +_021E397C: .word 0x021E6668 +_021E3980: .word 0x04001052 + + thumb_func_start MOD14_021E3984 +MOD14_021E3984: ; 0x021E3984 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + cmp r0, #4 + bls _021E3992 + b _021E3AA2 +_021E3992: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E399E: ; jump table + .short _021E39A8 - _021E399E - 2 ; case 0 + .short _021E39CE - _021E399E - 2 ; case 1 + .short _021E3A0C - _021E399E - 2 ; case 2 + .short _021E3A52 - _021E399E - 2 ; case 3 + .short _021E3A70 - _021E399E - 2 ; case 4 +_021E39A8: + ldr r0, [r4, #8] + bl FUN_02020388 + cmp r0, #0 + bne _021E3AA2 + mov r0, #0 + str r0, [sp] + ldr r0, _021E3AA4 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0x10 + bl G2x_SetBlendAlpha_ + mov r0, #0xf + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E39CE: + mov r1, #0xe + ldrsh r0, [r4, r1] + sub r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3AA8 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _021E3AA2 + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E3AAC ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A0C: + ldrh r0, [r4, #0xc] + cmp r0, #0 + beq _021E3A2E + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x14] + mov r2, #0 + add r3, r1, r0 + str r3, [r4, #0x10] + ldr r0, [r5, #8] + mov r1, #5 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3A2E: + ldr r0, [r5, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E3AA4 ; =0x04001050 + mov r1, #4 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A52: + ldr r3, [r5, #0x10] + ldr r0, [r5, #8] + lsl r5, r3, #2 + ldr r3, _021E3AAC ; =0x021E6668 + mov r1, #6 + ldr r3, [r3, r5] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0 + strh r0, [r4, #0xe] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3A70: + mov r1, #0xe + ldrsh r3, [r4, r1] + add r0, r5, r3 + add r0, #0xd4 + ldrb r2, [r0] + add r0, r5, r3 + add r0, #0xe4 + ldrb r0, [r0] + lsl r0, r0, #8 + orr r2, r0 + ldr r0, _021E3AA8 ; =0x04001052 + strh r2, [r0] + ldrsh r0, [r4, r1] + add r0, r0, #1 + strh r0, [r4, #0xe] + ldrsh r0, [r4, r1] + cmp r0, #0x10 + blt _021E3AA2 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_02020130 + add r0, r5, #0 + bl MOD14_021E3798 +_021E3AA2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3AA4: .word 0x04001050 +_021E3AA8: .word 0x04001052 +_021E3AAC: .word 0x021E6668 + + thumb_func_start MOD14_021E3AB0 +MOD14_021E3AB0: ; 0x021E3AB0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #4] + ldr r0, [r4] + cmp r1, #3 + bhi _021E3B4C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E3AC8: ; jump table + .short _021E3AD0 - _021E3AC8 - 2 ; case 0 + .short _021E3ADA - _021E3AC8 - 2 ; case 1 + .short _021E3B12 - _021E3AC8 - 2 ; case 2 + .short _021E3B48 - _021E3AC8 - 2 ; case 3 +_021E3AD0: + mov r1, #0xf + strh r1, [r4, #0xe] + ldr r1, [r4, #4] + add r1, r1, #1 + str r1, [r4, #4] +_021E3ADA: + mov r2, #0xe + ldrsh r1, [r4, r2] + sub r1, r1, #1 + strh r1, [r4, #0xe] + ldrsh r5, [r4, r2] + add r1, r0, r5 + add r1, #0xd4 + ldrb r3, [r1] + add r1, r0, r5 + add r1, #0xe4 + ldrb r1, [r1] + lsl r1, r1, #8 + orr r3, r1 + ldr r1, _021E3B50 ; =0x04001052 + strh r3, [r1] + ldrsh r1, [r4, r2] + cmp r1, #0 + bne _021E3B4C + mov r2, #0 + ldr r0, [r0, #8] + mov r1, #6 + add r3, r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3B12: + ldrh r1, [r4, #0xc] + cmp r1, #0 + beq _021E3B34 + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x14] + add r3, r2, r1 + str r3, [r4, #0x10] + ldr r0, [r0, #8] + mov r1, #5 + mov r2, #0 + asr r3, r3, #0xc + bl FUN_020179E0 + ldrh r0, [r4, #0xc] + sub r0, r0, #1 + strh r0, [r4, #0xc] + pop {r3, r4, r5, pc} +_021E3B34: + ldr r0, [r0, #8] + ldr r3, [r4, #0x18] + mov r1, #5 + mov r2, #0 + bl FUN_020179E0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_021E3B48: + bl MOD14_021E3798 +_021E3B4C: + pop {r3, r4, r5, pc} + nop +_021E3B50: .word 0x04001052 + + thumb_func_start MOD14_021E3B54 +MOD14_021E3B54: ; 0x021E3B54 + push {r4, lr} + add r4, r0, #0 + beq _021E3B7C + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E3B66 + cmp r1, #2 + beq _021E3B72 + pop {r4, pc} +_021E3B66: + bl MOD14_021E3C94 + add r0, r4, #0 + bl MOD14_021E41C0 + pop {r4, pc} +_021E3B72: + bl MOD14_021E3E1C + add r0, r4, #0 + bl MOD14_021E44E0 +_021E3B7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3B80 +MOD14_021E3B80: ; 0x021E3B80 + push {r4, lr} + add r4, r0, #0 + beq _021E3BA2 + bl MOD14_021E37A8 + cmp r0, #0 + beq _021E3B9E + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E3B9A + add r0, r4, #0 + bl MOD14_021E4790 +_021E3B9A: + mov r0, #1 + pop {r4, pc} +_021E3B9E: + mov r0, #0 + pop {r4, pc} +_021E3BA2: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3BA8 +MOD14_021E3BA8: ; 0x021E3BA8 + push {r4, lr} + add r4, r0, #0 + beq _021E3BD0 + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E3BBA + cmp r1, #2 + beq _021E3BCC + pop {r4, pc} +_021E3BBA: + bl MOD14_021E4764 + add r0, r4, #0 + bl MOD14_021E3D38 + add r0, r4, #0 + bl MOD14_021E43E8 + pop {r4, pc} +_021E3BCC: + bl MOD14_021E46E4 +_021E3BD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3BD4 +MOD14_021E3BD4: ; 0x021E3BD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD14_021DC46C + cmp r0, #0 + ble _021E3C04 + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + sub r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0 + bge _021E3C24 + ldr r0, [r1] + add r0, #0xa + str r0, [r1] + pop {r4, pc} +_021E3C04: + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + sub r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0xa + blt _021E3C24 + ldr r0, [r1] + sub r0, #0xa + str r0, [r1] +_021E3C24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3C28 +MOD14_021E3C28: ; 0x021E3C28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD14_021DC46C + add r2, r4, #0 + add r2, #0x80 + ldr r2, [r2] + add r1, r4, #0 + add r2, r2, r0 + add r0, r4, #0 + add r0, #0x80 + add r4, #0x80 + str r2, [r0] + ldr r0, [r4] + add r1, #0x80 + cmp r0, #0 + bge _021E3C54 + ldr r0, [r1] + add r0, #8 + str r0, [r1] + pop {r4, pc} +_021E3C54: + cmp r0, #8 + blt _021E3C5E + ldr r0, [r1] + sub r0, #8 + str r0, [r1] +_021E3C5E: + pop {r4, pc} + + thumb_func_start MOD14_021E3C60 +MOD14_021E3C60: ; 0x021E3C60 + push {r4, lr} + add r4, r0, #0 + beq _021E3C90 + bl MOD14_021E37A8 + cmp r0, #0 + beq _021E3C8C + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E3C82 + add r0, r4, #0 + bl MOD14_021E4790 + add r0, r4, #0 + bl MOD14_021E3BD4 + b _021E3C88 +_021E3C82: + add r0, r4, #0 + bl MOD14_021E3C28 +_021E3C88: + mov r0, #1 + pop {r4, pc} +_021E3C8C: + mov r0, #0 + pop {r4, pc} +_021E3C90: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E3C94 +MOD14_021E3C94: ; 0x021E3C94 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + str r0, [sp, #8] + ldr r0, [r0] + bl MOD14_021DDD84 + add r7, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #4] + bl MOD14_021DC474 + add r4, r0, #3 + cmp r4, #0x12 + blt _021E3CB2 + sub r4, #0x12 +_021E3CB2: + ldr r5, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x18 + mov r6, #0xc0 + str r0, [sp, #0x10] +_021E3CC2: + add r0, sp, #0x14 + bl FUN_020B1A24 + add r0, sp, #0x14 + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD14_021E1FF8 + add r0, r7, #0 + bl MOD14_021E2184 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x10] + add r0, sp, #0x38 + add r1, sp, #0x14 + bl MOD14_021DDDB4 + mov r0, #0x30 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #8] + mov r3, #0x17 + ldr r0, [r0, #0xc] + add r1, sp, #0x38 + mov r2, #0x10 + lsl r3, r3, #4 + bl MOD14_021DDDD4 + str r0, [r5, #0x54] + cmp r0, #0 + bne _021E3D14 + bl ErrorHandling +_021E3D14: + sub r4, r4, #1 + bpl _021E3D1A + mov r4, #0x11 +_021E3D1A: + ldr r0, [sp, #0xc] + add r6, #0x20 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #0xa + blt _021E3CC2 + ldr r0, [sp, #8] + mov r1, #0 + add r0, #0x80 + str r0, [sp, #8] + str r1, [r0] + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3D38 +MOD14_021E3D38: ; 0x021E3D38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #4] + ldr r0, [r0] + bl MOD14_021DDD84 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + ldr r0, [r0, #4] + bl MOD14_021DC474 + ldr r1, [sp, #4] + ldr r2, [r1, #4] + mov r1, #0xa0 + ldrsh r7, [r2, r1] + cmp r7, #0 + ble _021E3D74 + sub r0, r0, r7 + add r5, r0, #4 + cmp r5, #0x12 + blt _021E3D64 + sub r5, #0x12 +_021E3D64: + ldr r0, [sp, #4] + mov r6, #1 + add r0, #0x80 + ldr r0, [r0] + sub r4, r0, #1 + bpl _021E3D90 + add r4, #0xa + b _021E3D90 +_021E3D74: + sub r0, r0, r7 + sub r5, r0, #3 + bpl _021E3D7C + add r5, #0x12 +_021E3D7C: + ldr r0, [sp, #4] + mov r6, #0 + add r0, #0x80 + ldr r0, [r0] + mvn r6, r6 + add r4, r0, #6 + cmp r4, #0xa + blt _021E3D8E + sub r4, #0xa +_021E3D8E: + neg r7, r7 +_021E3D90: + ldr r0, [sp, #4] + str r7, [r0, #0x7c] + mov r0, #0 + str r0, [sp, #8] + cmp r7, #0 + ble _021E3DD4 +_021E3D9C: + mov r0, #0 + str r0, [sp] + lsl r2, r4, #5 + ldr r0, [sp, #0xc] + add r1, r5, #0 + add r2, #0xc0 + mov r3, #2 + bl MOD14_021E1FF8 + add r5, r5, r6 + bpl _021E3DB6 + mov r5, #0x11 + b _021E3DBC +_021E3DB6: + cmp r5, #0x12 + blt _021E3DBC + mov r5, #0 +_021E3DBC: + sub r4, r4, r6 + bpl _021E3DC4 + mov r4, #9 + b _021E3DCA +_021E3DC4: + cmp r4, #0xa + blt _021E3DCA + mov r4, #0 +_021E3DCA: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r7 + blt _021E3D9C +_021E3DD4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E3DD8 +MOD14_021E3DD8: ; 0x021E3DD8 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E3DE0: + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021E3DEC + bl FUN_0201FFC8 + str r6, [r5, #0x54] +_021E3DEC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _021E3DE0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3DF8 +MOD14_021E3DF8: ; 0x021E3DF8 + cmp r0, #0 + bne _021E3E08 + cmp r1, #0 + bne _021E3E04 + mov r0, #1 + bx lr +_021E3E04: + mov r0, #0 + bx lr +_021E3E08: + mov r3, #1 + sub r2, r0, #1 + lsl r3, r2 + tst r1, r3 + beq _021E3E18 + lsl r0, r0, #1 + add r0, r0, #1 + bx lr +_021E3E18: + lsl r0, r0, #1 + bx lr + + thumb_func_start MOD14_021E3E1C +MOD14_021E3E1C: ; 0x021E3E1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r5, r0, #0 + ldr r0, [r5, #4] + bl MOD14_021DC484 + str r0, [sp, #0x14] + add r0, sp, #0x18 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + lsl r0, r0, #0xa + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x18 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x75 + mov r2, #1 + bl FUN_02006AE4 + add r7, r5, #0 + mov r6, #0 + add r4, r5, #0 + add r7, #0x18 +_021E3E58: + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + add r3, r5, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r3, #0xac + ldr r3, [r3] + add r0, sp, #0x3c + add r1, sp, #0x18 + add r2, r7, #0 + bl MOD14_021DDDB4 + mov r0, #0x30 + str r0, [sp] + mov r0, #2 + mov r2, #0xf0 + str r0, [sp, #4] + add r3, r2, #0 + ldr r0, [r5, #0xc] + add r1, sp, #0x3c + add r3, #0x80 + bl MOD14_021DDDD4 + str r0, [r4, #0x34] + cmp r0, #0 + bne _021E3E94 + bl ErrorHandling +_021E3E94: + ldr r1, [sp, #0x14] + add r0, r6, #0 + bl MOD14_021E3DF8 + add r1, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_02020130 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #8 + blt _021E3E58 + ldr r0, [r5, #4] + bl MOD14_021DC47C + add r5, #0x80 + str r0, [r5] + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3EBC +MOD14_021E3EBC: ; 0x021E3EBC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E3EC4: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E3ED0 + bl FUN_0201FFC8 + str r6, [r5, #0x34] +_021E3ED0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E3EC4 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E3EDC +MOD14_021E3EDC: ; 0x021E3EDC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E3EF2 + sub r0, r0, #1 + add sp, #0xc + strh r0, [r4, #0x16] + pop {r4, r5, pc} +_021E3EF2: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E3F28 + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + asr r0, r0, #0xc + lsl r1, r0, #2 + ldr r0, _021E3F58 ; =0x021E66A8 + ldrsh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, _021E3F5C ; =0x021E66AA + ldrsh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} +_021E3F28: + ldr r0, [r4, #0xc] + asr r0, r0, #0xc + lsl r1, r0, #2 + ldr r0, _021E3F58 ; =0x021E66A8 + ldrsh r0, [r0, r1] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, _021E3F5C ; =0x021E66AA + ldrsh r0, [r0, r1] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E4010 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E3F58: .word 0x021E66A8 +_021E3F5C: .word 0x021E66AA + + thumb_func_start MOD14_021E3F60 +MOD14_021E3F60: ; 0x021E3F60 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x16] + cmp r0, #0 + beq _021E3F76 + sub r0, r0, #1 + add sp, #0xc + strh r0, [r4, #0x16] + pop {r4, r5, pc} +_021E3F76: + ldrh r0, [r4, #0x14] + cmp r0, #0 + beq _021E3FB2 + sub r0, r0, #1 + strh r0, [r4, #0x14] + ldr r1, [r4, #8] + ldr r0, [r4, #0x10] + add r0, r1, r0 + str r0, [r4, #8] + asr r0, r0, #0xc + ldr r1, _021E4008 ; =0x021E66A8 + lsl r0, r0, #2 + ldrsh r2, [r1, r0] + mov r1, #1 + lsl r1, r1, #8 + sub r1, r1, r2 + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _021E400C ; =0x021E66AA + ldrsh r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} +_021E3FB2: + ldr r0, [r4, #0xc] + ldr r1, _021E4008 ; =0x021E66A8 + asr r0, r0, #0xc + lsl r0, r0, #2 + ldrsh r2, [r1, r0] + mov r1, #1 + lsl r1, r1, #8 + sub r1, r1, r2 + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _021E400C ; =0x021E66AA + ldrsh r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02020044 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021E3FFC + ldrh r0, [r4, #0x28] + add sp, #0xc + strh r0, [r4, #0x14] + ldr r0, [r4, #0x1c] + str r0, [r4, #8] + ldr r0, [r4, #0x24] + str r0, [r4, #0x10] + ldr r0, [r4, #0x20] + str r0, [r4, #0xc] + ldrh r0, [r4, #0x2a] + strh r0, [r4, #0x16] + mov r0, #0 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021E3FFC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E4010 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021E4008: .word 0x021E66A8 +_021E400C: .word 0x021E66AA + + thumb_func_start MOD14_021E4010 +MOD14_021E4010: ; 0x021E4010 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r1] + ldr r0, _021E4034 ; =0x000001CB + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021E4022 + bl ErrorHandling +_021E4022: + ldr r0, _021E4034 ; =0x000001CB + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E4034: .word 0x000001CB + + thumb_func_start MOD14_021E4038 +MOD14_021E4038: ; 0x021E4038 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + str r3, [sp] + ldr r4, [sp, #0x20] + cmp r7, #0 + bne _021E404C + bl ErrorHandling +_021E404C: + cmp r4, #0 + beq _021E4052 + sub r4, r4, #1 +_021E4052: + str r6, [r5] + ldr r0, [sp, #0x1c] + str r7, [r5, #4] + strh r0, [r5, #0x14] + ldr r0, [sp, #0x24] + strh r4, [r5, #0x16] + cmp r0, #0 + beq _021E4066 + ldr r4, _021E40A4 ; =MOD14_021E3F60 + b _021E4068 +_021E4066: + ldr r4, _021E40A8 ; =MOD14_021E3EDC +_021E4068: + ldr r0, [sp] + ldr r1, _021E40AC ; =0x021E6680 + lsl r0, r0, #1 + ldrh r0, [r1, r0] + lsl r0, r0, #0xc + str r0, [r5, #8] + ldr r0, [sp, #0x18] + lsl r0, r0, #1 + ldrh r0, [r1, r0] + lsl r1, r0, #0xc + str r1, [r5, #0xc] + ldr r0, [r5, #8] + sub r0, r1, r0 + ldr r1, [sp, #0x1c] + bl _s32_div_f + str r0, [r5, #0x10] + mov r2, #0 + add r0, r4, #0 + add r1, r5, #0 + str r2, [r5, #0x18] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E40A2 + ldr r0, _021E40B0 ; =0x000001CB + ldrb r1, [r6, r0] + add r1, r1, #1 + strb r1, [r6, r0] +_021E40A2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E40A4: .word MOD14_021E3F60 +_021E40A8: .word MOD14_021E3EDC +_021E40AC: .word 0x021E6680 +_021E40B0: .word 0x000001CB + + thumb_func_start MOD14_021E40B4 +MOD14_021E40B4: ; 0x021E40B4 + push {r4, lr} + add r4, r1, #0 + mov r0, #1 + str r0, [r4, #0x18] + strh r2, [r4, #0x2a] + cmp r2, #0 + beq _021E40C8 + ldrh r0, [r4, #0x2a] + sub r0, r0, #1 + strh r0, [r4, #0x2a] +_021E40C8: + ldr r0, [sp, #8] + sub r2, r0, r3 + bpl _021E40D4 + mov r0, #0 + mvn r0, r0 + mul r2, r0 +_021E40D4: + add r1, r2, #0 + mov r0, #6 + mul r1, r0 + ldr r2, _021E40FC ; =0x021E6680 + lsl r0, r3, #1 + ldrh r0, [r2, r0] + strh r1, [r4, #0x28] + lsl r0, r0, #0xc + str r0, [r4, #0x1c] + ldr r0, [sp, #8] + lsl r0, r0, #1 + ldrh r0, [r2, r0] + lsl r2, r0, #0xc + str r2, [r4, #0x20] + ldr r0, [r4, #0x1c] + sub r0, r2, r0 + bl _s32_div_f + str r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 +_021E40FC: .word 0x021E6680 + + thumb_func_start MOD14_021E4100 +MOD14_021E4100: ; 0x021E4100 + push {r4, r5, r6, lr} + sub sp, #0x10 + mov r0, #0x73 + add r4, r1, #0 + lsl r0, r0, #2 + ldrb r3, [r4, r0] + ldr r2, [r4] + cmp r3, #0 + beq _021E411E + cmp r3, #1 + beq _021E4180 + cmp r3, #2 + beq _021E4198 + add sp, #0x10 + pop {r4, r5, r6, pc} +_021E411E: + sub r1, r0, #2 + ldrb r1, [r4, r1] + mov r6, #0x2c + add r3, r1, #1 + sub r1, r0, #2 + strb r3, [r4, r1] + sub r0, r0, #2 + ldrb r3, [r4, r0] + mov r1, #6 + mov r0, #7 + sub r5, r1, r3 + sub r0, r0, r3 + str r0, [sp] + add r0, r5, #1 + mul r1, r0 + str r1, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + lsl r1, r5, #2 + add r1, r2, r1 + str r3, [sp, #0xc] + add r2, r4, #0 + ldr r1, [r1, #0x54] + add r2, #8 + mul r6, r5 + add r0, r4, #0 + add r2, r2, r6 + bl MOD14_021E4038 + ldr r0, _021E41B0 ; =0x000001CD + mov r1, #4 + strb r1, [r4, r0] + sub r1, r0, #3 + ldrb r1, [r4, r1] + cmp r1, #6 + blo _021E4170 + mov r1, #2 + sub r0, r0, #1 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4170: + ldrb r1, [r4, r0] + cmp r1, #0 + beq _021E41AC + mov r1, #1 + sub r0, r0, #1 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4180: + add r1, r0, #1 + ldrb r1, [r4, r1] + sub r2, r1, #2 + add r1, r0, #1 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021E41AC + mov r1, #0 + add sp, #0x10 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_021E4198: + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _021E41AC + add r1, r3, #1 + strb r1, [r4, r0] + ldr r1, _021E41B4 ; =MOD14_021E41B8 + add r0, r4, #0 + bl MOD14_021DDF30 +_021E41AC: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E41B0: .word 0x000001CD +_021E41B4: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E41B8 +MOD14_021E41B8: ; 0x021E41B8 + ldr r3, _021E41BC ; =MOD14_021E3798 + bx r3 + .align 2, 0 +_021E41BC: .word MOD14_021E3798 + + thumb_func_start MOD14_021E41C0 +MOD14_021E41C0: ; 0x021E41C0 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4208 + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E41EA: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E41EA + ldr r1, _021E420C ; =MOD14_021E4100 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4208 + add r0, r5, #0 + bl FUN_02016A18 +_021E4208: + pop {r3, r4, r5, pc} + nop +_021E420C: .word MOD14_021E4100 + + thumb_func_start MOD14_021E4210 +MOD14_021E4210: ; 0x021E4210 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + mov r2, #0x73 + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + ldr r7, [r1] + cmp r3, #0 + beq _021E422E + cmp r3, #1 + bne _021E422A + b _021E43C6 +_021E422A: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021E422E: + ldr r1, [r7, #4] + mov r0, #0xa0 + ldrsh r0, [r1, r0] + cmp r0, #0 + ble _021E4252 + add r0, r7, #0 + add r0, #0x80 + ldr r0, [r0] + add r4, r0, #5 + cmp r4, #0xa + blt _021E4246 + sub r4, #0xa +_021E4246: + mov r5, #0 + mov r0, #7 + mvn r5, r5 + mov r6, #6 + str r0, [sp, #0x24] + b _021E4260 +_021E4252: + add r0, r7, #0 + add r0, #0x80 + ldr r4, [r0] + mov r5, #1 + mov r0, #0 + add r6, r5, #0 + str r0, [sp, #0x24] +_021E4260: + ldr r1, [r7, #0x7c] + mov r0, #0 + str r0, [sp, #0x34] + cmp r1, #0 + ble _021E42C2 + str r0, [sp, #0x28] + ldr r0, [sp, #0x10] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] +_021E4274: + ldr r0, [sp, #0x24] + add r3, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + add r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x38] + add r2, r2, r3 + add r3, r6, #0 + bl MOD14_021E4038 + add r4, r4, r5 + add r6, r6, r5 + cmp r4, #0xa + blt _021E42AA + mov r4, #0 + b _021E42B0 +_021E42AA: + cmp r4, #0 + bge _021E42B0 + mov r4, #9 +_021E42B0: + ldr r0, [sp, #0x28] + ldr r1, [r7, #0x7c] + add r0, r0, #6 + str r0, [sp, #0x28] + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, r1 + blt _021E4274 +_021E42C2: + mov r0, #6 + sub r0, r0, r1 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x30] + cmp r0, #0 + ble _021E4328 + ldr r0, [sp, #0x10] + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] +_021E42DA: + ldr r0, [r7, #0x7c] + add r1, r5, #0 + mul r1, r0 + sub r1, r6, r1 + str r1, [sp] + mov r1, #6 + mul r1, r0 + str r1, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r3, r4, #0 + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x3c] + add r2, r2, r3 + add r3, r6, #0 + bl MOD14_021E4038 + add r4, r4, r5 + add r6, r6, r5 + cmp r4, #0xa + blt _021E4316 + mov r4, #0 + b _021E431C +_021E4316: + cmp r4, #0 + bge _021E431C + mov r4, #9 +_021E431C: + ldr r0, [sp, #0x14] + add r1, r0, #1 + ldr r0, [sp, #0x30] + str r1, [sp, #0x14] + cmp r1, r0 + blt _021E42DA +_021E4328: + ldr r1, [r7, #4] + mov r0, #0xa0 + ldrsh r0, [r1, r0] + cmp r0, #0 + ble _021E433E + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [r7, #0x7c] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + b _021E434C +_021E433E: + mov r0, #7 + str r0, [sp, #0x1c] + ldr r0, [r7, #0x7c] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x20] + sub r0, r1, r0 + str r0, [sp, #0x18] +_021E434C: + ldr r0, [sp, #0x20] + mov r6, #0 + cmp r0, #0 + ble _021E43B4 + ldr r0, [sp, #0x10] + str r6, [sp, #0x2c] + str r0, [sp, #0x40] + add r0, #8 + str r0, [sp, #0x40] +_021E435E: + ldr r0, [sp, #0x18] + add r3, r4, #0 + str r0, [sp] + ldr r0, [r7, #0x7c] + sub r1, r0, r6 + mov r0, #6 + mul r0, r1 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + add r0, r0, #6 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r0, #0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + ldr r1, [r2, r1] + mov r2, #0x2c + mul r3, r2 + ldr r2, [sp, #0x40] + add r2, r2, r3 + ldr r3, [sp, #0x1c] + bl MOD14_021E4038 + ldr r0, [sp, #0x18] + add r4, r4, r5 + add r0, r0, r5 + str r0, [sp, #0x18] + cmp r4, #0xa + blt _021E43A0 + sub r4, #0xa + b _021E43A6 +_021E43A0: + cmp r4, #0 + bge _021E43A6 + add r4, #0xa +_021E43A6: + ldr r0, [sp, #0x2c] + add r6, r6, #1 + add r0, r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + cmp r6, r0 + blt _021E435E +_021E43B4: + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x44 + strb r2, [r0, r1] + pop {r4, r5, r6, r7, pc} +_021E43C6: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E43DE + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E43E4 ; =MOD14_021E41B8 + add r2, r7, #0 + bl MOD14_021DDF30 +_021E43DE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021E43E4: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E43E8 +MOD14_021E43E8: ; 0x021E43E8 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4436 + add r0, r4, #0 + mov r1, #0x73 + lsl r1, r1, #2 + str r4, [r5] + add r0, #0x54 + str r0, [r5, #4] + mov r0, #0 + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E4418: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #0xa + blt _021E4418 + ldr r1, _021E4438 ; =MOD14_021E4210 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4436 + add r0, r5, #0 + bl FUN_02016A18 +_021E4436: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4438: .word MOD14_021E4210 + + thumb_func_start MOD14_021E443C +MOD14_021E443C: ; 0x021E443C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r0, [r1] + mov r2, #0x73 + str r0, [sp, #0x18] + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + cmp r3, #0 + beq _021E445A + cmp r3, #1 + beq _021E44BE + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021E445A: + ldr r0, [sp, #0x18] + mov r5, #0 + add r0, #0x80 + ldr r4, [r0] + add r0, r1, #0 + str r0, [sp, #0x1c] + add r0, #8 + mov r7, #6 + str r5, [sp, #0x14] + mov r6, #0x24 + str r0, [sp, #0x1c] +_021E4470: + str r7, [sp] + str r6, [sp, #4] + ldr r1, [sp, #0x18] + lsl r2, r4, #2 + add r1, r1, r2 + str r5, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x1c] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + mov r3, #0 + bl MOD14_021E4038 + add r4, r4, #1 + sub r6, r6, #6 + sub r7, r7, #1 + cmp r4, #8 + blt _021E44A0 + mov r4, #0 +_021E44A0: + ldr r0, [sp, #0x14] + add r5, r5, #6 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #6 + blt _021E4470 + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x20 + strb r2, [r0, r1] + pop {r3, r4, r5, r6, r7, pc} +_021E44BE: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E44D6 + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E44DC ; =MOD14_021E41B8 + ldr r2, [sp, #0x18] + bl MOD14_021DDF30 +_021E44D6: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E44DC: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E44E0 +MOD14_021E44E0: ; 0x021E44E0 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E4528 + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E450A: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E450A + ldr r1, _021E452C ; =MOD14_021E443C + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E4528 + add r0, r5, #0 + bl FUN_02016A18 +_021E4528: + pop {r3, r4, r5, pc} + nop +_021E452C: .word MOD14_021E443C + + thumb_func_start MOD14_021E4530 +MOD14_021E4530: ; 0x021E4530 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + ldr r0, [r1] + mov r2, #0x73 + str r0, [sp, #0x34] + lsl r2, r2, #2 + add r0, r1, #0 + ldrb r3, [r0, r2] + str r1, [sp, #0x10] + cmp r3, #0 + beq _021E4550 + cmp r3, #1 + bne _021E454C + b _021E46C2 +_021E454C: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021E4550: + ldr r0, [sp, #0x34] + ldr r0, [r0, #4] + bl MOD14_021DC46C + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r0, #0x80 + ldr r4, [r0] + ldr r0, [sp, #0x30] + cmp r0, #0 + bge _021E4580 + add r4, r4, #5 + cmp r4, #8 + blt _021E456E + sub r4, #8 +_021E456E: + ldr r0, [sp, #0x30] + mov r5, #0 + neg r0, r0 + str r0, [sp, #0x28] + mov r0, #0 + mvn r5, r5 + mov r6, #1 + str r0, [sp, #0x18] + b _021E458A +_021E4580: + str r0, [sp, #0x28] + mov r0, #7 + mov r5, #1 + mov r6, #6 + str r0, [sp, #0x18] +_021E458A: + ldr r0, [sp, #0x28] + mov r7, #0 + add r0, r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + cmp r0, #0 + ble _021E45EC + ldr r0, [sp, #0x10] + str r7, [sp, #0x1c] + str r0, [sp, #0x38] + add r0, #8 + str r0, [sp, #0x38] +_021E45A2: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x34] + str r0, [sp] + ldr r0, [sp, #0x1c] + lsl r2, r4, #2 + add r0, r0, #6 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + add r1, r1, r2 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x38] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + add r3, r6, #0 + bl MOD14_021E4038 + sub r6, r6, r5 + add r4, r4, r5 + bpl _021E45D8 + add r4, #8 + b _021E45DE +_021E45D8: + cmp r4, #8 + blt _021E45DE + sub r4, #8 +_021E45DE: + ldr r0, [sp, #0x1c] + add r7, r7, #1 + add r0, r0, #6 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + cmp r7, r0 + blt _021E45A2 +_021E45EC: + mov r0, #0 + str r0, [sp, #0x24] + cmp r7, #8 + bge _021E4658 + ldr r0, [sp, #0x28] + mov r1, #6 + mul r1, r0 + ldr r0, [sp, #0x10] + str r1, [sp, #0x20] + str r0, [sp, #0x3c] + add r0, #8 + str r0, [sp, #0x3c] +_021E4604: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x34] + sub r0, r0, r5 + str r0, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x20] + lsl r2, r4, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x24] + add r1, r1, r2 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r2, #0x2c + add r3, r4, #0 + mul r3, r2 + ldr r2, [sp, #0x3c] + ldr r0, [sp, #0x10] + add r2, r2, r3 + ldr r1, [r1, #0x34] + add r3, r6, #0 + bl MOD14_021E4038 + cmp r6, #0 + beq _021E463E + cmp r6, #7 + beq _021E463E + sub r6, r6, r5 + b _021E4644 +_021E463E: + ldr r0, [sp, #0x24] + add r0, r0, #6 + str r0, [sp, #0x24] +_021E4644: + add r4, r4, r5 + bpl _021E464C + add r4, #8 + b _021E4652 +_021E464C: + cmp r4, #8 + blt _021E4652 + sub r4, #8 +_021E4652: + add r7, r7, #1 + cmp r7, #8 + blt _021E4604 +_021E4658: + ldr r0, [sp, #0x30] + cmp r0, #0 + bge _021E466C + mov r0, #7 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + sub r1, r0, #2 + ldr r0, [sp, #0x14] + sub r6, r0, r1 + b _021E4674 +_021E466C: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + sub r6, r0, #2 +_021E4674: + ldr r0, [sp, #0x2c] + cmp r7, r0 + bge _021E46B0 + ldr r0, [sp, #0x10] + str r0, [sp, #0x40] + add r0, #8 + str r0, [sp, #0x40] +_021E4682: + mov r1, #0x2c + add r2, r4, #0 + mul r2, r1 + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x10] + add r1, r1, r2 + ldr r3, [sp, #0x14] + mov r2, #6 + str r6, [sp] + bl MOD14_021E40B4 + sub r6, r6, r5 + add r4, r4, r5 + bpl _021E46A2 + add r4, #8 + b _021E46A8 +_021E46A2: + cmp r4, #8 + blt _021E46A8 + sub r4, #8 +_021E46A8: + ldr r0, [sp, #0x2c] + add r7, r7, #1 + cmp r7, r0 + blt _021E4682 +_021E46B0: + mov r1, #0x73 + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldrb r0, [r0, r1] + add r2, r0, #1 + ldr r0, [sp, #0x10] + add sp, #0x44 + strb r2, [r0, r1] + pop {r4, r5, r6, r7, pc} +_021E46C2: + ldr r0, [sp, #0x10] + sub r1, r2, #1 + ldrb r0, [r0, r1] + cmp r0, #0 + bne _021E46DA + ldr r0, [sp, #0x10] + add r1, r3, #1 + strb r1, [r0, r2] + ldr r1, _021E46E0 ; =MOD14_021E41B8 + ldr r2, [sp, #0x34] + bl MOD14_021DDF30 +_021E46DA: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021E46E0: .word MOD14_021E41B8 + + thumb_func_start MOD14_021E46E4 +MOD14_021E46E4: ; 0x021E46E4 + push {r3, r4, r5, lr} + mov r1, #0x1d + add r4, r0, #0 + mov r0, #0xa + lsl r1, r1, #4 + bl FUN_02016998 + add r5, r0, #0 + beq _021E472C + mov r1, #0x73 + mov r0, #0 + lsl r1, r1, #2 + str r4, [r5] + strb r0, [r5, r1] + sub r2, r1, #2 + strb r0, [r5, r2] + sub r1, r1, #1 + strb r0, [r5, r1] + mov r1, #7 + add r3, r0, #0 + lsl r1, r1, #6 +_021E470E: + add r2, r5, r0 + add r0, r0, #1 + strb r3, [r2, r1] + cmp r0, #8 + blt _021E470E + ldr r1, _021E4730 ; =MOD14_021E4530 + add r0, r4, #0 + add r2, r5, #0 + bl MOD14_021E3784 + cmp r0, #0 + bne _021E472C + add r0, r5, #0 + bl FUN_02016A18 +_021E472C: + pop {r3, r4, r5, pc} + nop +_021E4730: .word MOD14_021E4530 + + thumb_func_start MOD14_021E4734 +MOD14_021E4734: ; 0x021E4734 + push {r4, r5, r6, lr} + add r5, r0, #0 + beq _021E4762 + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021E4762 + ldr r0, [r5, #4] + bl MOD14_021DC484 + add r6, r0, #0 + mov r4, #0 +_021E474A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD14_021E3DF8 + add r1, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_02020130 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E474A +_021E4762: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4764 +MOD14_021E4764: ; 0x021E4764 + ldr r3, _021E476C ; =0x0201797D + mov r0, #4 + mov r1, #0 + bx r3 + .align 2, 0 +_021E476C: .word 0x0201797D + + thumb_func_start MOD14_021E4770 +MOD14_021E4770: ; 0x021E4770 + push {r3, lr} + mov r0, #2 + str r0, [sp] + ldr r0, _021E478C ; =0x04001050 + mov r1, #1 + mov r2, #0x3f + mov r3, #0xe + bl G2x_SetBlendAlpha_ + mov r0, #4 + mov r1, #1 + bl FUN_0201797C + pop {r3, pc} + .align 2, 0 +_021E478C: .word 0x04001050 + + thumb_func_start MOD14_021E4790 +MOD14_021E4790: ; 0x021E4790 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [r6, #4] + bl MOD14_021DC474 + add r4, r0, #3 + cmp r4, #0x12 + blt _021E47A4 + sub r4, #0x12 +_021E47A4: + mov r0, #0 + add r7, r6, #0 + ldr r5, _021E4820 ; =0x021E6690 + str r0, [sp, #0x10] + add r7, #0x88 +_021E47AE: + ldr r0, [r6, #4] + add r2, r6, #0 + add r2, #0x84 + ldr r0, [r0] + ldr r2, [r2] + add r1, r4, #0 + bl FUN_0206B484 + mov r0, #0x68 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldrh r2, [r5] + ldrh r3, [r5, #2] + add r0, r7, #0 + mov r1, #0 + bl FUN_020196F4 + mov r0, #2 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r6, #0 + add r0, r0, #2 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E4824 ; =0x00010200 + add r3, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrsh r3, [r5, r3] + add r2, #0x84 + ldr r2, [r2] + add r0, r7, #0 + add r3, r3, #4 + bl FUN_0201BDE0 + sub r4, r4, #1 + bpl _021E4800 + mov r4, #0x11 +_021E4800: + ldr r0, [sp, #0x10] + add r5, r5, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #6 + blo _021E47AE + add r0, r6, #0 + add r0, #0x88 + bl FUN_02019548 + add r0, r6, #0 + bl MOD14_021E4770 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E4820: .word 0x021E6690 +_021E4824: .word 0x00010200 + + thumb_func_start MOD14_021E4828 +MOD14_021E4828: ; 0x021E4828 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0xa + mov r1, #0x3c + add r6, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021E487C + str r5, [r4, #4] + ldr r0, [sp] + str r6, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x18] + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD14_021DDD50 + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD14_021DDD6C + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x34] + add r0, r6, #0 + bl MOD14_021DC3C4 + cmp r0, #3 + bne _021E486C + mov r0, #1 + b _021E486E +_021E486C: + mov r0, #0 +_021E486E: + str r0, [r4] + add r0, r4, #0 + bl MOD14_021E4890 + str r4, [r7] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E487C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E4880 +MOD14_021E4880: ; 0x021E4880 + push {r4, lr} + add r4, r0, #0 + bl MOD14_021E495C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD14_021E4890 +MOD14_021E4890: ; 0x021E4890 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _021E4940 + ldr r4, [r6, #0x14] + ldr r0, [r6, #4] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r4, #0x20] + add r1, sp, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r3, [r4, #0x1c] + add r0, sp, #0x34 + bl MOD14_021DDDB4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0206E640 + add r1, r0, #0 + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + mov r2, #0 + add r3, sp, #0xc + bl FUN_02006BB0 + str r0, [sp, #8] + cmp r0, #0 + beq _021E4950 + mov r0, #1 + lsl r0, r0, #0x1a + ldr r1, [r0] + ldr r0, _021E4954 ; =0x00300010 + ldr r4, _021E4958 ; =0x021E68E8 + and r1, r0 + ldr r0, [sp, #0xc] + mov r7, #0 + str r1, [r0, #8] + add r5, r6, #0 +_021E48EA: + add r0, sp, #0x10 + bl FUN_020B1A24 + ldr r0, [sp, #0xc] + ldr r1, [r4] + mov r2, #1 + add r3, sp, #0x10 + bl FUN_020B1768 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r2, #0 + ldr r0, [r6, #0x10] + add r1, sp, #0x34 + add r3, r2, #0 + bl MOD14_021DDDD4 + str r0, [r5, #0x1c] + ldr r1, [r4, #4] + bl FUN_02020248 + ldr r0, [r5, #0x1c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x1c] + mov r1, #1 + bl FUN_020200EC + mov r0, #0 + str r0, [r5, #0x28] + add r7, r7, #1 + add r4, #8 + add r5, r5, #4 + cmp r7, #3 + blt _021E48EA + ldr r0, [sp, #8] + bl FUN_02016A18 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} +_021E4940: + mov r1, #0 + add r0, r1, #0 +_021E4944: + str r0, [r6, #0x1c] + str r0, [r6, #0x28] + add r1, r1, #1 + add r6, r6, #4 + cmp r1, #3 + blt _021E4944 +_021E4950: + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4954: .word 0x00300010 +_021E4958: .word 0x021E68E8 + + thumb_func_start MOD14_021E495C +MOD14_021E495C: ; 0x021E495C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E4962: + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E496C + bl FUN_0201FFC8 +_021E496C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E4962 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4978 +MOD14_021E4978: ; 0x021E4978 + push {r3, r4} + mov r3, #0 + add r4, r0, #0 +_021E497E: + ldr r2, [r4, #0x28] + cmp r2, #0 + bne _021E4990 + lsl r2, r3, #2 + add r0, r0, r2 + str r1, [r0, #0x28] + add r0, r3, #0 + pop {r3, r4} + bx lr +_021E4990: + add r3, r3, #1 + add r4, r4, #4 + cmp r3, #3 + blt _021E497E + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr + + thumb_func_start MOD14_021E49A0 +MOD14_021E49A0: ; 0x021E49A0 + mov r3, #0 +_021E49A2: + ldr r2, [r0, #0x28] + cmp r1, r2 + bne _021E49AC + add r0, r3, #0 + bx lr +_021E49AC: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, #3 + blt _021E49A2 + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E49BC +MOD14_021E49BC: ; 0x021E49BC + lsl r1, r1, #2 + add r0, r0, r1 + str r2, [r0, #0x28] + bx lr + + thumb_func_start MOD14_021E49C4 +MOD14_021E49C4: ; 0x021E49C4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E49D8 + bl MOD14_021E49DC + add r0, r4, #0 + bl MOD14_021E4A14 +_021E49D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E49DC +MOD14_021E49DC: ; 0x021E49DC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC430 + add r4, r0, #0 + beq _021E4A12 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E4978 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD14_021E4B58 + add r5, #0x1c + lsl r4, r6, #2 + ldr r0, [r5, r4] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4A12: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4A14 +MOD14_021E4A14: ; 0x021E4A14 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC538 + add r7, r0, #0 + beq _021E4AC8 + add r0, r5, #0 + mov r1, #3 + bl MOD14_021E4978 + add r6, r0, #0 + ldr r0, [r5, #0x18] + add r1, sp, #0x10 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #8] + bl MOD14_021DC3CC + cmp r0, #1 + bne _021E4A50 + mov r0, #1 + str r0, [sp, #0xc] + b _021E4A54 +_021E4A50: + mov r0, #2 + str r0, [sp, #0xc] +_021E4A54: + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + lsl r4, r6, #3 + bl FUN_0206E640 + mov r2, #0 + ldr r3, _021E4ACC ; =0x021E68E8 + str r2, [sp] + add r1, r0, #0 + str r2, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r3, [r3, r4] + mov r0, #0x10 + bl FUN_02006A34 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + ldr r3, _021E4AD0 ; =0x021E68EC + add r1, r0, #0 + mov r0, #0x20 + ldr r3, [r3, r4] + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r1, [sp, #0xc] + add r5, #0x1c + lsl r4, r6, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r4] + lsr r1, r1, #0x18 + bl FUN_02020238 + ldr r0, [r5, r4] + mov r1, #2 + bl MOD14_021DDE24 + ldr r0, [r5, r4] + add r1, sp, #0x10 + bl FUN_02020044 + ldr r0, [r5, r4] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4AC8: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4ACC: .word 0x021E68E8 +_021E4AD0: .word 0x021E68EC + + thumb_func_start MOD14_021E4AD4 +MOD14_021E4AD4: ; 0x021E4AD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r5, #8] + add r7, r2, #0 + bl MOD14_021DC3CC + cmp r0, #1 + ldr r0, [r5, #4] + bne _021E4B1E + bl MOD14_021DDD60 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3E8 + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #4 + add r3, sp, #0 + bl MOD14_021E3170 + ldr r0, [sp, #4] + add r0, #0xa + lsl r0, r0, #0xc + str r0, [r4] + ldr r0, [sp] + add sp, #8 + add r0, #8 + lsl r0, r0, #0xc + str r0, [r4, #4] + mov r0, #1 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_021E4B1E: + bl MOD14_021DDD98 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3D0 + mov r1, #0x18 + add r6, #0x70 + mul r1, r0 + add r0, r6, r1 + add r0, #0xa + str r0, [r4] + ldr r0, [r5, #8] + bl MOD14_021DC3D8 + mov r1, #0x18 + mul r1, r0 + add r1, #0x30 + str r1, [r4, #4] + ldr r0, [r4] + lsl r0, r0, #0xc + str r0, [r4] + ldr r0, [r4, #4] + lsl r0, r0, #0xc + str r0, [r4, #4] + mov r0, #2 + str r0, [r7] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E4B58 +MOD14_021E4B58: ; 0x021E4B58 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + add r7, r2, #0 + cmp r4, #0 + blt _021E4BD2 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD14_021E4AD4 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #1 + lsl r6, r4, #3 + bl FUN_0206E640 + mov r2, #0 + ldr r3, _021E4BD8 ; =0x021E68E8 + str r2, [sp] + add r1, r0, #0 + str r2, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + ldr r3, [r3, r6] + mov r0, #0x10 + bl FUN_02006A34 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + mov r1, #2 + bl FUN_0206E640 + ldr r3, _021E4BDC ; =0x021E68EC + add r1, r0, #0 + mov r0, #0x20 + ldr r3, [r3, r6] + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x10 + mov r2, #1 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r1, [sp, #0xc] + add r5, #0x1c + lsl r4, r4, #2 + lsl r1, r1, #0x18 + ldr r0, [r5, r4] + lsr r1, r1, #0x18 + bl FUN_02020238 + ldr r0, [r5, r4] + mov r1, #3 + bl MOD14_021DDE24 + ldr r0, [r5, r4] + add r1, sp, #0x10 + bl FUN_02020044 +_021E4BD2: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E4BD8: .word 0x021E68E8 +_021E4BDC: .word 0x021E68EC + + thumb_func_start MOD14_021E4BE0 +MOD14_021E4BE0: ; 0x021E4BE0 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4C3E + mov r1, #1 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4C0A + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 +_021E4C0A: + ldr r0, [r5, #8] + bl MOD14_021DC430 + add r6, r0, #0 + beq _021E4C3E + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E4978 + add r4, r0, #0 + bmi _021E4C3E + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD14_021E4B58 + add r5, #0x1c + lsl r4, r4, #2 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_020200A0 +_021E4C3E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E4C40 +MOD14_021E4C40: ; 0x021E4C40 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + bne _021E4C4E + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4C4E: + mov r1, #1 + bl MOD14_021E49A0 + cmp r0, #0 + blt _021E4C6A + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4C6A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C6A: + add r0, r5, #0 + mov r1, #2 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4C92 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4C88 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C88: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021E49BC +_021E4C92: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4C98 +MOD14_021E4C98: ; 0x021E4C98 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0xa + mov r1, #0x34 + add r6, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _021E4D1A + lsl r0, r7, #2 + str r5, [r4] + add r0, r5, r0 + ldr r0, [r0, #0x1c] + str r0, [r4, #4] + bl FUN_0202011C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r2, r4, #0 + ldmia r6!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r6] + ldr r6, [sp, #0x18] + str r0, [r2] + ldr r1, [r4, #0x14] + ldr r0, [r4, #8] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x20] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0xc] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x24] + ldr r0, [sp, #0x18] + mov r2, #0 + str r0, [r4, #0x2c] + ldr r0, [sp] + add r1, r4, #0 + str r0, [r4, #0x28] + ldr r0, _021E4D1C ; =MOD14_021E4D20 + str r2, [r4, #0x30] + bl MOD14_021DDD40 + cmp r0, #0 + beq _021E4D14 + ldr r0, [r5, #0x34] + add r0, r0, #1 + str r0, [r5, #0x34] + pop {r3, r4, r5, r6, r7, pc} +_021E4D14: + add r0, r4, #0 + bl FUN_02016A18 +_021E4D1A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4D1C: .word MOD14_021E4D20 + + thumb_func_start MOD14_021E4D20 +MOD14_021E4D20: ; 0x021E4D20 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021E4D32 + cmp r0, #1 + beq _021E4D68 + pop {r3, r4, r5, pc} +_021E4D32: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021E4D58 + ldr r2, [r4, #8] + ldr r0, [r4, #0x20] + add r1, #8 + add r0, r2, r0 + str r0, [r4, #8] + ldr r2, [r4, #0xc] + ldr r0, [r4, #0x24] + add r0, r2, r0 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + bl FUN_02020044 + ldr r0, [r4, #0x2c] + sub r0, r0, #1 + str r0, [r4, #0x2c] + pop {r3, r4, r5, pc} +_021E4D58: + ldr r0, [r4, #4] + add r1, #0x14 + bl FUN_02020044 + ldr r0, [r4, #0x30] + add r0, r0, #1 + str r0, [r4, #0x30] + pop {r3, r4, r5, pc} +_021E4D68: + ldr r0, [r4, #4] + bl FUN_02020388 + cmp r0, #0 + bne _021E4D92 + ldr r0, [r4, #4] + ldr r1, [r4, #0x28] + bl MOD14_021DDE24 + ldr r1, [r4] + ldr r0, [r1, #0x34] + sub r0, r0, #1 + str r0, [r1, #0x34] + add r0, r5, #0 + bl FUN_0200CAB4 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl MOD14_021DDF30 +_021E4D92: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4D94 +MOD14_021E4D94: ; 0x021E4D94 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4DE2 + mov r1, #1 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4DE2 + ldr r0, [r5, #0x18] + add r1, sp, #4 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #3 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #3 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #4 + mov r3, #2 + bl MOD14_021E4C98 +_021E4DE2: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4DE8 +MOD14_021E4DE8: ; 0x021E4DE8 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4DF2 + mov r0, #1 + bx lr +_021E4DF2: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4DF8 +MOD14_021E4DF8: ; 0x021E4DF8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E4E22 + mov r1, #1 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4E22 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD14_021E49BC + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 +_021E4E22: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4E24 +MOD14_021E4E24: ; 0x021E4E24 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4E54 + mov r1, #2 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4E54 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4E4A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4E4A: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD14_021E49BC +_021E4E54: + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4E58 +MOD14_021E4E58: ; 0x021E4E58 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4E9E + mov r1, #3 + bl MOD14_021E49A0 + add r4, r0, #0 + bmi _021E4E9E + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD14_021E4AD4 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #4 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + mov r3, #3 + bl MOD14_021E4C98 +_021E4E9E: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4EA4 +MOD14_021E4EA4: ; 0x021E4EA4 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4EAE + mov r0, #1 + bx lr +_021E4EAE: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4EB4 +MOD14_021E4EB4: ; 0x021E4EB4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E4F42 + mov r1, #3 + bl MOD14_021E49A0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E49A0 + add r6, r0, #0 + cmp r4, #0 + blt _021E4F42 + cmp r6, #0 + blt _021E4F42 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD14_021E4AD4 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD14_021E49BC + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #4 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #8 + mov r3, #3 + bl MOD14_021E4C98 + ldr r0, [r5, #0x18] + add r1, sp, #8 + bl MOD14_021E0038 + mov r0, #2 + ldr r1, [sp, #0xc] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #3 + bl MOD14_021E49BC + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + mov r1, #3 + bl FUN_02020130 + mov r0, #0xc + str r0, [sp] + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #8 + mov r3, #2 + bl MOD14_021E4C98 +_021E4F42: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4F48 +MOD14_021E4F48: ; 0x021E4F48 + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _021E4F52 + mov r0, #1 + bx lr +_021E4F52: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E4F58 +MOD14_021E4F58: ; 0x021E4F58 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021E4F9E + mov r1, #3 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4F7C + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #5 + bl FUN_02020130 + str r5, [r4, #0x38] + pop {r3, r4, r5, pc} +_021E4F7C: + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E49A0 + add r5, r0, #0 + bmi _021E4F98 + lsl r0, r5, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + mov r1, #2 + bl FUN_02020130 + str r5, [r4, #0x38] + pop {r3, r4, r5, pc} +_021E4F98: + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x38] +_021E4F9E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E4FA0 +MOD14_021E4FA0: ; 0x021E4FA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E4FD6 + mov r0, #0 + ldr r1, [r4, #0x38] + mvn r0, r0 + cmp r1, r0 + beq _021E4FD6 + lsl r0, r1, #2 + add r0, r4, r0 + ldr r0, [r0, #0x1c] + bl FUN_02020388 + cmp r0, #0 + beq _021E4FC6 + mov r0, #0 + pop {r4, pc} +_021E4FC6: + ldr r1, [r4, #0x38] + add r0, r4, #0 + mov r2, #0 + bl MOD14_021E49BC + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x38] +_021E4FD6: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E4FDC +MOD14_021E4FDC: ; 0x021E4FDC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E5016 + mov r1, #3 + bl MOD14_021E49A0 + add r6, r0, #0 + bmi _021E5016 + ldmia r4!, {r0, r1} + add r3, sp, #0 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #4] + lsl r0, r6, #2 + add r0, r5, r0 + ldr r0, [r0, #0x1c] + add r1, r2, #0 + bl FUN_02020044 +_021E5016: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E501C +MOD14_021E501C: ; 0x021E501C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5] + cmp r1, #0 + beq _021E5040 + mov r1, #3 + bl MOD14_021E49A0 + cmp r0, #0 + blt _021E5040 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r1, r4, #0x18 + ldr r0, [r0, #0x1c] + lsr r1, r1, #0x18 + bl FUN_02020238 +_021E5040: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5044 +MOD14_021E5044: ; 0x021E5044 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + add r5, r0, #0 + add r0, r7, #0 + add r6, r1, #0 + str r3, [sp, #4] + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E5064 + mov r0, #0 + str r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5064: + mov r1, #0xe1 + mov r0, #0xa + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + beq _021E50E6 + str r6, [r4, #4] + ldr r0, [sp, #4] + str r7, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + add r0, r6, #0 + bl MOD14_021DDD50 + mov r3, #0xda + str r0, [r4, #0x14] + mov r0, #0xa + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0x12 + mov r1, #7 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BDC + mov r3, #0x37 + lsl r3, r3, #4 + str r0, [r4, r3] + mov r0, #0xa + sub r3, r3, #4 + str r0, [sp] + mov r0, #0x12 + mov r1, #8 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BDC + mov r1, #0xdd + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x24] + mov r2, #0x93 + str r0, [r4, #0x6c] + mov r0, #1 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #0xa + bl FUN_0200A86C + str r0, [r4, #0x70] + mov r0, #0x20 + mov r1, #0xa + bl FUN_020219F4 + str r0, [r4, #0x74] + mov r0, #0xe + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] + add sp, #8 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E50E6: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E50EC +MOD14_021E50EC: ; 0x021E50EC + push {r4, lr} + add r4, r0, #0 + beq _021E5124 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xdd + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, [r4, #0x70] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD14_021E5C04 + add r0, r4, #0 + bl MOD14_021E5474 + ldr r0, [r4, #0x74] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02016A18 +_021E5124: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5128 +MOD14_021E5128: ; 0x021E5128 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + beq _021E5210 + bl MOD14_021E5334 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6c + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x69 + mov r3, #5 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6a + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r2, [r4, #0xc] + mov r0, #0x12 + mov r1, #0x6b + mov r3, #7 + bl FUN_020068C8 + mov r0, #0x80 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x6d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + bl FUN_0206B888 + mov r3, #0x80 + add r1, r0, #0 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #5 + bl FUN_02006930 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xa + bl FUN_02017F18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #4 + add r3, r2, #0 + bl FUN_02018540 + add r0, r4, #0 + bl MOD14_021E539C + add r0, r4, #0 + bl MOD14_021E5400 + ldr r0, [r4, #8] + bl MOD14_021DC560 + mov r1, #0xde + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD14_021E5A08 +_021E5210: + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD14_021E5214 +MOD14_021E5214: ; 0x021E5214 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + cmp r5, #0 + beq _021E5268 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + cmp r6, #0 + beq _021E5248 + mov r0, #1 + eor r0, r4 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #2 + bl FUN_02020130 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #0 + bl FUN_02020130 + b _021E5262 +_021E5248: + mov r1, #1 + eor r0, r1 + lsl r0, r0, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + bl FUN_02020130 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #0x28] + mov r1, #0 + bl FUN_02020130 +_021E5262: + add r0, r5, #0 + bl MOD14_021E5334 +_021E5268: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E526C +MOD14_021E526C: ; 0x021E526C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD14_021E5C68 + cmp r5, #0 + beq _021E52B8 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E5CFC + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E529C + cmp r0, #1 + beq _021E52A6 + cmp r0, #2 + beq _021E52B0 + pop {r3, r4, r5, pc} +_021E529C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E57E4 + pop {r3, r4, r5, pc} +_021E52A6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E55B0 + pop {r3, r4, r5, pc} +_021E52B0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD14_021E5908 +_021E52B8: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E52BC +MOD14_021E52BC: ; 0x021E52BC + mov r0, #1 + bx lr + + thumb_func_start MOD14_021E52C0 +MOD14_021E52C0: ; 0x021E52C0 + push {r4, lr} + add r4, r0, #0 + beq _021E52DE + mov r1, #0xdf + mov r2, #0 + lsl r1, r1, #2 + str r2, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl MOD14_021E5504 + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 +_021E52DE: + pop {r4, pc} + + thumb_func_start MOD14_021E52E0 +MOD14_021E52E0: ; 0x021E52E0 + push {r4, lr} + add r4, r0, #0 + beq _021E5330 + mov r1, #0xdf + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + beq _021E52FA + cmp r1, #1 + beq _021E530A + cmp r1, #2 + beq _021E5328 + b _021E532C +_021E52FA: + bl MOD14_021E539C + mov r0, #0xdf + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021E532C +_021E530A: + bl MOD14_021E5718 + add r0, r4, #0 + bl MOD14_021E549C + ldr r0, [r4, #0xc] + mov r1, #4 + bl FUN_02017CD0 + mov r0, #0xdf + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021E532C +_021E5328: + mov r0, #1 + pop {r4, pc} +_021E532C: + mov r0, #0 + pop {r4, pc} +_021E5330: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD14_021E5334 +MOD14_021E5334: ; 0x021E5334 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + cmp r0, #0 + bne _021E5348 + mov r0, #0xda + b _021E534A +_021E5348: + mov r0, #0xdb +_021E534A: + lsl r0, r0, #2 + ldr r4, [r5, r0] + mov r0, #6 + str r0, [sp] + mov r1, #0x20 + add r0, r4, #0 + mov r2, #0 + str r1, [sp, #4] + add r0, #0xc + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018170 + mov r0, #6 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r4, #0xc + str r4, [sp, #8] + mov r2, #0x1a + str r2, [sp, #0xc] + mov r3, #0 + str r3, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02018170 + ldr r0, [r5, #0xc] + mov r1, #2 + bl FUN_02017CD0 + add sp, #0x1c + pop {r4, r5, pc} + + thumb_func_start MOD14_021E539C +MOD14_021E539C: ; 0x021E539C + push {r3, lr} + ldr r0, [r0, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E53B2 + cmp r0, #1 + beq _021E53CC + cmp r0, #2 + beq _021E53E6 + pop {r3, pc} +_021E53B2: + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} +_021E53CC: + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} +_021E53E6: + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + pop {r3, pc} + + thumb_func_start MOD14_021E5400 +MOD14_021E5400: ; 0x021E5400 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r1, #0 + add r2, r7, #0 + add r5, r1, #0 +_021E540A: + add r0, r2, #0 + add r0, #0x84 + add r1, r1, #1 + add r2, #0x10 + str r5, [r0] + cmp r1, #7 + blt _021E540A + add r4, r7, #0 + ldr r6, _021E5470 ; =0x021E6940 + add r4, #0x78 +_021E541E: + ldr r0, [r7, #0xc] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02019150 + add r0, r4, #0 + bl FUN_02019270 + add r5, r5, #1 + add r6, #8 + add r4, #0x10 + cmp r5, #3 + blo _021E541E + add r0, r7, #0 + bl MOD14_021E5718 + add r0, r7, #0 + add r0, #0x78 + mov r1, #0 + bl FUN_02019620 + add r0, r7, #0 + add r0, #0x88 + mov r1, #0 + bl FUN_02019620 + add r4, r7, #0 + mov r5, #0 + add r4, #0x78 +_021E5458: + add r0, r4, #0 + bl FUN_02019548 + add r5, r5, #1 + add r4, #0x10 + cmp r5, #3 + blo _021E5458 + add r0, r7, #0 + bl MOD14_021E549C + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5470: .word 0x021E6940 + + thumb_func_start MOD14_021E5474 +MOD14_021E5474: ; 0x021E5474 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r5, #0 + mov r6, #0 + add r4, #0x78 +_021E547E: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E548E + add r0, r4, #0 + bl FUN_02019178 +_021E548E: + add r6, r6, #1 + add r5, #0x10 + add r4, #0x10 + cmp r6, #7 + blt _021E547E + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E549C +MOD14_021E549C: ; 0x021E549C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC560 + add r4, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E54BC + cmp r0, #1 + beq _021E54D4 + cmp r0, #2 + beq _021E54E6 + b _021E54FC +_021E54BC: + add r0, r5, #0 + bl MOD14_021E5540 + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E57E4 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E57E4 + b _021E54FC +_021E54D4: + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E55B0 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E55B0 + b _021E54FC +_021E54E6: + add r0, r5, #0 + bl MOD14_021E56A8 + add r0, r5, #0 + mov r1, #0 + bl MOD14_021E5908 + add r0, r5, #0 + mov r1, #1 + bl MOD14_021E5908 +_021E54FC: + mov r0, #0xde + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5504 +MOD14_021E5504: ; 0x021E5504 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _021E5516 + cmp r1, #1 + beq _021E5522 + cmp r1, #2 + beq _021E5532 + pop {r4, pc} +_021E5516: + bl MOD14_021E5578 + add r0, r4, #0 + bl MOD14_021E57CC + pop {r4, pc} +_021E5522: + mov r1, #0 + bl MOD14_021E5688 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E5688 + pop {r4, pc} +_021E5532: + bl MOD14_021E56E0 + add r0, r4, #0 + bl MOD14_021E57CC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5540 +MOD14_021E5540: ; 0x021E5540 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, _021E5574 ; =0x021E6930 + str r0, [sp] + mov r6, #0 + add r5, #0x78 +_021E554C: + add r0, r6, #3 + lsl r4, r0, #4 + ldr r0, [sp] + add r1, r5, r4 + ldr r0, [r0, #0xc] + add r2, r7, #0 + bl FUN_02019150 + add r0, r5, r4 + bl FUN_02019270 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r7, #8 + cmp r6, #2 + blo _021E554C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5574: .word 0x021E6930 + + thumb_func_start MOD14_021E5578 +MOD14_021E5578: ; 0x021E5578 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x78 + add r5, r0, #0 + mov r6, #3 + add r4, #0x30 + add r5, #0x30 + mov r7, #0 +_021E5588: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E55A4 + add r0, r5, #0 + bl FUN_020192B8 + add r0, r5, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + str r7, [r0] +_021E55A4: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #4 + ble _021E5588 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E55B0 +MOD14_021E55B0: ; 0x021E55B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + ldr r0, [r7, #8] + str r1, [sp] + bl MOD14_021DC568 + add r4, r0, #0 + ldr r0, [r7, #8] + bl MOD14_021DC3F0 + add r6, r0, #0 + ldr r0, [r7, #8] + bl MOD14_021DC558 + ldr r1, [sp] + cmp r1, r0 + bne _021E55D8 + mov r5, #1 + b _021E55DA +_021E55D8: + mov r5, #0 +_021E55DA: + ldr r0, [r7, #8] + ldr r1, [sp] + bl MOD14_021DC574 + cmp r6, #1 + bne _021E55EA + cmp r5, #1 + beq _021E55F2 +_021E55EA: + cmp r5, #0 + bne _021E5676 + cmp r0, #1 + bne _021E5676 +_021E55F2: + ldrb r0, [r4, #6] + cmp r0, #0 + bne _021E5676 + ldr r1, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x14 + add r2, r1, #0 + mul r2, r0 + add r5, r7, r2 + mov r2, #1 + eor r1, r2 + mul r0, r1 + ldr r6, _021E5684 ; =0x021E6958 + add r4, #0x16 + add r7, r7, r0 +_021E5614: + ldr r3, [r6] + ldr r0, [r6, #8] + ldrh r2, [r4] + sub r1, r0, r3 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + mul r0, r2 + add r0, r3, r0 + str r0, [sp, #8] + ldr r3, [r6, #4] + ldr r0, [r6, #0xc] + ldrh r2, [r4] + sub r1, r0, r3 + asr r0, r1, #7 + lsr r0, r0, #0x18 + add r0, r1, r0 + asr r0, r0, #8 + mul r0, r2 + add r0, r3, r0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x34] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD14_021DDE24 + ldr r0, [r7, #0x34] + mov r1, #1 + bl MOD14_021DDE24 + ldr r0, [r5, #0x34] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #4] + add r4, r4, #2 + add r0, r0, #1 + add r6, #0x10 + add r5, r5, #4 + add r7, r7, #4 + str r0, [sp, #4] + cmp r0, #5 + blt _021E5614 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5676: + ldr r1, [sp] + add r0, r7, #0 + bl MOD14_021E5688 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E5684: .word 0x021E6958 + + thumb_func_start MOD14_021E5688 +MOD14_021E5688: ; 0x021E5688 + push {r4, r5, r6, lr} + mov r2, #0x14 + mov r4, #0 + mul r2, r1 + add r5, r0, r2 + add r6, r4, #0 +_021E5694: + ldr r0, [r5, #0x34] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E5694 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD14_021E56A8 +MOD14_021E56A8: ; 0x021E56A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r7, _021E56DC ; =0x021E6920 + str r0, [sp] + mov r6, #0 + add r5, #0x78 +_021E56B4: + add r0, r6, #5 + lsl r4, r0, #4 + ldr r0, [sp] + add r1, r5, r4 + ldr r0, [r0, #0xc] + add r2, r7, #0 + bl FUN_02019150 + add r0, r5, r4 + bl FUN_02019270 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r7, #8 + cmp r6, #2 + blo _021E56B4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E56DC: .word 0x021E6920 + + thumb_func_start MOD14_021E56E0 +MOD14_021E56E0: ; 0x021E56E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r0, #0x78 + add r5, r0, #0 + mov r6, #5 + add r4, #0x50 + add r5, #0x50 + mov r7, #0 +_021E56F0: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _021E570C + add r0, r5, #0 + bl FUN_020192B8 + add r0, r5, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x84 + str r7, [r0] +_021E570C: + add r6, r6, #1 + add r4, #0x10 + add r5, #0x10 + cmp r6, #6 + ble _021E56F0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5718 +MOD14_021E5718: ; 0x021E5718 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r5, #0 + add r7, #0x98 + add r0, r7, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #8] + bl MOD14_021DC560 + cmp r0, #0 + beq _021E573A + cmp r0, #2 + beq _021E5786 + b _021E57B8 +_021E573A: + mov r0, #0 + ldr r6, _021E57C4 ; =0x021E6910 + str r0, [sp, #0x10] + add r4, r0, #0 +_021E5742: + ldrh r1, [r6] + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r7, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E57C8 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r7, #0 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, r0, #1 + add r4, #0x10 + str r0, [sp, #0x10] + cmp r0, #8 + blo _021E5742 + b _021E57B8 +_021E5786: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2b + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r7, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E57C8 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r7, #0 + bl FUN_0201BDE0 +_021E57B8: + add r0, r7, #0 + bl FUN_02019548 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E57C4: .word 0x021E6910 +_021E57C8: .word 0x000F0E00 + + thumb_func_start MOD14_021E57CC +MOD14_021E57CC: ; 0x021E57CC + push {r4, lr} + add r4, r0, #0 + add r4, #0x98 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD14_021E57E4 +MOD14_021E57E4: ; 0x021E57E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r0, r1, #0 + add r2, r5, #0 + add r0, r0, #3 + add r2, #0x78 + lsl r0, r0, #4 + add r4, r2, r0 + ldr r0, [r5, #8] + str r1, [sp, #0x10] + bl MOD14_021DC568 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + str r0, [sp, #0x18] + ldr r0, [r5, #8] + bl MOD14_021DC558 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021E5818 + mov r7, #1 + b _021E581A +_021E5818: + mov r7, #0 +_021E581A: + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + bl MOD14_021DC574 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E5836 + cmp r7, #1 + beq _021E5840 +_021E5836: + cmp r7, #0 + bne _021E58FA + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _021E58FA +_021E5840: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _021E58BA + mov r0, #0 + ldr r1, [r6, #0x2c] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r6, #0x2c] + add r0, r4, #0 + bl FUN_0201BDE0 + mov r7, #0 + add r6, #8 +_021E5872: + mov r0, #1 + str r0, [sp] + ldrh r1, [r6] + ldr r0, [r5, #0x74] + mov r2, #3 + mov r3, #0 + bl FUN_02021B04 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + add r0, r7, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, r6, #2 + cmp r7, #7 + blt _021E5872 + b _021E58FA +_021E58BA: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2c + bl FUN_0200A8E0 + mov r7, #0 + add r6, r7, #0 +_021E58C8: + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5904 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, #0x10 + cmp r7, #8 + blt _021E58C8 +_021E58FA: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E5904: .word 0x000F0E00 + + thumb_func_start MOD14_021E5908 +MOD14_021E5908: ; 0x021E5908 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r0, r1, #0 + add r2, r5, #0 + add r0, r0, #5 + add r2, #0x78 + lsl r0, r0, #4 + add r4, r2, r0 + ldr r0, [r5, #8] + str r1, [sp, #0x10] + bl MOD14_021DC568 + add r6, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + str r0, [sp, #0x1c] + ldr r0, [r5, #8] + bl MOD14_021DC558 + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021E593C + mov r7, #1 + b _021E593E +_021E593C: + mov r7, #0 +_021E593E: + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + bl MOD14_021DC574 + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _021E595A + cmp r7, #1 + beq _021E5964 +_021E595A: + cmp r7, #0 + bne _021E59F8 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E59F8 +_021E5964: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _021E59B8 + mov r0, #0 + str r0, [sp, #0x14] + mov r7, #4 +_021E5970: + ldrh r1, [r6, #0x20] + cmp r1, #0 + beq _021E59A8 + ldr r0, [r5, #0x70] + ldr r2, [r5, #0x74] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5A04 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 +_021E59A8: + ldr r0, [sp, #0x14] + add r6, r6, #2 + add r0, r0, #1 + add r7, #0x18 + str r0, [sp, #0x14] + cmp r0, #4 + blt _021E5970 + b _021E59F8 +_021E59B8: + ldr r0, [r5, #0x6c] + ldr r2, [r5, #0x74] + mov r1, #0x2c + bl FUN_0200A8E0 + mov r7, #0 + mov r6, #4 +_021E59C6: + mov r0, #0 + ldr r1, [r5, #0x74] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + lsr r3, r0, #1 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5A04 ; =0x000F0E00 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r5, #0x74] + add r0, r4, #0 + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, #0x18 + cmp r7, #4 + blt _021E59C6 +_021E59F8: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5A04: .word 0x000F0E00 + + thumb_func_start MOD14_021E5A08 +MOD14_021E5A08: ; 0x021E5A08 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r7, r0, #0 + mov r0, #0xa + add r3, r7, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x6f + mov r2, #1 + add r3, #0x60 + bl FUN_02006C30 + str r0, [r7, #0x5c] + mov r0, #0xa + add r3, r7, #0 + str r0, [sp] + mov r0, #0x12 + mov r1, #0x70 + mov r2, #1 + add r3, #0x68 + bl FUN_02006C5C + str r0, [r7, #0x64] + mov r0, #0x60 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #0x12 + mov r1, #0x71 + mov r2, #5 + mov r3, #0 + bl FUN_02006930 + add r0, sp, #0x48 + bl FUN_020B1A24 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + add r0, sp, #0x48 + str r0, [sp, #0x10] + mov r0, #0x12 + mov r1, #0x6e + mov r2, #1 + bl FUN_02006AE4 + str r0, [sp, #0x20] + ldr r0, [r7, #4] + bl MOD14_021DDD48 + add r2, r0, #0 + ldr r0, [r7, #0x68] + add r1, sp, #0x48 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r3, [r7, #0x60] + add r0, sp, #0x24 + bl MOD14_021DDDB4 + ldr r0, _021E5B5C ; =0x021E6900 + mov r4, #0 + str r0, [sp, #0x1c] + str r7, [sp, #0x18] + str r7, [sp, #0x14] +_021E5A92: + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [sp, #0x1c] + mov r3, #0 + ldrsh r2, [r2, r3] + ldr r3, [sp, #0x1c] + mov r5, #2 + ldrsh r3, [r3, r5] + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + bl MOD14_021DDDD4 + ldr r1, [sp, #0x18] + str r0, [r1, #0x28] + add r1, r4, #0 + bl FUN_02020248 + ldr r0, [sp, #0x18] + mov r1, #0 + ldr r0, [r0, #0x28] + bl FUN_02020130 + ldr r5, [sp, #0x14] + mov r6, #0 +_021E5AC6: + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r2, #0 + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + add r3, r2, #0 + bl MOD14_021DDDD4 + str r0, [r5, #0x34] + add r1, r4, #5 + bl FUN_02020130 + ldr r0, [r5, #0x34] + add r1, r4, #0 + bl FUN_02020248 + ldr r0, [r5, #0x34] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #5 + blo _021E5AC6 + ldr r0, [sp, #0x1c] + add r4, r4, #1 + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x14 + str r0, [sp, #0x14] + cmp r4, #2 + blo _021E5A92 + ldr r0, [r7, #0x2c] + mov r1, #1 + bl FUN_02020100 + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r3, #0x23 + ldr r0, [r7, #0x10] + add r1, sp, #0x24 + mov r2, #0x80 + lsl r3, r3, #4 + bl MOD14_021DDDD4 + str r0, [r7, #0x30] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r7, #0x30] + mov r1, #2 + bl FUN_02020248 + ldr r0, _021E5B60 ; =MOD14_021E5D64 + add r1, r7, #0 + mov r2, #1 + bl FUN_0200CA44 + mov r1, #0xe + lsl r1, r1, #6 + str r0, [r7, r1] + ldr r1, [sp, #0x20] + add r0, r7, #0 + bl MOD14_021E5B64 + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E5B5C: .word 0x021E6900 +_021E5B60: .word MOD14_021E5D64 + + thumb_func_start MOD14_021E5B64 +MOD14_021E5B64: ; 0x021E5B64 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp, #8] + ldr r0, [r0, #4] + str r1, [sp, #0xc] + bl MOD14_021DDD48 + add r5, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x14] + bl MOD14_021E0C74 + add r4, r0, #0 + ldr r0, [sp, #8] + ldr r0, [r0, #0x14] + bl MOD14_021E0C78 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x10 + add r1, sp, #0x34 + add r2, r5, #0 + add r3, r4, #0 + bl MOD14_021DDDB4 + mov r7, #0 + ldr r4, [sp, #8] + ldr r5, _021E5BF8 ; =0x021E6908 + add r6, r7, #0 +_021E5BA0: + ldr r0, [sp, #0xc] + add r0, r0, r6 + str r0, [r4, #0x18] + add r0, sp, #0x34 + bl FUN_020B1A24 + ldr r2, [r4, #0x18] + add r0, sp, #0x34 + mov r1, #2 + bl FUN_020B1A1C + ldr r0, _021E5BFC ; =0x04001000 + mov r2, #0 + ldr r1, [r0] + ldr r0, _021E5C00 ; =0x00300010 + mov r3, #2 + and r0, r1 + str r0, [sp, #0x54] + mov r0, #1 + sub r0, r0, r7 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + ldr r0, [r0, #0x10] + add r1, sp, #0x10 + bl MOD14_021DDDD4 + mov r1, #0 + str r0, [r4, #0x20] + bl FUN_020200A0 + mov r0, #2 + lsl r0, r0, #8 + add r7, r7, #1 + add r6, r6, r0 + add r4, r4, #4 + add r5, r5, #4 + cmp r7, #2 + blt _021E5BA0 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5BF8: .word 0x021E6908 +_021E5BFC: .word 0x04001000 +_021E5C00: .word 0x00300010 + + thumb_func_start MOD14_021E5C04 +MOD14_021E5C04: ; 0x021E5C04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r1, #0xe + lsl r1, r1, #6 + str r0, [sp] + ldr r0, [r0, r1] + cmp r0, #0 + beq _021E5C18 + bl FUN_0200CAB4 +_021E5C18: + ldr r6, [sp] + mov r0, #0 + str r0, [sp, #4] + add r7, r6, #0 +_021E5C20: + ldr r0, [r6, #0x20] + bl FUN_0201FFC8 + ldr r0, [r6, #0x28] + bl FUN_0201FFC8 + mov r4, #0 + add r5, r7, #0 +_021E5C30: + ldr r0, [r5, #0x34] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E5C30 + ldr r0, [sp, #4] + add r6, r6, #4 + add r0, r0, #1 + add r7, #0x14 + str r0, [sp, #4] + cmp r0, #2 + blt _021E5C20 + ldr r0, [sp] + ldr r0, [r0, #0x30] + bl FUN_0201FFC8 + ldr r0, [sp] + ldr r0, [r0, #0x5c] + bl FUN_02016A18 + ldr r0, [sp] + ldr r0, [r0, #0x64] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5C68 +MOD14_021E5C68: ; 0x021E5C68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r4, r0, #0 + ldr r0, [r5, #8] + add r1, r4, #0 + bl MOD14_021DC568 + lsl r7, r4, #2 + add r6, r0, #0 + add r0, r5, r7 + ldr r4, [r0, #0x20] + ldr r0, [r6] + str r0, [sp] + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5CF0 + ldrh r0, [r6, #4] + ldrb r1, [r6, #7] + ldrb r2, [r6, #6] + bl FUN_0206B7BC + add r6, r0, #0 + ldr r0, [sp] + bl FUN_0206B688 + add r2, r0, #0 + add r1, r5, #0 + mov r3, #0xa + ldr r0, [r5, #0x14] + add r1, #0xe8 + lsl r3, r3, #6 + bl MOD14_021E0BAC + add r0, r5, #0 + add r0, #0xe8 + add r1, sp, #4 + bl FUN_020B0088 + ldr r0, [sp, #4] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #4] + add r1, r5, r7 + mov r2, #2 + ldr r0, [r0, #0x14] + ldr r1, [r1, #0x18] + lsl r2, r2, #8 + bl GXS_LoadOBJ + add r0, r4, #0 + add r1, r6, #4 + bl FUN_02020248 + add r0, r4, #0 + mov r1, #1 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021E5CF0: + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD14_021E5CFC +MOD14_021E5CFC: ; 0x021E5CFC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #8] + bl MOD14_021DC558 + add r6, r0, #0 + add r1, r5, #0 + add r1, #0x78 + lsl r0, r6, #4 + add r4, r1, r0 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [r5, #8] + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5D56 + ldr r0, [r5, #8] + add r1, r6, #0 + bl MOD14_021DC568 + add r5, r0, #0 + mov r0, #0 + ldr r1, [r5, #0x28] + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r4, #7] + lsl r1, r1, #3 + sub r0, r1, r0 + mov r1, #0 + lsr r3, r0, #1 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021E5D60 ; =0x000F0E00 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x28] + add r0, r4, #0 + bl FUN_0201BDE0 +_021E5D56: + add r0, r4, #0 + bl FUN_02019548 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E5D60: .word 0x000F0E00 + + thumb_func_start MOD14_021E5D64 +MOD14_021E5D64: ; 0x021E5D64 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #8] + bl MOD14_021DC57C + add r4, r0, #0 + ldr r0, [r5, #0x30] + bl FUN_020201DC + cmp r0, #3 + bne _021E5D88 + cmp r4, #0 + beq _021E5D94 + ldr r0, [r5, #0x30] + mov r1, #4 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021E5D88: + cmp r4, #0 + bne _021E5D94 + ldr r0, [r5, #0x30] + mov r1, #3 + bl FUN_02020130 +_021E5D94: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5D98 +MOD14_021E5D98: ; 0x021E5D98 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r4, #0x74 + add r0, r4, #0 + add r5, r1, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #0x36 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x37 + bl MOD14_021E613C + add r0, r4, #0 + add r0, #0x20 + strb r5, [r0] + mov r0, #0 + add r4, #0x23 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5DC4 +MOD14_021E5DC4: ; 0x021E5DC4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #1 + add r0, #0x23 + strb r1, [r0] + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + bhi _021E5DFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E5DF0: ; jump table + .short _021E5E70 - _021E5DF0 - 2 ; case 0 + .short _021E5E9A - _021E5DF0 - 2 ; case 1 + .short _021E5DFA - _021E5DF0 - 2 ; case 2 + .short _021E5DFA - _021E5DF0 - 2 ; case 3 + .short _021E5EC4 - _021E5DF0 - 2 ; case 4 +_021E5DFA: + add r0, r5, #0 + bl MOD14_021DC3F4 + cmp r0, #2 + bne _021E5E1C + add r0, r5, #0 + bl MOD14_021DC3F0 + cmp r0, #0 + beq _021E5E12 + mov r1, #0x24 + b _021E5E14 +_021E5E12: + mov r1, #0x23 +_021E5E14: + add r0, r4, #0 + bl MOD14_021E613C + b _021E5E24 +_021E5E1C: + add r0, r4, #0 + mov r1, #0x22 + bl MOD14_021E613C +_021E5E24: + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC42C + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _021E5E40 + add r0, r4, #0 + mov r1, #0x28 + bl MOD14_021E613C +_021E5E40: + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E5E4E + mov r1, #0x26 + b _021E5E50 +_021E5E4E: + mov r1, #0x27 +_021E5E50: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5E70: + add r0, r4, #0 + mov r1, #0x27 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5E9A: + add r0, r4, #0 + mov r1, #0x26 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x25 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} +_021E5EC4: + add r0, r5, #0 + bl MOD14_021DC558 + cmp r0, #0 + bne _021E5ED2 + mov r1, #0x34 + b _021E5ED4 +_021E5ED2: + mov r1, #0x35 +_021E5ED4: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC3CC + cmp r0, #0 + bne _021E5EE8 + mov r1, #0x26 + b _021E5EEA +_021E5EE8: + mov r1, #0x27 +_021E5EEA: + add r0, r4, #0 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x29 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2b + bl MOD14_021E613C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E5F04 +MOD14_021E5F04: ; 0x021E5F04 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r5, r4, #0 + add r5, #0x74 + bl MOD14_021DC538 + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021DC430 + add r4, r0, #0 + add r0, r5, #0 + bl MOD14_021E612C + add r0, r5, #0 + mov r1, #1 + add r0, #0x23 + strb r1, [r0] + cmp r6, #0 + beq _021E5F54 + cmp r4, #0 + beq _021E5F3A + add r0, r5, #0 + mov r1, #0x31 + bl MOD14_021E613C + b _021E5F42 +_021E5F3A: + add r0, r5, #0 + mov r1, #0x2e + bl MOD14_021E613C +_021E5F42: + add r0, r5, #0 + mov r1, #0x32 + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x30 + bl MOD14_021E613C + b _021E5F7A +_021E5F54: + cmp r4, #0 + beq _021E5F72 + add r0, r5, #0 + mov r1, #0x2f + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x32 + bl MOD14_021E613C + add r0, r5, #0 + mov r1, #0x30 + bl MOD14_021E613C + b _021E5F7A +_021E5F72: + add r0, r5, #0 + mov r1, #0x2e + bl MOD14_021E613C +_021E5F7A: + add r0, r5, #0 + mov r1, #0x33 + bl MOD14_021E613C + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E5F84 +MOD14_021E5F84: ; 0x021E5F84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + bl MOD14_021DC44C + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #0 + bl MOD14_021E613C + add r0, r5, #0 + bl MOD14_021DC3C4 + cmp r0, #4 + beq _021E5FB8 + add r0, r4, #0 + mov r1, #1 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #2 + bl MOD14_021E613C +_021E5FB8: + add r0, r4, #0 + mov r1, #3 + bl MOD14_021E613C + mov r0, #2 + add r4, #0x23 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD14_021E5FC8 +MOD14_021E5FC8: ; 0x021E5FC8 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r4, #0x74 + add r5, r1, #0 + bl MOD14_021DC44C + add r6, r0, #0 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #4 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #5 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #6 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #7 + bl MOD14_021E613C + add r0, r6, #0 + bl FUN_0206B668 + add r6, r0, #0 + beq _021E600E + add r0, r4, #0 + mov r1, #8 + bl MOD14_021E613C +_021E600E: + cmp r6, #4 + bls _021E601A + add r0, r4, #0 + mov r1, #9 + bl MOD14_021E613C +_021E601A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x23 + strb r1, [r0] + cmp r5, #4 + blt _021E6032 + cmp r5, #9 + bgt _021E6032 + sub r0, r5, #4 + add r4, #0x20 + strb r0, [r4] + pop {r4, r5, r6, pc} +_021E6032: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD14_021E6038 +MOD14_021E6038: ; 0x021E6038 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r6, #0x74 + add r5, r1, #0 + bl MOD14_021DC44C + str r0, [sp] + add r0, r6, #0 + bl MOD14_021E612C + cmp r5, #4 + blt _021E6070 + cmp r5, #7 + bgt _021E6070 + sub r0, r5, #4 + ldr r1, _021E60B0 ; =0x021E69A8 + lsl r0, r0, #3 + mov r5, #0 + add r4, r1, r0 +_021E605E: + ldrh r1, [r4] + add r0, r6, #0 + bl MOD14_021E613C + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #4 + blt _021E605E + b _021E60A6 +_021E6070: + mov r4, #0 + add r7, r4, #0 + cmp r5, #9 + bne _021E607A + mov r4, #4 +_021E607A: + mov r5, #0 +_021E607C: + ldr r0, [sp] + add r1, r5, #0 + bl FUN_0206B644 + cmp r0, #0 + beq _021E60A0 + cmp r4, #0 + beq _021E6090 + sub r4, r4, #1 + b _021E60A0 +_021E6090: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x1a + bl MOD14_021E613C + add r7, r7, #1 + cmp r7, #4 + bge _021E60A6 +_021E60A0: + add r5, r5, #1 + cmp r5, #8 + blt _021E607C +_021E60A6: + mov r0, #3 + add r6, #0x23 + strb r0, [r6] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E60B0: .word 0x021E69A8 + + thumb_func_start MOD14_021E60B4 +MOD14_021E60B4: ; 0x021E60B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r5, #0 + add r4, #0x74 + add r0, r4, #0 + bl MOD14_021E612C + add r0, r4, #0 + mov r1, #4 + add r0, #0x23 + strb r1, [r0] + add r5, #0x57 + add r0, r4, #0 + ldrb r1, [r5] + add r0, #0x22 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x38 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x39 + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3a + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3b + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3c + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x3d + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2c + bl MOD14_021E613C + add r0, r4, #0 + mov r1, #0x2d + bl MOD14_021E613C + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD14_021E6118 +MOD14_021E6118: ; 0x021E6118 + add r2, r0, #0 + add r2, #0x96 + ldrb r3, [r2] + mov r2, #1 + lsl r2, r1 + add r1, r3, #0 + eor r1, r2 + add r0, #0x96 + strb r1, [r0] + bx lr + + thumb_func_start MOD14_021E612C +MOD14_021E612C: ; 0x021E612C + add r1, r0, #0 + mov r2, #0 + add r1, #0x21 + strb r2, [r1] + add r0, #0x20 + strb r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E613C +MOD14_021E613C: ; 0x021E613C + push {r3, r4} + add r2, r0, #0 + add r2, #0x21 + ldrb r4, [r2] + cmp r4, #8 + bhs _021E615A + add r2, r0, #0 + add r2, #0x21 + ldrb r2, [r2] + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x21 + strb r3, [r2] + lsl r2, r4, #2 + str r1, [r0, r2] +_021E615A: + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E6160 +MOD14_021E6160: ; 0x021E6160 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _021E6208 ; =0x021C48B8 + add r4, #0x74 + ldr r1, [r0, #0x48] + mov r0, #0x40 + add r2, r1, #0 + tst r2, r0 + beq _021E61A0 + add r2, r4, #0 + add r2, #0x20 + ldrb r2, [r2] + cmp r2, #0 + beq _021E618C + add r1, r4, #0 + add r1, #0x20 + ldrb r1, [r1] + add r4, #0x20 + sub r0, #0x42 + sub r1, r1, #1 + strb r1, [r4] + pop {r3, r4, r5, pc} +_021E618C: + add r2, r4, #0 + add r2, #0x21 + ldrb r2, [r2] + cmp r2, #3 + blo _021E61A0 + sub r1, r2, #1 + add r4, #0x20 + strb r1, [r4] + sub r0, #0x42 + pop {r3, r4, r5, pc} +_021E61A0: + mov r0, #0x80 + add r2, r1, #0 + tst r2, r0 + beq _021E61D8 + add r2, r4, #0 + add r2, #0x21 + ldrb r5, [r2] + add r2, r4, #0 + add r2, #0x20 + ldrb r3, [r2] + sub r2, r5, #1 + cmp r3, r2 + bge _021E61CA + add r1, r4, #0 + add r1, #0x20 + ldrb r1, [r1] + add r4, #0x20 + sub r0, #0x82 + add r1, r1, #1 + strb r1, [r4] + pop {r3, r4, r5, pc} +_021E61CA: + cmp r5, #3 + blo _021E61D8 + mov r0, #0 + add r4, #0x20 + strb r0, [r4] + sub r0, r0, #2 + pop {r3, r4, r5, pc} +_021E61D8: + mov r0, #2 + tst r0, r1 + beq _021E61EA + ldr r0, _021E620C ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} +_021E61EA: + mov r0, #1 + tst r1, r0 + beq _021E6202 + ldr r0, _021E620C ; =0x000005DD + bl FUN_020054C8 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r3, r4, r5, pc} +_021E6202: + sub r0, r0, #4 + pop {r3, r4, r5, pc} + nop +_021E6208: .word 0x021C48B8 +_021E620C: .word 0x000005DD + + thumb_func_start MOD14_021E6210 +MOD14_021E6210: ; 0x021E6210 + add r0, #0x74 + add r1, r0, #0 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD14_021E6220 +MOD14_021E6220: ; 0x021E6220 + ldr r0, [r0, #0x74] + bx lr + + .section .data + ; 0x021E6224 + .incbin "baserom.nds", 0x236b44, 0x7dc + + .section .bss + ; 0x021E69FC + .space 0x1A0 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s new file mode 100644 index 00000000..bd9eb99a --- /dev/null +++ b/arm9/modules/15/asm/module_15.s @@ -0,0 +1,8753 @@ + .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD15_021D74E0
+MOD15_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021D74F2
+ cmp r1, #1
+ beq _021D752A
+ b _021D7552
+_021D74F2:
+ mov r1, #0
+ mov r0, #0x3e
+ add r2, r1, #0
+ bl FUN_0200433C
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x22
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r2, #0xa
+ mov r0, #3
+ mov r1, #0x23
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ add r0, r5, #0
+ bl MOD15_021D7628
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ bl MOD15_021D8900
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D7552
+_021D752A:
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7552
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D7548
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D9538
+ b _021D754A
+_021D7548:
+ mov r0, #0
+_021D754A:
+ add r4, #0x64
+ strb r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7552:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7558
+MOD15_021D7558: ; 0x021D7558
+ push {r4, lr}
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, _021D7594 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ strh r1, [r4, #0x30]
+ ldr r1, [r0, #0x44]
+ strh r1, [r4, #0x32]
+ ldr r0, [r0, #0x4c]
+ strh r0, [r4, #0x34]
+ ldr r0, [r4, #0x40]
+ bl FUN_02022144
+ ldr r2, [r4, #0x2c]
+ cmp r2, #0
+ beq _021D7586
+ add r0, r4, #0
+ add r4, #0x28
+ add r1, r4, #0
+ blx r2
+ mov r0, #0
+ pop {r4, pc}
+_021D7586:
+ add r1, r4, #0
+ ldr r2, [r4, #0x20]
+ add r0, r4, #0
+ add r1, #0x1c
+ blx r2
+ pop {r4, pc}
+ nop
+_021D7594: .word 0x021C48B8
+
+ thumb_func_start MOD15_021D7598
+MOD15_021D7598: ; 0x021D7598
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r1, #3
+ bhi _021D7600
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D75AC: ; jump table
+ .short _021D75B4 - _021D75AC - 2 ; case 0
+ .short _021D75D4 - _021D75AC - 2 ; case 1
+ .short _021D75F6 - _021D75AC - 2 ; case 2
+ .short _021D75D4 - _021D75AC - 2 ; case 3
+_021D75B4:
+ str r0, [r4, #0x38]
+ cmp r0, #2
+ beq _021D75C0
+ cmp r0, #3
+ beq _021D75CA
+ pop {r4, pc}
+_021D75C0:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x19
+ bl MOD15_021D8900
+ pop {r4, pc}
+_021D75CA:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1a
+ bl MOD15_021D8900
+ pop {r4, pc}
+_021D75D4:
+ cmp r0, #2
+ beq _021D75DE
+ cmp r0, #3
+ beq _021D75E8
+ b _021D75F0
+_021D75DE:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1b
+ bl MOD15_021D8900
+ b _021D75F0
+_021D75E8:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1c
+ bl MOD15_021D8900
+_021D75F0:
+ mov r0, #4
+ str r0, [r4, #0x38]
+ pop {r4, pc}
+_021D75F6:
+ sub r1, r0, #2
+ cmp r1, #1
+ bhi _021D7604
+ str r0, [r4, #0x38]
+ pop {r4, pc}
+_021D7600:
+ mov r0, #4
+ str r0, [r4, #0x38]
+_021D7604:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7608
+MOD15_021D7608: ; 0x021D7608
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02006278
+ add r1, r4, #0
+ bl MOD15_021D7774
+ mov r0, #0x22
+ bl FUN_020168D0
+ mov r0, #0x23
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7628
+MOD15_021D7628: ; 0x021D7628
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x68
+ mov r2, #0x22
+ bl FUN_02006268
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4]
+ bl FUN_0208540C
+ str r0, [r4, #4]
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r1, #0x10
+ add r2, #8
+ bl FUN_02085428
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D7664
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x60
+ add r1, #8
+ bl MOD15_021D76C4
+_021D7664:
+ ldr r1, [r4]
+ mov r0, #0x22
+ bl FUN_02088F0C
+ str r0, [r4, #0x18]
+ ldr r1, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD15_021D87F8
+ str r0, [r4, #0x14]
+ mov r0, #0x22
+ str r0, [sp]
+ ldr r0, _021D76B4 ; =0x021DB880
+ ldr r2, _021D76B8 ; =MOD15_021D7598
+ mov r1, #5
+ add r3, r4, #0
+ bl FUN_020220C4
+ str r0, [r4, #0x40]
+ mov r1, #0
+ str r1, [r4, #0x44]
+ add r0, r4, #0
+ str r1, [r4, #0x48]
+ add r0, #0x65
+ strb r1, [r0]
+ str r1, [r4, #0x2c]
+ ldr r0, _021D76BC ; =MOD15_021D779C
+ str r1, [r4, #0x28]
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ str r1, [r4, #0x1c]
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r1, _021D76C0 ; =MOD15_021D83BC
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D76B4: .word 0x021DB880
+_021D76B8: .word MOD15_021D7598
+_021D76BC: .word MOD15_021D779C
+_021D76C0: .word MOD15_021D83BC
+
+ thumb_func_start MOD15_021D76C4
+MOD15_021D76C4: ; 0x021D76C4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02013920
+ strh r0, [r5]
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ bl FUN_02013974
+ strb r0, [r5, #3]
+ add r0, r4, #0
+ bl FUN_02013924
+ strb r0, [r5, #2]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D76E8
+MOD15_021D76E8: ; 0x021D76E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #2
+ add r4, r1, #0
+ ldrsb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, #2]
+ ldrsb r1, [r5, r0]
+ mov r0, #3
+ ldrsb r0, [r5, r0]
+ cmp r1, r0
+ blt _021D771C
+ mov r1, #0
+ strb r1, [r5, #2]
+ ldrsh r0, [r5, r1]
+ add r0, r0, #1
+ strh r0, [r5]
+ ldrsh r0, [r5, r1]
+ cmp r0, #5
+ blt _021D7712
+ strh r1, [r5]
+_021D7712:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ bl FUN_02013974
+ strb r0, [r5, #3]
+_021D771C:
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r5, r1]
+ ldrsb r2, [r5, r2]
+ add r0, r4, #0
+ bl FUN_02013980
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D772C
+MOD15_021D772C: ; 0x021D772C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #2
+ add r4, r1, #0
+ ldrsb r1, [r5, r0]
+ sub r1, r1, #1
+ strb r1, [r5, #2]
+ ldrsb r0, [r5, r0]
+ cmp r0, #0
+ bge _021D7764
+ mov r0, #0
+ ldrsh r1, [r5, r0]
+ sub r1, r1, #1
+ strh r1, [r5]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ bge _021D7752
+ mov r0, #4
+ strh r0, [r5]
+_021D7752:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ bl FUN_02013974
+ strb r0, [r5, #3]
+ mov r0, #3
+ ldrsb r0, [r5, r0]
+ sub r0, r0, #1
+ strb r0, [r5, #2]
+_021D7764:
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r5, r1]
+ ldrsb r2, [r5, r2]
+ add r0, r4, #0
+ bl FUN_02013980
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D7774
+MOD15_021D7774: ; 0x021D7774
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ add r4, r1, #0
+ bl FUN_0202212C
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8888
+ ldr r0, [r5, #0x18]
+ bl FUN_02088F4C
+ add r0, r4, #0
+ bl FUN_0200627C
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D7794
+MOD15_021D7794: ; 0x021D7794
+ str r1, [r0, #0x20]
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start MOD15_021D779C
+MOD15_021D779C: ; 0x021D779C
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ lsl r3, r2, #2
+ ldr r2, _021D77AC ; =0x021DB874
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r3, pc}
+ nop
+_021D77AC: .word 0x021DB874
+
+ thumb_func_start MOD15_021D77B0
+MOD15_021D77B0: ; 0x021D77B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D77C6
+ cmp r0, #1
+ beq _021D7850
+ cmp r0, #2
+ beq _021D7864
+ b _021D7876
+_021D77C6:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ bne _021D77D6
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D77EC
+_021D77D6:
+ cmp r1, #1
+ bne _021D77E4
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D77EC
+_021D77E4:
+ ldrh r0, [r5, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D77F6
+_021D77EC:
+ ldr r1, _021D787C ; =MOD15_021D8698
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D7876
+_021D77F6:
+ mov r1, #0x88
+ tst r1, r0
+ beq _021D7818
+ ldr r0, _021D7880 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ b _021D7876
+_021D7818:
+ mov r1, #2
+ tst r1, r0
+ beq _021D782E
+ ldr r0, _021D7880 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D7884 ; =MOD15_021D851C
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D7876
+_021D782E:
+ mov r1, #1
+ tst r0, r1
+ beq _021D7876
+ ldr r0, _021D7880 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #6
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r4]
+ b _021D7876
+_021D7850:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7876
+ ldr r1, _021D7888 ; =MOD15_021D7BC8
+ add r0, r5, #0
+ bl MOD15_021D7794
+ b _021D7876
+_021D7864:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7876
+ ldr r1, _021D788C ; =MOD15_021D7D00
+ add r0, r5, #0
+ bl MOD15_021D7794
+_021D7876:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D787C: .word MOD15_021D8698
+_021D7880: .word 0x000005DC
+_021D7884: .word MOD15_021D851C
+_021D7888: .word MOD15_021D7BC8
+_021D788C: .word MOD15_021D7D00
+
+ thumb_func_start MOD15_021D7890
+MOD15_021D7890: ; 0x021D7890
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D78A6
+ cmp r0, #1
+ beq _021D7980
+ cmp r0, #2
+ beq _021D7994
+ b _021D79A6
+_021D78A6:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ bne _021D78B6
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D78CC
+_021D78B6:
+ cmp r1, #1
+ bne _021D78C4
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D78CC
+_021D78C4:
+ ldrh r0, [r5, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D78D6
+_021D78CC:
+ ldr r1, _021D79AC ; =MOD15_021D8698
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D79A6
+_021D78D6:
+ mov r1, #0x88
+ tst r1, r0
+ beq _021D78F8
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ b _021D79A6
+_021D78F8:
+ mov r1, #0x20
+ tst r1, r0
+ beq _021D7920
+ add r0, r5, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D79A6
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D79A6
+_021D7920:
+ mov r1, #0x10
+ tst r1, r0
+ beq _021D7948
+ add r0, r5, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D79A6
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D79A6
+_021D7948:
+ mov r1, #2
+ tst r1, r0
+ beq _021D795E
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D79B4 ; =MOD15_021D851C
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D79A6
+_021D795E:
+ mov r1, #1
+ tst r0, r1
+ beq _021D79A6
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #6
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r4]
+ b _021D79A6
+_021D7980:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D79A6
+ ldr r1, _021D79B8 ; =MOD15_021D7BC8
+ add r0, r5, #0
+ bl MOD15_021D7794
+ b _021D79A6
+_021D7994:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D79A6
+ ldr r1, _021D79BC ; =MOD15_021D7D00
+ add r0, r5, #0
+ bl MOD15_021D7794
+_021D79A6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D79AC: .word MOD15_021D8698
+_021D79B0: .word 0x000005DC
+_021D79B4: .word MOD15_021D851C
+_021D79B8: .word MOD15_021D7BC8
+_021D79BC: .word MOD15_021D7D00
+
+ thumb_func_start MOD15_021D79C0
+MOD15_021D79C0: ; 0x021D79C0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #4
+ bhi _021D7A3C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D79D8: ; jump table
+ .short _021D79E2 - _021D79D8 - 2 ; case 0
+ .short _021D79F2 - _021D79D8 - 2 ; case 1
+ .short _021D7B76 - _021D79D8 - 2 ; case 2
+ .short _021D7B88 - _021D79D8 - 2 ; case 3
+ .short _021D7B9C - _021D79D8 - 2 ; case 4
+_021D79E2:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D9538
+ add r1, r4, #0
+ add r1, #0x64
+ strb r0, [r1]
+ mov r0, #1
+ str r0, [r5]
+_021D79F2:
+ ldr r1, [r4, #0x38]
+ cmp r1, #0
+ bne _021D7A02
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7A18
+_021D7A02:
+ cmp r1, #1
+ bne _021D7A10
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D7A18
+_021D7A10:
+ ldrh r0, [r4, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D7A22
+_021D7A18:
+ ldr r1, _021D7BB4 ; =MOD15_021D8698
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ b _021D7BAE
+_021D7A22:
+ mov r1, #0x40
+ tst r1, r0
+ beq _021D7A5C
+ add r0, r4, #0
+ add r0, #0x64
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D7A3C
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D7A3E
+_021D7A3C:
+ b _021D7BAE
+_021D7A3E:
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D7BAE
+_021D7A5C:
+ mov r1, #0x80
+ tst r0, r1
+ beq _021D7AAC
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x64
+ ldrb r2, [r0]
+ cmp r2, #0
+ beq _021D7A96
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r1, [r0]
+ sub r0, r2, #1
+ cmp r1, r0
+ bge _021D7A96
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D7AAC
+_021D7A96:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ b _021D7BAE
+_021D7AAC:
+ ldrh r1, [r4, #0x30]
+ mov r0, #8
+ tst r0, r1
+ bne _021D7AC6
+ mov r0, #1
+ add r2, r1, #0
+ and r2, r0
+ beq _021D7AE2
+ add r0, r4, #0
+ add r0, #0x64
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7AE2
+_021D7AC6:
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ b _021D7BAE
+_021D7AE2:
+ ldrh r0, [r4, #0x34]
+ mov r3, #0x20
+ tst r3, r0
+ beq _021D7B12
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x60
+ add r1, #8
+ bl MOD15_021D772C
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ b _021D7BAE
+_021D7B12:
+ mov r3, #0x10
+ tst r0, r3
+ beq _021D7B40
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x60
+ add r1, #8
+ bl MOD15_021D76E8
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ b _021D7BAE
+_021D7B40:
+ mov r0, #2
+ tst r0, r1
+ beq _021D7B56
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D7BBC ; =MOD15_021D851C
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ b _021D7BAE
+_021D7B56:
+ cmp r2, #0
+ beq _021D7BAE
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ bl MOD15_021D8900
+ mov r0, #4
+ str r0, [r5]
+ b _021D7BAE
+_021D7B76:
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D7BAE
+ mov r0, #0
+ str r0, [r5]
+ b _021D7BAE
+_021D7B88:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7BAE
+ ldr r1, _021D7BC0 ; =MOD15_021D7BC8
+ add r0, r4, #0
+ bl MOD15_021D7794
+ b _021D7BAE
+_021D7B9C:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7BAE
+ ldr r1, _021D7BC4 ; =MOD15_021D7D00
+ add r0, r4, #0
+ bl MOD15_021D7794
+_021D7BAE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D7BB4: .word MOD15_021D8698
+_021D7BB8: .word 0x000005DC
+_021D7BBC: .word MOD15_021D851C
+_021D7BC0: .word MOD15_021D7BC8
+_021D7BC4: .word MOD15_021D7D00
+
+ thumb_func_start MOD15_021D7BC8
+MOD15_021D7BC8: ; 0x021D7BC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bls _021D7BD6
+ b _021D7CE8
+_021D7BD6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7BE2: ; jump table
+ .short _021D7BEE - _021D7BE2 - 2 ; case 0
+ .short _021D7CB8 - _021D7BE2 - 2 ; case 1
+ .short _021D7CC4 - _021D7BE2 - 2 ; case 2
+ .short _021D7CD0 - _021D7BE2 - 2 ; case 3
+ .short _021D7CD0 - _021D7BE2 - 2 ; case 4
+ .short _021D7CD6 - _021D7BE2 - 2 ; case 5
+_021D7BEE:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7CE8
+ ldr r1, [r4, #0x38]
+ cmp r1, #0
+ bne _021D7C08
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7C1E
+_021D7C08:
+ cmp r1, #1
+ bne _021D7C16
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D7C1E
+_021D7C16:
+ ldrh r0, [r4, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D7C28
+_021D7C1E:
+ ldr r1, _021D7CEC ; =MOD15_021D8698
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ b _021D7CE8
+_021D7C28:
+ mov r1, #0x30
+ tst r1, r0
+ beq _021D7C4E
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x4c
+ ldrh r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xd
+ bl MOD15_021D8900
+ b _021D7CE8
+_021D7C4E:
+ mov r1, #8
+ tst r1, r0
+ beq _021D7C6C
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xd
+ bl MOD15_021D8900
+ b _021D7CE8
+_021D7C6C:
+ mov r1, #0x40
+ tst r1, r0
+ beq _021D7C86
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #5
+ bl MOD15_021D8900
+ mov r0, #5
+ str r0, [r5]
+ b _021D7CE8
+_021D7C86:
+ mov r1, #1
+ tst r1, r0
+ beq _021D7CA6
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ add r4, #0x4c
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _021D7CA0
+ mov r0, #1
+ str r0, [r5]
+ b _021D7CE8
+_021D7CA0:
+ mov r0, #2
+ str r0, [r5]
+ b _021D7CE8
+_021D7CA6:
+ mov r1, #2
+ tst r0, r1
+ beq _021D7CE8
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #2
+ str r0, [r5]
+ b _021D7CE8
+_021D7CB8:
+ mov r1, #3
+ str r1, [r5]
+ ldr r1, _021D7CF4 ; =MOD15_021D83F0
+ bl MOD15_021D83AC
+ b _021D7CE8
+_021D7CC4:
+ mov r1, #4
+ str r1, [r5]
+ ldr r1, _021D7CF8 ; =MOD15_021D851C
+ bl MOD15_021D83AC
+ b _021D7CE8
+_021D7CD0:
+ mov r0, #0
+ str r0, [r5]
+ b _021D7CE8
+_021D7CD6:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7CE8
+ ldr r1, _021D7CFC ; =MOD15_021D779C
+ add r0, r4, #0
+ bl MOD15_021D7794
+_021D7CE8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7CEC: .word MOD15_021D8698
+_021D7CF0: .word 0x000005DC
+_021D7CF4: .word MOD15_021D83F0
+_021D7CF8: .word MOD15_021D851C
+_021D7CFC: .word MOD15_021D779C
+
+ thumb_func_start MOD15_021D7D00
+MOD15_021D7D00: ; 0x021D7D00
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D7D18
+ cmp r0, #1
+ beq _021D7E0C
+ cmp r0, #2
+ bne _021D7D16
+ b _021D7E20
+_021D7D16:
+ b _021D7E30
+_021D7D18:
+ ldr r0, [r5, #0x14]
+ mov r1, #0xf
+ bl MOD15_021D8970
+ cmp r0, #0
+ bne _021D7D26
+ b _021D7E30
+_021D7D26:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ bne _021D7D36
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7D4C
+_021D7D36:
+ cmp r1, #1
+ bne _021D7D44
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D7D4C
+_021D7D44:
+ ldrh r0, [r5, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D7D78
+_021D7D4C:
+ ldr r0, _021D7E34 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r5, #0
+ add r0, #0x65
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0x18
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r4]
+ b _021D7E30
+_021D7D78:
+ mov r1, #2
+ tst r1, r0
+ beq _021D7D96
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ bl MOD15_021D8900
+ ldr r0, _021D7E3C ; =MOD15_021D779C
+ str r0, [r5, #0x24]
+ mov r0, #1
+ str r0, [r4]
+ b _021D7E30
+_021D7D96:
+ mov r1, #1
+ tst r0, r1
+ beq _021D7DF2
+ add r0, r5, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ cmp r0, #0xfe
+ bne _021D7DBE
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ bl MOD15_021D8900
+ ldr r0, _021D7E3C ; =MOD15_021D779C
+ str r0, [r5, #0x24]
+ mov r0, #1
+ str r0, [r4]
+ b _021D7E30
+_021D7DBE:
+ add r0, r5, #0
+ bl MOD15_021D7E48
+ cmp r0, #0
+ beq _021D7DEA
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0x54
+ add r1, r5, #0
+ bl MOD15_021D7FE4
+ ldr r0, _021D7E40 ; =MOD15_021D8044
+ mov r1, #8
+ str r0, [r5, #0x24]
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ b _021D7E30
+_021D7DEA:
+ ldr r0, _021D7E44 ; =0x000005F2
+ bl FUN_020054C8
+ b _021D7E30
+_021D7DF2:
+ add r0, r5, #0
+ bl MOD15_021D7E80
+ cmp r0, #0
+ beq _021D7E30
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r5, #0x14]
+ mov r1, #0xe
+ bl MOD15_021D8900
+ b _021D7E30
+_021D7E0C:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7E30
+ ldr r1, [r5, #0x24]
+ add r0, r5, #0
+ bl MOD15_021D7794
+ b _021D7E30
+_021D7E20:
+ ldr r0, [r5, #0x14]
+ mov r1, #0x18
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D7E30
+ mov r0, #0
+ str r0, [r4]
+_021D7E30:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7E34: .word 0x000005E4
+_021D7E38: .word 0x000005DC
+_021D7E3C: .word MOD15_021D779C
+_021D7E40: .word MOD15_021D8044
+_021D7E44: .word 0x000005F2
+
+ thumb_func_start MOD15_021D7E48
+MOD15_021D7E48: ; 0x021D7E48
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r1, #0x18]
+ bne _021D7E6A
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_020892C4
+ cmp r0, #0
+ beq _021D7E66
+ mov r0, #1
+ pop {r3, pc}
+_021D7E66:
+ mov r0, #0
+ pop {r3, pc}
+_021D7E6A:
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_02089300
+ cmp r0, #0
+ beq _021D7E7A
+ mov r0, #1
+ pop {r3, pc}
+_021D7E7A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7E80
+MOD15_021D7E80: ; 0x021D7E80
+ push {r3, lr}
+ add r1, r0, #0
+ add r1, #0x65
+ ldrb r1, [r1]
+ lsl r2, r1, #2
+ ldr r1, _021D7E94 ; =0x021DB86C
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_021D7E94: .word 0x021DB86C
+
+ thumb_func_start MOD15_021D7E98
+MOD15_021D7E98: ; 0x021D7E98
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x50
+ ldrh r2, [r0]
+ add r1, r2, #0
+ cmp r2, #0xfe
+ bne _021D7EA8
+ mov r1, #0xc
+_021D7EA8:
+ cmp r2, #0xfe
+ beq _021D7F04
+ add r0, r4, #0
+ add r0, #0x52
+ strh r2, [r0]
+ ldrh r0, [r4, #0x34]
+ mov r2, #0x40
+ tst r2, r0
+ beq _021D7EC8
+ ldr r0, _021D7F40 ; =0x021DB894
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7EC8:
+ mov r2, #0x80
+ tst r2, r0
+ beq _021D7EDC
+ ldr r0, _021D7F44 ; =0x021DB895
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7EDC:
+ mov r2, #0x20
+ tst r2, r0
+ beq _021D7EF0
+ ldr r0, _021D7F48 ; =0x021DB896
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7EF0:
+ mov r2, #0x10
+ tst r0, r2
+ beq _021D7F3C
+ ldr r0, _021D7F4C ; =0x021DB897
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7F04:
+ ldrh r1, [r4, #0x34]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D7F22
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ mov r1, #3
+ bl _s32_div_f
+ add r1, #9
+ add r4, #0x50
+ strh r1, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7F22:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D7F3C
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ mov r1, #3
+ bl _s32_div_f
+ add r4, #0x50
+ strh r1, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7F3C:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D7F40: .word 0x021DB894
+_021D7F44: .word 0x021DB895
+_021D7F48: .word 0x021DB896
+_021D7F4C: .word 0x021DB897
+
+ thumb_func_start MOD15_021D7F50
+MOD15_021D7F50: ; 0x021D7F50
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ cmp r0, #0xfe
+ beq _021D7FAE
+ ldrh r1, [r4, #0x34]
+ mov r3, #0x40
+ mov r2, #0xff
+ tst r3, r1
+ beq _021D7F6E
+ bl MOD15_021DB7C4
+ add r2, r0, #0
+ b _021D7F96
+_021D7F6E:
+ mov r3, #0x80
+ tst r3, r1
+ beq _021D7F7C
+ bl MOD15_021DB7E0
+ add r2, r0, #0
+ b _021D7F96
+_021D7F7C:
+ mov r3, #0x10
+ tst r3, r1
+ beq _021D7F8A
+ bl MOD15_021DB818
+ add r2, r0, #0
+ b _021D7F96
+_021D7F8A:
+ mov r3, #0x20
+ tst r1, r3
+ beq _021D7F96
+ bl MOD15_021DB7FC
+ add r2, r0, #0
+_021D7F96:
+ cmp r2, #0xff
+ beq _021D7FE0
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x52
+ strh r1, [r0]
+ add r4, #0x50
+ strh r2, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7FAE:
+ ldrh r1, [r4, #0x34]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D7FC8
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ bl MOD15_021DB850
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7FC8:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D7FE0
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ bl MOD15_021DB834
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7FE0:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D7FE4
+MOD15_021D7FE4: ; 0x021D7FE4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ strh r0, [r4]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ add r0, r1, #0
+ bl MOD15_021D8744
+ strh r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrh r2, [r4, #4]
+ cmp r2, #0xa
+ bls _021D8016
+ add r1, r2, #0
+ sub r1, #0xa
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ mov r0, #1
+ and r0, r2
+ add r0, r1, r0
+ strh r0, [r4, #2]
+ pop {r4, pc}
+_021D8016:
+ strh r0, [r4, #2]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D801C
+MOD15_021D801C: ; 0x021D801C
+ ldrb r1, [r0, #6]
+ ldrb r0, [r0, #7]
+ lsl r0, r0, #1
+ add r0, r1, r0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8028
+MOD15_021D8028: ; 0x021D8028
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD15_021D801C
+ ldrh r1, [r4]
+ lsl r1, r1, #1
+ add r0, r1, r0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D8038
+MOD15_021D8038: ; 0x021D8038
+ ldr r0, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD15_021D803C
+MOD15_021D803C: ; 0x021D803C
+ ldrh r0, [r0]
+ bx lr
+
+ thumb_func_start MOD15_021D8040
+MOD15_021D8040: ; 0x021D8040
+ ldrh r0, [r0, #2]
+ bx lr
+
+ thumb_func_start MOD15_021D8044
+MOD15_021D8044: ; 0x021D8044
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #3
+ bls _021D8052
+ b _021D81B4
+_021D8052:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D805E: ; jump table
+ .short _021D8066 - _021D805E - 2 ; case 0
+ .short _021D8172 - _021D805E - 2 ; case 1
+ .short _021D8184 - _021D805E - 2 ; case 2
+ .short _021D819E - _021D805E - 2 ; case 3
+_021D8066:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ bne _021D8076
+ add r1, r4, #0
+ add r1, #0x65
+ ldrb r1, [r1]
+ cmp r1, #0
+ bne _021D808C
+_021D8076:
+ cmp r0, #1
+ bne _021D8084
+ add r1, r4, #0
+ add r1, #0x65
+ ldrb r1, [r1]
+ cmp r1, #1
+ bne _021D808C
+_021D8084:
+ ldrh r2, [r4, #0x30]
+ mov r1, #4
+ tst r1, r2
+ beq _021D80BC
+_021D808C:
+ ldr r0, _021D81B8 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x65
+ strb r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #9
+ bl MOD15_021D8900
+ ldr r0, _021D81BC ; =MOD15_021D7D00
+ str r0, [r4, #0x24]
+ mov r0, #3
+ str r0, [r5]
+ b _021D81B4
+_021D80BC:
+ cmp r0, #2
+ bne _021D80CA
+ add r0, r4, #0
+ add r0, #0x54
+ bl MOD15_021D82A8
+ b _021D80E2
+_021D80CA:
+ cmp r0, #3
+ bne _021D80D8
+ add r0, r4, #0
+ add r0, #0x54
+ bl MOD15_021D82D0
+ b _021D80E2
+_021D80D8:
+ ldrh r1, [r4, #0x34]
+ add r0, r4, #0
+ add r0, #0x54
+ bl MOD15_021D81C8
+_021D80E2:
+ cmp r0, #1
+ beq _021D80F0
+ cmp r0, #2
+ beq _021D8102
+ cmp r0, #3
+ beq _021D8118
+ b _021D812E
+_021D80F0:
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ bl MOD15_021D8900
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8102:
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r5]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8118:
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D812E:
+ ldrh r1, [r4, #0x30]
+ mov r0, #2
+ tst r0, r1
+ beq _021D814E
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #9
+ bl MOD15_021D8900
+ ldr r0, _021D81BC ; =MOD15_021D7D00
+ str r0, [r4, #0x24]
+ mov r0, #3
+ str r0, [r5]
+ b _021D81B4
+_021D814E:
+ mov r0, #1
+ tst r0, r1
+ beq _021D81B4
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD15_021D8310
+ ldr r0, _021D81C4 ; =MOD15_021D779C
+ mov r1, #0xa
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ b _021D81B4
+_021D8172:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D81B4
+ mov r0, #0
+ str r0, [r5]
+ b _021D81B4
+_021D8184:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D81B4
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ bl MOD15_021D8900
+ mov r0, #0
+ str r0, [r5]
+ b _021D81B4
+_021D819E:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D81B4
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ bl MOD15_021D7794
+ mov r0, #0
+ str r0, [r5]
+_021D81B4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D81B8: .word 0x000005E4
+_021D81BC: .word MOD15_021D7D00
+_021D81C0: .word 0x000005DC
+_021D81C4: .word MOD15_021D779C
+
+ thumb_func_start MOD15_021D81C8
+MOD15_021D81C8: ; 0x021D81C8
+ push {r3, r4, r5, lr}
+ mov r2, #0x80
+ add r4, r0, #0
+ tst r2, r1
+ beq _021D8232
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ bhs _021D8206
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D81EA
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D81EA:
+ cmp r0, r1
+ bne _021D81FC
+ mov r1, #1
+ tst r0, r1
+ beq _021D81FC
+ mov r0, #0
+ strb r0, [r4, #6]
+ add r0, r1, #0
+ pop {r3, r4, r5, pc}
+_021D81FC:
+ ldrb r0, [r4, #7]
+ sub r0, r0, #1
+ strb r0, [r4, #7]
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D8206:
+ ldrh r2, [r4]
+ ldrh r1, [r4, #2]
+ cmp r2, r1
+ bhs _021D822E
+ mov r1, #1
+ str r1, [r4, #8]
+ ldrh r1, [r4]
+ add r1, r1, #1
+ strh r1, [r4]
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D8226
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D8226:
+ mov r0, #0
+ strb r0, [r4, #6]
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021D822E:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D8232:
+ mov r5, #0x40
+ add r2, r1, #0
+ tst r2, r5
+ beq _021D8260
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ beq _021D8248
+ sub r0, r0, #1
+ strb r0, [r4, #7]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8248:
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _021D825C
+ sub r5, #0x41
+ str r5, [r4, #8]
+ ldrh r0, [r4]
+ sub r0, r0, #1
+ strh r0, [r4]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D825C:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D8260:
+ mov r3, #0x30
+ add r2, r1, #0
+ tst r2, r3
+ beq _021D828A
+ ldrb r2, [r4, #6]
+ mov r1, #1
+ eor r1, r2
+ strb r1, [r4, #6]
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D827E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D827E:
+ ldrb r1, [r4, #6]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #6]
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D828A:
+ lsl r2, r5, #3
+ tst r2, r1
+ beq _021D8296
+ bl MOD15_021D82A8
+ pop {r3, r4, r5, pc}
+_021D8296:
+ add r3, #0xd0
+ tst r1, r3
+ beq _021D82A2
+ bl MOD15_021D82D0
+ pop {r3, r4, r5, pc}
+_021D82A2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D82A8
+MOD15_021D82A8: ; 0x021D82A8
+ ldrh r1, [r0]
+ cmp r1, #0
+ beq _021D82CA
+ cmp r1, #5
+ blo _021D82BE
+ sub r1, r1, #5
+ strh r1, [r0]
+ mov r1, #4
+ mvn r1, r1
+ str r1, [r0, #8]
+ b _021D82C6
+_021D82BE:
+ neg r1, r1
+ str r1, [r0, #8]
+ mov r1, #0
+ strh r1, [r0]
+_021D82C6:
+ mov r0, #2
+ bx lr
+_021D82CA:
+ mov r0, #4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D82D0
+MOD15_021D82D0: ; 0x021D82D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r2, [r4, #2]
+ ldrh r1, [r4]
+ cmp r1, r2
+ bhs _021D830C
+ add r0, r1, #5
+ cmp r0, r2
+ bgt _021D82EC
+ mov r0, #5
+ str r0, [r4, #8]
+ ldrh r0, [r4]
+ add r0, r0, #5
+ b _021D82F2
+_021D82EC:
+ sub r0, r2, r1
+ str r0, [r4, #8]
+ ldrh r0, [r4, #2]
+_021D82F2:
+ strh r0, [r4]
+ add r0, r4, #0
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D8304
+ mov r0, #2
+ pop {r4, pc}
+_021D8304:
+ mov r0, #0
+ strb r0, [r4, #6]
+ mov r0, #3
+ pop {r4, pc}
+_021D830C:
+ mov r0, #4
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D8310
+MOD15_021D8310: ; 0x021D8310
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x54
+ bl MOD15_021D8028
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r4, #0x18]
+ bne _021D8334
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_020892EC
+ b _021D833E
+_021D8334:
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_02089338
+_021D833E:
+ add r2, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D8350
+ cmp r0, #1
+ beq _021D8354
+ cmp r0, #2
+ beq _021D8362
+ b _021D8370
+_021D8350:
+ strh r2, [r4, #0x10]
+ b _021D8370
+_021D8354:
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ lsl r0, r0, #1
+ add r0, r4, r0
+ strh r2, [r0, #0x10]
+ b _021D8370
+_021D8362:
+ add r1, r4, #0
+ add r1, #0x4e
+ ldrh r1, [r1]
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02013998
+_021D8370:
+ add r0, r4, #0
+ bl MOD15_021D85EC
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D8378
+MOD15_021D8378: ; 0x021D8378
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021D8388
+ cmp r1, #1
+ beq _021D8398
+ b _021D83A6
+_021D8388:
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ bl MOD15_021D8900
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D83A6
+_021D8398:
+ ldr r0, [r0, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D83A6
+ mov r0, #1
+ pop {r4, pc}
+_021D83A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D83AC
+MOD15_021D83AC: ; 0x021D83AC
+ str r1, [r0, #0x2c]
+ mov r1, #0
+ str r1, [r0, #0x28]
+ bx lr
+
+ thumb_func_start MOD15_021D83B4
+MOD15_021D83B4: ; 0x021D83B4
+ mov r1, #0
+ str r1, [r0, #0x2c]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D83BC
+MOD15_021D83BC: ; 0x021D83BC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D83CE
+ cmp r0, #1
+ beq _021D83DE
+ pop {r3, r4, r5, pc}
+_021D83CE:
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl MOD15_021D8900
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D83DE:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D83EE
+ add r0, r5, #0
+ bl MOD15_021D83B4
+_021D83EE:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D83F0
+MOD15_021D83F0: ; 0x021D83F0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #3
+ bls _021D83FE
+ b _021D850C
+_021D83FE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D840A: ; jump table
+ .short _021D8412 - _021D840A - 2 ; case 0
+ .short _021D8460 - _021D840A - 2 ; case 1
+ .short _021D84E6 - _021D840A - 2 ; case 2
+ .short _021D84FC - _021D840A - 2 ; case 3
+_021D8412:
+ bl MOD15_021D85D0
+ cmp r0, #0
+ bne _021D8424
+ ldr r0, [r4]
+ bl FUN_02085424
+ cmp r0, #0
+ beq _021D8456
+_021D8424:
+ add r0, r4, #0
+ bl MOD15_021D85EC
+ cmp r0, #0
+ beq _021D8448
+ add r0, r4, #0
+ add r0, #0x66
+ mov r1, #1
+ mov r2, #0
+ bl MOD15_021D8634
+ ldr r0, [r4, #0x14]
+ mov r1, #0x12
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8448:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x14
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8456:
+ ldr r1, _021D8510 ; =MOD15_021D851C
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ pop {r3, r4, r5, pc}
+_021D8460:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D850C
+ ldrh r1, [r4, #0x30]
+ add r0, r4, #0
+ add r0, #0x66
+ bl MOD15_021D863C
+ add r0, r0, #3
+ cmp r0, #4
+ bhi _021D850C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8488: ; jump table
+ .short _021D8492 - _021D8488 - 2 ; case 0
+ .short _021D84A2 - _021D8488 - 2 ; case 1
+ .short _021D850C - _021D8488 - 2 ; case 2
+ .short _021D84B6 - _021D8488 - 2 ; case 3
+ .short _021D84A2 - _021D8488 - 2 ; case 4
+_021D8492:
+ ldr r0, _021D8514 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8900
+ pop {r3, r4, r5, pc}
+_021D84A2:
+ ldr r0, _021D8514 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x16
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D84B6:
+ ldr r0, _021D8514 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D84CA
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_020139B0
+_021D84CA:
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r1, #0x10
+ add r2, #8
+ bl FUN_020854A0
+ ldr r1, _021D8518 ; =MOD15_021D8378
+ add r0, r4, #0
+ bl MOD15_021D7794
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D84E6:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0xf3
+ tst r0, r1
+ beq _021D850C
+ ldr r0, [r4, #0x14]
+ mov r1, #0x11
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D84FC:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D850C
+ add r0, r4, #0
+ bl MOD15_021D83B4
+_021D850C:
+ pop {r3, r4, r5, pc}
+ nop
+_021D8510: .word MOD15_021D851C
+_021D8514: .word 0x000005DC
+_021D8518: .word MOD15_021D8378
+
+ thumb_func_start MOD15_021D851C
+MOD15_021D851C: ; 0x021D851C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021D8532
+ cmp r0, #1
+ beq _021D854C
+ cmp r0, #2
+ beq _021D85B6
+ pop {r3, r4, r5, pc}
+_021D8532:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x66
+ add r2, r1, #0
+ bl MOD15_021D8634
+ ldr r0, [r4, #0x14]
+ mov r1, #0x13
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D854C:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D85C6
+ ldrh r1, [r4, #0x30]
+ add r0, r4, #0
+ add r0, #0x66
+ bl MOD15_021D863C
+ add r0, r0, #3
+ cmp r0, #4
+ bhi _021D85C6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8574: ; jump table
+ .short _021D857E - _021D8574 - 2 ; case 0
+ .short _021D858E - _021D8574 - 2 ; case 1
+ .short _021D85C6 - _021D8574 - 2 ; case 2
+ .short _021D85A2 - _021D8574 - 2 ; case 3
+ .short _021D858E - _021D8574 - 2 ; case 4
+_021D857E:
+ ldr r0, _021D85C8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8900
+ pop {r3, r4, r5, pc}
+_021D858E:
+ ldr r0, _021D85C8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x16
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D85A2:
+ ldr r0, _021D85C8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D85CC ; =MOD15_021D8378
+ add r0, r4, #0
+ bl MOD15_021D7794
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D85B6:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D85C6
+ add r0, r4, #0
+ bl MOD15_021D83B4
+_021D85C6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D85C8: .word 0x000005DC
+_021D85CC: .word MOD15_021D8378
+
+ thumb_func_start MOD15_021D85D0
+MOD15_021D85D0: ; 0x021D85D0
+ push {r3, lr}
+ add r2, r0, #0
+ add r1, r2, #0
+ ldr r0, [r2]
+ add r1, #0x10
+ add r2, #8
+ bl FUN_0208545C
+ cmp r0, #0
+ bne _021D85E8
+ mov r0, #1
+ pop {r3, pc}
+_021D85E8:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D85EC
+MOD15_021D85EC: ; 0x021D85EC
+ push {r3, lr}
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _021D85FE
+ cmp r1, #1
+ beq _021D860E
+ cmp r1, #2
+ beq _021D8624
+ b _021D862C
+_021D85FE:
+ ldrh r1, [r0, #0x10]
+ ldr r0, _021D8630 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D860A
+ mov r0, #1
+ pop {r3, pc}
+_021D860A:
+ mov r0, #0
+ pop {r3, pc}
+_021D860E:
+ ldrh r2, [r0, #0x10]
+ ldr r1, _021D8630 ; =0x0000FFFF
+ cmp r2, r1
+ beq _021D8620
+ ldrh r0, [r0, #0x12]
+ cmp r0, r1
+ beq _021D8620
+ mov r0, #1
+ pop {r3, pc}
+_021D8620:
+ mov r0, #0
+ pop {r3, pc}
+_021D8624:
+ add r0, #8
+ bl FUN_02013870
+ pop {r3, pc}
+_021D862C:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D8630: .word 0x0000FFFF
+
+ thumb_func_start MOD15_021D8634
+MOD15_021D8634: ; 0x021D8634
+ strb r2, [r0]
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D863C
+MOD15_021D863C: ; 0x021D863C
+ mov r2, #0x40
+ add r3, r1, #0
+ tst r3, r2
+ beq _021D865A
+ ldrb r1, [r0]
+ cmp r1, #0
+ bne _021D8650
+ sub r2, #0x44
+ add r0, r2, #0
+ bx lr
+_021D8650:
+ sub r1, r1, #1
+ sub r2, #0x43
+ strb r1, [r0]
+ add r0, r2, #0
+ bx lr
+_021D865A:
+ mov r2, #0x80
+ add r3, r1, #0
+ tst r3, r2
+ beq _021D867A
+ ldrb r3, [r0]
+ ldrb r1, [r0, #1]
+ cmp r3, r1
+ bne _021D8670
+ sub r2, #0x84
+ add r0, r2, #0
+ bx lr
+_021D8670:
+ add r1, r3, #1
+ sub r2, #0x83
+ strb r1, [r0]
+ add r0, r2, #0
+ bx lr
+_021D867A:
+ mov r2, #1
+ tst r2, r1
+ beq _021D8684
+ ldrb r0, [r0]
+ bx lr
+_021D8684:
+ mov r0, #2
+ tst r1, r0
+ beq _021D868E
+ sub r0, r0, #4
+ bx lr
+_021D868E:
+ sub r0, r0, #3
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8694
+MOD15_021D8694: ; 0x021D8694
+ ldrb r0, [r0]
+ bx lr
+
+ thumb_func_start MOD15_021D8698
+MOD15_021D8698: ; 0x021D8698
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D86AA
+ cmp r0, #1
+ beq _021D86CE
+ pop {r3, r4, r5, pc}
+_021D86AA:
+ ldr r0, _021D86E0 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r5, #0
+ add r0, #0x65
+ strb r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0x17
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D86CE:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D86DE
+ add r0, r5, #0
+ bl MOD15_021D83B4
+_021D86DE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86E0: .word 0x000005E4
+
+ thumb_func_start MOD15_021D86E4
+MOD15_021D86E4: ; 0x021D86E4
+ ldr r0, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD15_021D86E8
+MOD15_021D86E8: ; 0x021D86E8
+ ldr r3, _021D86F0 ; =0x02085411
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D86F0: .word 0x02085411
+
+ thumb_func_start MOD15_021D86F4
+MOD15_021D86F4: ; 0x021D86F4
+ add r0, #0x65
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D86FC
+MOD15_021D86FC: ; 0x021D86FC
+ ldr r3, _021D8704 ; =0x02013921
+ add r0, #8
+ bx r3
+ nop
+_021D8704: .word 0x02013921
+
+ thumb_func_start MOD15_021D8708
+MOD15_021D8708: ; 0x021D8708
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ cmp r2, #2
+ bne _021D8718
+ add r0, #8
+ bl FUN_02013918
+ pop {r3, pc}
+_021D8718:
+ lsl r1, r1, #1
+ add r0, r0, r1
+ ldrh r0, [r0, #0x10]
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D8720
+MOD15_021D8720: ; 0x021D8720
+ ldr r3, _021D8728 ; =0x02013841
+ add r0, #8
+ bx r3
+ nop
+_021D8728: .word 0x02013841
+
+ thumb_func_start MOD15_021D872C
+MOD15_021D872C: ; 0x021D872C
+ add r0, #0x4e
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8734
+MOD15_021D8734: ; 0x021D8734
+ add r0, #0x4c
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D873C
+MOD15_021D873C: ; 0x021D873C
+ add r0, #0x50
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8744
+MOD15_021D8744: ; 0x021D8744
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r1, #0x18]
+ bne _021D875C
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_020892C4
+ pop {r3, pc}
+_021D875C:
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_02089300
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8768
+MOD15_021D8768: ; 0x021D8768
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ add r4, r1, #0
+ add r3, r2, #0
+ cmp r0, #0
+ ldr r0, [r5, #0x18]
+ bne _021D8786
+ add r5, #0x50
+ ldrh r1, [r5]
+ add r2, r4, #0
+ bl FUN_020892CC
+ pop {r3, r4, r5, pc}
+_021D8786:
+ add r5, #0x50
+ ldrh r1, [r5]
+ add r2, r4, #0
+ bl FUN_02089310
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8794
+MOD15_021D8794: ; 0x021D8794
+ ldr r3, _021D879C ; =MOD15_021D801C
+ add r0, #0x54
+ bx r3
+ nop
+_021D879C: .word MOD15_021D801C
+
+ thumb_func_start MOD15_021D87A0
+MOD15_021D87A0: ; 0x021D87A0
+ ldr r3, _021D87A8 ; =MOD15_021D8038
+ add r0, #0x54
+ bx r3
+ nop
+_021D87A8: .word MOD15_021D8038
+
+ thumb_func_start MOD15_021D87AC
+MOD15_021D87AC: ; 0x021D87AC
+ push {r3, lr}
+ add r0, #0x54
+ bl MOD15_021D803C
+ cmp r0, #0
+ beq _021D87BC
+ mov r0, #1
+ pop {r3, pc}
+_021D87BC:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D87C0
+MOD15_021D87C0: ; 0x021D87C0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x54
+ bl MOD15_021D803C
+ add r5, #0x54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD15_021D8040
+ cmp r4, r0
+ bge _021D87DC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D87DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D87E0
+MOD15_021D87E0: ; 0x021D87E0
+ ldr r3, _021D87E8 ; =0x02085415
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D87E8: .word 0x02085415
+
+ thumb_func_start MOD15_021D87EC
+MOD15_021D87EC: ; 0x021D87EC
+ ldr r3, _021D87F4 ; =MOD15_021D8694
+ add r0, #0x66
+ bx r3
+ nop
+_021D87F4: .word MOD15_021D8694
+
+ thumb_func_start MOD15_021D87F8
+MOD15_021D87F8: ; 0x021D87F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ mov r1, #0x7d
+ add r5, r0, #0
+ mov r0, #0x23
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021D8878
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ str r5, [r4, #0x18]
+ str r6, [r4, #0x1c]
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x23
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x80
+ add r1, #0x28
+ mov r2, #0x23
+ bl FUN_02008C9C
+ str r0, [r4, #0x24]
+ mov r0, #0x23
+ bl FUN_02016B94
+ str r0, [r4, #0x20]
+ ldr r0, _021D8880 ; =MOD15_021D88D8
+ add r1, r4, #0
+ mov r2, #2
+ bl FUN_0200CA44
+ str r0, [r4]
+ ldr r0, _021D8884 ; =MOD15_021D88DC
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD15_021D88D0
+ mov r1, #0
+ str r0, [r4, #4]
+ add r2, r4, #0
+ add r0, r1, #0
+_021D886E:
+ add r1, r1, #1
+ str r0, [r2, #8]
+ add r2, r2, #4
+ cmp r1, #4
+ blt _021D886E
+_021D8878:
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D8880: .word MOD15_021D88D8
+_021D8884: .word MOD15_021D88DC
+
+ thumb_func_start MOD15_021D8888
+MOD15_021D8888: ; 0x021D8888
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ beq _021D88CE
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r4, #0
+ add r5, r6, #0
+_021D889A:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D88A4
+ bl FUN_0200CAB4
+_021D88A4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D889A
+ ldr r0, [r6]
+ bl FUN_0200CAB4
+ ldr r0, [r6, #4]
+ bl FUN_0200CAB4
+ bl FUN_02009FA0
+ ldr r0, [r6, #0x24]
+ bl FUN_0201FD58
+ ldr r0, [r6, #0x20]
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_02016A18
+_021D88CE:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D88D0
+MOD15_021D88D0: ; 0x021D88D0
+ ldr r3, _021D88D4 ; =0x0200CA61
+ bx r3
+ .align 2, 0
+_021D88D4: .word 0x0200CA61
+
+ thumb_func_start MOD15_021D88D8
+MOD15_021D88D8: ; 0x021D88D8
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D88DC
+MOD15_021D88DC: ; 0x021D88DC
+ push {r3, lr}
+ ldr r0, [r1, #0x24]
+ bl FUN_0201FDEC
+ bl FUN_02009F80
+ ldr r3, _021D88F8 ; =0x027E0000
+ ldr r1, _021D88FC ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ nop
+_021D88F8: .word 0x027E0000
+_021D88FC: .word 0x00003FF8
+
+ thumb_func_start MOD15_021D8900
+MOD15_021D8900: ; 0x021D8900
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ cmp r6, #0x1d
+ bhs _021D894E
+ mov r0, #0x23
+ mov r1, #0x18
+ bl FUN_02016998
+ add r1, r0, #0
+ beq _021D8952
+ mov r4, #0
+ str r4, [r1, #0x14]
+ str r6, [r1, #0xc]
+ str r5, [r1]
+ ldr r0, [r5, #0x18]
+ add r2, r5, #0
+ str r0, [r1, #4]
+ ldr r0, [r5, #0x1c]
+ str r0, [r1, #8]
+_021D8928:
+ ldr r0, [r2, #8]
+ cmp r0, #0
+ bne _021D8944
+ ldr r0, _021D8954 ; =0x021DB98C
+ lsl r2, r6, #2
+ ldr r0, [r0, r2]
+ mov r2, #1
+ str r4, [r1, #0x10]
+ bl FUN_0200CA44
+ lsl r1, r4, #2
+ add r1, r5, r1
+ str r0, [r1, #8]
+ pop {r4, r5, r6, pc}
+_021D8944:
+ add r4, r4, #1
+ add r2, r2, #4
+ cmp r4, #4
+ blt _021D8928
+ pop {r4, r5, r6, pc}
+_021D894E:
+ bl ErrorHandling
+_021D8952:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8954: .word 0x021DB98C
+
+ thumb_func_start MOD15_021D8958
+MOD15_021D8958: ; 0x021D8958
+ mov r2, #0
+_021D895A:
+ ldr r1, [r0, #8]
+ cmp r1, #0
+ beq _021D8964
+ mov r0, #0
+ bx lr
+_021D8964:
+ add r2, r2, #1
+ add r0, r0, #4
+ cmp r2, #4
+ blt _021D895A
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD15_021D8970
+MOD15_021D8970: ; 0x021D8970
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021D8978:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D898C
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0xc]
+ cmp r0, r6
+ bne _021D898C
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D898C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D8978
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D8998
+MOD15_021D8998: ; 0x021D8998
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #8]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ mov r2, #0
+ add r0, r1, r0
+ str r2, [r0, #8]
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D89C0
+MOD15_021D89C0: ; 0x021D89C0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r2, _021D8AA4 ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1]
+ ldr r0, _021D8AA8 ; =0x04001000
+ ldr r3, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r2, [r1]
+ ldr r3, _021D8AAC ; =0xFFCFFFEF
+ add r5, r2, #0
+ ldr r2, _021D8AB0 ; =0x00100010
+ and r5, r3
+ orr r2, r5
+ str r2, [r1]
+ ldr r1, [r0]
+ add r2, r1, #0
+ and r2, r3
+ mov r1, #0x10
+ orr r1, r2
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD15_021D8C30
+ add r0, r4, #0
+ bl MOD15_021D8AB4
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021D95E8
+ mov r1, #0x1e
+ ldr r2, [r4]
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021D9694
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021D9FA0
+ mov r1, #0x79
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021D9FD4
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021DA18C
+ mov r1, #0x7a
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021DA1D0
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021DA828
+ mov r1, #0x7b
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021DA8E8
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021DAE68
+ mov r1, #0x1f
+ ldr r2, [r4]
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021DAEB4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ bl GX_DispOn
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8AA4: .word 0xFFFFE0FF
+_021D8AA8: .word 0x04001000
+_021D8AAC: .word 0xFFCFFFEF
+_021D8AB0: .word 0x00100010
+
+ thumb_func_start MOD15_021D8AB4
+MOD15_021D8AB4: ; 0x021D8AB4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r4, [r0]
+ mov r0, #0x66
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B19DC
+ mov r0, #0x6b
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B19DC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl FUN_020B1A24
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r4, r0
+ str r0, [sp, #0x10]
+ mov r0, #0x4c
+ mov r1, #9
+ bl FUN_02006AE4
+ mov r0, #0x23
+ str r0, [sp]
+ mov r0, #0x66
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r1, #7
+ mov r0, #0x23
+ lsl r3, r1, #6
+ str r0, [sp]
+ mov r0, #0x4c
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006C30
+ mov r3, #0x1d
+ lsl r3, r3, #4
+ str r0, [r4, r3]
+ mov r0, #0x23
+ sub r3, #8
+ str r0, [sp]
+ mov r0, #0x4c
+ mov r1, #8
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006C5C
+ mov r1, #0x76
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r2, #0
+ sub r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8B58
+MOD15_021D8B58: ; 0x021D8B58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ ldr r0, [r6, #0x14]
+ ldr r7, [r6]
+ cmp r0, #0
+ beq _021D8B6E
+ cmp r0, #1
+ beq _021D8B90
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021D8B6E:
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x23
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r6, #0x14]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r6, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_021D8B90:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8C2A
+ mov r0, #0x1e
+ ldr r1, [r6]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD15_021D9634
+ mov r0, #0x79
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD15_021D9FBC
+ mov r0, #0x7a
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD15_021DA1B8
+ mov r0, #0x7b
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD15_021DA8A4
+ mov r0, #0x1f
+ ldr r1, [r6]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD15_021DAEA4
+ mov r4, #0
+ add r5, r7, #0
+_021D8BD8:
+ mov r0, #0x1d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8BE6
+ bl FUN_02016A18
+_021D8BE6:
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8BF4
+ bl FUN_02016A18
+_021D8BF4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021D8BD8
+ ldr r0, [r7, #0x20]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r6, #0
+ bl MOD15_021D8998
+_021D8C2A:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8C30
+MOD15_021D8C30: ; 0x021D8C30
+ push {r4, lr}
+ ldr r2, _021D8C94 ; =0x04000304
+ ldr r4, [r0]
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl GX_SetGraphicsMode
+ ldr r0, _021D8C98 ; =0x021DB964
+ bl FUN_0201E66C
+ ldr r0, _021D8C9C ; =0x021DB8C8
+ bl FUN_02016BBC
+ mov r1, #0
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CA0 ; =0x021DB910
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CA4 ; =0x021DB8D8
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CA8 ; =0x021DB948
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CAC ; =0x021DB8F4
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CB0 ; =0x021DB92C
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ pop {r4, pc}
+ nop
+_021D8C94: .word 0x04000304
+_021D8C98: .word 0x021DB964
+_021D8C9C: .word 0x021DB8C8
+_021D8CA0: .word 0x021DB910
+_021D8CA4: .word 0x021DB8D8
+_021D8CA8: .word 0x021DB948
+_021D8CAC: .word 0x021DB8F4
+_021D8CB0: .word 0x021DB92C
+
+ thumb_func_start MOD15_021D8CB4
+MOD15_021D8CB4: ; 0x021D8CB4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D8CC6
+ cmp r0, #1
+ beq _021D8CE6
+ b _021D8CF8
+_021D8CC6:
+ mov r0, #5
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x23
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x14]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ pop {r3, r4, pc}
+_021D8CE6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8CFE
+ ldr r0, [r4, #0x14]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ pop {r3, r4, pc}
+_021D8CF8:
+ add r0, r4, #0
+ bl MOD15_021D8998
+_021D8CFE:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8D04
+MOD15_021D8D04: ; 0x021D8D04
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9964
+ ldr r0, [r5, #4]
+ bl MOD15_021D872C
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E3C
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8D30
+MOD15_021D8D30: ; 0x021D8D30
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021D9DD8
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DEC
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA10C
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8734
+ add r1, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA124
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8D74
+MOD15_021D8D74: ; 0x021D8D74
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x79
+ ldr r4, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA10C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E0C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021D9DD8
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8DA4
+MOD15_021D8DA4: ; 0x021D8DA4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8DB6
+ cmp r0, #1
+ beq _021D8DDC
+ pop {r3, r4, r5, pc}
+_021D8DB6:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DC0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DEC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA638
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8DDC:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA650
+ cmp r0, #0
+ beq _021D8E18
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA164
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA588
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8E18:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8E1C
+MOD15_021D8E1C: ; 0x021D8E1C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8E32
+ cmp r0, #1
+ beq _021D8E44
+ cmp r0, #2
+ beq _021D8E56
+ pop {r3, r4, r5, pc}
+_021D8E32:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB2D0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8E44:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7E8
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8E56:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA81C
+ cmp r0, #0
+ beq _021D8E82
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB358
+ cmp r0, #0
+ beq _021D8E82
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7C4
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8E82:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8E84
+MOD15_021D8E84: ; 0x021D8E84
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #3
+ bhi _021D8F26
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8E9C: ; jump table
+ .short _021D8EA4 - _021D8E9C - 2 ; case 0
+ .short _021D8EB6 - _021D8E9C - 2 ; case 1
+ .short _021D8ED4 - _021D8E9C - 2 ; case 2
+ .short _021D8EF4 - _021D8E9C - 2 ; case 3
+_021D8EA4:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB2D0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8EB6:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA588
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7E8
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8ED4:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA81C
+ cmp r0, #0
+ beq _021D8F26
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7C4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8EF4:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB358
+ cmp r0, #0
+ beq _021D8F26
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA588
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8F26:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8F28
+MOD15_021D8F28: ; 0x021D8F28
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8F3A
+ cmp r0, #1
+ beq _021D8F62
+ pop {r3, r4, r5, pc}
+_021D8F3A:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA178
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA588
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA6A0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8F62:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA6C4
+ cmp r0, #0
+ beq _021D8F8A
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E0C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DCC
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8F8A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8F8C
+MOD15_021D8F8C: ; 0x021D8F8C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8FA2
+ cmp r0, #1
+ beq _021D8FCA
+ cmp r0, #2
+ beq _021D8FEA
+ pop {r3, r4, r5, pc}
+_021D8FA2:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA9D4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA588
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA744
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8FCA:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA760
+ cmp r0, #0
+ beq _021D9028
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAA24
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8FEA:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAD0
+ cmp r0, #0
+ beq _021D9028
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8794
+ add r1, r0, #0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DABC0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DB4E8
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D9028:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D902C
+MOD15_021D902C: ; 0x021D902C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #4
+ bhi _021D90FC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9044: ; jump table
+ .short _021D904E - _021D9044 - 2 ; case 0
+ .short _021D9060 - _021D9044 - 2 ; case 1
+ .short _021D908A - _021D9044 - 2 ; case 2
+ .short _021D90AA - _021D9044 - 2 ; case 3
+ .short _021D90BC - _021D9044 - 2 ; case 4
+_021D904E:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB2D0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9060:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DB4E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAF4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D908A:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAB18
+ cmp r0, #0
+ beq _021D90FC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7C4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D90AA:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA77C
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D90BC:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7B8
+ cmp r0, #0
+ beq _021D90FC
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB358
+ cmp r0, #0
+ beq _021D90FC
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA588
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D90FC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9100
+MOD15_021D9100: ; 0x021D9100
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #3
+ bhi _021D91DC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9118: ; jump table
+ .short _021D9120 - _021D9118 - 2 ; case 0
+ .short _021D9154 - _021D9118 - 2 ; case 1
+ .short _021D917E - _021D9118 - 2 ; case 2
+ .short _021D919E - _021D9118 - 2 ; case 3
+_021D9120:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA178
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DB4E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAF4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9154:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAB18
+ cmp r0, #0
+ beq _021D91DC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA710
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA77C
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D917E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7B8
+ cmp r0, #0
+ beq _021D91DC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA720
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D919E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA738
+ cmp r0, #0
+ beq _021D91DC
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9964
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021D9DD8
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E0C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DCC
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D91DC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D91E0
+MOD15_021D91E0: ; 0x021D91E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #3
+ bhi _021D92B4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D91F8: ; jump table
+ .short _021D9200 - _021D91F8 - 2 ; case 0
+ .short _021D9234 - _021D91F8 - 2 ; case 1
+ .short _021D925E - _021D91F8 - 2 ; case 2
+ .short _021D927E - _021D91F8 - 2 ; case 3
+_021D9200:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA178
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DB4E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAF4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9234:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAB18
+ cmp r0, #0
+ beq _021D92B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA710
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA77C
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D925E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7B8
+ cmp r0, #0
+ beq _021D92B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA720
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D927E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA738
+ cmp r0, #0
+ beq _021D92B4
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9964
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021D9DD8
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA10C
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D92B4:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D92B8
+MOD15_021D92B8: ; 0x021D92B8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D872C
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E3C
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D92D8
+MOD15_021D92D8: ; 0x021D92D8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8734
+ add r1, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA124
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D92F8
+MOD15_021D92F8: ; 0x021D92F8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9318
+MOD15_021D9318: ; 0x021D9318
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8794
+ add r1, r0, #0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DABC0
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9338
+MOD15_021D9338: ; 0x021D9338
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D934A
+ cmp r0, #1
+ beq _021D9364
+ pop {r3, r4, r5, pc}
+_021D934A:
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D87A0
+ add r1, r0, #0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DABFC
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9364:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DACB8
+ cmp r0, #0
+ beq _021D9384
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DB4E8
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D9384:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9388
+MOD15_021D9388: ; 0x021D9388
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1e
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD15_021D9CB4
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D93A4
+MOD15_021D93A4: ; 0x021D93A4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl MOD15_021D9CB4
+ ldr r0, [r5, #4]
+ bl MOD15_021D87EC
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9ECC
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA118
+ cmp r0, #0
+ beq _021D93E2
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA0F4
+ b _021D93EC
+_021D93E2:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DC0
+_021D93EC:
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D93F4
+MOD15_021D93F4: ; 0x021D93F4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl MOD15_021D9CB4
+ ldr r0, [r5, #4]
+ bl MOD15_021D87EC
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9ECC
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA118
+ cmp r0, #0
+ beq _021D9432
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA0F4
+ b _021D943C
+_021D9432:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DC0
+_021D943C:
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9444
+MOD15_021D9444: ; 0x021D9444
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1e
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl MOD15_021D9CB4
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9460
+MOD15_021D9460: ; 0x021D9460
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #4]
+ ldr r4, [r5]
+ bl MOD15_021D87EC
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9F58
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9480
+MOD15_021D9480: ; 0x021D9480
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021D9CB4
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9F88
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA118
+ cmp r0, #0
+ beq _021D94B6
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA100
+ b _021D94C0
+_021D94B6:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DCC
+_021D94C0:
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D94C8
+MOD15_021D94C8: ; 0x021D94C8
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ mov r2, #1
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D94E4
+MOD15_021D94E4: ; 0x021D94E4
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9500
+MOD15_021D9500: ; 0x021D9500
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r2, r1, #0
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D951C
+MOD15_021D951C: ; 0x021D951C
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ mov r2, #0
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9538
+MOD15_021D9538: ; 0x021D9538
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ ldr r3, _021D9544 ; =MOD15_021D9CB0
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_021D9544: .word MOD15_021D9CB0
+
+ thumb_func_start MOD15_021D9548
+MOD15_021D9548: ; 0x021D9548
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start MOD15_021D954C
+MOD15_021D954C: ; 0x021D954C
+ ldr r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start MOD15_021D9550
+MOD15_021D9550: ; 0x021D9550
+ push {r3, r4, r5, r6}
+ mov r4, #0x15
+ lsl r4, r4, #4
+ mov r5, #0x24
+ add r6, r0, r4
+ mul r5, r2
+ add r5, r6, r5
+ str r5, [r1]
+ add r5, r4, #0
+ add r5, #0x48
+ add r6, r0, r5
+ mov r5, #0x14
+ mul r5, r2
+ lsl r2, r2, #2
+ add r5, r6, r5
+ add r2, r0, r2
+ add r0, r4, #0
+ str r5, [r1, #8]
+ add r0, #0x70
+ ldr r0, [r2, r0]
+ add r4, #0x78
+ str r0, [r1, #0xc]
+ ldr r0, [r2, r4]
+ str r0, [r1, #0x10]
+ add r0, r1, #0
+ add r0, #0x20
+ strb r3, [r0]
+ mov r0, #0
+ str r0, [r1, #4]
+ str r0, [r1, #0x14]
+ str r0, [r1, #0x18]
+ str r0, [r1, #0x1c]
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD15_021D9594
+MOD15_021D9594: ; 0x021D9594
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ ldr r0, [r0, #0x24]
+ str r0, [sp]
+ lsl r0, r2, #0xc
+ str r0, [sp, #8]
+ lsl r0, r3, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #4]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ mov r0, #0x23
+ str r0, [sp, #0x1c]
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r5, r0, #0
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ cmp r5, #0
+ beq _021D95E0
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021D95E0:
+ add r0, r5, #0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D95E8
+MOD15_021D95E8: ; 0x021D95E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x1b
+ add r5, r0, #0
+ mov r0, #0x23
+ lsl r1, r1, #4
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0x3c]
+ str r0, [r4, #0x40]
+ str r0, [r4, #0x44]
+ mov r0, #0x80
+ mov r1, #0x23
+ bl FUN_020219F4
+ str r0, [r4, #0x4c]
+ ldr r2, _021D9630 ; =0x00000182
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x23
+ bl FUN_0200A86C
+ str r0, [r4, #0x48]
+ mov r0, #0x23
+ bl FUN_02013690
+ str r0, [r4, #0x50]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9630: .word 0x00000182
+
+ thumb_func_start MOD15_021D9634
+MOD15_021D9634: ; 0x021D9634
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x50]
+ cmp r0, #0
+ beq _021D9642
+ bl FUN_020136C0
+_021D9642:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021D964C
+ bl FUN_0201FFC8
+_021D964C:
+ ldr r0, [r4, #0x40]
+ cmp r0, #0
+ beq _021D9656
+ bl FUN_0201FFC8
+_021D9656:
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _021D9660
+ bl FUN_0201FFC8
+_021D9660:
+ ldr r0, [r4, #0x48]
+ cmp r0, #0
+ beq _021D966A
+ bl FUN_0200A8B8
+_021D966A:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ beq _021D9674
+ bl FUN_02021A20
+_021D9674:
+ add r0, r4, #0
+ add r0, #0xc
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x1c
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x2c
+ bl FUN_02019178
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9694
+MOD15_021D9694: ; 0x021D9694
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD15_021D97E4
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ add r2, r6, #0
+ add r3, r1, #0
+ bl FUN_020068C8
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ add r2, r6, #0
+ bl FUN_0200687C
+ lsr r4, r0, #5
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #0
+ lsl r0, r4, #0x10
+ add r1, r5, #0
+ str r2, [sp, #0xc]
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, #0xc
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ add r1, r5, #0
+ str r3, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x6c
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, #0x1c
+ mov r2, #0
+ bl FUN_02019064
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xa2
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, #0x2c
+ mov r2, #0
+ mov r3, #0x17
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0xc2
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x26
+ add r2, r6, #0
+ add r3, r1, #0
+ bl FUN_0200687C
+ add r0, r4, #0
+ add r0, #0xc2
+ str r0, [r5, #0x60]
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x23
+ mov r3, #7
+ str r0, [sp, #4]
+ mov r0, #0x26
+ mov r1, #0x18
+ mov r2, #0
+ lsl r3, r3, #6
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ bl MOD15_021D87E0
+ lsl r0, r0, #0x18
+ add r2, r4, #0
+ lsr r0, r0, #0x18
+ add r2, #0xcb
+ str r0, [sp]
+ mov r0, #0x23
+ lsl r2, r2, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r1, #0
+ lsr r2, r2, #0x10
+ mov r3, #0xf
+ bl FUN_0200CD68
+ add r0, r5, #0
+ add r4, #0xcb
+ add r0, #0x1c
+ add r1, r4, #0
+ mov r2, #0xf
+ bl FUN_0200D06C
+ add r0, r5, #0
+ add r0, #0xc
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x1c
+ bl FUN_02019270
+ add r0, r5, #0
+ bl MOD15_021D9868
+ add r0, r5, #0
+ bl MOD15_021D9964
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD15_021D9CB4
+ add r0, r5, #0
+ bl MOD15_021D98C0
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_02017CD0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D97E4
+MOD15_021D97E4: ; 0x021D97E4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #7
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #0x23
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0x4c
+ mov r1, #6
+ add r2, sp, #8
+ mov r3, #0x23
+ bl FUN_02006C08
+ add r4, r0, #0
+ ldr r0, [sp, #8]
+ add r1, r5, #0
+ mov r2, #5
+ ldr r0, [r0, #0xc]
+ add r1, #0x70
+ lsl r2, r2, #6
+ bl MIi_CpuCopy16
+ add r5, #0x70
+ mov r1, #5
+ add r0, r5, #0
+ lsl r1, r1, #6
+ bl DC_FlushRange
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD15_021D9834
+MOD15_021D9834: ; 0x021D9834
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ bne _021D985A
+ ldr r0, [r4, #4]
+ bl MOD15_021D86FC
+ add r0, r0, #1
+ add r4, #0x70
+ lsl r0, r0, #5
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+ pop {r4, pc}
+_021D985A:
+ add r4, #0x70
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9868
+MOD15_021D9868: ; 0x021D9868
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #0
+ beq _021D9880
+ cmp r0, #1
+ beq _021D9896
+ cmp r0, #2
+ beq _021D98BA
+ pop {r4, pc}
+_021D9880:
+ add r0, r4, #0
+ mov r1, #0x68
+ add r0, #0x54
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x10
+ add r0, #0x56
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ pop {r4, pc}
+_021D9896:
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0x54
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r2, #0x10
+ add r0, #0x56
+ strh r2, [r0]
+ add r0, r4, #0
+ mov r1, #0xa0
+ add r0, #0x58
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x5a
+ strh r2, [r0]
+ mov r0, #2
+ str r0, [r4, #0x5c]
+ pop {r4, pc}
+_021D98BA:
+ mov r0, #0
+ str r0, [r4, #0x5c]
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D98C0
+MOD15_021D98C0: ; 0x021D98C0
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021D98D8
+ add r0, r4, #0
+ add r0, #0x54
+ add r1, sp, #8
+ bl MOD15_021D9C1C
+ b _021D98E2
+_021D98D8:
+ mov r1, #0x80
+ add r0, sp, #8
+ strh r1, [r0]
+ mov r1, #0x18
+ strh r1, [r0, #2]
+_021D98E2:
+ mov r2, #0
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ add r3, r2, #0
+ bl MOD15_021D9550
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r5, sp, #8
+ mov r3, #2
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ bl MOD15_021D9594
+ str r0, [r4, #0x3c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD15_021D9E98
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ mov r2, #6
+ mov r3, #0x18
+ bl MOD15_021D9594
+ mov r1, #0xd
+ str r0, [r4, #0x40]
+ bl FUN_02020130
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ mov r2, #0xfa
+ mov r3, #0x18
+ bl MOD15_021D9594
+ str r0, [r4, #0x44]
+ mov r1, #0xc
+ bl FUN_02020130
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ beq _021D995E
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_020200A0
+_021D995E:
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9964
+MOD15_021D9964: ; 0x021D9964
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD15_021D9834
+ add r0, r4, #0
+ add r0, #0xc
+ mov r1, #0xd
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #0
+ beq _021D998A
+ cmp r0, #1
+ beq _021D99B0
+ cmp r0, #2
+ beq _021D99FA
+ b _021D9A02
+_021D998A:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x54
+ bl MOD15_021D9C30
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD15_021D8708
+ add r1, r4, #0
+ add r2, r4, #0
+ add r3, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ add r2, #0x54
+ bl MOD15_021D9C58
+ b _021D9A02
+_021D99B0:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x54
+ bl MOD15_021D9C30
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x58
+ bl MOD15_021D9C30
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD15_021D8708
+ add r1, r4, #0
+ add r2, r4, #0
+ add r3, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ add r2, #0x54
+ bl MOD15_021D9C58
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD15_021D8708
+ add r1, r4, #0
+ add r2, r4, #0
+ add r3, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ add r2, #0x58
+ bl MOD15_021D9C58
+ b _021D9A02
+_021D99FA:
+ add r0, r4, #0
+ bl MOD15_021D9A0C
+ str r0, [r4, #0x5c]
+_021D9A02:
+ add r4, #0xc
+ add r0, r4, #0
+ bl FUN_02019548
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9A0C
+MOD15_021D9A0C: ; 0x021D9A0C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r0, [sp, #0x10]
+ ldr r0, [r0, #4]
+ mov r1, #0x23
+ bl MOD15_021D8720
+ mov r4, #0
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ add r0, #0x64
+ str r4, [sp, #0x18]
+ add r5, r4, #0
+ bl MOD15_021D9B04
+ ldr r7, [sp, #0x10]
+ add r0, r7, #0
+ str r0, [sp, #0x24]
+ add r0, #0xc
+ str r0, [sp, #0x24]
+ add r0, r7, #0
+ add r6, r7, #0
+ str r0, [sp, #0x20]
+ add r0, #0x64
+ add r6, #0x54
+ str r0, [sp, #0x20]
+_021D9A46:
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x1c]
+ bl MOD15_021D9B3C
+ cmp r0, #3
+ bhi _021D9ADE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9A5E: ; jump table
+ .short _021D9A66 - _021D9A5E - 2 ; case 0
+ .short _021D9A8E - _021D9A5E - 2 ; case 1
+ .short _021D9AD4 - _021D9A5E - 2 ; case 2
+ .short _021D9ADA - _021D9A5E - 2 ; case 3
+_021D9A66:
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9AFC ; =0x0003040D
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ mov r1, #1
+ add r3, r5, #0
+ bl FUN_0201BDE0
+ ldr r1, [sp, #0x1c]
+ mov r0, #1
+ mov r2, #0
+ bl FUN_02002E14
+ add r5, r5, r0
+ b _021D9ADE
+_021D9A8E:
+ add r1, r5, #0
+ add r0, r7, #0
+ add r1, #0x32
+ add r0, #0x54
+ strh r1, [r0]
+ add r1, r4, #0
+ add r0, r7, #0
+ add r1, #8
+ add r0, #0x56
+ strh r1, [r0]
+ ldr r0, [sp, #0x24]
+ add r1, r6, #0
+ bl MOD15_021D9C30
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ ldr r0, [r0, #4]
+ bl MOD15_021D8708
+ add r3, r0, #0
+ ldr r0, _021D9B00 ; =0x0000FFFF
+ cmp r3, r0
+ beq _021D9AC6
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x24]
+ add r2, r6, #0
+ bl MOD15_021D9C58
+_021D9AC6:
+ ldr r0, [sp, #0x18]
+ add r7, r7, #4
+ add r0, r0, #1
+ add r6, r6, #4
+ str r0, [sp, #0x18]
+ add r5, #0x64
+ b _021D9ADE
+_021D9AD4:
+ add r4, #0x10
+ mov r5, #0
+ b _021D9ADE
+_021D9ADA:
+ mov r0, #0
+ str r0, [sp, #0x14]
+_021D9ADE:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _021D9A46
+ ldr r0, [sp, #0x10]
+ add r0, #0x64
+ str r0, [sp, #0x10]
+ bl MOD15_021D9B30
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9AFC: .word 0x0003040D
+_021D9B00: .word 0x0000FFFF
+
+ thumb_func_start MOD15_021D9B04
+MOD15_021D9B04: ; 0x021D9B04
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #4]
+ mov r1, #0x23
+ bl MOD15_021D8720
+ str r0, [r4]
+ bl FUN_02021F2C
+ str r0, [r4, #4]
+ ldrh r1, [r0]
+ ldr r0, _021D9B2C ; =0x0000FFFE
+ cmp r1, r0
+ bne _021D9B26
+ mov r0, #1
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021D9B26:
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+_021D9B2C: .word 0x0000FFFE
+
+ thumb_func_start MOD15_021D9B30
+MOD15_021D9B30: ; 0x021D9B30
+ ldr r3, _021D9B38 ; =0x02021A21
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9B38: .word 0x02021A21
+
+ thumb_func_start MOD15_021D9B3C
+MOD15_021D9B3C: ; 0x021D9B3C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ str r1, [sp]
+ mov ip, r0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _021D9BCC
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D9B58: ; jump table
+ .short _021D9B60 - _021D9B58 - 2 ; case 0
+ .short _021D9BB6 - _021D9B58 - 2 ; case 1
+ .short _021D9BC2 - _021D9B58 - 2 ; case 2
+ .short _021D9BCC - _021D9B58 - 2 ; case 3
+_021D9B60:
+ cmp r0, #0
+ bne _021D9B9C
+ ldr r6, _021D9C04 ; =0x0000FFFE
+ mov r3, #0xe
+ mov r0, #1
+ mov r1, #3
+ mov r2, #2
+ add r7, r6, #1
+ lsl r3, r3, #0xc
+_021D9B72:
+ ldr r5, [r4, #4]
+ ldrh r5, [r5]
+ cmp r5, r3
+ beq _021D9B84
+ cmp r5, r6
+ beq _021D9B8C
+ cmp r5, r7
+ beq _021D9B88
+ b _021D9B90
+_021D9B84:
+ str r2, [r4, #8]
+ b _021D9B96
+_021D9B88:
+ str r1, [r4, #8]
+ b _021D9B96
+_021D9B8C:
+ str r0, [r4, #8]
+ b _021D9B96
+_021D9B90:
+ ldr r5, [r4, #4]
+ add r5, r5, #2
+ str r5, [r4, #4]
+_021D9B96:
+ ldr r5, [r4, #8]
+ cmp r5, #0
+ beq _021D9B72
+_021D9B9C:
+ ldr r3, [r4, #4]
+ mov r2, ip
+ sub r3, r3, r2
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ asr r2, r2, #1
+ ldr r0, [sp]
+ mov r1, ip
+ add r2, r2, #1
+ bl FUN_02021E8C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BB6:
+ mov r0, ip
+ bl FUN_0201B8B8
+ str r0, [r4, #4]
+ mov r0, #1
+ b _021D9BD0
+_021D9BC2:
+ mov r0, ip
+ add r0, r0, #2
+ str r0, [r4, #4]
+ mov r0, #2
+ b _021D9BD0
+_021D9BCC:
+ mov r0, #3
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BD0:
+ ldr r1, [r4, #4]
+ ldrh r2, [r1]
+ mov r1, #0xe
+ lsl r1, r1, #0xc
+ cmp r2, r1
+ beq _021D9BEA
+ ldr r1, _021D9C04 ; =0x0000FFFE
+ cmp r2, r1
+ beq _021D9BF6
+ add r1, r1, #1
+ cmp r2, r1
+ beq _021D9BF0
+ b _021D9BFC
+_021D9BEA:
+ mov r1, #2
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BF0:
+ mov r1, #3
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BF6:
+ mov r1, #1
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BFC:
+ mov r1, #0
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9C04: .word 0x0000FFFE
+
+ thumb_func_start MOD15_021D9C08
+MOD15_021D9C08: ; 0x021D9C08
+ mov r2, #0
+ ldrsh r2, [r0, r2]
+ sub r2, #0x30
+ strh r2, [r1]
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ sub r0, #8
+ strh r0, [r1, #2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9C1C
+MOD15_021D9C1C: ; 0x021D9C1C
+ mov r2, #0
+ ldrsh r2, [r0, r2]
+ add r2, #0x18
+ strh r2, [r1]
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ add r0, #8
+ strh r0, [r1, #2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9C30
+MOD15_021D9C30: ; 0x021D9C30
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, sp, #8
+ bl MOD15_021D9C08
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r3, sp, #8
+ ldrh r2, [r3]
+ ldrh r3, [r3, #2]
+ add r0, r4, #0
+ mov r1, #0xe
+ bl FUN_020196F4
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021D9C58
+MOD15_021D9C58: ; 0x021D9C58
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, _021D9CA8 ; =0x0000FFFF
+ add r6, r3, #0
+ add r4, r1, #0
+ cmp r6, r0
+ beq _021D9CA2
+ add r0, r2, #0
+ add r1, sp, #0x10
+ bl MOD15_021D9C08
+ ldr r1, [r5, #0x4c]
+ add r0, r6, #0
+ bl FUN_02013A58
+ ldr r1, [r5, #0x4c]
+ mov r0, #1
+ mov r2, #0
+ bl FUN_02002E14
+ add r3, sp, #0x10
+ mov r0, #2
+ ldrsh r0, [r3, r0]
+ mov r6, #0
+ mov r1, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9CAC ; =0x0005060E
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldrsh r3, [r3, r6]
+ ldr r2, [r5, #0x4c]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+_021D9CA2:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D9CA8: .word 0x0000FFFF
+_021D9CAC: .word 0x0005060E
+
+ thumb_func_start MOD15_021D9CB0
+MOD15_021D9CB0: ; 0x021D9CB0
+ ldr r0, [r0, #0x5c]
+ bx lr
+
+ thumb_func_start MOD15_021D9CB4
+MOD15_021D9CB4: ; 0x021D9CB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, #0x1c
+ mov r1, #9
+ bl FUN_02019620
+ cmp r5, #3
+ bhi _021D9DB0
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9CD4: ; jump table
+ .short _021D9CDC - _021D9CD4 - 2 ; case 0
+ .short _021D9D66 - _021D9CD4 - 2 ; case 1
+ .short _021D9D40 - _021D9CD4 - 2 ; case 2
+ .short _021D9D8C - _021D9CD4 - 2 ; case 3
+_021D9CDC:
+ mov r0, #2
+ mov r1, #0x3c
+ mov r2, #0
+ bl FUN_0200AA90
+ add r5, r0, #0
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ mov r1, #0
+ bl FUN_020219F4
+ mov r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl FUN_0200AEE0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E8
+ add r1, r0, #0
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ bl FUN_0200A8E0
+ ldr r2, [r4, #0x4c]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x1c
+ add r2, r6, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_0200AB18
+ b _021D9DB0
+_021D9D40:
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ mov r1, #6
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ add r0, #0x1c
+ bl FUN_0201BDE0
+ b _021D9DB0
+_021D9D66:
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ mov r1, #7
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ add r0, #0x1c
+ bl FUN_0201BDE0
+ b _021D9DB0
+_021D9D8C:
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ mov r1, #8
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ add r0, #0x1c
+ bl FUN_0201BDE0
+_021D9DB0:
+ add r4, #0x1c
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D9DBC: .word 0x00010209
+
+ thumb_func_start MOD15_021D9DC0
+MOD15_021D9DC0: ; 0x021D9DC0
+ ldr r3, _021D9DC8 ; =MOD15_021D9E98
+ mov r1, #0
+ bx r3
+ nop
+_021D9DC8: .word MOD15_021D9E98
+
+ thumb_func_start MOD15_021D9DCC
+MOD15_021D9DCC: ; 0x021D9DCC
+ ldr r3, _021D9DD4 ; =MOD15_021D9E98
+ mov r1, #1
+ bx r3
+ nop
+_021D9DD4: .word MOD15_021D9E98
+
+ thumb_func_start MOD15_021D9DD8
+MOD15_021D9DD8: ; 0x021D9DD8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ bl FUN_020200A0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD15_021D9E98
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9DEC
+MOD15_021D9DEC: ; 0x021D9DEC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ bne _021D9E0A
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ bl FUN_020200A0
+_021D9E0A:
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9E0C
+MOD15_021D9E0C: ; 0x021D9E0C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ bne _021D9E3A
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #0x40]
+ mov r1, #0xd
+ bl FUN_02020130
+ ldr r0, [r4, #0x44]
+ mov r1, #0xc
+ bl FUN_02020130
+_021D9E3A:
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9E3C
+MOD15_021D9E3C: ; 0x021D9E3C
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021D9E6C
+ add r2, r4, #0
+ lsl r0, r1, #2
+ add r2, #0x54
+ add r0, r2, r0
+ add r1, sp, #0
+ bl MOD15_021D9C1C
+ add r1, sp, #0
+ mov r2, #0
+ ldrsh r0, [r1, r2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ b _021D9E84
+_021D9E6C:
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [sp, #4]
+ mov r0, #6
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #4
+ bl FUN_02020044
+_021D9E84:
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #4
+ bl FUN_02020044
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD15_021D9E98
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9E98
+MOD15_021D9E98: ; 0x021D9E98
+ push {r3, lr}
+ ldr r2, [r0, #0x5c]
+ cmp r2, #0
+ beq _021D9EB6
+ cmp r1, #0
+ ldr r0, [r0, #0x3c]
+ beq _021D9EAE
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+_021D9EAE:
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021D9EB6:
+ cmp r1, #0
+ ldr r0, [r0, #0x3c]
+ beq _021D9EC4
+ mov r1, #0xe
+ bl FUN_02020130
+ pop {r3, pc}
+_021D9EC4:
+ mov r1, #0xf
+ bl FUN_02020130
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D9ECC
+MOD15_021D9ECC: ; 0x021D9ECC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x2c
+ mov r1, #9
+ bl FUN_02019620
+ ldr r0, [r5, #0x48]
+ ldr r2, [r5, #0x4c]
+ mov r1, #9
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9F54 ; =0x00010209
+ mov r3, #0xe
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x4c]
+ add r0, #0x2c
+ bl FUN_0201BDE0
+ ldr r0, [r5, #0x48]
+ ldr r2, [r5, #0x4c]
+ mov r1, #0xa
+ bl FUN_0200A8E0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9F54 ; =0x00010209
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x4c]
+ add r0, #0x2c
+ mov r3, #0xe
+ bl FUN_0201BDE0
+ ldr r2, [r5, #0x60]
+ add r0, r5, #0
+ lsl r2, r2, #0x10
+ add r0, #0x2c
+ mov r1, #0
+ lsr r2, r2, #0x10
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ add r1, r5, #0
+ ldr r0, [r5, #0x50]
+ add r1, #0x2c
+ mov r2, #0
+ lsl r3, r4, #4
+ bl FUN_020136F8
+ add r5, #0x2c
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D9F54: .word 0x00010209
+
+ thumb_func_start MOD15_021D9F58
+MOD15_021D9F58: ; 0x021D9F58
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0
+ add r4, r1, #0
+ add r0, #0x2c
+ mov r1, #9
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, [r5, #0x50]
+ add r5, #0x2c
+ add r1, r5, #0
+ mov r2, #0
+ lsl r3, r4, #4
+ bl FUN_020136F8
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9F88
+MOD15_021D9F88: ; 0x021D9F88
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x2c
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r4, #0x2c
+ add r0, r4, #0
+ bl FUN_02019570
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9FA0
+MOD15_021D9FA0: ; 0x021D9FA0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0x23
+ mov r1, #0x10
+ add r6, r2, #0
+ bl FUN_02016998
+ str r5, [r0]
+ str r4, [r0, #4]
+ str r6, [r0, #8]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D9FBC
+MOD15_021D9FBC: ; 0x021D9FBC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021D9FCA
+ bl FUN_0201FFC8
+_021D9FCA:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9FD4
+MOD15_021D9FD4: ; 0x021D9FD4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #4
+ add r2, r4, #0
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #5
+ add r2, r4, #0
+ mov r3, #3
+ bl FUN_0200687C
+ ldr r1, _021DA03C ; =0x021DBA00
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD15_021DA044
+ ldr r1, _021DA040 ; =0x021DBA08
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD15_021DA044
+ add r0, r5, #0
+ bl MOD15_021DA0B8
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02017CD0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA03C: .word 0x021DBA00
+_021DA040: .word 0x021DBA08
+
+ thumb_func_start MOD15_021DA044
+MOD15_021DA044: ; 0x021DA044
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r1, #0
+ add r4, r2, #0
+ add r1, sp, #0x10
+ add r2, r5, #0
+ bl FUN_02019150
+ add r0, sp, #0x10
+ bl FUN_02019270
+ add r0, sp, #0x10
+ mov r1, #0xe
+ bl FUN_02019620
+ ldr r1, _021DA0B0 ; =0x00000183
+ mov r0, #0x1a
+ add r2, r4, #0
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r5, #3]
+ add r2, r4, #0
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ mov r1, #0
+ lsr r3, r0, #1
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DA0B4 ; =0x0001020E
+ str r0, [sp, #8]
+ add r0, sp, #0x10
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x10
+ bl FUN_02019548
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, sp, #0x10
+ bl FUN_02019178
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ nop
+_021DA0B0: .word 0x00000183
+_021DA0B4: .word 0x0001020E
+
+ thumb_func_start MOD15_021DA0B8
+MOD15_021DA0B8: ; 0x021DA0B8
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0
+ mov r3, #3
+ bl MOD15_021D9550
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0x40
+ mov r3, #0x38
+ bl MOD15_021D9594
+ str r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA0F4
+MOD15_021DA0F4: ; 0x021DA0F4
+ ldr r3, _021DA0FC ; =0x02020131
+ ldr r0, [r0, #0xc]
+ mov r1, #3
+ bx r3
+ .align 2, 0
+_021DA0FC: .word 0x02020131
+
+ thumb_func_start MOD15_021DA100
+MOD15_021DA100: ; 0x021DA100
+ ldr r3, _021DA108 ; =0x02020131
+ ldr r0, [r0, #0xc]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021DA108: .word 0x02020131
+
+ thumb_func_start MOD15_021DA10C
+MOD15_021DA10C: ; 0x021DA10C
+ ldr r3, _021DA114 ; =0x020200A1
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_021DA114: .word 0x020200A1
+
+ thumb_func_start MOD15_021DA118
+MOD15_021DA118: ; 0x021DA118
+ ldr r3, _021DA120 ; =0x02020129
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_021DA120: .word 0x02020129
+
+ thumb_func_start MOD15_021DA124
+MOD15_021DA124: ; 0x021DA124
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp, #8]
+ cmp r1, #0
+ beq _021DA136
+ cmp r1, #1
+ beq _021DA144
+_021DA136:
+ mov r0, #1
+ lsl r0, r0, #0x12
+ str r0, [sp]
+ mov r0, #0xe
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ b _021DA150
+_021DA144:
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r0, [sp]
+ mov r0, #0xe
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+_021DA150:
+ ldr r0, [r4, #0xc]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DA164
+MOD15_021DA164: ; 0x021DA164
+ push {r3, lr}
+ ldr r0, [r0]
+ bl MOD15_021D9548
+ mov r1, #3
+ add r2, r1, #0
+ mov r3, #0x40
+ bl FUN_020179E0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA178
+MOD15_021DA178: ; 0x021DA178
+ push {r3, lr}
+ ldr r0, [r0]
+ bl MOD15_021D9548
+ mov r1, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA18C
+MOD15_021DA18C: ; 0x021DA18C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x23
+ mov r1, #0x60
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ add r0, r5, #0
+ bl MOD15_021D9548
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x5c]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD15_021DA1B8
+MOD15_021DA1B8: ; 0x021DA1B8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021DA1C6
+ bl FUN_0201FFC8
+_021DA1C6:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA1D0
+MOD15_021DA1D0: ; 0x021DA1D0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200687C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ lsr r2, r2, #5
+ bl MOD15_021DA2AC
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD15_021DA3B4
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD15_021DA480
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #1
+ sub r3, r2, #4
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #3
+ mov r3, #2
+ bl FUN_020179E0
+ add r0, r5, #0
+ bl MOD15_021DA54C
+ mov r1, #2
+ add r2, r1, #0
+ ldr r0, _021DA2A0 ; =0x04000050
+ sub r2, #0xc
+ bl G2x_SetBlendBrightness_
+ ldr r0, _021DA2A4 ; =0x04000048
+ mov r2, #0x3f
+ ldrh r3, [r0]
+ mov r1, #0x1f
+ bic r3, r2
+ orr r3, r1
+ mov r1, #0x20
+ orr r3, r1
+ strh r3, [r0]
+ ldrh r3, [r0, #2]
+ bic r3, r2
+ mov r2, #0x1d
+ orr r2, r3
+ orr r2, r1
+ strh r2, [r0, #2]
+ add r2, r0, #0
+ mov r3, #0xff
+ sub r2, #8
+ strh r3, [r2]
+ mov r2, #0xa0
+ sub r0, r0, #4
+ strh r2, [r0]
+ lsl r3, r1, #0x15
+ ldr r2, [r3]
+ ldr r0, _021DA2A8 ; =0xFFFF1FFF
+ and r2, r0
+ lsl r0, r1, #8
+ orr r0, r2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02017CD0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021DA2A0: .word 0x04000050
+_021DA2A4: .word 0x04000048
+_021DA2A8: .word 0xFFFF1FFF
+
+ thumb_func_start MOD15_021DA2AC
+MOD15_021DA2AC: ; 0x021DA2AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r6, r2, #0
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r2, _021DA3A4 ; =0x00000181
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #0x23
+ bl FUN_0200A86C
+ str r0, [sp, #0x20]
+ mov r0, #9
+ mov r7, #1
+ str r0, [sp, #0x24]
+ mov r4, #0
+_021DA2CC:
+ cmp r4, #0
+ beq _021DA2E4
+ add r0, r4, #0
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021DA2E4
+ ldr r0, [sp, #0x24]
+ mov r7, #1
+ add r0, r0, #3
+ str r0, [sp, #0x24]
+_021DA2E4:
+ ldr r0, [sp, #0x14]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ bl FUN_020892C4
+ cmp r0, #0
+ beq _021DA302
+ ldr r0, [sp, #0x20]
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ ldr r0, _021DA3A8 ; =0x0001020F
+ str r0, [sp, #0x1c]
+ b _021DA310
+_021DA302:
+ ldr r0, [sp, #0x20]
+ mov r1, #0xc
+ bl FUN_0200A914
+ add r5, r0, #0
+ ldr r0, _021DA3AC ; =0x0003040F
+ str r0, [sp, #0x1c]
+_021DA310:
+ ldr r0, _021DA3B0 ; =0x000003EE
+ cmp r6, r0
+ blo _021DA31A
+ bl ErrorHandling
+_021DA31A:
+ ldr r0, [sp, #0x24]
+ lsl r3, r7, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ add r1, sp, #0x28
+ mov r2, #1
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, sp, #0x28
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x48
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x28
+ add r2, r5, #0
+ bl FUN_0201BDE0
+ add r0, sp, #0x28
+ bl FUN_02019270
+ add r0, sp, #0x28
+ bl FUN_02019548
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, sp, #0x28
+ bl FUN_02019178
+ add r4, r4, #1
+ add r6, #0x12
+ add r7, #0xa
+ cmp r4, #0xc
+ blt _021DA2CC
+ ldr r0, [sp, #0x20]
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DA3A4: .word 0x00000181
+_021DA3A8: .word 0x0001020F
+_021DA3AC: .word 0x0003040F
+_021DA3B0: .word 0x000003EE
+
+ thumb_func_start MOD15_021DA3B4
+MOD15_021DA3B4: ; 0x021DA3B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r4, r1, #0
+ mov r1, #0xce
+ add r6, r0, #0
+ lsl r1, r1, #2
+ add r0, r2, #0
+ str r2, [sp, #0x14]
+ cmp r0, r1
+ blo _021DA3CC
+ bl ErrorHandling
+_021DA3CC:
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x19
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x20
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0x22
+ bl FUN_02019064
+ mov r0, #4
+ mov r1, #0x23
+ bl FUN_020219F4
+ add r4, r0, #0
+ add r0, sp, #0x20
+ mov r1, #0xf
+ bl FUN_02019620
+ bl MOD15_021DB770
+ add r7, r0, #0
+ ldr r5, _021DA474 ; =0x00000000
+ beq _021DA452
+_021DA40C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD15_021DB774
+ add r0, r5, #0
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ bl MOD15_021DB798
+ ldr r0, [r6, #8]
+ add r1, r5, #0
+ bl FUN_02089300
+ cmp r0, #0
+ beq _021DA42E
+ ldr r1, _021DA478 ; =0x0001020F
+ b _021DA430
+_021DA42E:
+ ldr r1, _021DA47C ; =0x0003040F
+_021DA430:
+ ldr r0, [sp, #0x18]
+ add r2, r4, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x1c]
+ add r0, sp, #0x20
+ mov r1, #0
+ add r3, r3, #3
+ bl FUN_0201BDE0
+ add r5, r5, #1
+ cmp r5, r7
+ blo _021DA40C
+_021DA452:
+ add r0, sp, #0x20
+ bl FUN_02019548
+ add r0, sp, #0x20
+ bl FUN_02019270
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, sp, #0x20
+ bl FUN_02019178
+ ldr r0, [sp, #0x14]
+ add r0, #0xc8
+ str r0, [sp, #0x14]
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA474: .word 0x00000000
+_021DA478: .word 0x0001020F
+_021DA47C: .word 0x0003040F
+
+ thumb_func_start MOD15_021DA480
+MOD15_021DA480: ; 0x021DA480
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r2, #0
+ str r1, [sp, #0x14]
+ ldr r2, _021DA540 ; =0x00000181
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #0x23
+ bl FUN_0200A86C
+ mov r1, #0xd
+ str r0, [sp, #0x20]
+ bl FUN_0200A914
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ ldr r1, [sp, #0x1c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x40
+ sub r0, r1, r0
+ lsr r0, r0, #1
+ ldr r4, _021DA544 ; =0x021DBA10
+ str r0, [sp, #0x18]
+ mov r7, #0
+ add r6, sp, #0x24
+_021DA4B6:
+ mov r0, #0x3f
+ lsl r0, r0, #4
+ cmp r5, r0
+ blo _021DA4C2
+ bl ErrorHandling
+_021DA4C2:
+ ldrh r0, [r4, #2]
+ add r1, r6, #0
+ mov r2, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldrh r3, [r4]
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r6, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DA548 ; =0x0001020F
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02019270
+ add r0, r6, #0
+ bl FUN_02019548
+ add r0, r6, #0
+ bl FUN_02019178
+ add r7, r7, #1
+ add r5, #0x10
+ add r4, r4, #4
+ cmp r7, #2
+ blo _021DA4B6
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x20]
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DA540: .word 0x00000181
+_021DA544: .word 0x021DBA10
+_021DA548: .word 0x0001020F
+
+ thumb_func_start MOD15_021DA54C
+MOD15_021DA54C: ; 0x021DA54C
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0
+ mov r3, #1
+ bl MOD15_021D9550
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0x30
+ mov r3, #0x36
+ bl MOD15_021D9594
+ str r0, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_02020130
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA588
+MOD15_021DA588: ; 0x021DA588
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x5c]
+ add r4, r1, #0
+ bl FUN_020200A0
+ cmp r4, #0
+ beq _021DA5B2
+ ldr r0, [r5, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ ldr r0, [r5, #0x5c]
+ bne _021DA5AC
+ mov r1, #4
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DA5AC:
+ mov r1, #6
+ bl FUN_02020130
+_021DA5B2:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021DA5B4
+MOD15_021DA5B4: ; 0x021DA5B4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ add r5, r1, #0
+ bl MOD15_021D86F4
+ mov r1, #0
+ str r1, [sp, #0x10]
+ cmp r5, #0xfe
+ bne _021DA5D6
+ mov r0, #0x84
+ str r0, [sp, #8]
+ mov r0, #0x96
+ str r0, [sp, #0xc]
+ mov r5, #0x10
+ b _021DA616
+_021DA5D6:
+ cmp r0, #0
+ bne _021DA5FE
+ add r0, r5, #0
+ mov r1, #3
+ bl _u32_div_f
+ mov r0, #0x50
+ mul r0, r1
+ add r0, #0x30
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #3
+ bl _u32_div_f
+ mov r1, #0x18
+ mul r1, r0
+ add r1, #0x36
+ str r1, [sp, #0xc]
+ mov r5, #4
+ b _021DA616
+_021DA5FE:
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD15_021DB798
+ ldr r0, [sp, #4]
+ mov r5, #6
+ add r0, #0x1a
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ add r0, #0x3e
+ str r0, [sp, #0xc]
+_021DA616:
+ ldr r0, [sp, #8]
+ add r1, sp, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x5c]
+ bl FUN_02020044
+ ldr r0, [r4, #0x5c]
+ add r1, r5, #0
+ bl FUN_02020130
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA638
+MOD15_021DA638: ; 0x021DA638
+ push {r3, lr}
+ mov r3, #0
+ str r3, [r0, #0x14]
+ mov r1, #0x10
+ str r1, [sp]
+ mov r1, #2
+ add r2, r1, #0
+ add r0, #0x1c
+ sub r2, #0xc
+ bl MOD15_021DB6DC
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA650
+MOD15_021DA650: ; 0x021DA650
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DA662
+ cmp r0, #1
+ beq _021DA68C
+ b _021DA698
+_021DA662:
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD15_021DB71C
+ cmp r0, #0
+ beq _021DA698
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #1
+ ldr r1, [r4, #0xc]
+ add r0, #0x3c
+ add r3, r2, #0
+ bl MOD15_021DB564
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ b _021DA698
+_021DA68C:
+ add r4, #0x3c
+ add r0, r4, #0
+ bl MOD15_021DB5B8
+ add sp, #8
+ pop {r4, pc}
+_021DA698:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA6A0
+MOD15_021DA6A0: ; 0x021DA6A0
+ push {r3, lr}
+ sub sp, #8
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [r1, #0x14]
+ sub r0, #0x18
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ add r0, r1, #0
+ mov r2, #1
+ ldr r1, [r1, #0xc]
+ add r0, #0x3c
+ add r3, r2, #0
+ bl MOD15_021DB564
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA6C4
+MOD15_021DA6C4: ; 0x021DA6C4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DA6D6
+ cmp r0, #1
+ beq _021DA6FE
+ b _021DA70A
+_021DA6D6:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD15_021DB5B8
+ cmp r0, #0
+ beq _021DA70A
+ mov r0, #0x10
+ mov r2, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r3, r2, #0
+ add r0, #0x1c
+ mov r1, #2
+ sub r3, #0xa
+ bl MOD15_021DB6DC
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ b _021DA70A
+_021DA6FE:
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD15_021DB71C
+ add sp, #4
+ pop {r3, r4, pc}
+_021DA70A:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DA710
+MOD15_021DA710: ; 0x021DA710
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ mov r1, #1
+ mov r2, #3
+ mov r3, #2
+ bl FUN_020179E0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA720
+MOD15_021DA720: ; 0x021DA720
+ push {r3, lr}
+ mov r2, #0
+ mov r1, #0x10
+ add r3, r2, #0
+ str r1, [sp]
+ add r0, #0x1c
+ mov r1, #2
+ sub r3, #0xa
+ bl MOD15_021DB6DC
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA738
+MOD15_021DA738: ; 0x021DA738
+ ldr r3, _021DA740 ; =MOD15_021DB71C
+ add r0, #0x1c
+ bx r3
+ nop
+_021DA740: .word MOD15_021DB71C
+
+ thumb_func_start MOD15_021DA744
+MOD15_021DA744: ; 0x021DA744
+ push {r3, lr}
+ sub sp, #8
+ mov r1, #0
+ str r1, [sp]
+ mov r1, #0xc
+ str r1, [sp, #4]
+ add r0, #0x1c
+ mov r1, #2
+ mov r2, #0x3f
+ mov r3, #0x7c
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA760
+MOD15_021DA760: ; 0x021DA760
+ push {r3, lr}
+ add r0, #0x1c
+ bl MOD15_021DB678
+ cmp r0, #0
+ beq _021DA778
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #1
+ pop {r3, pc}
+_021DA778:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA77C
+MOD15_021DA77C: ; 0x021DA77C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021DA7B4 ; =0x04000050
+ mov r1, #2
+ mov r2, #0x3f
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #0x7c
+ str r0, [sp]
+ mov r0, #0xc
+ add r4, #0x1c
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #0x3f
+ mov r3, #0
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021DA7B4: .word 0x04000050
+
+ thumb_func_start MOD15_021DA7B8
+MOD15_021DA7B8: ; 0x021DA7B8
+ ldr r3, _021DA7C0 ; =MOD15_021DB678
+ add r0, #0x1c
+ bx r3
+ nop
+_021DA7C0: .word MOD15_021DB678
+
+ thumb_func_start MOD15_021DA7C4
+MOD15_021DA7C4: ; 0x021DA7C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ bne _021DA7D8
+ mov r3, #3
+ mvn r3, r3
+ b _021DA7DA
+_021DA7D8:
+ mov r3, #0xfc
+_021DA7DA:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_020179E0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA7E8
+MOD15_021DA7E8: ; 0x021DA7E8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ bne _021DA7FE
+ mov r0, #0xff
+ mvn r0, r0
+ b _021DA802
+_021DA7FE:
+ mov r0, #1
+ lsl r0, r0, #8
+_021DA802:
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x3c
+ mov r2, #1
+ mov r3, #0
+ bl MOD15_021DB564
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA81C
+MOD15_021DA81C: ; 0x021DA81C
+ ldr r3, _021DA824 ; =MOD15_021DB5B8
+ add r0, #0x3c
+ bx r3
+ nop
+_021DA824: .word MOD15_021DB5B8
+
+ thumb_func_start MOD15_021DA828
+MOD15_021DA828: ; 0x021DA828
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x23
+ mov r1, #0x94
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ add r0, r5, #0
+ bl MOD15_021D9548
+ str r0, [r4, #0xc]
+ mov r0, #0x20
+ mov r1, #0x23
+ bl FUN_020219F4
+ str r0, [r4, #0x3c]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x10
+ mov r2, #2
+ mov r3, #4
+ bl FUN_02019064
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #0xc
+ str r1, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x20
+ mov r2, #2
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA8A4
+MOD15_021DA8A4: ; 0x021DA8A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021DA8B2
+ bl FUN_0201FFC8
+_021DA8B2:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ beq _021DA8BC
+ bl FUN_0201FFC8
+_021DA8BC:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ beq _021DA8C6
+ bl FUN_0201FFC8
+_021DA8C6:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021DA8D0
+ bl FUN_02021A20
+_021DA8D0:
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019178
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DA8E8
+MOD15_021DA8E8: ; 0x021DA8E8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r4, r0, #0
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x23
+ bl FUN_02017F18
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02018540
+ add r0, r5, #0
+ add r0, #0x10
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_02019548
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD15_021DA950
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA950
+MOD15_021DA950: ; 0x021DA950
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0
+ mov r3, #2
+ bl MOD15_021D9550
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0x48
+ mov r3, #0x38
+ bl MOD15_021D9594
+ str r0, [r4, #0x30]
+ mov r1, #8
+ bl FUN_02020130
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0xf0
+ mov r3, #0x40
+ bl MOD15_021D9594
+ str r0, [r4, #0x34]
+ mov r1, #0xb
+ bl FUN_02020130
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0xf0
+ mov r3, #0x90
+ bl MOD15_021D9594
+ str r0, [r4, #0x38]
+ mov r1, #0xa
+ bl FUN_02020130
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA9D4
+MOD15_021DA9D4: ; 0x021DA9D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r0, #0x10
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #0
+ bl MOD15_021DAD78
+ ldr r0, [r6, #4]
+ bl MOD15_021D8744
+ add r7, r0, #0
+ cmp r7, #0xa
+ bls _021DA9F4
+ mov r7, #0xa
+_021DA9F4:
+ add r0, r6, #0
+ add r0, #0x8c
+ mov r5, #0
+ ldr r4, [r0]
+ cmp r7, #0
+ bls _021DAA18
+_021DAA00:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD15_021DAD98
+ mov r0, #1
+ tst r0, r5
+ beq _021DAA12
+ add r4, #0x18
+_021DAA12:
+ add r5, r5, #1
+ cmp r5, r7
+ blo _021DAA00
+_021DAA18:
+ add r6, #0x10
+ add r0, r6, #0
+ bl FUN_02019548
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAA24
+MOD15_021DAA24: ; 0x021DAA24
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021DAABC ; =0x04000050
+ mov r1, #4
+ mov r2, #0x3f
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldr r1, _021DAAC0 ; =0x04000048
+ ldr r0, _021DAAC4 ; =0xFFFFC0FF
+ ldrh r2, [r1]
+ mov r5, #0xff
+ and r2, r0
+ mov r0, #0x1f
+ lsl r0, r0, #8
+ orr r2, r0
+ lsr r0, r1, #0xd
+ orr r0, r2
+ strh r0, [r1]
+ add r0, r4, #0
+ ldrb r2, [r1, #2]
+ add r0, #0x84
+ strb r2, [r0]
+ add r0, r1, #0
+ sub r0, #0x48
+ mov r2, #0xe
+ ldr r3, [r0]
+ lsl r2, r2, #0xc
+ and r2, r3
+ lsr r3, r2, #0xd
+ add r2, r4, #0
+ add r2, #0x88
+ str r3, [r2]
+ ldrh r3, [r1, #2]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x1b
+ orr r3, r2
+ mov r2, #0x20
+ orr r3, r2
+ strh r3, [r1, #2]
+ sub r3, r1, #6
+ strh r5, [r3]
+ ldr r3, _021DAAC8 ; =0x00002EB0
+ sub r1, r1, #2
+ strh r3, [r1]
+ ldr r3, [r0]
+ ldr r1, _021DAACC ; =0xFFFF1FFF
+ and r3, r1
+ lsl r1, r2, #9
+ orr r1, r3
+ str r1, [r0]
+ add r0, r4, #0
+ mov r3, #0
+ add r0, #0x80
+ str r3, [r0]
+ mov r0, #0x7c
+ str r0, [sp]
+ mov r0, #0xc
+ add r4, #0x40
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0x3f
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021DAABC: .word 0x04000050
+_021DAAC0: .word 0x04000048
+_021DAAC4: .word 0xFFFFC0FF
+_021DAAC8: .word 0x00002EB0
+_021DAACC: .word 0xFFFF1FFF
+
+ thumb_func_start MOD15_021DAAD0
+MOD15_021DAAD0: ; 0x021DAAD0
+ push {r3, lr}
+ add r1, r0, #0
+ add r1, #0x80
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021DAAEE
+ add r0, #0x40
+ bl MOD15_021DB678
+ cmp r0, #0
+ beq _021DAAEA
+ mov r0, #1
+ pop {r3, pc}
+_021DAAEA:
+ mov r0, #0
+ pop {r3, pc}
+_021DAAEE:
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAAF4
+MOD15_021DAAF4: ; 0x021DAAF4
+ push {r3, lr}
+ sub sp, #8
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x80
+ str r2, [r1]
+ str r2, [sp]
+ mov r1, #0xc
+ str r1, [sp, #4]
+ add r0, #0x40
+ mov r1, #4
+ mov r2, #0x3f
+ mov r3, #0x7c
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAB18
+MOD15_021DAB18: ; 0x021DAB18
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DAB70
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD15_021DB678
+ cmp r0, #0
+ beq _021DAB74
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, _021DAB78 ; =0x0400004A
+ ldrh r2, [r0]
+ mov r0, #0x3f
+ bic r2, r0
+ add r0, r4, #0
+ add r0, #0x84
+ ldrb r0, [r0]
+ lsl r1, r0, #0x1b
+ lsr r1, r1, #0x1b
+ lsl r0, r0, #0x1a
+ orr r1, r2
+ lsr r0, r0, #0x1f
+ beq _021DAB56
+ mov r0, #0x20
+ orr r1, r0
+_021DAB56:
+ ldr r2, _021DAB78 ; =0x0400004A
+ ldr r0, _021DAB7C ; =0xFFFF1FFF
+ strh r1, [r2]
+ sub r2, #0x4a
+ ldr r1, [r2]
+ add r4, #0x88
+ and r1, r0
+ ldr r0, [r4]
+ lsl r0, r0, #0xd
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #1
+ pop {r4, pc}
+_021DAB70:
+ mov r0, #1
+ pop {r4, pc}
+_021DAB74:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021DAB78: .word 0x0400004A
+_021DAB7C: .word 0xFFFF1FFF
+
+ thumb_func_start MOD15_021DAB80
+MOD15_021DAB80: ; 0x021DAB80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl FUN_020200A0
+ cmp r4, #0
+ beq _021DABAE
+ ldr r0, [r5, #4]
+ bl MOD15_021D87AC
+ add r1, r0, #0
+ ldr r0, [r5, #0x34]
+ bl FUN_020200A0
+ ldr r0, [r5, #4]
+ bl MOD15_021D87C0
+ add r1, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+_021DABAE:
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021DABC0
+MOD15_021DABC0: ; 0x021DABC0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r2, r1, #0
+ mov r0, #1
+ and r2, r0
+ mov r0, #0x70
+ mul r0, r2
+ add r0, #0x48
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ lsr r1, r1, #1
+ mov r0, #0x18
+ mul r0, r1
+ add r0, #0x38
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x30]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4, #0x30]
+ mov r1, #8
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DABFC
+MOD15_021DABFC: ; 0x021DABFC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ add r4, r1, #0
+ bl MOD15_021DACEC
+ add r0, r7, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ lsl r6, r4, #1
+ str r0, [sp, #0x10]
+ add r0, r0, r6
+ str r0, [sp, #0x14]
+ mov r0, #0x18
+ mul r0, r4
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ add r1, r0, r1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x18]
+ cmp r4, #0
+ bge _021DAC40
+ ldr r0, [sp, #0x14]
+ add r5, r1, #0
+ str r0, [sp, #0x10]
+ lsl r0, r4, #2
+ neg r0, r0
+ neg r6, r6
+ str r0, [sp, #0xc]
+ b _021DAC60
+_021DAC40:
+ add r0, #0x78
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [sp, #0x10]
+ add r0, #0xa
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ bl MOD15_021D8744
+ ldr r1, [sp, #0x10]
+ add r1, r6, r1
+ cmp r1, r0
+ bls _021DAC5C
+ sub r6, r6, #1
+_021DAC5C:
+ lsl r0, r4, #2
+ str r0, [sp, #0xc]
+_021DAC60:
+ mov r4, #0
+ cmp r6, #0
+ ble _021DAC84
+_021DAC66:
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0
+ add r1, r1, r4
+ add r2, r5, #0
+ bl MOD15_021DAD98
+ mov r0, #1
+ tst r0, r4
+ beq _021DAC7E
+ add r5, #0x18
+ lsl r0, r5, #0x18
+ lsr r5, r0, #0x18
+_021DAC7E:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021DAC66
+_021DAC84:
+ add r1, r7, #0
+ ldr r0, [sp, #0x18]
+ add r1, #0x8c
+ str r0, [r1]
+ add r1, r7, #0
+ ldr r0, [sp, #0x14]
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r7, #0
+ add r0, #0x10
+ bl FUN_02019548
+ ldr r0, [sp, #8]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r3, #1
+ str r0, [sp, #4]
+ add r0, r7, #0
+ ldr r1, [r7, #0xc]
+ add r0, #0x60
+ bl MOD15_021DB564
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DACB8
+MOD15_021DACB8: ; 0x021DACB8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x60
+ bl MOD15_021DB5B8
+ cmp r0, #0
+ beq _021DACE6
+ ldr r0, [r4, #4]
+ bl MOD15_021D87AC
+ add r1, r0, #0
+ ldr r0, [r4, #0x34]
+ bl FUN_020200A0
+ ldr r0, [r4, #4]
+ bl MOD15_021D87C0
+ add r1, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_020200A0
+ mov r0, #1
+ pop {r4, pc}
+_021DACE6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DACEC
+MOD15_021DACEC: ; 0x021DACEC
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ cmp r1, #0
+ ble _021DAD0C
+ add r0, #0x8c
+ ldr r0, [r0]
+ add r0, #0x78
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r3, r0
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ b _021DAD1A
+_021DAD0C:
+ add r0, #0x8c
+ ldr r4, [r0]
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+_021DAD1A:
+ cmp r3, r4
+ bge _021DAD3E
+ mov r0, #0xd0
+ str r0, [sp]
+ sub r0, r4, r3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0
+ lsl r3, r3, #0x10
+ add r5, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r1, #0
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021DAD3E:
+ mov r0, #0xd0
+ str r0, [sp]
+ add r0, #0x30
+ sub r0, r0, r3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #0
+ lsl r3, r3, #0x10
+ add r0, #0x10
+ add r2, r1, #0
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xd0
+ str r0, [sp]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r5, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021DAD78
+MOD15_021DAD78: ; 0x021DAD78
+ push {r3, lr}
+ add r1, r0, #0
+ mov r2, #0x30
+ add r1, #0x8c
+ str r2, [r1]
+ add r1, r0, #0
+ mov r3, #0
+ add r1, #0x90
+ str r3, [r1]
+ ldr r0, [r0, #0xc]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAD98
+MOD15_021DAD98: ; 0x021DAD98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r4, r2, #0
+ ldr r0, [r5, #4]
+ ldr r2, [r5, #0x3c]
+ add r7, r1, #0
+ bl MOD15_021D8768
+ cmp r4, #0xf0
+ bhi _021DADD4
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DAE64 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r3, #1
+ add r4, r7, #0
+ and r4, r3
+ mov r3, #0x70
+ ldr r2, [r5, #0x3c]
+ add r0, #0x10
+ mul r3, r4
+ bl FUN_0201BDE0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DADD4:
+ mov r0, #1
+ lsl r0, r0, #8
+ sub r6, r0, r4
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DAE64 ; =0x00010200
+ add r3, r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x3c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ mov r2, #0
+ mov r0, #1
+ add r1, r7, #0
+ and r1, r0
+ add r7, r1, #0
+ mov r0, #0x70
+ mul r7, r0
+ mov r0, #0x60
+ str r0, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ lsl r1, r7, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #8]
+ lsl r1, r4, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ ldr r1, [r5, #0x2c]
+ add r0, #0x10
+ add r3, r2, #0
+ bl FUN_02019658
+ mov r1, #0x60
+ lsl r2, r7, #0x10
+ lsl r3, r6, #0x10
+ str r1, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ lsr r2, r2, #0x10
+ str r2, [sp, #8]
+ mov r2, #0
+ sub r0, r0, r6
+ str r2, [sp, #0xc]
+ lsl r0, r0, #0x10
+ str r1, [sp, #0x10]
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ ldr r1, [r5, #0x2c]
+ add r0, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAE64: .word 0x00010200
+
+ thumb_func_start MOD15_021DAE68
+MOD15_021DAE68: ; 0x021DAE68
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #5
+ add r5, r0, #0
+ mov r0, #0x23
+ lsl r1, r1, #8
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ add r0, r5, #0
+ bl MOD15_021D9548
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD15_021D954C
+ str r0, [r4, #0x10]
+ mov r1, #0
+ str r1, [r4, #0x14]
+ ldr r0, _021DAEA0 ; =0x000004FC
+ str r1, [r4, #0x18]
+ str r1, [r4, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAEA0: .word 0x000004FC
+
+ thumb_func_start MOD15_021DAEA4
+MOD15_021DAEA4: ; 0x021DAEA4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD15_021DB200
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DAEB4
+MOD15_021DAEB4: ; 0x021DAEB4
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0x23
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0x15
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x4c
+ mov r1, #0xb
+ mov r3, #4
+ bl FUN_020068C8
+ add r0, r4, #0
+ bl MOD15_021DAFAC
+ add r0, r4, #0
+ bl MOD15_021DAFF8
+ ldr r0, [r4, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ bne _021DAF4A
+ mov r2, #0xb
+ ldr r0, _021DAFA4 ; =0x000001FA
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, r4, r0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ mov r2, #3
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018170
+ mov r2, #0xb
+ mov r0, #0xa5
+ lsl r0, r0, #2
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, r4, r0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ mov r2, #3
+ mov r3, #0xe
+ bl FUN_02018170
+ b _021DAF92
+_021DAF4A:
+ mov r2, #0xb
+ add r0, r4, #0
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ mov r2, #3
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018170
+ mov r2, #0xb
+ ldr r0, _021DAFA8 ; =0x00000462
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, r4, r0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ mov r2, #3
+ mov r3, #0xe
+ bl FUN_02018170
+_021DAF92:
+ add r0, r4, #0
+ bl MOD15_021DB154
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl FUN_02017CD0
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_021DAFA4: .word 0x000001FA
+_021DAFA8: .word 0x00000462
+
+ thumb_func_start MOD15_021DAFAC
+MOD15_021DAFAC: ; 0x021DAFAC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r4, _021DAFF4 ; =0x021DBA20
+ mov r6, #0
+ add r5, #0x2c
+_021DAFB8:
+ mov r0, #0x23
+ str r0, [sp]
+ ldrh r1, [r4]
+ mov r0, #0x4c
+ mov r2, #1
+ add r3, sp, #4
+ bl FUN_02006BDC
+ add r7, r0, #0
+ beq _021DAFE6
+ ldr r0, [sp, #4]
+ add r1, r5, #0
+ add r0, #0xc
+ mov r2, #0x9a
+ bl MIi_CpuCopy16
+ add r0, r5, #0
+ mov r1, #0x9a
+ bl DC_FlushRange
+ add r0, r7, #0
+ bl FUN_02016A18
+_021DAFE6:
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, #0x9a
+ cmp r6, #8
+ blo _021DAFB8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAFF4: .word 0x021DBA20
+
+ thumb_func_start MOD15_021DAFF8
+MOD15_021DAFF8: ; 0x021DAFF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r0, #2
+ mov r1, #0
+ bl FUN_02002C50
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xb
+ mov r3, #0x23
+ bl FUN_0200A738
+ str r0, [sp, #4]
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xc
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r7, r0, #0
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xd
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r6, r0, #0
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xe
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r4, r0, #0
+ mov r0, #0x23
+ str r0, [sp]
+ mov r0, #0x4c
+ mov r1, #0x14
+ mov r2, #1
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ str r0, [sp, #8]
+ cmp r0, #0
+ beq _021DB0D4
+ add r0, sp, #0x10
+ bl FUN_0201901C
+ ldr r0, [r5, #0xc]
+ add r1, sp, #0xc
+ str r0, [sp, #0x10]
+ mov r0, #0xb
+ strb r0, [r1, #0xb]
+ mov r0, #0x39
+ strb r0, [r1, #0xc]
+ ldrh r2, [r1, #0xe]
+ ldr r0, _021DB0FC ; =0xFFFF7FFF
+ mov r3, #0
+ and r0, r2
+ strh r0, [r1, #0xe]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #4]
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ bl MOD15_021DB100
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ add r2, r7, #0
+ mov r3, #0x10
+ bl MOD15_021DB100
+ ldr r0, [sp, #0xc]
+ add r2, r6, #0
+ ldr r1, [r0, #0x14]
+ mov r0, #0x9a
+ lsl r0, r0, #6
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ mov r3, #0
+ bl MOD15_021DB100
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ add r2, r4, #0
+ mov r3, #0x10
+ bl MOD15_021DB100
+ ldr r1, [sp, #0xc]
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0x10]
+ bl DC_FlushRange
+ ldr r3, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0xc]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ ldr r0, [sp, #8]
+ bl FUN_02016A18
+_021DB0D4:
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #4]
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r0, #2
+ bl FUN_02002CF8
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB0F8: .word 0x00000182
+_021DB0FC: .word 0xFFFF7FFF
+
+ thumb_func_start MOD15_021DB100
+MOD15_021DB100: ; 0x021DB100
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r2, #0
+ str r0, [sp, #0x10]
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0
+ add r7, r3, #0
+ bl FUN_02002F08
+ mov r1, #0x58
+ sub r0, r1, r0
+ lsr r0, r0, #1
+ ldr r5, _021DB14C ; =0x021DBA18
+ str r0, [sp, #0x14]
+ mov r4, #0
+_021DB120:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ ldr r3, [sp, #0x14]
+ mov r1, #2
+ add r0, r7, r0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DB150 ; =0x00010203
+ add r2, r6, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ bl FUN_0201BDE0
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blo _021DB120
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB14C: .word 0x021DBA18
+_021DB150: .word 0x00010203
+
+ thumb_func_start MOD15_021DB154
+MOD15_021DB154: ; 0x021DB154
+ push {r3, r4, lr}
+ sub sp, #0x4c
+ add r4, r0, #0
+ add r0, sp, #0x38
+ bl FUN_020B19DC
+ add r0, sp, #0x14
+ bl FUN_020B1A24
+ mov r0, #0x23
+ str r0, [sp]
+ add r0, sp, #0x38
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0x19
+ mov r2, #2
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ add r0, sp, #0x14
+ str r0, [sp, #0x10]
+ mov r0, #0x4c
+ mov r1, #0x18
+ mov r2, #1
+ bl FUN_02006AE4
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #0x4c
+ mov r2, #0x16
+ mov r3, #0x17
+ bl MOD15_021DB224
+ mov r0, #0xc0
+ str r0, [sp]
+ mov r0, #0x38
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r3, r4, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x38
+ add r3, #0x1c
+ bl MOD15_021DB26C
+ str r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0xc0
+ str r0, [sp]
+ mov r0, #0x88
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r3, r4, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x38
+ add r3, #0x1c
+ bl MOD15_021DB26C
+ mov r1, #2
+ str r0, [r4, #0x18]
+ bl FUN_02020130
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x4c
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DB200
+MOD15_021DB200: ; 0x021DB200
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DB20E
+ bl FUN_0201FFC8
+_021DB20E:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021DB218
+ bl FUN_0201FFC8
+_021DB218:
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD15_021DB258
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DB224
+MOD15_021DB224: ; 0x021DB224
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0x23
+ add r6, r3, #0
+ str r0, [sp]
+ add r1, r2, #0
+ add r0, r4, #0
+ mov r2, #1
+ add r3, r5, #4
+ bl FUN_02006C30
+ str r0, [r5]
+ mov r0, #0x23
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #1
+ add r3, #0xc
+ bl FUN_02006C5C
+ str r0, [r5, #8]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021DB258
+MOD15_021DB258: ; 0x021DB258
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DB26C
+MOD15_021DB26C: ; 0x021DB26C
+ push {r3, r4, lr}
+ sub sp, #0x44
+ str r2, [sp, #0x28]
+ str r1, [sp, #0x20]
+ ldr r1, [r3, #4]
+ ldr r2, [sp, #0x58]
+ str r1, [sp, #0x2c]
+ ldr r1, [r3, #0xc]
+ str r1, [sp, #0x30]
+ add r1, sp, #0x40
+ strb r2, [r1]
+ mov r1, #0
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x34]
+ str r1, [sp, #0x38]
+ str r1, [sp, #0x3c]
+ ldr r0, [r0, #0x10]
+ str r0, [sp]
+ add r0, sp, #0x20
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x50]
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x54]
+ add r0, #0xc0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x18]
+ mov r0, #0x23
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r4, r0, #0
+ beq _021DB2CA
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021DB2CA:
+ add r0, r4, #0
+ add sp, #0x44
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DB2D0
+MOD15_021DB2D0: ; 0x021DB2D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x23
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021DB32C
+ ldr r0, [r5, #4]
+ bl MOD15_021D86F4
+ str r5, [r4]
+ mov r1, #0
+ str r1, [r4, #4]
+ strh r1, [r4, #8]
+ mov r1, #0xe
+ mul r1, r0
+ ldr r0, _021DB334 ; =0x021DBA30
+ mov r2, #1
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0xa]
+ ldr r0, _021DB338 ; =0x021DBA32
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0xc]
+ ldr r0, _021DB33C ; =0x021DBA34
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0xe]
+ ldr r0, _021DB340 ; =0x021DBA36
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x10]
+ ldr r0, _021DB344 ; =0x021DBA38
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x12]
+ ldr r0, _021DB348 ; =0x021DBA3A
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x14]
+ ldr r0, _021DB34C ; =0x021DBA3C
+ ldrh r0, [r0, r1]
+ add r1, r4, #0
+ strh r0, [r4, #0x16]
+ ldr r0, _021DB350 ; =MOD15_021DB36C
+ bl FUN_0200CA44
+ ldr r1, _021DB354 ; =0x000004FC
+ str r0, [r5, r1]
+ pop {r3, r4, r5, pc}
+_021DB32C:
+ ldr r0, _021DB354 ; =0x000004FC
+ mov r1, #0
+ str r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DB334: .word 0x021DBA30
+_021DB338: .word 0x021DBA32
+_021DB33C: .word 0x021DBA34
+_021DB340: .word 0x021DBA36
+_021DB344: .word 0x021DBA38
+_021DB348: .word 0x021DBA3A
+_021DB34C: .word 0x021DBA3C
+_021DB350: .word MOD15_021DB36C
+_021DB354: .word 0x000004FC
+
+ thumb_func_start MOD15_021DB358
+MOD15_021DB358: ; 0x021DB358
+ ldr r1, _021DB368 ; =0x000004FC
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021DB364
+ mov r0, #1
+ bx lr
+_021DB364:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DB368: .word 0x000004FC
+
+ thumb_func_start MOD15_021DB36C
+MOD15_021DB36C: ; 0x021DB36C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #3
+ bls _021DB37C
+ b _021DB4E0
+_021DB37C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DB388: ; jump table
+ .short _021DB390 - _021DB388 - 2 ; case 0
+ .short _021DB416 - _021DB388 - 2 ; case 1
+ .short _021DB476 - _021DB388 - 2 ; case 2
+ .short _021DB4CC - _021DB388 - 2 ; case 3
+_021DB390:
+ ldr r3, [r4]
+ mov r2, #0xb
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0xa]
+ add r0, r3, #0
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0xe]
+ ldrh r3, [r4, #0x10]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r3, [r4]
+ mov r2, #0xb
+ add r0, r3, #0
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0x12]
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0x14]
+ ldrh r3, [r4, #0x16]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r0, [r4]
+ mov r1, #4
+ ldr r0, [r0, #0xc]
+ bl FUN_02017CD0
+ ldrh r0, [r4, #0xa]
+ add sp, #0x1c
+ add r0, r0, #1
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021DB416:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #8]
+ cmp r0, #2
+ blo _021DB4E0
+ ldr r3, [r4]
+ mov r2, #0xb
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0xa]
+ add r0, r3, #0
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0xe]
+ ldrh r3, [r4, #0x10]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r0, [r4]
+ mov r1, #4
+ ldr r0, [r0, #0xc]
+ bl FUN_02017CD0
+ mov r0, #0
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #0xa]
+ add sp, #0x1c
+ add r0, r0, #1
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021DB476:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #8]
+ cmp r0, #4
+ blo _021DB4E0
+ ldr r3, [r4]
+ mov r2, #0xb
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0xa]
+ add r0, r3, #0
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0xe]
+ ldrh r3, [r4, #0x10]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r0, [r4]
+ mov r1, #4
+ ldr r0, [r0, #0xc]
+ bl FUN_02017CD0
+ ldr r0, [r4, #4]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021DB4CC:
+ ldr r1, [r4]
+ ldr r0, _021DB4E4 ; =0x000004FC
+ mov r2, #0
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021DB4E0:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DB4E4: .word 0x000004FC
+
+ thumb_func_start MOD15_021DB4E8
+MOD15_021DB4E8: ; 0x021DB4E8
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021DB50E
+ ldr r0, [r4, #4]
+ bl MOD15_021D87AC
+ add r1, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_020200A0
+ ldr r0, [r4, #4]
+ bl MOD15_021D87C0
+ add r1, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_020200A0
+ pop {r4, pc}
+_021DB50E:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB520
+MOD15_021DB520: ; 0x021DB520
+ push {r3, lr}
+ cmp r1, #0
+ beq _021DB52C
+ cmp r1, #1
+ beq _021DB548
+ pop {r3, pc}
+_021DB52C:
+ cmp r2, #0
+ beq _021DB53E
+ cmp r2, #1
+ bne _021DB562
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021DB53E:
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+_021DB548:
+ cmp r2, #0
+ beq _021DB55A
+ cmp r2, #1
+ bne _021DB562
+ ldr r0, [r0, #0x18]
+ mov r1, #3
+ bl FUN_02020130
+ pop {r3, pc}
+_021DB55A:
+ ldr r0, [r0, #0x18]
+ mov r1, #2
+ bl FUN_02020130
+_021DB562:
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DB564
+MOD15_021DB564: ; 0x021DB564
+ push {r4, lr}
+ add r4, r0, #0
+ str r1, [r4]
+ str r2, [r4, #4]
+ cmp r3, #0
+ bne _021DB57E
+ add r0, r1, #0
+ add r1, r2, #0
+ bl FUN_02017B48
+ str r0, [r4, #0xc]
+ mov r0, #0
+ b _021DB58A
+_021DB57E:
+ add r0, r1, #0
+ add r1, r2, #0
+ bl FUN_02017B54
+ str r0, [r4, #0xc]
+ mov r0, #3
+_021DB58A:
+ str r0, [r4, #8]
+ ldr r0, [sp, #8]
+ ldr r1, [r4, #0xc]
+ add r2, r1, r0
+ ldr r1, _021DB5B4 ; =0x000001FF
+ lsl r0, r0, #0xc
+ and r1, r2
+ str r1, [r4, #0x10]
+ ldr r1, [r4, #0xc]
+ lsl r1, r1, #0xc
+ str r1, [r4, #0xc]
+ ldr r1, [sp, #0xc]
+ bl _s32_div_f
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0xc]
+ strh r0, [r4, #0x18]
+ mov r0, #0
+ strh r0, [r4, #0x1a]
+ pop {r4, pc}
+ nop
+_021DB5B4: .word 0x000001FF
+
+ thumb_func_start MOD15_021DB5B8
+MOD15_021DB5B8: ; 0x021DB5B8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r0, [r4, #0x1a]
+ cmp r0, #0
+ beq _021DB5CC
+ cmp r0, #1
+ beq _021DB5E0
+ cmp r0, #2
+ beq _021DB5F6
+ b _021DB5FA
+_021DB5CC:
+ ldr r0, _021DB600 ; =MOD15_021DB604
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD15_021D88D0
+ str r0, [r4, #0x1c]
+ ldrh r0, [r4, #0x1a]
+ add r0, r0, #1
+ strh r0, [r4, #0x1a]
+ b _021DB5FA
+_021DB5E0:
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0
+ bne _021DB5FA
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldrh r0, [r4, #0x1a]
+ add r0, r0, #1
+ strh r0, [r4, #0x1a]
+ mov r0, #1
+ pop {r4, pc}
+_021DB5F6:
+ mov r0, #1
+ pop {r4, pc}
+_021DB5FA:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021DB600: .word MOD15_021DB604
+
+ thumb_func_start MOD15_021DB604
+MOD15_021DB604: ; 0x021DB604
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021DB632
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ add r3, r1, r0
+ str r3, [r4, #0xc]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ ldr r0, [r4]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldrh r0, [r4, #0x18]
+ sub r0, r0, #1
+ strh r0, [r4, #0x18]
+ pop {r4, pc}
+_021DB632:
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ ldr r0, [r4]
+ ldr r3, [r4, #0x10]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_020179E0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB648
+MOD15_021DB648: ; 0x021DB648
+ push {r4, lr}
+ add r4, r0, #0
+ str r1, [r4]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ str r2, [r4, #4]
+ str r1, [r4, #0x14]
+ str r3, [r4, #8]
+ sub r0, r0, r3
+ bl _s32_div_f
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #8]
+ mov r2, #0
+ str r0, [r4, #0xc]
+ ldr r0, _021DB674 ; =MOD15_021DB6A0
+ add r1, r4, #0
+ str r2, [r4, #0x18]
+ bl MOD15_021D88D0
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ .align 2, 0
+_021DB674: .word MOD15_021DB6A0
+
+ thumb_func_start MOD15_021DB678
+MOD15_021DB678: ; 0x021DB678
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _021DB698
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021DB69C
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ mov r0, #1
+ pop {r4, pc}
+_021DB698:
+ mov r0, #1
+ pop {r4, pc}
+_021DB69C:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB6A0
+MOD15_021DB6A0: ; 0x021DB6A0
+ push {r3, lr}
+ add r2, r1, #0
+ ldr r0, [r2, #0x14]
+ cmp r0, #0
+ beq _021DB6BC
+ ldr r1, [r2, #8]
+ ldr r0, [r2, #0x10]
+ add r0, r1, r0
+ str r0, [r2, #8]
+ asr r3, r0, #3
+ ldr r0, [r2, #0x14]
+ sub r0, r0, #1
+ str r0, [r2, #0x14]
+ b _021DB6C0
+_021DB6BC:
+ ldr r0, [r2, #0xc]
+ asr r3, r0, #3
+_021DB6C0:
+ cmp r3, #0x10
+ ble _021DB6C6
+ mov r3, #0x10
+_021DB6C6:
+ mov r0, #0x10
+ sub r0, r0, r3
+ str r0, [sp]
+ ldr r0, _021DB6D8 ; =0x04000050
+ ldmia r2!, {r1, r2}
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ nop
+_021DB6D8: .word 0x04000050
+
+ thumb_func_start MOD15_021DB6DC
+MOD15_021DB6DC: ; 0x021DB6DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021DB714 ; =0x04000050
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl G2x_SetBlendBrightness_
+ ldr r1, [sp, #0x18]
+ str r4, [r5]
+ str r1, [r5, #0x14]
+ lsl r0, r6, #0xc
+ str r0, [r5, #8]
+ lsl r2, r7, #0xc
+ str r2, [r5, #0xc]
+ ldr r0, [r5, #8]
+ sub r0, r2, r0
+ bl _s32_div_f
+ str r0, [r5, #0x10]
+ mov r2, #0
+ ldr r0, _021DB718 ; =MOD15_021DB744
+ add r1, r5, #0
+ str r2, [r5, #0x18]
+ bl MOD15_021D88D0
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB714: .word 0x04000050
+_021DB718: .word MOD15_021DB744
+
+ thumb_func_start MOD15_021DB71C
+MOD15_021DB71C: ; 0x021DB71C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _021DB73C
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021DB740
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ mov r0, #1
+ pop {r4, pc}
+_021DB73C:
+ mov r0, #1
+ pop {r4, pc}
+_021DB740:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB744
+MOD15_021DB744: ; 0x021DB744
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ beq _021DB75C
+ ldr r2, [r1, #8]
+ ldr r0, [r1, #0x10]
+ add r0, r2, r0
+ str r0, [r1, #8]
+ asr r2, r0, #0xc
+ ldr r0, [r1, #0x14]
+ sub r0, r0, #1
+ str r0, [r1, #0x14]
+ b _021DB760
+_021DB75C:
+ ldr r0, [r1, #0xc]
+ asr r2, r0, #0xc
+_021DB760:
+ ldr r3, _021DB768 ; =0x020C74B8
+ ldr r0, _021DB76C ; =0x04000050
+ ldr r1, [r1]
+ bx r3
+ .align 2, 0
+_021DB768: .word 0x020C74B8
+_021DB76C: .word 0x04000050
+
+ thumb_func_start MOD15_021DB770
+MOD15_021DB770: ; 0x021DB770
+ mov r0, #0x1b
+ bx lr
+
+ thumb_func_start MOD15_021DB774
+MOD15_021DB774: ; 0x021DB774
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ cmp r4, #0x1b
+ blo _021DB782
+ bl ErrorHandling
+_021DB782:
+ mov r1, #0xa
+ ldr r2, _021DB794 ; =0x021DBA4C
+ mul r1, r4
+ add r1, r2, r1
+ add r0, r5, #0
+ mov r2, #2
+ bl FUN_02021E8C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DB794: .word 0x021DBA4C
+
+ thumb_func_start MOD15_021DB798
+MOD15_021DB798: ; 0x021DB798
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #0x1b
+ blo _021DB7A8
+ bl ErrorHandling
+_021DB7A8:
+ mov r0, #0xa
+ add r1, r5, #0
+ mul r1, r0
+ ldr r0, _021DB7BC ; =0x021DBA4E
+ ldrb r0, [r0, r1]
+ str r0, [r4]
+ ldr r0, _021DB7C0 ; =0x021DBA4F
+ ldrb r0, [r0, r1]
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DB7BC: .word 0x021DBA4E
+_021DB7C0: .word 0x021DBA4F
+
+ thumb_func_start MOD15_021DB7C4
+MOD15_021DB7C4: ; 0x021DB7C4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB7D0
+ bl ErrorHandling
+_021DB7D0:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB7DC ; =0x021DBA50
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB7DC: .word 0x021DBA50
+
+ thumb_func_start MOD15_021DB7E0
+MOD15_021DB7E0: ; 0x021DB7E0
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB7EC
+ bl ErrorHandling
+_021DB7EC:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB7F8 ; =0x021DBA51
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB7F8: .word 0x021DBA51
+
+ thumb_func_start MOD15_021DB7FC
+MOD15_021DB7FC: ; 0x021DB7FC
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB808
+ bl ErrorHandling
+_021DB808:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB814 ; =0x021DBA52
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB814: .word 0x021DBA52
+
+ thumb_func_start MOD15_021DB818
+MOD15_021DB818: ; 0x021DB818
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB824
+ bl ErrorHandling
+_021DB824:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB830 ; =0x021DBA53
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB830: .word 0x021DBA53
+
+ thumb_func_start MOD15_021DB834
+MOD15_021DB834: ; 0x021DB834
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB840
+ bl ErrorHandling
+_021DB840:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB84C ; =0x021DBA54
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB84C: .word 0x021DBA54
+
+ thumb_func_start MOD15_021DB850
+MOD15_021DB850: ; 0x021DB850
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB85C
+ bl ErrorHandling
+_021DB85C:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB868 ; =0x021DBA55
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB868: .word 0x021DBA55
+
+ .section .data
+ ; 0x021DB86C
+ .incbin "baserom.nds", 0x23B78C, 0x2F4
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s new file mode 100644 index 00000000..7d62c0f0 --- /dev/null +++ b/arm9/modules/16/asm/module_16.s @@ -0,0 +1,63325 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD16_021D74E0 +MOD16_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + sub sp, #0x20 + mov r1, #0 + add r5, r0, #0 + mov r0, #0x36 + add r2, r1, #0 + bl FUN_0200433C + mov r2, #1 + mov r0, #3 + mov r1, #0x25 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #4 + mov r2, #0x25 + bl FUN_02006268 + add r4, r0, #0 + bne _021D750E + bl ErrorHandling +_021D750E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + mov r0, #8 + mov r1, #0x25 + bl FUN_0201C24C + add r0, r5, #0 + bl FUN_0200628C + add r5, r0, #0 + ldr r0, _021D7584 ; =MOD16_021D7650 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + cmp r0, #1 + beq _021D7546 + bl ErrorHandling +_021D7546: + mov r0, #0x25 + bl MOD16_021D79FC + ldr r0, [r5] + add r1, sp, #0 + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + ldr r0, [r5, #8] + str r0, [sp, #8] + ldr r0, [r5, #0xc] + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + str r0, [sp, #0x18] + ldr r0, [r5, #0x10] + str r0, [sp, #0x10] + ldr r0, [r5, #0x14] + str r0, [sp, #0x14] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x1c] + mov r0, #0x25 + bl MOD16_021D76AC + str r0, [r4] + mov r0, #1 + mov r1, #0x2a + bl FUN_020051EC + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7584: .word MOD16_021D7650 + thumb_func_end MOD16_021D74E0 + + thumb_func_start MOD16_021D7588 +MOD16_021D7588: ; 0x021D7588 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhi _021D7608 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D75A4: ; jump table + .short _021D75AC - _021D75A4 - 2 ; case 0 + .short _021D75C4 - _021D75A4 - 2 ; case 1 + .short _021D75DA - _021D75A4 - 2 ; case 2 + .short _021D75E6 - _021D75A4 - 2 ; case 3 +_021D75AC: + bl MOD16_021D7664 + mov r0, #0xf + mvn r0, r0 + mov r1, #0x3f + mov r2, #3 + bl FUN_0200A274 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7608 +_021D75C4: + ldr r0, [r5] + bl MOD16_021D7804 + cmp r0, #1 + bne _021D7608 + mov r0, #0 + str r0, [r5] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7608 +_021D75DA: + bl MOD16_021D7684 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7608 +_021D75E6: + bl MOD16_021D76A4 + cmp r0, #0 + beq _021D7608 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + ldr r0, _021D760C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021D7610 ; =0x04001050 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7608: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D760C: .word 0x04000050 +_021D7610: .word 0x04001050 + thumb_func_end MOD16_021D7588 + + thumb_func_start MOD16_021D7614 +MOD16_021D7614: ; 0x021D7614 + push {r4, lr} + add r4, r0, #0 + bl FUN_02006278 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_0201CD04 + cmp r0, #1 + beq _021D7630 + bl ErrorHandling +_021D7630: + bl MOD16_021D7A10 + bl FUN_0201C29C + add r0, r4, #0 + bl FUN_0200627C + mov r0, #0x25 + bl FUN_020168D0 + mov r0, #1 + mov r1, #0x7f + bl FUN_020051EC + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021D7614 + + thumb_func_start MOD16_021D7650 +MOD16_021D7650: ; 0x021D7650 + push {r3, lr} + ldr r0, [r0] + cmp r0, #0 + beq _021D765C + bl MOD16_021D7A24 +_021D765C: + bl FUN_0201C30C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021D7650 + + thumb_func_start MOD16_021D7664 +MOD16_021D7664: ; 0x021D7664 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x25 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD16_021D7664 + + thumb_func_start MOD16_021D7684 +MOD16_021D7684: ; 0x021D7684 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x25 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + thumb_func_end MOD16_021D7684 + + thumb_func_start MOD16_021D76A4 +MOD16_021D76A4: ; 0x021D76A4 + ldr r3, _021D76A8 ; =0x0200E309 + bx r3 + .align 2, 0 +_021D76A8: .word 0x0200E309 + thumb_func_end MOD16_021D76A4 + + thumb_func_start MOD16_021D76AC +MOD16_021D76AC: ; 0x021D76AC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r1, #0 + ldr r1, _021D77D0 ; =0x00001D10 + add r7, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021D76C2 + bl ErrorHandling +_021D76C2: + ldr r2, _021D77D0 ; =0x00001D10 + add r0, r4, #0 + mov r1, #0 + bl Call_FillMemWithValue + str r7, [r4, #4] + ldr r0, [r5, #0x1c] + str r0, [r4, #8] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77D4 ; =0x00001A0C + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77D8 ; =0x00001A10 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77DC ; =0x00001A14 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA858 + ldr r1, _021D77E0 ; =0x00001A18 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + mov r1, #0x1d + lsl r1, r1, #8 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + ldr r1, _021D77E4 ; =0x00001D04 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + ldr r1, _021D77E8 ; =0x00001D08 + str r0, [r4, r1] + add r0, r7, #0 + bl MOD16_021DA5FC + ldr r1, _021D77EC ; =0x00001D0C + str r0, [r4, r1] + ldr r0, [r5] + str r0, [sp, #8] + ldr r0, [r5, #4] + str r0, [sp, #0xc] + ldr r0, [r5, #8] + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + str r0, [sp, #0x14] + ldr r0, [r5, #0x10] + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x18] + str r0, [sp, #0x20] + ldr r0, [r5, #0x1c] + bl FUN_0208A328 + str r0, [sp, #0x24] + ldr r0, [r5, #0x1c] + bl FUN_0208A330 + str r0, [sp, #0x28] + add r0, r4, #0 + add r0, #0xc + add r1, sp, #8 + add r2, r7, #0 + bl MOD16_021D9798 + ldr r0, _021D77F0 ; =0x0000177C + add r1, r7, #0 + add r0, r4, r0 + bl MOD16_021D8534 + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021D77F4 ; =0x00001A30 + ldr r5, _021D77F8 ; =0x021FF418 + add r6, r4, r0 +_021D7770: + ldr r3, [r5] + cmp r3, #0 + beq _021D777E + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + blx r3 +_021D777E: + ldr r0, [sp, #4] + add r5, r5, #4 + add r0, r0, #1 + add r6, #0x28 + str r0, [sp, #4] + cmp r0, #0xa + blt _021D7770 + mov r0, #0 + str r0, [sp] + mov r0, #0x6f + lsl r0, r0, #6 + ldr r5, _021D77FC ; =0x021FF3D8 + add r6, r4, r0 +_021D7798: + ldr r3, [r5] + cmp r3, #0 + beq _021D77A6 + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + blx r3 +_021D77A6: + ldr r0, [sp] + add r5, r5, #4 + add r0, r0, #1 + add r6, #0x28 + str r0, [sp] + cmp r0, #8 + blt _021D7798 + ldr r1, _021D7800 ; =0x00001A1C + add r0, r7, #0 + add r1, r4, r1 + add r2, r4, #0 + mov r3, #1 + bl MOD16_021DAE0C + add r0, r4, #0 + bl MOD16_021D847C + add r0, r4, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021D77D0: .word 0x00001D10 +_021D77D4: .word 0x00001A0C +_021D77D8: .word 0x00001A10 +_021D77DC: .word 0x00001A14 +_021D77E0: .word 0x00001A18 +_021D77E4: .word 0x00001D04 +_021D77E8: .word 0x00001D08 +_021D77EC: .word 0x00001D0C +_021D77F0: .word 0x0000177C +_021D77F4: .word 0x00001A30 +_021D77F8: .word 0x021FF418 +_021D77FC: .word 0x021FF3D8 +_021D7800: .word 0x00001A1C + thumb_func_end MOD16_021D76AC + + thumb_func_start MOD16_021D7804 +MOD16_021D7804: ; 0x021D7804 + push {r4, lr} + add r4, r0, #0 + bne _021D780E + bl ErrorHandling +_021D780E: + add r0, r4, #0 + add r0, #0xc + bl MOD16_021D9F8C + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7872 + ldr r0, _021D79E8 ; =0x00001D08 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + ldr r0, _021D79EC ; =0x00001D0C + mov r1, #0 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD16_021DA7B0 + ldr r0, _021D79F0 ; =0x00001D04 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + b _021D789C +_021D7872: + ldr r0, _021D79E8 ; =0x00001D08 + mov r1, #1 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + ldr r0, _021D79EC ; =0x00001D0C + mov r1, #1 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD16_021DA7B0 + ldr r0, _021D79F0 ; =0x00001D04 + mov r1, #1 + ldr r0, [r4, r0] + bl MOD16_021DA7B0 +_021D789C: + ldr r0, _021D79E8 ; =0x00001D08 + ldr r0, [r4, r0] + bl MOD16_021DA694 + ldr r0, _021D79EC ; =0x00001D0C + ldr r0, [r4, r0] + bl MOD16_021DA694 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl MOD16_021DA694 + ldr r0, _021D79F0 ; =0x00001D04 + ldr r0, [r4, r0] + bl MOD16_021DA694 + ldr r0, _021D79E8 ; =0x00001D08 + ldr r0, [r4, r0] + bl MOD16_021DA71C + ldr r0, _021D79EC ; =0x00001D0C + ldr r0, [r4, r0] + bl MOD16_021DA71C + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl MOD16_021DA71C + ldr r0, _021D79F0 ; =0x00001D04 + ldr r0, [r4, r0] + bl MOD16_021DA71C + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7910 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7910 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7910 + ldr r1, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D7910: + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7940 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7940 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7940 + ldr r1, _021D79DC ; =0x00001A0C + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D7940: + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7970 + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7970 + ldr r0, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D7970 + ldr r1, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D7970: + ldr r0, _021D79D8 ; =0x00001A14 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D79A0 + ldr r0, _021D79DC ; =0x00001A0C + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D79A0 + ldr r0, _021D79E0 ; =0x00001A18 + ldr r0, [r4, r0] + bl MOD16_021DA8F0 + cmp r0, #0 + bne _021D79A0 + ldr r1, _021D79E4 ; =0x00001A10 + ldr r0, [r4, r1] + sub r1, #0x10 + ldr r1, [r4, r1] + bl MOD16_021DA8A0 +_021D79A0: + bl FUN_020222AC + ldr r0, _021D79F4 ; =0x0000177C + add r0, r4, r0 + bl MOD16_021D86B4 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 + ldr r1, _021D79F8 ; =0x00001A04 + mov r0, #0 + str r0, [r4, r1] + add r2, r1, #4 + str r0, [r4, r2] + add r2, r1, #0 + sub r2, #8 + str r0, [r4, r2] + sub r1, r1, #4 + str r0, [r4, r1] + ldr r1, [r4] + cmp r1, #1 + bne _021D79D6 + add r0, r4, #0 + bl MOD16_021D8298 + mov r0, #1 +_021D79D6: + pop {r4, pc} + .align 2, 0 +_021D79D8: .word 0x00001A14 +_021D79DC: .word 0x00001A0C +_021D79E0: .word 0x00001A18 +_021D79E4: .word 0x00001A10 +_021D79E8: .word 0x00001D08 +_021D79EC: .word 0x00001D0C +_021D79F0: .word 0x00001D04 +_021D79F4: .word 0x0000177C +_021D79F8: .word 0x00001A04 + thumb_func_end MOD16_021D7804 + + thumb_func_start MOD16_021D79FC +MOD16_021D79FC: ; 0x021D79FC + push {r4, lr} + add r4, r0, #0 + bl MOD16_021D8404 + add r0, r4, #0 + bl MOD16_021D8424 + bl MOD16_021D84A0 + pop {r4, pc} + thumb_func_end MOD16_021D79FC + + thumb_func_start MOD16_021D7A10 +MOD16_021D7A10: ; 0x021D7A10 + push {r3, lr} + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + bl MOD16_021D8514 + pop {r3, pc} + thumb_func_end MOD16_021D7A10 + + thumb_func_start MOD16_021D7A24 +MOD16_021D7A24: ; 0x021D7A24 + push {r3, lr} + ldr r1, _021D7A34 ; =0x0000177C + add r0, r0, r1 + bl MOD16_021D86DC + bl FUN_02009F80 + pop {r3, pc} + .align 2, 0 +_021D7A34: .word 0x0000177C + thumb_func_end MOD16_021D7A24 + + thumb_func_start MOD16_021D7A38 +MOD16_021D7A38: ; 0x021D7A38 + push {r4, lr} + add r4, r0, #0 + bne _021D7A42 + bl ErrorHandling +_021D7A42: + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D7A38 + + thumb_func_start MOD16_021D7A4C +MOD16_021D7A4C: ; 0x021D7A4C + push {r4, lr} + add r4, r0, #0 + bne _021D7A56 + bl ErrorHandling +_021D7A56: + ldr r0, _021D7A5C ; =0x00001D04 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A5C: .word 0x00001D04 + thumb_func_end MOD16_021D7A4C + + thumb_func_start MOD16_021D7A60 +MOD16_021D7A60: ; 0x021D7A60 + push {r4, lr} + add r4, r0, #0 + bne _021D7A6A + bl ErrorHandling +_021D7A6A: + ldr r0, _021D7A70 ; =0x00001D08 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A70: .word 0x00001D08 + thumb_func_end MOD16_021D7A60 + + thumb_func_start MOD16_021D7A74 +MOD16_021D7A74: ; 0x021D7A74 + push {r4, lr} + add r4, r0, #0 + bne _021D7A7E + bl ErrorHandling +_021D7A7E: + ldr r0, _021D7A84 ; =0x00001D0C + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A84: .word 0x00001D0C + thumb_func_end MOD16_021D7A74 + + thumb_func_start MOD16_021D7A88 +MOD16_021D7A88: ; 0x021D7A88 + push {r4, lr} + add r4, r0, #0 + bne _021D7A92 + bl ErrorHandling +_021D7A92: + ldr r0, _021D7A98 ; =0x00001A0C + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7A98: .word 0x00001A0C + thumb_func_end MOD16_021D7A88 + + thumb_func_start MOD16_021D7A9C +MOD16_021D7A9C: ; 0x021D7A9C + push {r4, lr} + add r4, r0, #0 + bne _021D7AA6 + bl ErrorHandling +_021D7AA6: + ldr r0, _021D7AAC ; =0x00001A10 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7AAC: .word 0x00001A10 + thumb_func_end MOD16_021D7A9C + + thumb_func_start MOD16_021D7AB0 +MOD16_021D7AB0: ; 0x021D7AB0 + push {r4, lr} + add r4, r0, #0 + bne _021D7ABA + bl ErrorHandling +_021D7ABA: + ldr r0, _021D7AC0 ; =0x00001A14 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7AC0: .word 0x00001A14 + thumb_func_end MOD16_021D7AB0 + + thumb_func_start MOD16_021D7AC4 +MOD16_021D7AC4: ; 0x021D7AC4 + push {r4, lr} + add r4, r0, #0 + bne _021D7ACE + bl ErrorHandling +_021D7ACE: + ldr r0, _021D7AD4 ; =0x00001A18 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D7AD4: .word 0x00001A18 + thumb_func_end MOD16_021D7AC4 + + thumb_func_start MOD16_021D7AD8 +MOD16_021D7AD8: ; 0x021D7AD8 + push {r4, lr} + add r4, r0, #0 + bne _021D7AE2 + bl ErrorHandling +_021D7AE2: + ldr r0, _021D7AE8 ; =0x000019FC + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7AE8: .word 0x000019FC + thumb_func_end MOD16_021D7AD8 + + thumb_func_start MOD16_021D7AEC +MOD16_021D7AEC: ; 0x021D7AEC + push {r4, lr} + add r4, r0, #0 + bne _021D7AF6 + bl ErrorHandling +_021D7AF6: + mov r0, #0x1a + lsl r0, r0, #8 + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D7AEC + + thumb_func_start MOD16_021D7B00 +MOD16_021D7B00: ; 0x021D7B00 + push {r4, lr} + add r4, r0, #0 + bne _021D7B0A + bl ErrorHandling +_021D7B0A: + ldr r0, _021D7B10 ; =0x00001A04 + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7B10: .word 0x00001A04 + thumb_func_end MOD16_021D7B00 + + thumb_func_start MOD16_021D7B14 +MOD16_021D7B14: ; 0x021D7B14 + push {r4, lr} + add r4, r0, #0 + bne _021D7B1E + bl ErrorHandling +_021D7B1E: + ldr r0, _021D7B24 ; =0x00001A08 + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7B24: .word 0x00001A08 + thumb_func_end MOD16_021D7B14 + + thumb_func_start MOD16_021D7B28 +MOD16_021D7B28: ; 0x021D7B28 + push {r4, lr} + add r4, r0, #0 + bne _021D7B32 + bl ErrorHandling +_021D7B32: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D7B28 + + thumb_func_start MOD16_021D7B38 +MOD16_021D7B38: ; 0x021D7B38 + push {r4, lr} + add r4, r0, #0 + bne _021D7B42 + bl ErrorHandling +_021D7B42: + add r4, #0xc + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD16_021D7B38 + + thumb_func_start MOD16_021D7B48 +MOD16_021D7B48: ; 0x021D7B48 + push {r4, lr} + add r4, r0, #0 + bne _021D7B52 + bl ErrorHandling +_021D7B52: + ldr r0, _021D7B58 ; =0x0000177C + add r0, r4, r0 + pop {r4, pc} + .align 2, 0 +_021D7B58: .word 0x0000177C + thumb_func_end MOD16_021D7B48 + + thumb_func_start MOD16_021D7B5C +MOD16_021D7B5C: ; 0x021D7B5C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0xa + blt _021D7B6A + bl ErrorHandling +_021D7B6A: + ldr r0, _021D7B78 ; =0x00001A30 + add r1, r5, r0 + mov r0, #0x28 + mul r0, r4 + add r0, r1, r0 + pop {r3, r4, r5, pc} + nop +_021D7B78: .word 0x00001A30 + thumb_func_end MOD16_021D7B5C + + thumb_func_start MOD16_021D7B7C +MOD16_021D7B7C: ; 0x021D7B7C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #8 + blt _021D7B8A + bl ErrorHandling +_021D7B8A: + mov r0, #0x6f + lsl r0, r0, #6 + add r1, r5, r0 + mov r0, #0x28 + mul r0, r4 + add r0, r1, r0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D7B7C + + thumb_func_start MOD16_021D7B98 +MOD16_021D7B98: ; 0x021D7B98 + push {r4, lr} + add r4, r0, #0 + cmp r1, #4 + bhi _021D7BDE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7BAC: ; jump table + .short _021D7BB6 - _021D7BAC - 2 ; case 0 + .short _021D7BC6 - _021D7BAC - 2 ; case 1 + .short _021D7BBE - _021D7BAC - 2 ; case 2 + .short _021D7BCE - _021D7BAC - 2 ; case 3 + .short _021D7BCE - _021D7BAC - 2 ; case 4 +_021D7BB6: + mov r1, #1 + bl FUN_02020208 + pop {r4, pc} +_021D7BBE: + mov r1, #2 + bl FUN_02020208 + pop {r4, pc} +_021D7BC6: + mov r1, #3 + bl FUN_02020208 + pop {r4, pc} +_021D7BCE: + bl FUN_0202022C + cmp r0, #0 + beq _021D7BDE + ldr r1, _021D7BE0 ; =0xFFFFE000 + add r0, r4, #0 + bl FUN_020201E4 +_021D7BDE: + pop {r4, pc} + .align 2, 0 +_021D7BE0: .word 0xFFFFE000 + thumb_func_end MOD16_021D7B98 + + thumb_func_start MOD16_021D7BE4 +MOD16_021D7BE4: ; 0x021D7BE4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r2, #0 + bl FUN_0202022C + cmp r0, #3 + bhi _021D7C6C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7C00: ; jump table + .short _021D7C08 - _021D7C00 - 2 ; case 0 + .short _021D7C22 - _021D7C00 - 2 ; case 1 + .short _021D7C3C - _021D7C00 - 2 ; case 2 + .short _021D7C56 - _021D7C00 - 2 ; case 3 +_021D7C08: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + str r5, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + add r2, r5, #0 + bl FUN_020118C4 + add sp, #8 + pop {r3, r4, r5, pc} +_021D7C22: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + sub r2, r5, #2 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl FUN_020118C4 + add sp, #8 + pop {r3, r4, r5, pc} +_021D7C3C: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + sub r2, r5, #4 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl FUN_020118C4 + add sp, #8 + pop {r3, r4, r5, pc} +_021D7C56: + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020119A4 + sub r2, r5, #2 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl FUN_020118C4 +_021D7C6C: + add sp, #8 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D7BE4 + + thumb_func_start MOD16_021D7C70 +MOD16_021D7C70: ; 0x021D7C70 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021D7BE4 + add r0, r5, #0 + bl FUN_0202022C + cmp r0, #2 + ldr r0, [r4] + bge _021D7C90 + add r1, r6, #0 + bl FUN_02011AC0 + pop {r4, r5, r6, pc} +_021D7C90: + ldr r1, [sp, #0x10] + bl FUN_02011AC0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D7C70 + + thumb_func_start MOD16_021D7C98 +MOD16_021D7C98: ; 0x021D7C98 + strb r1, [r0] + strb r2, [r0, #1] + ldr r1, [sp] + strb r3, [r0, #2] + strb r1, [r0, #3] + bx lr + thumb_func_end MOD16_021D7C98 + + thumb_func_start MOD16_021D7CA4 +MOD16_021D7CA4: ; 0x021D7CA4 + str r1, [r0] + str r2, [r0, #8] + ldr r2, [sp] + ldr r1, [sp, #4] + str r3, [r0, #4] + str r2, [r0, #0xc] + sub r1, r1, r2 + str r1, [r0, #0x14] + ldr r2, [sp, #8] + ldr r1, [sp, #0xc] + str r2, [r0, #0x10] + sub r1, r1, r2 + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r1, [r0, #0x20] + mov r1, #0 + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD16_021D7CA4 + + thumb_func_start MOD16_021D7CC8 +MOD16_021D7CC8: ; 0x021D7CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + cmp r1, r0 + bgt _021D7D94 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r1, [r5, #8] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_02018540 + ldr r1, [r5, #0x14] + ldr r6, [r5, #0x1c] + add r0, r1, #0 + ldr r4, [r5, #0x20] + mul r0, r6 + add r1, r4, #0 + bl _s32_div_f + ldr r1, [r5, #0x18] + add r7, r0, #0 + add r0, r1, #0 + mul r0, r6 + add r1, r4, #0 + bl _s32_div_f + ldr r1, [r5, #0xc] + ldr r2, [r5, #0x10] + add r1, r7, r1 + add r4, r0, r2 + cmp r1, #0 + ble _021D7D4C + mov r0, #0x20 + lsl r2, r1, #0x18 + str r0, [sp] + lsr r2, r2, #0x18 + str r2, [sp, #4] + ldr r2, [r5, #4] + sub r1, r0, r1 + add r2, #0xc + str r2, [sp, #8] + mov r2, #0 + lsl r1, r1, #0x18 + str r2, [sp, #0xc] + lsr r1, r1, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r1, [r5, #8] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_02018170 +_021D7D4C: + mov r0, #0x20 + sub r3, r0, r4 + cmp r3, #0 + ble _021D7D7C + lsl r1, r4, #0x18 + str r0, [sp] + lsr r1, r1, #0x18 + str r1, [sp, #4] + ldr r1, [r5, #4] + mov r2, #0 + add r1, #0xc + str r1, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r1, [r5, #8] + lsl r3, r3, #0x18 + lsl r1, r1, #0x18 + ldr r0, [r5] + lsr r1, r1, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 +_021D7D7C: + ldr r1, [r5, #8] + ldr r0, [r5] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AC68 + ldr r0, [r5, #0x1c] + add sp, #0x1c + add r0, r0, #1 + str r0, [r5, #0x1c] + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D7D94: + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D7CC8 + + thumb_func_start MOD16_021D7D9C +MOD16_021D7D9C: ; 0x021D7D9C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + add r1, r3, #0 + add r7, r2, #0 + str r3, [sp, #0x10] + bl FUN_020219F4 + mov r1, #1 + str r1, [sp] + add r1, r6, #0 + mov r2, #3 + mov r3, #2 + add r4, r0, #0 + bl FUN_02021B04 + ldr r2, [sp, #0x10] + add r0, r7, #0 + mov r1, #2 + bl MOD16_021DBBC8 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7E10 ; =0x00030201 + add r2, r4, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x16 + bl FUN_0201BDE0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7E10 ; =0x00030201 + add r2, r6, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x31 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl MOD16_021DBBAC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7E10: .word 0x00030201 + thumb_func_end MOD16_021D7D9C + + thumb_func_start MOD16_021D7E14 +MOD16_021D7E14: ; 0x021D7E14 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021D9D04 + cmp r0, #0 + bne _021D7E36 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021D7E68 + pop {r4, r5, r6, pc} +_021D7E36: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021D7E48 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D7E14 + + thumb_func_start MOD16_021D7E48 +MOD16_021D7E48: ; 0x021D7E48 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0xf + mov r2, #2 + bl MOD16_021DB388 + add r1, r6, #0 + add r2, r6, #0 + add r3, r5, #0 + add r4, r0, #0 + bl MOD16_021D7D9C + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D7E48 + + thumb_func_start MOD16_021D7E68 +MOD16_021D7E68: ; 0x021D7E68 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r4, r0, #0 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + add r5, r1, #0 + bl FUN_02069B40 + add r7, r0, #0 + cmp r7, #0 + bgt _021D7E82 + bl ErrorHandling +_021D7E82: + add r0, r4, #0 + mov r1, #0xf + mov r2, #2 + bl MOD16_021DB388 + add r1, r7, #0 + add r2, r6, #0 + add r3, r5, #0 + add r4, r0, #0 + bl MOD16_021D7D9C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D7E68 + + thumb_func_start MOD16_021D7E9C +MOD16_021D7E9C: ; 0x021D7E9C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r7, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + add r0, r7, #0 + str r2, [sp, #4] + bl MOD16_021D9D04 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r4, #0 + bl MOD16_021D9E08 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021D8838 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021D8854 + str r0, [sp, #0xc] + ldr r0, [sp, #0x58] + add r1, sp, #0x10 + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x14] + add r0, r6, #0 + bl FUN_02020044 + add r0, r6, #0 + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #4] + cmp r0, #2 + bne _021D7F08 + mov r0, #0x36 + ldr r1, [sp, #0x58] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + add r1, sp, #0x10 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + bl FUN_02020044 + ldr r0, [sp, #0xc] + mov r1, #1 + bl FUN_020200A0 + b _021D7F10 +_021D7F08: + ldr r0, [sp, #0xc] + mov r1, #0 + bl FUN_020200A0 +_021D7F10: + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D88D4 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r5, r1] + str r1, [sp, #0x1c] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x24] + mov r0, #0x3f + mvn r0, r0 + str r0, [sp, #0x2c] + add r0, #0x38 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + mov r0, #1 + str r0, [sp, #0x3c] + ldr r0, [sp, #4] + str r6, [sp, #0x28] + str r0, [sp, #0x40] + ldr r2, [sp, #4] + ldr r3, [r4] + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021D7E14 + add r6, r0, #0 + ldr r0, [sp, #8] + str r6, [sp, #0x20] + str r0, [sp] + ldr r3, [r4] + add r0, r5, #0 + add r1, sp, #0x1c + mov r2, #0 + bl MOD16_021D8870 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D7E9C + + thumb_func_start MOD16_021D7F6C +MOD16_021D7F6C: ; 0x021D7F6C + mov r3, #0x6d + lsl r3, r3, #2 + add r0, r0, r3 + ldr r3, _021D7F78 ; =MOD16_021D7F7C + bx r3 + nop +_021D7F78: .word MOD16_021D7F7C + thumb_func_end MOD16_021D7F6C + + thumb_func_start MOD16_021D7F7C +MOD16_021D7F7C: ; 0x021D7F7C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + lsl r0, r1, #0xc + str r0, [sp] + lsl r0, r2, #0xc + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x36 + ldr r1, [sp] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #4] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #8] + ldr r0, [r0] + cmp r0, #0 + beq _021D7FB0 + bl FUN_02011938 +_021D7FB0: + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD16_021D7F7C + + thumb_func_start MOD16_021D7FB4 +MOD16_021D7FB4: ; 0x021D7FB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [sp, #0x28] + ldr r5, [sp, #0x2c] + cmp r2, #0xc9 + bne _021D7FD4 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D80CC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D7FD4: + mov r7, #0x67 + lsl r7, r7, #2 + cmp r2, r7 + bne _021D7FF0 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D81A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D7FF0: + add r4, r7, #1 + cmp r2, r4 + bne _021D800A + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D81E4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D800A: + add r4, r7, #0 + add r4, #0xa + cmp r2, r4 + bne _021D8026 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D8110 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D8026: + add r4, r7, #0 + add r4, #0xb + cmp r2, r4 + bne _021D8042 + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D8158 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D8042: + sub r7, #0x1a + cmp r2, r7 + bne _021D805C + str r5, [sp] + mov r2, #0 + str r2, [sp, #4] + str r2, [sp, #8] + add r2, r3, #0 + add r3, r6, #0 + bl MOD16_021D822C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D805C: + str r6, [sp] + str r5, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + str r4, [sp, #0xc] + bl MOD16_021D8070 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D7FB4 + + thumb_func_start MOD16_021D8070 +MOD16_021D8070: ; 0x021D8070 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r0, #0 + ldr r0, _021D80C8 ; =0x00000147 + add r5, r2, #0 + add r6, r1, #0 + mov r4, #0 + str r3, [sp, #0x18] + cmp r5, r0 + bne _021D808C + add r0, r6, #0 + bl MOD16_021D9A30 + add r4, r0, #0 +_021D808C: + ldr r2, [sp, #0x38] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021D98DC + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _021D80C0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x30] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x18] + str r0, [sp, #0x10] + ldr r0, [sp, #0x3c] + add r1, r5, #0 + str r0, [sp, #0x14] + add r0, r7, #0 + add r2, r6, #0 + bl MOD16_021D8718 +_021D80C0: + add r0, r6, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D80C8: .word 0x00000147 + thumb_func_end MOD16_021D8070 + + thumb_func_start MOD16_021D80CC +MOD16_021D80CC: ; 0x021D80CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D98EC + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D810A + mov r1, #0 + lsl r0, r4, #0x18 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + mov r1, #0xc9 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r2, #2 + add r3, r7, #0 + bl MOD16_021D8718 +_021D810A: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D80CC + + thumb_func_start MOD16_021D8110 +MOD16_021D8110: ; 0x021D8110 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D9904 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D814C + mov r2, #0 + lsl r0, r4, #0x18 + str r2, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D8154 ; =0x000001A6 + str r0, [sp, #0x14] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021D8718 +_021D814C: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8154: .word 0x000001A6 + thumb_func_end MOD16_021D8110 + + thumb_func_start MOD16_021D8158 +MOD16_021D8158: ; 0x021D8158 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D991C + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D8194 + mov r2, #0 + lsl r0, r4, #0x18 + str r2, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D819C ; =0x000001A7 + str r0, [sp, #0x14] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021D8718 +_021D8194: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D819C: .word 0x000001A7 + thumb_func_end MOD16_021D8158 + + thumb_func_start MOD16_021D81A0 +MOD16_021D81A0: ; 0x021D81A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D9934 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D81DE + mov r2, #0 + lsl r0, r4, #0x18 + str r2, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r2, [sp, #8] + mov r1, #0x67 + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + lsl r1, r1, #2 + str r0, [sp, #0x14] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021D8718 +_021D81DE: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D81A0 + + thumb_func_start MOD16_021D81E4 +MOD16_021D81E4: ; 0x021D81E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D994C + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _021D8222 + mov r1, #0 + lsl r0, r4, #0x18 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D8228 ; =0x0000019D + str r0, [sp, #0x14] + add r0, r6, #0 + mov r2, #1 + add r3, r7, #0 + bl MOD16_021D8718 +_021D8222: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8228: .word 0x0000019D + thumb_func_end MOD16_021D81E4 + + thumb_func_start MOD16_021D822C +MOD16_021D822C: ; 0x021D822C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + add r0, r1, #0 + ldr r1, [sp, #0x34] + add r7, r2, #0 + add r5, r3, #0 + bl MOD16_021D9A3C + add r4, r0, #0 + cmp r4, #0xf + beq _021D8266 + mov r1, #0 + lsl r0, r4, #0x18 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0x30] + str r5, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + ldr r1, _021D826C ; =0x00000182 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r2, #1 + add r3, r7, #0 + bl MOD16_021D8718 +_021D8266: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D826C: .word 0x00000182 + thumb_func_end MOD16_021D822C + + thumb_func_start MOD16_021D8270 +MOD16_021D8270: ; 0x021D8270 + push {r3, r4, r5, lr} + ldr r2, _021D8294 ; =0x00000266 + add r4, r0, #0 + add r3, r1, #0 + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8294: .word 0x00000266 + thumb_func_end MOD16_021D8270 + + thumb_func_start MOD16_021D8298 +MOD16_021D8298: ; 0x021D8298 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021D83D4 ; =0x00001A1C + add r0, r6, r0 + bl MOD16_021DAC7C + ldr r0, _021D83D8 ; =0x00001A0C + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82B0 + bl ErrorHandling +_021D82B0: + ldr r0, _021D83D8 ; =0x00001A0C + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83DC ; =0x00001A10 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82C4 + bl ErrorHandling +_021D82C4: + ldr r0, _021D83DC ; =0x00001A10 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83E0 ; =0x00001A14 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82D8 + bl ErrorHandling +_021D82D8: + ldr r0, _021D83E0 ; =0x00001A14 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83E4 ; =0x00001A18 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D82EC + bl ErrorHandling +_021D82EC: + ldr r0, _021D83E4 ; =0x00001A18 + ldr r0, [r6, r0] + bl FUN_02016A18 + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8302 + bl ErrorHandling +_021D8302: + mov r0, #0x1d + lsl r0, r0, #8 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83E8 ; =0x00001D04 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8318 + bl ErrorHandling +_021D8318: + ldr r0, _021D83E8 ; =0x00001D04 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83EC ; =0x00001D08 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D832C + bl ErrorHandling +_021D832C: + ldr r0, _021D83EC ; =0x00001D08 + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83F0 ; =0x00001D0C + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8340 + bl ErrorHandling +_021D8340: + ldr r0, _021D83F0 ; =0x00001D0C + ldr r0, [r6, r0] + bl FUN_02016A18 + ldr r0, _021D83F4 ; =0x00001A30 + ldr r4, _021D83F8 ; =0x021FF440 + mov r7, #0 + add r5, r6, r0 +_021D8350: + ldr r1, [r4] + cmp r1, #0 + beq _021D835A + add r0, r5, #0 + blx r1 +_021D835A: + add r7, r7, #1 + add r4, r4, #4 + add r5, #0x28 + cmp r7, #0xa + blt _021D8350 + mov r0, #0x6f + lsl r0, r0, #6 + ldr r4, _021D83FC ; =0x021FF3F8 + mov r7, #0 + add r5, r6, r0 +_021D836E: + ldr r1, [r4] + cmp r1, #0 + beq _021D8378 + add r0, r5, #0 + blx r1 +_021D8378: + add r7, r7, #1 + add r4, r4, #4 + add r5, #0x28 + cmp r7, #8 + blt _021D836E + add r0, r6, #0 + add r0, #0xc + bl MOD16_021D9A6C + add r1, r0, #0 + ldr r0, [r6, #8] + bl FUN_0208A32C + add r0, r6, #0 + add r0, #0xc + mov r1, #1 + bl MOD16_021D9CD0 + cmp r0, #1 + bne _021D83B2 + add r0, r6, #0 + add r0, #0xc + bl MOD16_021D9A84 + add r1, r0, #0 + ldr r0, [r6, #8] + bl FUN_0208A334 + b _021D83BA +_021D83B2: + ldr r0, [r6, #8] + mov r1, #2 + bl FUN_0208A334 +_021D83BA: + add r0, r6, #0 + add r0, #0xc + bl MOD16_021D98B0 + ldr r0, _021D8400 ; =0x0000177C + add r0, r6, r0 + bl MOD16_021D8628 + add r0, r6, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D83D4: .word 0x00001A1C +_021D83D8: .word 0x00001A0C +_021D83DC: .word 0x00001A10 +_021D83E0: .word 0x00001A14 +_021D83E4: .word 0x00001A18 +_021D83E8: .word 0x00001D04 +_021D83EC: .word 0x00001D08 +_021D83F0: .word 0x00001D0C +_021D83F4: .word 0x00001A30 +_021D83F8: .word 0x021FF440 +_021D83FC: .word 0x021FF3F8 +_021D8400: .word 0x0000177C + thumb_func_end MOD16_021D8298 + + thumb_func_start MOD16_021D8404 +MOD16_021D8404: ; 0x021D8404 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D8420 ; =0x021FF468 + add r3, sp, #0 + mov r2, #5 +_021D840E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D840E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D8420: .word 0x021FF468 + thumb_func_end MOD16_021D8404 + + thumb_func_start MOD16_021D8424 +MOD16_021D8424: ; 0x021D8424 + push {r4, r5, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + add r2, r0, #0 + str r4, [sp, #0x10] + bl FUN_02009EAC + ldr r5, _021D8474 ; =0x021FF3C8 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + ldr r1, _021D8478 ; =0x00200010 + mov r2, #0x10 + str r4, [sp, #0x20] + bl FUN_0201D060 + mov r0, #0x20 + add r1, r4, #0 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D8474: .word 0x021FF3C8 +_021D8478: .word 0x00200010 + thumb_func_end MOD16_021D8424 + + thumb_func_start MOD16_021D847C +MOD16_021D847C: ; 0x021D847C + push {r4, lr} + ldr r1, _021D8498 ; =0x00001A0C + add r4, r0, #0 + ldr r0, [r4, r1] + add r1, #0x10 + add r1, r4, r1 + mov r2, #1 + bl MOD16_021DA888 + ldr r0, _021D849C ; =0x000019FC + mov r1, #1 + str r1, [r4, r0] + pop {r4, pc} + nop +_021D8498: .word 0x00001A0C +_021D849C: .word 0x000019FC + thumb_func_end MOD16_021D847C + + thumb_func_start MOD16_021D84A0 +MOD16_021D84A0: ; 0x021D84A0 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _021D8500 ; =0x04000060 + ldr r2, _021D8504 ; =0xFFFFCFFD + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021D8508 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D850C ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021D8510 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + pop {r3, pc} + .align 2, 0 +_021D8500: .word 0x04000060 +_021D8504: .word 0xFFFFCFFD +_021D8508: .word 0x0000CFFB +_021D850C: .word 0x04000540 +_021D8510: .word 0xBFFF0000 + thumb_func_end MOD16_021D84A0 + + thumb_func_start MOD16_021D8514 +MOD16_021D8514: ; 0x021D8514 + push {r3, lr} + bl FUN_020AEAF4 + bl FUN_020AEC60 + pop {r3, pc} + thumb_func_end MOD16_021D8514 + + thumb_func_start MOD16_021D8520 +MOD16_021D8520: ; 0x021D8520 + mov r0, #0x46 + bx lr + thumb_func_end MOD16_021D8520 + + thumb_func_start MOD16_021D8524 +MOD16_021D8524: ; 0x021D8524 + add r0, r0, #3 + bx lr + thumb_func_end MOD16_021D8524 + + thumb_func_start MOD16_021D8528 +MOD16_021D8528: ; 0x021D8528 + mov r0, #0 + bx lr + thumb_func_end MOD16_021D8528 + + thumb_func_start MOD16_021D852C +MOD16_021D852C: ; 0x021D852C + mov r0, #2 + bx lr + thumb_func_end MOD16_021D852C + + thumb_func_start MOD16_021D8530 +MOD16_021D8530: ; 0x021D8530 + mov r0, #1 + bx lr + thumb_func_end MOD16_021D8530 + + thumb_func_start MOD16_021D8534 +MOD16_021D8534: ; 0x021D8534 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0x45 + add r4, r1, #0 + bl FUN_02006670 + mov r1, #0x9f + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02016B94 + str r0, [r5] + mov r1, #1 + mov r0, #0 + str r0, [sp, #0x14] + str r1, [sp, #0x10] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, sp, #0x10 + bl FUN_02016BBC + ldr r0, [r5] + add r1, r4, #0 + bl MOD16_021D8DC0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D8F60 + add r1, r5, #0 + mov r0, #0x80 + add r1, #0x14 + add r2, r4, #0 + bl FUN_02008C9C + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #0 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #1 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #2 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x20 + mov r1, #3 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp] + ldr r0, [r5] + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + add r0, sp, #0 + str r4, [sp, #0xc] + bl MOD16_021DB228 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #2 + add r1, r4, #0 + bl FUN_02002C50 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D8F9C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9078 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D921C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9400 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D94EC + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8534 + + thumb_func_start MOD16_021D8628 +MOD16_021D8628: ; 0x021D8628 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021D92DC + add r0, r4, #0 + bl MOD16_021D91A0 + add r0, r4, #0 + bl MOD16_021D959C + add r0, r4, #0 + bl MOD16_021D94A4 + add r0, r4, #0 + bl MOD16_021D8F90 + ldr r0, [r4] + bl MOD16_021D8F2C + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02008E2C + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD16_021DB288 + mov r0, #2 + bl FUN_02002CF8 + add r0, r4, #0 + bl MOD16_021D9044 + mov r0, #0x9f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020066F4 + mov r2, #0xa + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #6 + bl Call_FillMemWithValue + pop {r4, pc} + thumb_func_end MOD16_021D8628 + + thumb_func_start MOD16_021D86B4 +MOD16_021D86B4: ; 0x021D86B4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + bl FUN_020B02C8 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02013D5C + pop {r4, pc} + thumb_func_end MOD16_021D86B4 + + thumb_func_start MOD16_021D86DC +MOD16_021D86DC: ; 0x021D86DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201AB60 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020081C4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D86DC + + thumb_func_start MOD16_021D86F4 +MOD16_021D86F4: ; 0x021D86F4 + push {r3, lr} + mov r3, #0 + bl MOD16_021D87BC + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021D86F4 + + thumb_func_start MOD16_021D8700 +MOD16_021D8700: ; 0x021D8700 + ldr r3, _021D8708 ; =MOD16_021D8804 + mov r1, #0 + bx r3 + nop +_021D8708: .word MOD16_021D8804 + thumb_func_end MOD16_021D8700 + + thumb_func_start MOD16_021D870C +MOD16_021D870C: ; 0x021D870C + ldr r3, _021D8714 ; =MOD16_021D8810 + mov r2, #0 + bx r3 + nop +_021D8714: .word MOD16_021D8810 + thumb_func_end MOD16_021D870C + + thumb_func_start MOD16_021D8718 +MOD16_021D8718: ; 0x021D8718 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r1, #0 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [sp, #0x10] + add r7, r0, r1 + ldr r0, [sp, #0x54] + add r4, r2, #0 + lsl r0, r0, #2 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + add r6, r3, #0 + cmp r0, #0 + beq _021D873A + bl FUN_02007534 +_021D873A: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021D874E + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + mov r1, #0 + bl FUN_02068A20 + add r4, r0, #0 +_021D874E: + ldr r0, [sp, #0x40] + lsl r1, r5, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + add r0, sp, #0x30 + ldrb r0, [r0, #0x14] + lsl r2, r4, #0x18 + lsl r3, r6, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x48] + lsr r1, r1, #0x10 + str r0, [sp, #8] + add r0, sp, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02068C00 + cmp r6, #0 + bne _021D8792 + ldr r0, [sp, #0x48] + lsl r1, r4, #0x18 + str r0, [sp] + add r3, sp, #0x30 + lsl r0, r5, #0x10 + lsl r2, r6, #0x18 + ldrb r3, [r3, #0x14] + lsr r0, r0, #0x10 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_02068E88 + add r3, r0, #0 + b _021D8794 +_021D8792: + mov r3, #0 +_021D8794: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r1, #0x55 + ldr r4, [sp, #0x50] + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r0, r1] + ldr r2, [sp, #0x4c] + add r1, sp, #0x18 + add r3, r4, r3 + bl FUN_020073A0 + ldr r1, [sp, #0x14] + str r0, [r7, r1] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D8718 + + thumb_func_start MOD16_021D87BC +MOD16_021D87BC: ; 0x021D87BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x56 + lsl r1, r1, #2 + add r5, r0, r1 + lsl r4, r3, #2 + add r7, r2, #0 + ldr r0, [r5, r4] + mov r1, #0 + add r2, r6, #0 + bl FUN_02007558 + ldr r0, [r5, r4] + mov r1, #1 + add r2, r7, #0 + bl FUN_02007558 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D87BC + + thumb_func_start MOD16_021D87E0 +MOD16_021D87E0: ; 0x021D87E0 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x56 + lsl r1, r1, #2 + add r5, r0, r1 + lsl r4, r3, #2 + ldr r0, [r5, r4] + mov r1, #0 + add r7, r2, #0 + bl FUN_0200782C + str r0, [r6] + ldr r0, [r5, r4] + mov r1, #1 + bl FUN_0200782C + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D87E0 + + thumb_func_start MOD16_021D8804 +MOD16_021D8804: ; 0x021D8804 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + thumb_func_end MOD16_021D8804 + + thumb_func_start MOD16_021D8810 +MOD16_021D8810: ; 0x021D8810 + push {r3, lr} + lsl r2, r2, #2 + add r2, r0, r2 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r2, r0] + cmp r0, #0 + beq _021D8836 + cmp r1, #1 + bne _021D882E + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + pop {r3, pc} +_021D882E: + mov r1, #6 + mov r2, #1 + bl FUN_02007558 +_021D8836: + pop {r3, pc} + thumb_func_end MOD16_021D8810 + + thumb_func_start MOD16_021D8838 +MOD16_021D8838: ; 0x021D8838 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D884A + bl ErrorHandling +_021D884A: + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D8838 + + thumb_func_start MOD16_021D8854 +MOD16_021D8854: ; 0x021D8854 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D8866 + bl ErrorHandling +_021D8866: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D8854 + + thumb_func_start MOD16_021D8870 +MOD16_021D8870: ; 0x021D8870 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + mov r4, #0x6d + lsl r4, r4, #2 + add r0, r0, r4 + bl MOD16_021D8888 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021D8870 + + thumb_func_start MOD16_021D8888 +MOD16_021D8888: ; 0x021D8888 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + add r6, r1, #0 + add r4, r2, #0 + cmp r3, r0 + bne _021D88AA + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x2c] + cmp r1, r0 + bne _021D88AA + ldr r0, [r5, #8] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, r5, r6, pc} +_021D88AA: + ldr r0, [sp, #0x10] + str r3, [r5, #0x28] + str r0, [r5, #0x2c] + ldr r0, [r5, #8] + cmp r0, #0 + beq _021D88BA + bl MOD16_021DB338 +_021D88BA: + cmp r4, #0 + beq _021D88CA + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021DB2D4 + str r0, [r5, #8] + pop {r4, r5, r6, pc} +_021D88CA: + add r0, r6, #0 + bl MOD16_021DB2BC + str r0, [r5, #8] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D8888 + + thumb_func_start MOD16_021D88D4 +MOD16_021D88D4: ; 0x021D88D4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #3 + ble _021D88E2 + bl ErrorHandling +_021D88E2: + lsl r0, r5, #2 + add r1, r4, r0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D88D4 + + thumb_func_start MOD16_021D88F0 +MOD16_021D88F0: ; 0x021D88F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl FUN_02020398 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020398 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D88F0 + + thumb_func_start MOD16_021D891C +MOD16_021D891C: ; 0x021D891C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + add r4, r1, #0 + lsl r0, r0, #2 + lsl r1, r4, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + bl FUN_02020238 + mov r0, #0x6e + lsl r0, r0, #2 + lsl r1, r4, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + bl FUN_02020238 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r1, r4, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_02011A00 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D891C + + thumb_func_start MOD16_021D8950 +MOD16_021D8950: ; 0x021D8950 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + cmp r0, #0 + beq _021D8964 + bl FUN_020200A0 +_021D8964: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D8974 + add r1, r4, #0 + bl FUN_020200A0 +_021D8974: + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r0, [r0] + cmp r0, #0 + beq _021D8986 + add r1, r4, #0 + bl FUN_020119D0 +_021D8986: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D8950 + + thumb_func_start MOD16_021D8988 +MOD16_021D8988: ; 0x021D8988 + push {r4, r5} + ldr r4, [sp, #0x18] + ldr r5, [sp, #0x14] + str r4, [r0] + ldr r4, [sp, #0x10] + str r4, [r0, #4] + mov r4, #0x20 + orr r4, r5 + str r4, [r0, #8] + str r2, [r0, #0xc] + sub r2, r3, r2 + str r2, [r0, #0x10] + ldr r3, [sp, #8] + ldr r2, [sp, #0xc] + str r3, [r0, #0x14] + sub r2, r2, r3 + str r2, [r0, #0x18] + str r1, [r0, #0x1c] + mov r1, #0 + str r1, [r0, #0x20] + pop {r4, r5} + bx lr + thumb_func_end MOD16_021D8988 + + thumb_func_start MOD16_021D89B4 +MOD16_021D89B4: ; 0x021D89B4 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + bl MOD16_021D8A7C + cmp r0, #0 + bne _021D8A02 + add r0, r5, #0 + bl MOD16_021D8A14 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021D8A48 + ldr r1, [r5] + cmp r1, #0 + bne _021D89EA + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + ldr r0, _021D8A0C ; =0x04000050 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r3, r4, #0 + bl G2x_SetBlendBrightnessExt_ + b _021D89FC +_021D89EA: + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + ldr r0, _021D8A10 ; =0x04001050 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r3, r4, #0 + bl G2x_SetBlendBrightnessExt_ +_021D89FC: + ldr r0, [r5, #0x20] + add r0, r0, #1 + str r0, [r5, #0x20] +_021D8A02: + add r0, r5, #0 + bl MOD16_021D8A7C + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8A0C: .word 0x04000050 +_021D8A10: .word 0x04001050 + thumb_func_end MOD16_021D89B4 + + thumb_func_start MOD16_021D8A14 +MOD16_021D8A14: ; 0x021D8A14 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + ldr r2, [r4, #0x20] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r4, #0x1c] + lsl r1, r1, #0xc + bl FX_Div + asr r1, r0, #0xc + ldr r0, [r4, #0x14] + add r0, r1, r0 + pop {r4, pc} + thumb_func_end MOD16_021D8A14 + + thumb_func_start MOD16_021D8A48 +MOD16_021D8A48: ; 0x021D8A48 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x20] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r4, #0x1c] + lsl r1, r1, #0xc + bl FX_Div + asr r1, r0, #0xc + ldr r0, [r4, #0xc] + add r0, r1, r0 + pop {r4, pc} + thumb_func_end MOD16_021D8A48 + + thumb_func_start MOD16_021D8A7C +MOD16_021D8A7C: ; 0x021D8A7C + ldr r1, [r0, #0x20] + ldr r0, [r0, #0x1c] + cmp r1, r0 + ble _021D8A88 + mov r0, #1 + bx lr +_021D8A88: + mov r0, #0 + bx lr + thumb_func_end MOD16_021D8A7C + + thumb_func_start MOD16_021D8A8C +MOD16_021D8A8C: ; 0x021D8A8C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD16_021D8A48 + neg r4, r0 + add r0, r5, #0 + bl MOD16_021D8700 + mov r3, #0 + add r1, r4, #0 + add r2, r4, #0 + str r3, [sp] + bl FUN_02007E68 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D8A8C + + thumb_func_start MOD16_021D8AAC +MOD16_021D8AAC: ; 0x021D8AAC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r2, #0 + add r0, r1, #0 + bl MOD16_021D8A48 + neg r6, r0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D8804 + mov r3, #0 + add r1, r6, #0 + add r2, r6, #0 + str r3, [sp] + bl FUN_02007E68 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021D8AAC + + thumb_func_start MOD16_021D8AD4 +MOD16_021D8AD4: ; 0x021D8AD4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021DB540 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD16_021DB568 + ldr r0, [sp, #4] + str r0, [sp] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD16_021D8B04 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8AD4 + + thumb_func_start MOD16_021D8B04 +MOD16_021D8B04: ; 0x021D8B04 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D96B4 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021D8B04 + + thumb_func_start MOD16_021D8B14 +MOD16_021D8B14: ; 0x021D8B14 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021D8B1C: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D8B1C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D8B14 + + thumb_func_start MOD16_021D8B30 +MOD16_021D8B30: ; 0x021D8B30 + ldr r3, _021D8B38 ; =0x02020129 + ldr r0, [r0] + bx r3 + nop +_021D8B38: .word 0x02020129 + thumb_func_end MOD16_021D8B30 + + thumb_func_start MOD16_021D8B3C +MOD16_021D8B3C: ; 0x021D8B3C + str r1, [r0, #0x30] + cmp r1, #0 + bne _021D8B46 + mov r1, #0 + str r1, [r0, #0x34] +_021D8B46: + bx lr + thumb_func_end MOD16_021D8B3C + + thumb_func_start MOD16_021D8B48 +MOD16_021D8B48: ; 0x021D8B48 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021DB540 + add r0, r5, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD16_021DB568 + ldr r0, [sp, #4] + str r0, [sp] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD16_021D8B78 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8B48 + + thumb_func_start MOD16_021D8B78 +MOD16_021D8B78: ; 0x021D8B78 + push {r3, r4, r5, r6, r7, lr} + add r7, r3, #0 + mov r3, #0x81 + add r4, r1, #0 + add r5, r0, #0 + lsl r3, r3, #2 + add r6, r2, #0 + str r4, [r5, r3] + add r0, r3, #4 + str r6, [r5, r0] + add r0, r3, #0 + add r0, #8 + str r7, [r5, r0] + add r0, r3, #0 + ldr r1, [sp, #0x18] + add r0, #0xc + str r1, [r5, r0] + add r0, r3, #0 + add r0, #0xc + ldr r0, [r5, r0] + add r2, r3, #4 + str r0, [sp] + add r0, r3, #0 + ldr r1, [r5, r3] + add r3, #8 + sub r0, #0x20 + ldr r2, [r5, r2] + ldr r3, [r5, r3] + add r0, r5, r0 + bl MOD16_021D9668 + mov r0, #0x26 + lsl r0, r0, #4 + str r4, [r5, r0] + add r1, r0, #4 + str r6, [r5, r1] + add r1, r0, #0 + add r1, #8 + str r7, [r5, r1] + add r1, r0, #0 + ldr r2, [sp, #0x18] + add r1, #0xc + str r2, [r5, r1] + mov r1, #0 + add r0, #0x10 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D8B78 + + thumb_func_start MOD16_021D8BD8 +MOD16_021D8BD8: ; 0x021D8BD8 + str r1, [r0] + str r3, [r0, #4] + str r1, [r0, #8] + str r3, [r0, #0xc] + sub r1, r2, r1 + str r1, [r0, #0x10] + ldr r1, [sp] + sub r1, r1, r3 + str r1, [r0, #0x14] + ldr r1, [sp, #4] + str r1, [r0, #0x1c] + mov r1, #0 + str r1, [r0, #0x18] + bx lr + thumb_func_end MOD16_021D8BD8 + + thumb_func_start MOD16_021D8BF4 +MOD16_021D8BF4: ; 0x021D8BF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x18] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r5, #0x1c] + lsl r1, r1, #0xc + bl FX_Div + add r4, r0, #0 + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x18] + lsl r0, r0, #0xc + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r5, #0x1c] + lsl r1, r1, #0xc + bl FX_Div + ldr r1, [r5, #8] + asr r2, r4, #0xc + add r1, r2, r1 + str r1, [r5] + asr r1, r0, #0xc + ldr r0, [r5, #0xc] + add r0, r1, r0 + str r0, [r5, #4] + ldr r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + add r0, r0, #1 + cmp r0, r1 + bgt _021D8C6A + str r0, [r5, #0x18] + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8C6A: + str r1, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D8BF4 + + thumb_func_start MOD16_021D8C70 +MOD16_021D8C70: ; 0x021D8C70 + mov r1, #0x9f + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD16_021D8C70 + + thumb_func_start MOD16_021D8C78 +MOD16_021D8C78: ; 0x021D8C78 + push {r4, r5, r6, lr} + add r5, r2, #0 + mov r2, #0x9f + lsl r2, r2, #2 + add r6, r3, #0 + ldr r0, [r0, r2] + add r2, r6, #0 + bl FUN_02006704 + add r4, r0, #0 + beq _021D8CB0 + cmp r5, #0 + beq _021D8CB0 + ldr r1, [r4] + add r0, r6, #0 + lsr r1, r1, #8 + bl FUN_02016998 + add r5, r0, #0 + beq _021D8CAE + add r0, r4, #0 + add r1, r5, #0 + bl MI_UncompressLZ8 + add r0, r4, #0 + bl FUN_02016A18 +_021D8CAE: + add r4, r5, #0 +_021D8CB0: + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D8C78 + + thumb_func_start MOD16_021D8CB4 +MOD16_021D8CB4: ; 0x021D8CB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r2, #0 + add r5, r3, #0 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + ldr r4, [sp, #0x24] + bl MOD16_021D8C78 + add r7, r0, #0 + beq _021D8CF6 + add r1, sp, #4 + bl FUN_020B0030 + cmp r0, #0 + beq _021D8CF0 + cmp r4, #0 + bne _021D8CDC + ldr r0, [sp, #4] + ldr r4, [r0, #0x10] +_021D8CDC: + ldr r0, [sp, #0x20] + lsl r1, r5, #0x18 + str r0, [sp] + ldr r2, [sp, #4] + add r0, r6, #0 + ldr r2, [r2, #0x14] + lsr r1, r1, #0x18 + add r3, r4, #0 + bl FUN_02017E14 +_021D8CF0: + add r0, r7, #0 + bl FUN_02016A18 +_021D8CF6: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D8CB4 + + thumb_func_start MOD16_021D8CFC +MOD16_021D8CFC: ; 0x021D8CFC + push {r3, r4, r5, r6, r7, lr} + add r6, r3, #0 + add r5, r2, #0 + ldr r3, [sp, #0x1c] + mov r2, #0 + ldr r4, [sp, #0x18] + bl MOD16_021D8C78 + add r7, r0, #0 + beq _021D8D42 + add r1, sp, #0 + bl FUN_020B0138 + cmp r0, #0 + beq _021D8D3C + cmp r4, #0 + bne _021D8D22 + ldr r0, [sp] + ldr r4, [r0, #8] +_021D8D22: + ldr r0, [sp] + add r1, r4, #0 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp] + add r2, r4, #0 + ldr r3, _021D8D44 ; =0x021FF548 + lsl r4, r5, #2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0 + blx r3 +_021D8D3C: + add r0, r7, #0 + bl FUN_02016A18 +_021D8D42: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8D44: .word 0x021FF548 + thumb_func_end MOD16_021D8CFC + + thumb_func_start MOD16_021D8D48 +MOD16_021D8D48: ; 0x021D8D48 + push {r3, r4, r5, lr} + add r5, r3, #0 + ldr r3, [sp, #0x10] + bl MOD16_021D8C78 + add r4, r0, #0 + beq _021D8D6A + add r1, r5, #0 + bl FUN_020B0180 + cmp r0, #0 + bne _021D8D6A + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8D6A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8D48 + + thumb_func_start MOD16_021D8D70 +MOD16_021D8D70: ; 0x021D8D70 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r2, #0 + bl MOD16_021D8C78 + add r4, r0, #0 + beq _021D8D92 + add r1, r5, #0 + bl FUN_020B0138 + cmp r0, #0 + bne _021D8D92 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8D92: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8D70 + + thumb_func_start MOD16_021D8D98 +MOD16_021D8D98: ; 0x021D8D98 + push {r3, r4, r5, lr} + add r5, r3, #0 + ldr r3, [sp, #0x10] + bl MOD16_021D8C78 + add r4, r0, #0 + beq _021D8DBA + add r1, r5, #0 + bl FUN_020B0030 + cmp r0, #0 + bne _021D8DBA + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8DBA: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D8D98 + + thumb_func_start MOD16_021D8DC0 +MOD16_021D8DC0: ; 0x021D8DC0 + push {r4, r5, r6, lr} + sub sp, #0xa8 + ldr r6, _021D8F14 ; =0x021FF510 + add r3, sp, #0x8c + add r5, r0, #0 + add r4, r1, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #1 + bl FUN_02018744 + ldr r6, _021D8F18 ; =0x021FF4F4 + add r3, sp, #0x70 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #2 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + mov r1, #2 + bl FUN_020178BC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r6, _021D8F1C ; =0x021FF4D8 + add r3, sp, #0x54 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #3 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #3 + bl FUN_02018744 + ldr r6, _021D8F20 ; =0x021FF4BC + add r3, sp, #0x38 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #5 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #5 + bl FUN_02018744 + ldr r6, _021D8F24 ; =0x021FF4A0 + add r3, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #6 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #6 + bl FUN_02018744 + ldr r6, _021D8F28 ; =0x021FF52C + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #7 + str r0, [r3] + add r0, r5, #0 + mov r3, #1 + bl FUN_02016C18 + mov r0, #7 + mov r1, #0x40 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #7 + bl FUN_02018744 + add sp, #0xa8 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D8F14: .word 0x021FF510 +_021D8F18: .word 0x021FF4F4 +_021D8F1C: .word 0x021FF4D8 +_021D8F20: .word 0x021FF4BC +_021D8F24: .word 0x021FF4A0 +_021D8F28: .word 0x021FF52C + thumb_func_end MOD16_021D8DC0 + + thumb_func_start MOD16_021D8F2C +MOD16_021D8F2C: ; 0x021D8F2C + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #7 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD16_021D8F2C + + thumb_func_start MOD16_021D8F60 +MOD16_021D8F60: ; 0x021D8F60 + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #0 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r4] + add r1, r4, #4 + mov r2, #1 + bl FUN_02019064 + add r0, r4, #4 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #4 + bl FUN_020191D0 + add sp, #0x14 + pop {r3, r4, pc} + thumb_func_end MOD16_021D8F60 + + thumb_func_start MOD16_021D8F90 +MOD16_021D8F90: ; 0x021D8F90 + ldr r3, _021D8F98 ; =0x02019179 + add r0, r0, #4 + bx r3 + nop +_021D8F98: .word 0x02019179 + thumb_func_end MOD16_021D8F90 + + thumb_func_start MOD16_021D8F9C +MOD16_021D8F9C: ; 0x021D8F9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_02006D98 + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r3, _021D9030 ; =0x021064B8 + mov r0, #2 + mov r1, #0 + ldr r3, [r3] + lsl r0, r0, #0xe + add r2, r1, #0 + blx r3 + ldr r3, _021D9034 ; =0x021064C0 + add r4, r0, #0 + ldr r3, [r3] + mov r0, #0x80 + mov r1, #0 + mov r2, #1 + blx r3 + ldr r2, _021D9038 ; =0x7FFF0000 + add r6, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + and r2, r4 + lsl r1, r4, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0xd + lsl r2, r2, #4 + bl FUN_020081A8 + ldr r2, _021D903C ; =0xFFFF0000 + mov r0, #0x55 + lsl r0, r0, #2 + and r2, r6 + lsl r1, r6, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0xd + lsl r2, r2, #3 + bl FUN_020081B4 + mov r2, #0 + mov r0, #0x56 + add r3, r5, #0 + add r1, r2, #0 + lsl r0, r0, #2 +_021D9004: + add r2, r2, #1 + str r1, [r3, r0] + add r3, r3, #4 + cmp r2, #4 + blt _021D9004 + ldr r4, _021D9040 ; =0x021FF490 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + str r7, [sp, #0xc] + bl FUN_02013CD4 + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9030: .word 0x021064B8 +_021D9034: .word 0x021064C0 +_021D9038: .word 0x7FFF0000 +_021D903C: .word 0xFFFF0000 +_021D9040: .word 0x021FF490 + thumb_func_end MOD16_021D8F9C + + thumb_func_start MOD16_021D9044 +MOD16_021D9044: ; 0x021D9044 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x56 + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_021D9050: + ldr r0, [r5, r6] + cmp r0, #0 + beq _021D905A + bl FUN_02007534 +_021D905A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D9050 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_020072E8 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02013D18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021D9044 + + thumb_func_start MOD16_021D9078 +MOD16_021D9078: ; 0x021D9078 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0x6d + add r5, r0, #0 + lsl r1, r1, #2 + add r4, r5, r1 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021D9114 ; =0x00000BB8 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r6, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r1, r7, #0 + mov r2, #0x4e + bl FUN_020091E0 + str r0, [r4, #0xc] + bl FUN_02009B04 + ldr r0, [r4, #0xc] + bl FUN_02009474 + ldr r0, _021D9114 ; =0x00000BB8 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r6, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r4, #0x10] + bl FUN_02009D68 + ldr r0, [r4, #0x10] + bl FUN_02009474 + ldr r0, _021D9114 ; =0x00000BB8 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x4c + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x14] + ldr r0, _021D9114 ; =0x00000BB8 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x4d + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x18] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9114: .word 0x00000BB8 + thumb_func_end MOD16_021D9078 + + thumb_func_start MOD16_021D9118 +MOD16_021D9118: ; 0x021D9118 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _021D919C ; =0x00000BB8 + mov r3, #1 + str r0, [sp] + add r6, r2, #0 + str r3, [sp, #4] + add r4, r1, #0 + str r6, [sp, #8] + ldr r0, [r4] + mov r1, #0x45 + mov r2, #0x4e + bl FUN_02008F34 + str r0, [r5, #0xc] + bl FUN_02009B04 + ldr r0, [r5, #0xc] + bl FUN_02009474 + ldr r0, _021D919C ; =0x00000BB8 + mov r1, #0x45 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r4, #4] + mov r2, #3 + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #0x10] + bl FUN_02009D68 + ldr r0, [r5, #0x10] + bl FUN_02009474 + ldr r0, _021D919C ; =0x00000BB8 + mov r1, #0x45 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #8] + mov r2, #0x4c + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x14] + ldr r0, _021D919C ; =0x00000BB8 + mov r1, #0x45 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #0xc] + mov r2, #0x4d + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x18] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021D919C: .word 0x00000BB8 + thumb_func_end MOD16_021D9118 + + thumb_func_start MOD16_021D91A0 +MOD16_021D91A0: ; 0x021D91A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + add r4, r5, r0 + ldr r0, [r4, #0xc] + bl FUN_02009C0C + ldr r0, [r4, #0x10] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [r4, #0xc] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x10] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x14] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x18] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D91A0 + + thumb_func_start MOD16_021D91E8 +MOD16_021D91E8: ; 0x021D91E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + bl FUN_02009C0C + ldr r0, [r5, #0x10] + bl FUN_02009E04 + ldr r0, [r4] + ldr r1, [r5, #0xc] + bl FUN_02009490 + ldr r0, [r4, #4] + ldr r1, [r5, #0x10] + bl FUN_02009490 + ldr r0, [r4, #8] + ldr r1, [r5, #0x14] + bl FUN_02009490 + ldr r0, [r4, #0xc] + ldr r1, [r5, #0x18] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D91E8 + + thumb_func_start MOD16_021D921C +MOD16_021D921C: ; 0x021D921C + push {r3, r4, r5, lr} + sub sp, #0x70 + add r4, r1, #0 + ldr r1, _021D92D8 ; =0x00000BB8 + add r5, r0, #0 + mov r0, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r3, #5 + str r0, [sp, #0x10] + lsl r3, r3, #6 + ldr r2, [r5, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r5, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r5, r2] + add r3, #0xc + str r2, [sp, #0x1c] + ldr r2, [r5, r3] + add r3, r1, #0 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x44] + add r0, sp, #0x2c + str r1, [sp, #0x40] + str r4, [sp, #0x48] + str r1, [sp, #0x34] + str r1, [sp, #0x38] + bl FUN_0201FF84 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020310 + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020130 + mov r1, #0x6f + lsl r1, r1, #2 + mov r2, #0 + add r0, r1, #0 + str r2, [r5, r1] + add r0, #0x20 + str r2, [r5, r0] + add r1, #0x24 + str r2, [r5, r1] + add sp, #0x70 + pop {r3, r4, r5, pc} + nop +_021D92D8: .word 0x00000BB8 + thumb_func_end MOD16_021D921C + + thumb_func_start MOD16_021D92DC +MOD16_021D92DC: ; 0x021D92DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0x6d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0x6e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D9316 + bl MOD16_021DB338 + mov r0, #0x6f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_021D9316: + pop {r4, pc} + thumb_func_end MOD16_021D92DC + + thumb_func_start MOD16_021D9318 +MOD16_021D9318: ; 0x021D9318 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r4, r1, #0 + ldr r1, _021D93A8 ; =0x00000BB8 + add r5, r0, #0 + mov r0, #0 + add r6, r3, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + ldr r3, [sp, #0x80] + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r2] + str r3, [sp, #0x14] + ldr r3, [r2, #4] + str r3, [sp, #0x18] + ldr r3, [r2, #8] + str r3, [sp, #0x1c] + ldr r2, [r2, #0xc] + add r3, r1, #0 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r1, #0 + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x44] + str r4, [sp, #0x2c] + str r1, [sp, #0x40] + str r6, [sp, #0x48] + str r1, [sp, #0x34] + str r1, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5] + mov r1, #1 + bl FUN_02020310 + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #4] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020130 + mov r0, #0 + str r0, [r5, #8] + str r0, [r5, #0x28] + str r0, [r5, #0x2c] + add sp, #0x70 + pop {r4, r5, r6, pc} + nop +_021D93A8: .word 0x00000BB8 + thumb_func_end MOD16_021D9318 + + thumb_func_start MOD16_021D93AC +MOD16_021D93AC: ; 0x021D93AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #8] + cmp r0, #0 + beq _021D93D2 + bl MOD16_021DB338 + mov r0, #0 + str r0, [r4, #8] +_021D93D2: + pop {r4, pc} + thumb_func_end MOD16_021D93AC + + thumb_func_start MOD16_021D93D4 +MOD16_021D93D4: ; 0x021D93D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r0, #0 + beq _021D93E4 + bl FUN_020200A0 +_021D93E4: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021D93F0 + add r1, r4, #0 + bl FUN_020200A0 +_021D93F0: + ldr r0, [r5, #8] + ldr r0, [r0] + cmp r0, #0 + beq _021D93FE + add r1, r4, #0 + bl FUN_020119D0 +_021D93FE: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D93D4 + + thumb_func_start MOD16_021D9400 +MOD16_021D9400: ; 0x021D9400 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + mov r1, #0x79 + add r5, r0, #0 + lsl r1, r1, #2 + add r4, r5, r1 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r6, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r2, #0x77 + mov r3, #1 + bl FUN_020091E0 + str r0, [r4, #0x10] + bl FUN_02009B04 + ldr r0, [r4, #0x10] + bl FUN_02009474 + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x51 + str r6, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x15 + mov r3, #0 + bl FUN_02009298 + str r0, [r4, #0x14] + bl FUN_02009D68 + ldr r0, [r4, #0x14] + bl FUN_02009474 + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x78 + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x18] + ldr r0, _021D94A0 ; =0x00002EE0 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #0x76 + mov r3, #1 + bl FUN_02009358 + str r0, [r4, #0x1c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D94A0: .word 0x00002EE0 + thumb_func_end MOD16_021D9400 + + thumb_func_start MOD16_021D94A4 +MOD16_021D94A4: ; 0x021D94A4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x79 + lsl r0, r0, #2 + add r4, r5, r0 + ldr r0, [r4, #0x10] + bl FUN_02009C0C + ldr r0, [r4, #0x14] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [r4, #0x10] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x14] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x18] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x1c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D94A4 + + thumb_func_start MOD16_021D94EC +MOD16_021D94EC: ; 0x021D94EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r5, r1, #0 + ldr r1, _021D9598 ; =0x00002EE0 + add r6, r0, #0 + mov r0, #0 + mov r2, #0x79 + lsl r2, r2, #2 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + sub r2, #0xa4 + ldr r2, [r6, r2] + add r3, r1, #0 + str r2, [sp, #0x14] + mov r2, #0x79 + lsl r2, r2, #2 + sub r2, #0xa0 + ldr r2, [r6, r2] + str r2, [sp, #0x18] + mov r2, #0x79 + lsl r2, r2, #2 + sub r2, #0x9c + ldr r2, [r6, r2] + str r2, [sp, #0x1c] + mov r2, #0x79 + lsl r2, r2, #2 + sub r2, #0x98 + ldr r2, [r6, r2] + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r4, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #0x49 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + mov r0, #0x19 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #0x79 + lsl r0, r0, #2 + str r5, [sp, #0x48] + str r4, [sp, #0x40] + add r5, r6, r0 + add r7, sp, #0x2c +_021D9566: + add r0, r7, #0 + bl FUN_0201FF84 + add r1, r4, #0 + stmia r5!, {r0} + bl FUN_02020130 + add r4, r4, #1 + cmp r4, #4 + blt _021D9566 + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r6, r0 + mov r1, #0 + bl MOD16_021D8B14 + add r0, r6, #0 + bl MOD16_021D95C4 + add r0, r6, #0 + bl MOD16_021D9760 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9598: .word 0x00002EE0 + thumb_func_end MOD16_021D94EC + + thumb_func_start MOD16_021D959C +MOD16_021D959C: ; 0x021D959C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD16_021D9780 + add r0, r5, #0 + bl MOD16_021D95E4 + mov r0, #0x79 + lsl r0, r0, #2 + mov r4, #0 + add r5, r5, r0 +_021D95B2: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D95B2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D959C + + thumb_func_start MOD16_021D95C4 +MOD16_021D95C4: ; 0x021D95C4 + push {r4, lr} + mov r1, #0x79 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, _021D95E0 ; =MOD16_021D95F4 + add r1, r4, r1 + mov r2, #1 + bl FUN_0200CA44 + mov r1, #0x9d + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_021D95E0: .word MOD16_021D95F4 + thumb_func_end MOD16_021D95C4 + + thumb_func_start MOD16_021D95E4 +MOD16_021D95E4: ; 0x021D95E4 + mov r1, #0x9d + lsl r1, r1, #2 + ldr r3, _021D95F0 ; =0x0200CAB5 + ldr r0, [r0, r1] + bx r3 + nop +_021D95F0: .word 0x0200CAB5 + thumb_func_end MOD16_021D95E4 + + thumb_func_start MOD16_021D95F4 +MOD16_021D95F4: ; 0x021D95F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021D9610 + ldr r0, [r4, #0x2c] + str r0, [sp] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r0, r4, #0 + bl MOD16_021D9668 + pop {r3, r4, r5, pc} +_021D9610: + ldr r0, [r4, #0x34] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1a + sub r1, r1, r2 + mov r0, #0x1a + ror r1, r0 + add r0, r2, r1 + str r0, [r4, #0x34] + cmp r0, #0x20 + blt _021D962C + add r1, r0, #1 + mov r0, #0x40 + sub r0, r0, r1 +_021D962C: + lsl r2, r0, #0xc + asr r1, r2, #0x1f + lsr r0, r2, #0x12 + lsl r3, r1, #0xe + mov r1, #2 + orr r3, r0 + lsl r2, r2, #0xe + mov r0, #0 + lsl r1, r1, #0xa + add r5, r2, r1 + adc r3, r0 + lsl r2, r3, #0x14 + lsr r0, r5, #0xc + orr r0, r2 + lsl r1, r1, #6 + bl FX_Div + asr r3, r0, #0xc + ldr r0, [r4, #0x2c] + add r0, r0, r3 + str r0, [sp] + add r0, r4, #0 + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + ldr r4, [r4, #0x28] + add r3, r4, r3 + bl MOD16_021D9668 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D95F4 + + thumb_func_start MOD16_021D9668 +MOD16_021D9668: ; 0x021D9668 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r6, [sp, #0x40] + add r5, r0, #0 + str r1, [sp, #0xc] + add r7, r2, #0 + str r3, [sp, #0x10] + mov r4, #0 +_021D9678: + ldr r0, [sp, #0x10] + str r7, [sp] + str r0, [sp, #4] + ldr r3, [sp, #0xc] + str r6, [sp, #8] + add r0, r4, #0 + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD16_021DB5A8 + ldr r0, [sp, #0x18] + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x20] + ldr r0, [r5] + add r1, sp, #0x1c + bl FUN_02020044 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D9678 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D9668 + + thumb_func_start MOD16_021D96B4 +MOD16_021D96B4: ; 0x021D96B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0x87 + lsl r1, r1, #2 + add r4, r0, r1 + ldr r1, [r4, #0x44] + add r5, r2, #0 + add r7, r3, #0 + cmp r1, r6 + bne _021D96DE + ldr r1, [r4, #0x48] + cmp r1, r5 + bne _021D96DE + ldr r1, [r4, #0x4c] + cmp r1, r7 + bne _021D96DE + ldr r2, [r4, #0x50] + ldr r1, [sp, #0x20] + cmp r2, r1 + beq _021D971E +_021D96DE: + mov r1, #0x79 + lsl r1, r1, #2 + add r3, r0, r1 + str r3, [r4] + str r5, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r1, [r3, #0x20] + ldr r3, [r3, #0x24] + add r0, r4, #4 + add r2, r6, #0 + bl MOD16_021D8BD8 + ldr r3, [r4] + ldr r0, [sp, #0x20] + add r2, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + add r0, r4, #0 + ldr r1, [r3, #0x28] + ldr r3, [r3, #0x2c] + add r0, #0x24 + bl MOD16_021D8BD8 + str r6, [r4, #0x44] + str r5, [r4, #0x48] + ldr r0, [sp, #0x20] + str r7, [r4, #0x4c] + str r0, [r4, #0x50] + mov r0, #1 + str r0, [r4, #0x54] +_021D971E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D96B4 + + thumb_func_start MOD16_021D9724 +MOD16_021D9724: ; 0x021D9724 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021D975E + add r0, r5, #4 + bl MOD16_021D8BF4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x24 + bl MOD16_021D8BF4 + ldr r1, [r5, #4] + ldr r0, [r5] + cmp r4, #1 + str r1, [r0, #0x20] + ldr r1, [r5, #8] + ldr r0, [r5] + str r1, [r0, #0x24] + ldr r1, [r5, #0x24] + ldr r0, [r5] + str r1, [r0, #0x28] + ldr r1, [r5, #0x28] + ldr r0, [r5] + str r1, [r0, #0x2c] + bne _021D975E + mov r0, #0 + str r0, [r5, #0x54] +_021D975E: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D9724 + + thumb_func_start MOD16_021D9760 +MOD16_021D9760: ; 0x021D9760 + push {r4, lr} + mov r1, #0x87 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, _021D977C ; =MOD16_021D9724 + add r1, r4, r1 + mov r2, #0 + bl FUN_0200CA44 + mov r1, #0x9e + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_021D977C: .word MOD16_021D9724 + thumb_func_end MOD16_021D9760 + + thumb_func_start MOD16_021D9780 +MOD16_021D9780: ; 0x021D9780 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x9e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0x9e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + thumb_func_end MOD16_021D9780 + + thumb_func_start MOD16_021D9798 +MOD16_021D9798: ; 0x021D9798 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r2, #0 + add r4, r1, #0 + ldr r2, _021D988C ; =0x00001770 + mov r1, #0 + add r5, r0, #0 + bl Call_FillMemWithValue + ldr r0, [r4] + str r0, [r5] + ldr r1, [r4, #8] + ldr r0, _021D9890 ; =0x00001744 + str r1, [r5, r0] + ldr r0, [r5] + bl FUN_02024CA4 + cmp r0, #0 + beq _021D97C2 + mov r1, #1 + b _021D97C4 +_021D97C2: + mov r1, #0 +_021D97C4: + ldr r0, _021D9894 ; =0x00001734 + str r1, [r5, r0] + ldr r0, [r4, #0x20] + cmp r0, #2 + bne _021D97DC + ldr r0, _021D9894 ; =0x00001734 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D97DA + mov r0, #1 + b _021D97DC +_021D97DA: + mov r0, #0 +_021D97DC: + cmp r0, #1 + ldr r0, _021D9898 ; =0x00001730 + bne _021D97EA + mov r1, #1 + str r1, [r5, r0] + mov r1, #0 + b _021D97EE +_021D97EA: + mov r1, #0 + str r1, [r5, r0] +_021D97EE: + str r1, [sp] + ldr r0, _021D9898 ; =0x00001730 + str r1, [sp, #4] + ldr r0, [r5, r0] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r1, #0 + str r6, [sp, #0xc] + bl MOD16_021D9CB0 + cmp r0, #0 + bne _021D980C + bl ErrorHandling +_021D980C: + ldr r1, [r4, #0x1c] + add r0, r5, #0 + bl MOD16_021D9DC0 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + bl MOD16_021D9A60 + ldr r1, [r4, #0x20] + add r0, r5, #0 + bl MOD16_021D9A78 + ldr r0, [r4, #4] + bl FUN_02023A68 + ldr r1, _021D989C ; =0x0000174C + str r0, [r5, r1] + ldr r0, [r4, #4] + bl FUN_020239CC + ldr r1, _021D98A0 ; =0x00001750 + str r0, [r5, r1] + ldr r0, [r4, #4] + add r1, r6, #0 + bl FUN_020239A0 + ldr r1, _021D98A4 ; =0x00001754 + str r0, [r5, r1] + add r0, r6, #0 + bl FUN_02087A6C + ldr r1, _021D98A8 ; =0x00001748 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + cmp r0, #0 + ldr r0, [r5, r1] + bne _021D9864 + mov r1, #0 + add r2, r6, #0 + bl FUN_02087A98 + b _021D986C +_021D9864: + mov r1, #1 + add r2, r6, #0 + bl FUN_02087A98 +_021D986C: + ldr r0, [r4, #0xc] + ldr r1, _021D98AC ; =0x00001760 + str r0, [r5, r1] + ldr r2, [r4, #0x10] + add r0, r1, #4 + str r2, [r5, r0] + add r0, r1, #0 + ldr r2, [r4, #0x14] + add r0, #8 + str r2, [r5, r0] + ldr r0, [r4, #0x18] + add r1, #0xc + str r0, [r5, r1] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021D988C: .word 0x00001770 +_021D9890: .word 0x00001744 +_021D9894: .word 0x00001734 +_021D9898: .word 0x00001730 +_021D989C: .word 0x0000174C +_021D98A0: .word 0x00001750 +_021D98A4: .word 0x00001754 +_021D98A8: .word 0x00001748 +_021D98AC: .word 0x00001760 + thumb_func_end MOD16_021D9798 + + thumb_func_start MOD16_021D98B0 +MOD16_021D98B0: ; 0x021D98B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D98D4 ; =0x00001754 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _021D98D8 ; =0x00001748 + ldr r0, [r4, r0] + bl FUN_02087B0C + ldr r0, _021D98D8 ; =0x00001748 + ldr r0, [r4, r0] + bl FUN_02087A84 + ldr r0, _021D98D8 ; =0x00001748 + mov r1, #0 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D98D4: .word 0x00001754 +_021D98D8: .word 0x00001748 + thumb_func_end MOD16_021D98B0 + + thumb_func_start MOD16_021D98DC +MOD16_021D98DC: ; 0x021D98DC + ldr r3, _021D98E8 ; =0x02024675 + lsl r1, r1, #0x10 + ldr r0, [r0] + lsr r1, r1, #0x10 + bx r3 + nop +_021D98E8: .word 0x02024675 + thumb_func_end MOD16_021D98DC + + thumb_func_start MOD16_021D98EC +MOD16_021D98EC: ; 0x021D98EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0x1c + blt _021D98FA + bl ErrorHandling +_021D98FA: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020246DC + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D98EC + + thumb_func_start MOD16_021D9904 +MOD16_021D9904: ; 0x021D9904 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #2 + blt _021D9912 + bl ErrorHandling +_021D9912: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_02024748 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D9904 + + thumb_func_start MOD16_021D991C +MOD16_021D991C: ; 0x021D991C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #2 + blt _021D992A + bl ErrorHandling +_021D992A: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020247C8 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D991C + + thumb_func_start MOD16_021D9934 +MOD16_021D9934: ; 0x021D9934 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blt _021D9942 + bl ErrorHandling +_021D9942: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_0202484C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D9934 + + thumb_func_start MOD16_021D994C +MOD16_021D994C: ; 0x021D994C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blt _021D995A + bl ErrorHandling +_021D995A: + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020248BC + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021D994C + + thumb_func_start MOD16_021D9964 +MOD16_021D9964: ; 0x021D9964 + push {r3, lr} + ldr r3, _021D99D8 ; =0x0000019D + cmp r1, r3 + bhi _021D998A + sub r2, r3, #1 + cmp r1, r2 + blo _021D997A + beq _021D99BA + cmp r1, r3 + beq _021D99C2 + b _021D99D2 +_021D997A: + cmp r1, #0xc9 + bhi _021D9982 + beq _021D99A2 + b _021D99D2 +_021D9982: + sub r3, #0x1b + cmp r1, r3 + beq _021D99CA + b _021D99D2 +_021D998A: + add r2, r3, #0 + add r2, #9 + cmp r1, r2 + bhi _021D999A + add r3, #9 + cmp r1, r3 + beq _021D99AA + b _021D99D2 +_021D999A: + add r3, #0xa + cmp r1, r3 + beq _021D99B2 + b _021D99D2 +_021D99A2: + mov r1, #0 + bl MOD16_021D98EC + pop {r3, pc} +_021D99AA: + mov r1, #0 + bl MOD16_021D9904 + pop {r3, pc} +_021D99B2: + mov r1, #0 + bl MOD16_021D991C + pop {r3, pc} +_021D99BA: + mov r1, #0 + bl MOD16_021D9934 + pop {r3, pc} +_021D99C2: + mov r1, #0 + bl MOD16_021D994C + pop {r3, pc} +_021D99CA: + mov r1, #0 + bl MOD16_021D9A3C + pop {r3, pc} +_021D99D2: + mov r0, #0 + pop {r3, pc} + nop +_021D99D8: .word 0x0000019D + thumb_func_end MOD16_021D9964 + + thumb_func_start MOD16_021D99DC +MOD16_021D99DC: ; 0x021D99DC + push {r3, lr} + mov r2, #1 + bl MOD16_021D98DC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021D99F0 + mov r0, #1 + pop {r3, pc} +_021D99F0: + mov r0, #2 + pop {r3, pc} + thumb_func_end MOD16_021D99DC + + thumb_func_start MOD16_021D99F4 +MOD16_021D99F4: ; 0x021D99F4 + ldr r3, _021D99FC ; =0x0202471D + ldr r0, [r0] + bx r3 + nop +_021D99FC: .word 0x0202471D + thumb_func_end MOD16_021D99F4 + + thumb_func_start MOD16_021D9A00 +MOD16_021D9A00: ; 0x021D9A00 + ldr r3, _021D9A08 ; =0x020247A5 + ldr r0, [r0] + bx r3 + nop +_021D9A08: .word 0x020247A5 + thumb_func_end MOD16_021D9A00 + + thumb_func_start MOD16_021D9A0C +MOD16_021D9A0C: ; 0x021D9A0C + ldr r3, _021D9A14 ; =0x02024829 + ldr r0, [r0] + bx r3 + nop +_021D9A14: .word 0x02024829 + thumb_func_end MOD16_021D9A0C + + thumb_func_start MOD16_021D9A18 +MOD16_021D9A18: ; 0x021D9A18 + ldr r3, _021D9A20 ; =0x0202489D + ldr r0, [r0] + bx r3 + nop +_021D9A20: .word 0x0202489D + thumb_func_end MOD16_021D9A18 + + thumb_func_start MOD16_021D9A24 +MOD16_021D9A24: ; 0x021D9A24 + ldr r3, _021D9A2C ; =0x0202490D + ldr r0, [r0] + bx r3 + nop +_021D9A2C: .word 0x0202490D + thumb_func_end MOD16_021D9A24 + + thumb_func_start MOD16_021D9A30 +MOD16_021D9A30: ; 0x021D9A30 + ldr r3, _021D9A38 ; =0x02024649 + ldr r0, [r0] + mov r1, #0 + bx r3 + .align 2, 0 +_021D9A38: .word 0x02024649 + thumb_func_end MOD16_021D9A30 + + thumb_func_start MOD16_021D9A3C +MOD16_021D9A3C: ; 0x021D9A3C + ldr r3, _021D9A44 ; =0x02024931 + ldr r0, [r0] + bx r3 + nop +_021D9A44: .word 0x02024931 + thumb_func_end MOD16_021D9A3C + + thumb_func_start MOD16_021D9A48 +MOD16_021D9A48: ; 0x021D9A48 + ldr r3, _021D9A50 ; =0x02024971 + ldr r0, [r0] + bx r3 + nop +_021D9A50: .word 0x02024971 + thumb_func_end MOD16_021D9A48 + + thumb_func_start MOD16_021D9A54 +MOD16_021D9A54: ; 0x021D9A54 + ldr r3, _021D9A5C ; =0x02024CA5 + ldr r0, [r0] + bx r3 + nop +_021D9A5C: .word 0x02024CA5 + thumb_func_end MOD16_021D9A54 + + thumb_func_start MOD16_021D9A60 +MOD16_021D9A60: ; 0x021D9A60 + ldr r2, _021D9A68 ; =0x0000175C + strh r1, [r0, r2] + bx lr + nop +_021D9A68: .word 0x0000175C + thumb_func_end MOD16_021D9A60 + + thumb_func_start MOD16_021D9A6C +MOD16_021D9A6C: ; 0x021D9A6C + ldr r1, _021D9A74 ; =0x0000175C + ldrh r0, [r0, r1] + bx lr + nop +_021D9A74: .word 0x0000175C + thumb_func_end MOD16_021D9A6C + + thumb_func_start MOD16_021D9A78 +MOD16_021D9A78: ; 0x021D9A78 + ldr r2, _021D9A80 ; =0x0000175E + strh r1, [r0, r2] + bx lr + nop +_021D9A80: .word 0x0000175E + thumb_func_end MOD16_021D9A78 + + thumb_func_start MOD16_021D9A84 +MOD16_021D9A84: ; 0x021D9A84 + ldr r1, _021D9A8C ; =0x0000175E + ldrh r0, [r0, r1] + bx lr + nop +_021D9A8C: .word 0x0000175E + thumb_func_end MOD16_021D9A84 + + thumb_func_start MOD16_021D9A90 +MOD16_021D9A90: ; 0x021D9A90 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r7, [sp, #0x4c] + str r1, [sp, #0xc] + add r5, r0, #0 + ldr r1, _021D9CA8 ; =0x000003DA + add r0, r7, #0 + str r2, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_020169D8 + add r6, r0, #0 + bne _021D9AAE + bl ErrorHandling +_021D9AAE: + ldr r2, _021D9CA8 ; =0x000003DA + add r0, r6, #0 + mov r1, #0 + bl Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x24] + ldr r1, _021D9CA8 ; =0x000003DA + add r0, r7, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _021D9ACC + bl ErrorHandling +_021D9ACC: + ldr r2, _021D9CA8 ; =0x000003DA + add r0, r4, #0 + mov r1, #0 + bl Call_FillMemWithValue + mov r1, #0 + ldr r0, [sp, #0x48] + str r1, [sp, #0x20] + cmp r0, #0 + add r2, sp, #0x1c + bne _021D9AFE + add r0, r7, #0 + mov r1, #1 + bl MOD16_021DA184 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + ldr r2, [r5] + add r0, r6, #0 + add r1, sp, #0x24 + bl MOD16_021D9FC4 + b _021D9B16 +_021D9AFE: + add r0, r7, #0 + bl MOD16_021DA184 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + ldr r2, [r5] + add r0, r6, #0 + add r1, sp, #0x24 + bl MOD16_021D9FC4 +_021D9B16: + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r3, r6, #0 + bl MOD16_021DA1B4 + ldr r2, [sp, #0x20] + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + bl memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + bl Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r3, r6, #0 + bl MOD16_021DA264 + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9B6A + mov r7, #0 + b _021D9C82 +_021D9B6A: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + bl memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + bl Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r3, r6, #0 + bl MOD16_021DA348 + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9BA6 + mov r7, #0 + b _021D9C82 +_021D9BA6: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + bl memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + bl Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x40] + add r3, r6, #0 + bl MOD16_021DA348 + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9BE2 + mov r7, #0 + b _021D9C82 +_021D9BE2: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + bl memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + bl Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r1, r4, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [r5] + add r2, sp, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #0x44] + add r3, r6, #0 + bl MOD16_021DA49C + ldr r2, [sp, #0x20] + cmp r2, #0 + bne _021D9C1E + mov r7, #0 + b _021D9C82 +_021D9C1E: + add r0, r6, #0 + add r1, r4, #0 + lsl r2, r2, #1 + bl memcpy + ldr r2, [sp, #0x20] + add r0, r4, #0 + str r2, [sp, #0x24] + mov r1, #0 + lsl r2, r2, #1 + bl Call_FillMemWithValue + mov r0, #0 + str r0, [sp, #0x20] + ldr r1, [r5] + ldr r3, [sp, #0x24] + add r0, r5, #4 + add r2, r6, #0 + bl MOD16_021DA080 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x40] + cmp r0, #0 + bne _021D9C64 + ldr r0, [sp, #0x44] + cmp r0, #0 + beq _021D9C68 +_021D9C64: + mov r0, #1 + str r0, [sp, #0x50] +_021D9C68: + ldr r0, [sp, #0x50] + cmp r0, #0 + bne _021D9C7A + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + add r0, r5, #4 + bl MOD16_021DA0D8 + b _021D9C80 +_021D9C7A: + add r0, r5, #4 + bl MOD16_021DA148 +_021D9C80: + mov r7, #1 +_021D9C82: + ldr r2, _021D9CAC ; =0x00001738 + add r0, r5, #4 + add r1, r5, r2 + add r2, r2, #4 + add r2, r5, r2 + bl MOD16_021DA5C4 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #0x18] + bl FUN_02016A18 + add r0, r7, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9CA8: .word 0x000003DA +_021D9CAC: .word 0x00001738 + thumb_func_end MOD16_021D9A90 + + thumb_func_start MOD16_021D9CB0 +MOD16_021D9CB0: ; 0x021D9CB0 + push {r3, r4, lr} + sub sp, #0x14 + ldr r4, [sp, #0x20] + str r4, [sp] + ldr r4, [sp, #0x24] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + bl MOD16_021D9A90 + add sp, #0x14 + pop {r3, r4, pc} + thumb_func_end MOD16_021D9CB0 + + thumb_func_start MOD16_021D9CD0 +MOD16_021D9CD0: ; 0x021D9CD0 + cmp r1, #0 + bne _021D9CD8 + mov r0, #1 + bx lr +_021D9CD8: + ldr r1, _021D9CE8 ; =0x00001734 + ldr r0, [r0, r1] + cmp r0, #0 + beq _021D9CE4 + mov r0, #1 + bx lr +_021D9CE4: + mov r0, #0 + bx lr + .align 2, 0 +_021D9CE8: .word 0x00001734 + thumb_func_end MOD16_021D9CD0 + + thumb_func_start MOD16_021D9CEC +MOD16_021D9CEC: ; 0x021D9CEC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021D9CFE + ldr r1, _021D9D00 ; =0x00001730 + str r4, [r5, r1] +_021D9CFE: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9D00: .word 0x00001730 + thumb_func_end MOD16_021D9CEC + + thumb_func_start MOD16_021D9D04 +MOD16_021D9D04: ; 0x021D9D04 + ldr r1, _021D9D0C ; =0x00001730 + ldr r0, [r0, r1] + bx lr + nop +_021D9D0C: .word 0x00001730 + thumb_func_end MOD16_021D9D04 + + thumb_func_start MOD16_021D9D10 +MOD16_021D9D10: ; 0x021D9D10 + cmp r1, #0 + blt _021D9D22 + mov r2, #0xf7 + lsl r2, r2, #4 + ldr r0, [r0, r2] + cmp r1, r0 + bge _021D9D22 + mov r0, #1 + bx lr +_021D9D22: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021D9D10 + + thumb_func_start MOD16_021D9D28 +MOD16_021D9D28: ; 0x021D9D28 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9D10 + cmp r0, #0 + beq _021D9D3E + ldr r0, _021D9D44 ; =0x00000F6C + str r4, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9D3E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9D44: .word 0x00000F6C + thumb_func_end MOD16_021D9D28 + + thumb_func_start MOD16_021D9D48 +MOD16_021D9D48: ; 0x021D9D48 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _021D9D84 ; =0x00000F6C + add r5, r0, #0 + ldr r1, [r5, r1] + add r1, r1, r4 + bl MOD16_021D9D10 + cmp r0, #0 + beq _021D9D68 + ldr r0, _021D9D84 ; =0x00000F6C + ldr r1, [r5, r0] + add r1, r1, r4 + str r1, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9D68: + cmp r4, #0 + blt _021D9D78 + mov r0, #0xf7 + lsl r0, r0, #4 + ldr r1, [r5, r0] + sub r0, r0, #4 + sub r1, r1, #1 + b _021D9D7C +_021D9D78: + ldr r0, _021D9D84 ; =0x00000F6C + mov r1, #0 +_021D9D7C: + str r1, [r5, r0] + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9D84: .word 0x00000F6C + thumb_func_end MOD16_021D9D48 + + thumb_func_start MOD16_021D9D88 +MOD16_021D9D88: ; 0x021D9D88 + ldr r1, _021D9D90 ; =0x00000F6C + ldr r0, [r0, r1] + bx lr + nop +_021D9D90: .word 0x00000F6C + thumb_func_end MOD16_021D9D88 + + thumb_func_start MOD16_021D9D94 +MOD16_021D9D94: ; 0x021D9D94 + mov r1, #0xf7 + lsl r1, r1, #4 + ldr r0, [r0, r1] + bx lr + thumb_func_end MOD16_021D9D94 + + thumb_func_start MOD16_021D9D9C +MOD16_021D9D9C: ; 0x021D9D9C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9D94 + mov r2, #0 + cmp r0, #0 + ble _021D9DBA +_021D9DAC: + ldr r1, [r5, #4] + cmp r1, r4 + beq _021D9DBA + add r2, r2, #1 + add r5, #8 + cmp r2, r0 + blt _021D9DAC +_021D9DBA: + add r0, r2, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D9D9C + + thumb_func_start MOD16_021D9DC0 +MOD16_021D9DC0: ; 0x021D9DC0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021D9D94 + add r4, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021D9D9C + add r1, r0, #0 + cmp r4, r1 + bls _021D9DE2 + add r0, r5, #0 + bl MOD16_021D9D28 + pop {r4, r5, r6, pc} +_021D9DE2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021D9DC0 + + thumb_func_start MOD16_021D9DE8 +MOD16_021D9DE8: ; 0x021D9DE8 + ldr r1, _021D9DF4 ; =0x00000F6C + ldr r1, [r0, r1] + lsl r1, r1, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_021D9DF4: .word 0x00000F6C + thumb_func_end MOD16_021D9DE8 + + thumb_func_start MOD16_021D9DF8 +MOD16_021D9DF8: ; 0x021D9DF8 + ldr r1, _021D9E04 ; =0x00000F6C + ldr r1, [r0, r1] + lsl r1, r1, #3 + add r0, r0, r1 + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_021D9E04: .word 0x00000F6C + thumb_func_end MOD16_021D9DF8 + + thumb_func_start MOD16_021D9E08 +MOD16_021D9E08: ; 0x021D9E08 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9D10 + cmp r0, #0 + beq _021D9E1E + add r1, r5, #4 + lsl r0, r4, #3 + add r0, r1, r0 + pop {r3, r4, r5, pc} +_021D9E1E: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021D9E08 + + thumb_func_start MOD16_021D9E24 +MOD16_021D9E24: ; 0x021D9E24 + ldr r2, _021D9E38 ; =0x0000172C + ldr r0, [r0, r2] + cmp r0, r1 + ble _021D9E34 + cmp r1, #0 + blt _021D9E34 + mov r0, #1 + bx lr +_021D9E34: + mov r0, #0 + bx lr + .align 2, 0 +_021D9E38: .word 0x0000172C + thumb_func_end MOD16_021D9E24 + + thumb_func_start MOD16_021D9E3C +MOD16_021D9E3C: ; 0x021D9E3C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9E24 + cmp r0, #0 + beq _021D9E62 + ldr r1, _021D9E68 ; =0x00001728 + add r0, r5, #0 + str r4, [r5, r1] + ldr r1, [r5, r1] + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _021D9E6C ; =0x00000F74 + ldr r1, [r2, r1] + bl MOD16_021D9D28 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9E62: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9E68: .word 0x00001728 +_021D9E6C: .word 0x00000F74 + thumb_func_end MOD16_021D9E3C + + thumb_func_start MOD16_021D9E70 +MOD16_021D9E70: ; 0x021D9E70 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021D9EA8 + cmp r0, #0 + beq _021D9E9A + ldr r1, _021D9EA0 ; =0x00001728 + ldr r0, [r5, r1] + add r0, r0, r4 + str r0, [r5, r1] + ldr r1, [r5, r1] + add r0, r5, #0 + lsl r1, r1, #2 + add r2, r5, r1 + ldr r1, _021D9EA4 ; =0x00000F74 + ldr r1, [r2, r1] + bl MOD16_021D9D28 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9E9A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D9EA0: .word 0x00001728 +_021D9EA4: .word 0x00000F74 + thumb_func_end MOD16_021D9E70 + + thumb_func_start MOD16_021D9EA8 +MOD16_021D9EA8: ; 0x021D9EA8 + push {r3, lr} + ldr r2, _021D9EC0 ; =0x00001728 + ldr r2, [r0, r2] + add r1, r2, r1 + bl MOD16_021D9E24 + cmp r0, #0 + beq _021D9EBC + mov r0, #1 + pop {r3, pc} +_021D9EBC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021D9EC0: .word 0x00001728 + thumb_func_end MOD16_021D9EA8 + + thumb_func_start MOD16_021D9EC4 +MOD16_021D9EC4: ; 0x021D9EC4 + ldr r1, _021D9ECC ; =0x00001728 + ldr r0, [r0, r1] + bx lr + nop +_021D9ECC: .word 0x00001728 + thumb_func_end MOD16_021D9EC4 + + thumb_func_start MOD16_021D9ED0 +MOD16_021D9ED0: ; 0x021D9ED0 + ldr r1, _021D9ED8 ; =0x0000172C + ldr r0, [r0, r1] + bx lr + nop +_021D9ED8: .word 0x0000172C + thumb_func_end MOD16_021D9ED0 + + thumb_func_start MOD16_021D9EDC +MOD16_021D9EDC: ; 0x021D9EDC + lsl r1, r1, #2 + add r1, r0, r1 + ldr r0, _021D9EE8 ; =0x00000F74 + ldr r0, [r1, r0] + bx lr + nop +_021D9EE8: .word 0x00000F74 + thumb_func_end MOD16_021D9EDC + + thumb_func_start MOD16_021D9EEC +MOD16_021D9EEC: ; 0x021D9EEC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021D9F24 ; =0x0000172C + mov r4, #0 + ldr r0, [r5, r0] + cmp r0, #0 + ble _021D9F22 + ldr r7, _021D9F24 ; =0x0000172C +_021D9EFC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9EDC + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021D9D88 + cmp r6, r0 + bne _021D9F1A + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021D9E3C + pop {r3, r4, r5, r6, r7, pc} +_021D9F1A: + ldr r0, [r5, r7] + add r4, r4, #1 + cmp r4, r0 + blt _021D9EFC +_021D9F22: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9F24: .word 0x0000172C + thumb_func_end MOD16_021D9EEC + + thumb_func_start MOD16_021D9F28 +MOD16_021D9F28: ; 0x021D9F28 + ldr r1, _021D9F30 ; =0x00001738 + ldr r0, [r0, r1] + bx lr + nop +_021D9F30: .word 0x00001738 + thumb_func_end MOD16_021D9F28 + + thumb_func_start MOD16_021D9F34 +MOD16_021D9F34: ; 0x021D9F34 + ldr r1, _021D9F3C ; =0x0000173C + ldr r0, [r0, r1] + bx lr + nop +_021D9F3C: .word 0x0000173C + thumb_func_end MOD16_021D9F34 + + thumb_func_start MOD16_021D9F40 +MOD16_021D9F40: ; 0x021D9F40 + ldr r1, _021D9F48 ; =0x00001754 + ldr r0, [r0, r1] + bx lr + nop +_021D9F48: .word 0x00001754 + thumb_func_end MOD16_021D9F40 + + thumb_func_start MOD16_021D9F4C +MOD16_021D9F4C: ; 0x021D9F4C + ldr r1, _021D9F54 ; =0x00001750 + ldr r0, [r0, r1] + bx lr + nop +_021D9F54: .word 0x00001750 + thumb_func_end MOD16_021D9F4C + + thumb_func_start MOD16_021D9F58 +MOD16_021D9F58: ; 0x021D9F58 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021D9DE8 + add r4, r0, #0 + ldr r0, [r5] + bl FUN_02024D58 + cmp r0, #0 + bne _021D9F72 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D9F72: + lsl r1, r4, #0x10 + ldr r0, [r5] + lsr r1, r1, #0x10 + add r2, r6, #0 + bl FUN_02024D00 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021D9F58 + + thumb_func_start MOD16_021D9F80 +MOD16_021D9F80: ; 0x021D9F80 + ldr r3, _021D9F88 ; =0x02024CC5 + ldr r0, [r0] + bx r3 + nop +_021D9F88: .word 0x02024CC5 + thumb_func_end MOD16_021D9F80 + + thumb_func_start MOD16_021D9F8C +MOD16_021D9F8C: ; 0x021D9F8C + ldr r1, _021D9FAC ; =0x021C48F8 + ldrh r1, [r1, #0x22] + cmp r1, #0 + beq _021D9F9C + ldr r1, _021D9FB0 ; =0x00001758 + mov r2, #0 + str r2, [r0, r1] + bx lr +_021D9F9C: + ldr r1, _021D9FB4 ; =0x021C48B8 + ldr r1, [r1, #0x44] + cmp r1, #0 + beq _021D9FAA + ldr r1, _021D9FB0 ; =0x00001758 + mov r2, #1 + str r2, [r0, r1] +_021D9FAA: + bx lr + .align 2, 0 +_021D9FAC: .word 0x021C48F8 +_021D9FB0: .word 0x00001758 +_021D9FB4: .word 0x021C48B8 + thumb_func_end MOD16_021D9F8C + + thumb_func_start MOD16_021D9FB8 +MOD16_021D9FB8: ; 0x021D9FB8 + ldr r1, _021D9FC0 ; =0x00001758 + ldr r0, [r0, r1] + bx lr + nop +_021D9FC0: .word 0x00001758 + thumb_func_end MOD16_021D9FB8 + + thumb_func_start MOD16_021D9FC4 +MOD16_021D9FC4: ; 0x021D9FC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r7, [sp, #0x20] + add r5, r1, #0 + mov r6, #0 + add r4, r3, #0 + str r0, [sp] + str r2, [sp, #4] + str r6, [r5] + cmp r7, #0 + ble _021D9FFE +_021D9FDA: + ldrh r1, [r4] + ldr r0, [sp, #4] + bl FUN_020245F0 + cmp r0, #0 + beq _021D9FF6 + ldr r1, [r5] + ldrh r0, [r4] + lsl r2, r1, #1 + ldr r1, [sp] + strh r0, [r1, r2] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021D9FF6: + add r6, r6, #1 + add r4, r4, #2 + cmp r6, r7 + blt _021D9FDA +_021D9FFE: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021D9FC4 + + thumb_func_start MOD16_021DA004 +MOD16_021DA004: ; 0x021DA004 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #0x28] + ldr r0, [sp, #0x30] + mov r1, #0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r6, r2, #0 + str r0, [sp, #0x34] + ldr r0, [sp, #4] + str r3, [sp, #8] + str r1, [r0] + add r0, r3, #0 + ldr r7, [sp, #0x2c] + str r1, [sp, #0xc] + cmp r0, #0 + ble _021DA07C +_021DA02C: + mov r4, #0 + cmp r7, #0 + ble _021DA054 + ldr r5, [sp, #0x28] +_021DA034: + ldrh r1, [r6] + ldrh r0, [r5] + cmp r1, r0 + bne _021DA04C + ldr r0, [sp, #0x30] + cmp r0, #1 + beq _021DA054 + ldr r0, [sp, #0x34] + bl FUN_02024594 + cmp r0, #0 + bne _021DA054 +_021DA04C: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, r7 + blt _021DA034 +_021DA054: + cmp r4, r7 + bge _021DA06E + ldr r0, [sp, #4] + ldrh r2, [r6] + ldr r0, [r0] + lsl r1, r0, #1 + ldr r0, [sp] + strh r2, [r0, r1] + ldr r0, [sp, #4] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + str r1, [r0] +_021DA06E: + ldr r0, [sp, #0xc] + add r6, r6, #2 + add r1, r0, #1 + ldr r0, [sp, #8] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021DA02C +_021DA07C: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA004 + + thumb_func_start MOD16_021DA080 +MOD16_021DA080: ; 0x021DA080 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021DA0D4 ; =0x00000F6C + mov r6, #0 + add r7, r3, #0 + add r4, r2, #0 + str r1, [sp] + str r6, [r5, r0] + cmp r7, #0 + ble _021DA0D2 +_021DA094: + ldrh r1, [r4] + ldr r0, [sp] + bl FUN_02024594 + cmp r0, #0 + ldr r0, _021DA0D4 ; =0x00000F6C + beq _021DA0AC + ldr r0, [r5, r0] + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #2 + b _021DA0B4 +_021DA0AC: + ldr r0, [r5, r0] + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #1 +_021DA0B4: + str r0, [r1, #4] + ldr r1, _021DA0D4 ; =0x00000F6C + ldrh r0, [r4] + ldr r1, [r5, r1] + add r6, r6, #1 + lsl r1, r1, #3 + str r0, [r5, r1] + ldr r0, _021DA0D4 ; =0x00000F6C + add r4, r4, #2 + ldr r0, [r5, r0] + add r1, r0, #1 + ldr r0, _021DA0D4 ; =0x00000F6C + str r1, [r5, r0] + cmp r6, r7 + blt _021DA094 +_021DA0D2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA0D4: .word 0x00000F6C + thumb_func_end MOD16_021DA080 + + thumb_func_start MOD16_021DA0D8 +MOD16_021DA0D8: ; 0x021DA0D8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r4, #0 + ldr r1, _021DA13C ; =0x00001728 + mov ip, r2 + str r4, [r0, r1] + add r1, r2, #0 + mov lr, r4 + cmp r1, #0 + ble _021DA13A + ldr r7, _021DA13C ; =0x00001728 + add r5, r0, #0 +_021DA0F0: + ldr r1, _021DA140 ; =0x00000F6C + ldr r1, [r0, r1] + cmp r4, r1 + bge _021DA12C + ldrh r1, [r6] + ldr r2, [r5] + cmp r2, r1 + ldr r1, _021DA13C ; =0x00001728 + bne _021DA11A + ldr r1, [r0, r1] + add r5, #8 + lsl r1, r1, #2 + add r2, r0, r1 + mov r1, #0xf7 + lsl r1, r1, #4 + str r4, [r2, r1] + ldr r1, [r0, r7] + add r4, r4, #1 + add r1, r1, #1 + str r1, [r0, r7] + b _021DA12C +_021DA11A: + ldr r1, [r0, r1] + ldr r2, _021DA144 ; =0x000001EE + lsl r1, r1, #2 + add r3, r0, r1 + lsl r1, r2, #3 + str r2, [r3, r1] + ldr r1, [r0, r7] + add r1, r1, #1 + str r1, [r0, r7] +_021DA12C: + mov r1, lr + add r1, r1, #1 + mov r2, ip + add r6, r6, #2 + mov lr, r1 + cmp r1, r2 + blt _021DA0F0 +_021DA13A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DA13C: .word 0x00001728 +_021DA140: .word 0x00000F6C +_021DA144: .word 0x000001EE + thumb_func_end MOD16_021DA0D8 + + thumb_func_start MOD16_021DA148 +MOD16_021DA148: ; 0x021DA148 + push {r3, r4, r5, r6} + ldr r2, _021DA17C ; =0x00001728 + mov r1, #0 + str r1, [r0, r2] + ldr r2, _021DA180 ; =0x00000F6C + ldr r2, [r0, r2] + cmp r2, #0 + ble _021DA178 + ldr r5, _021DA17C ; =0x00001728 + mov r3, #0xf7 + lsl r3, r3, #4 + add r2, r5, #0 + sub r4, r3, #4 +_021DA162: + ldr r6, [r0, r2] + lsl r6, r6, #2 + add r6, r0, r6 + str r1, [r6, r3] + ldr r6, [r0, r5] + add r1, r1, #1 + add r6, r6, #1 + str r6, [r0, r5] + ldr r6, [r0, r4] + cmp r1, r6 + blt _021DA162 +_021DA178: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_021DA17C: .word 0x00001728 +_021DA180: .word 0x00000F6C + thumb_func_end MOD16_021DA148 + + thumb_func_start MOD16_021DA184 +MOD16_021DA184: ; 0x021DA184 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + cmp r5, #0x2f + blt _021DA196 + bl ErrorHandling +_021DA196: + mov r2, #0 + add r5, #0xb + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x4b + add r1, r5, #0 + add r3, r6, #0 + bl FUN_02006D18 + ldr r1, [sp, #8] + lsr r1, r1, #1 + str r1, [r4] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021DA184 + + thumb_func_start MOD16_021DA1B4 +MOD16_021DA1B4: ; 0x021DA1B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + str r1, [sp, #0x10] + add r7, r2, #0 + mov r4, #0 + str r3, [sp, #0x14] + ldr r0, [sp, #0x34] + cmp r5, #5 + bhi _021DA222 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA1D4: ; jump table + .short _021DA1E0 - _021DA1D4 - 2 ; case 0 + .short _021DA1E4 - _021DA1D4 - 2 ; case 1 + .short _021DA1F2 - _021DA1D4 - 2 ; case 2 + .short _021DA1FE - _021DA1D4 - 2 ; case 3 + .short _021DA20A - _021DA1D4 - 2 ; case 4 + .short _021DA216 - _021DA1D4 - 2 ; case 5 +_021DA1E0: + add r6, r4, #0 + b _021DA226 +_021DA1E4: + mov r1, #2 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + mov r4, #1 + b _021DA226 +_021DA1F2: + mov r1, #3 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA1FE: + mov r1, #4 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA20A: + mov r1, #5 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA216: + mov r1, #6 + add r2, sp, #0x18 + bl MOD16_021DA184 + add r6, r0, #0 + b _021DA226 +_021DA222: + bl ErrorHandling +_021DA226: + cmp r6, #0 + beq _021DA24E + ldr r0, [sp, #0x14] + add r1, r7, #0 + str r0, [sp] + ldr r0, [sp, #0x30] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x38] + str r4, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x18] + bl MOD16_021DA004 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_021DA24E: + ldr r2, [sp, #0x30] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsl r2, r2, #1 + bl memcpy + ldr r0, [sp, #0x30] + str r0, [r7] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DA1B4 + + thumb_func_start MOD16_021DA264 +MOD16_021DA264: ; 0x021DA264 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + ldr r0, [sp, #0x34] + cmp r5, #9 + bhi _021DA306 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA282: ; jump table + .short _021DA296 - _021DA282 - 2 ; case 0 + .short _021DA29A - _021DA282 - 2 ; case 1 + .short _021DA2A6 - _021DA282 - 2 ; case 2 + .short _021DA2B2 - _021DA282 - 2 ; case 3 + .short _021DA2BE - _021DA282 - 2 ; case 4 + .short _021DA2CA - _021DA282 - 2 ; case 5 + .short _021DA2D6 - _021DA282 - 2 ; case 6 + .short _021DA2E2 - _021DA282 - 2 ; case 7 + .short _021DA2EE - _021DA282 - 2 ; case 8 + .short _021DA2FA - _021DA282 - 2 ; case 9 +_021DA296: + mov r4, #0 + b _021DA30A +_021DA29A: + mov r1, #7 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2A6: + mov r1, #8 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2B2: + mov r1, #9 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2BE: + mov r1, #0xa + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2CA: + mov r1, #0xb + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2D6: + mov r1, #0xc + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2E2: + mov r1, #0xd + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2EE: + mov r1, #0xe + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA2FA: + mov r1, #0xf + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA30A +_021DA306: + bl ErrorHandling +_021DA30A: + cmp r4, #0 + beq _021DA332 + str r4, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DA004 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DA332: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, #0 + lsl r2, r2, #1 + bl memcpy + ldr r0, [sp, #0x30] + str r0, [r6] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DA264 + + thumb_func_start MOD16_021DA348 +MOD16_021DA348: ; 0x021DA348 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + ldr r0, [sp, #0x34] + cmp r5, #0x11 + bhi _021DA45A + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA366: ; jump table + .short _021DA38A - _021DA366 - 2 ; case 0 + .short _021DA38E - _021DA366 - 2 ; case 1 + .short _021DA39A - _021DA366 - 2 ; case 2 + .short _021DA3A6 - _021DA366 - 2 ; case 3 + .short _021DA3B2 - _021DA366 - 2 ; case 4 + .short _021DA3BE - _021DA366 - 2 ; case 5 + .short _021DA3CA - _021DA366 - 2 ; case 6 + .short _021DA3D6 - _021DA366 - 2 ; case 7 + .short _021DA3E2 - _021DA366 - 2 ; case 8 + .short _021DA3EE - _021DA366 - 2 ; case 9 + .short _021DA3FA - _021DA366 - 2 ; case 10 + .short _021DA406 - _021DA366 - 2 ; case 11 + .short _021DA412 - _021DA366 - 2 ; case 12 + .short _021DA41E - _021DA366 - 2 ; case 13 + .short _021DA42A - _021DA366 - 2 ; case 14 + .short _021DA436 - _021DA366 - 2 ; case 15 + .short _021DA442 - _021DA366 - 2 ; case 16 + .short _021DA44E - _021DA366 - 2 ; case 17 +_021DA38A: + mov r4, #0 + b _021DA45E +_021DA38E: + mov r1, #0x10 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA39A: + mov r1, #0x11 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3A6: + mov r1, #0x12 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3B2: + mov r1, #0x13 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3BE: + mov r1, #0x14 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3CA: + mov r1, #0x15 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3D6: + mov r1, #0x16 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3E2: + mov r1, #0x17 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3EE: + mov r1, #0x18 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA3FA: + mov r1, #0x19 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA406: + mov r1, #0x1a + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA412: + mov r1, #0x1b + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA41E: + mov r1, #0x1c + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA42A: + mov r1, #0x1d + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA436: + mov r1, #0x1e + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA442: + mov r1, #0x1f + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA44E: + mov r1, #0x20 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA45E +_021DA45A: + bl ErrorHandling +_021DA45E: + cmp r4, #0 + beq _021DA486 + str r4, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DA004 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DA486: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, #0 + lsl r2, r2, #1 + bl memcpy + ldr r0, [sp, #0x30] + str r0, [r6] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DA348 + + thumb_func_start MOD16_021DA49C +MOD16_021DA49C: ; 0x021DA49C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + ldr r0, [sp, #0x34] + cmp r5, #0xe + bhi _021DA584 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DA4BA: ; jump table + .short _021DA4D8 - _021DA4BA - 2 ; case 0 + .short _021DA4DC - _021DA4BA - 2 ; case 1 + .short _021DA4E8 - _021DA4BA - 2 ; case 2 + .short _021DA4F4 - _021DA4BA - 2 ; case 3 + .short _021DA500 - _021DA4BA - 2 ; case 4 + .short _021DA50C - _021DA4BA - 2 ; case 5 + .short _021DA518 - _021DA4BA - 2 ; case 6 + .short _021DA524 - _021DA4BA - 2 ; case 7 + .short _021DA530 - _021DA4BA - 2 ; case 8 + .short _021DA53C - _021DA4BA - 2 ; case 9 + .short _021DA548 - _021DA4BA - 2 ; case 10 + .short _021DA554 - _021DA4BA - 2 ; case 11 + .short _021DA560 - _021DA4BA - 2 ; case 12 + .short _021DA56C - _021DA4BA - 2 ; case 13 + .short _021DA578 - _021DA4BA - 2 ; case 14 +_021DA4D8: + mov r4, #0 + b _021DA588 +_021DA4DC: + mov r1, #0x21 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA4E8: + mov r1, #0x22 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA4F4: + mov r1, #0x23 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA500: + mov r1, #0x24 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA50C: + mov r1, #0x25 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA518: + mov r1, #0x26 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA524: + mov r1, #0x27 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA530: + mov r1, #0x28 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA53C: + mov r1, #0x29 + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA548: + mov r1, #0x2a + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA554: + mov r1, #0x2b + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA560: + mov r1, #0x2c + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA56C: + mov r1, #0x2d + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA578: + mov r1, #0x2e + add r2, sp, #0x14 + bl MOD16_021DA184 + add r4, r0, #0 + b _021DA588 +_021DA584: + bl ErrorHandling +_021DA588: + cmp r4, #0 + beq _021DA5B0 + str r4, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DA004 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DA5B0: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, #0 + lsl r2, r2, #1 + bl memcpy + ldr r0, [sp, #0x30] + str r0, [r6] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA49C + + thumb_func_start MOD16_021DA5C4 +MOD16_021DA5C4: ; 0x021DA5C4 + push {r3, r4, r5, r6} + mov r3, #0 + str r3, [r1] + ldr r4, _021DA5F8 ; =0x00000F6C + str r3, [r2] + ldr r4, [r0, r4] + cmp r4, #0 + ble _021DA5F4 + ldr r5, _021DA5F8 ; =0x00000F6C + add r4, r0, #0 +_021DA5D8: + ldr r6, [r4, #4] + cmp r6, #2 + bne _021DA5E4 + ldr r6, [r2] + add r6, r6, #1 + str r6, [r2] +_021DA5E4: + ldr r6, [r1] + add r3, r3, #1 + add r6, r6, #1 + str r6, [r1] + ldr r6, [r0, r5] + add r4, #8 + cmp r3, r6 + blt _021DA5D8 +_021DA5F4: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_021DA5F8: .word 0x00000F6C + thumb_func_end MOD16_021DA5C4 + + thumb_func_start MOD16_021DA5FC +MOD16_021DA5FC: ; 0x021DA5FC + push {r3, r4, r5, lr} + mov r1, #0x48 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DA60E + bl ErrorHandling +_021DA60E: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x48 + bl Call_FillMemWithValue + mov r0, #5 + str r0, [r4, #8] + str r5, [r4, #0x44] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA5FC + + thumb_func_start MOD16_021DA624 +MOD16_021DA624: ; 0x021DA624 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _021DA632 + bl ErrorHandling +_021DA632: + cmp r4, #0 + bne _021DA63A + bl ErrorHandling +_021DA63A: + add r0, r5, #0 + bl MOD16_021DA7C4 + cmp r0, #0 + bne _021DA648 + bl ErrorHandling +_021DA648: + ldr r0, [r4] + str r0, [r5] + ldr r0, [r4, #4] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #8] + add r0, r5, #0 + add r0, #0xc + bl MOD16_021DA7F4 + ldr r0, [r5, #0x44] + str r0, [r5, #0x10] + add r0, r5, #0 + add r0, #0x2c + bl MOD16_021DA800 + ldr r0, [r5, #0x44] + str r0, [r5, #0x30] + ldr r0, [r4, #8] + ldr r0, [r0] + str r0, [r5, #0x20] + ldr r0, [r4, #8] + ldr r0, [r0, #4] + str r0, [r5, #0x24] + ldr r0, [r4, #8] + ldr r0, [r0, #8] + str r0, [r5, #0x28] + ldr r0, [r4, #0xc] + ldr r0, [r0] + str r0, [r5, #0x38] + ldr r0, [r4, #0xc] + ldr r0, [r0, #4] + str r0, [r5, #0x3c] + ldr r0, [r4, #0xc] + ldr r0, [r0, #8] + str r0, [r5, #0x40] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA624 + + thumb_func_start MOD16_021DA694 +MOD16_021DA694: ; 0x021DA694 + push {r4, lr} + add r4, r0, #0 + bne _021DA69E + bl ErrorHandling +_021DA69E: + ldr r0, [r4, #8] + cmp r0, #5 + bhi _021DA712 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA6B0: ; jump table + .short _021DA6BC - _021DA6B0 - 2 ; case 0 + .short _021DA716 - _021DA6B0 - 2 ; case 1 + .short _021DA6D8 - _021DA6B0 - 2 ; case 2 + .short _021DA716 - _021DA6B0 - 2 ; case 3 + .short _021DA6F6 - _021DA6B0 - 2 ; case 4 + .short _021DA70E - _021DA6B0 - 2 ; case 5 +_021DA6BC: + add r1, r4, #0 + ldr r0, [r4, #0x20] + ldr r2, [r4] + add r1, #0xc + bl MOD16_021DA808 + cmp r0, #1 + bne _021DA716 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + b _021DA716 +_021DA6D8: + add r1, r4, #0 + ldr r0, [r4, #0x24] + ldr r2, [r4] + add r1, #0xc + bl MOD16_021DA808 + cmp r0, #1 + bne _021DA716 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x2c] + b _021DA716 +_021DA6F6: + add r1, r4, #0 + ldr r0, [r4, #0x28] + ldr r2, [r4] + add r1, #0xc + bl MOD16_021DA808 + cmp r0, #1 + bne _021DA716 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021DA716 +_021DA70E: + mov r0, #1 + pop {r4, pc} +_021DA712: + bl ErrorHandling +_021DA716: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DA694 + + thumb_func_start MOD16_021DA71C +MOD16_021DA71C: ; 0x021DA71C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bne _021DA728 + bl ErrorHandling +_021DA728: + ldr r0, [r4, #8] + cmp r0, #5 + bhi _021DA7A6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA73A: ; jump table + .short _021DA7AA - _021DA73A - 2 ; case 0 + .short _021DA746 - _021DA73A - 2 ; case 1 + .short _021DA76A - _021DA73A - 2 ; case 2 + .short _021DA780 - _021DA73A - 2 ; case 3 + .short _021DA7AA - _021DA73A - 2 ; case 4 + .short _021DA7A0 - _021DA73A - 2 ; case 5 +_021DA746: + add r0, r4, #0 + add r0, #0xc + str r0, [sp] + add r2, r4, #0 + ldr r0, [r4, #0x38] + ldr r1, [r4, #4] + ldr r3, [r4] + add r2, #0x2c + bl MOD16_021DA828 + cmp r0, #1 + bne _021DA7AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #0x2c] + b _021DA7AA +_021DA76A: + add r0, r4, #0 + add r0, #0xc + str r0, [sp] + add r2, r4, #0 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #4] + ldr r3, [r4] + add r2, #0x2c + bl MOD16_021DA828 + b _021DA7AA +_021DA780: + add r0, r4, #0 + add r0, #0xc + str r0, [sp] + add r2, r4, #0 + ldr r0, [r4, #0x40] + ldr r1, [r4, #4] + ldr r3, [r4] + add r2, #0x2c + bl MOD16_021DA828 + cmp r0, #1 + bne _021DA7AA + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021DA7AA +_021DA7A0: + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021DA7A6: + bl ErrorHandling +_021DA7AA: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DA71C + + thumb_func_start MOD16_021DA7B0 +MOD16_021DA7B0: ; 0x021DA7B0 + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD16_021DA7B0 + + thumb_func_start MOD16_021DA7B4 +MOD16_021DA7B4: ; 0x021DA7B4 + push {r4, lr} + add r4, r0, #0 + bne _021DA7BE + bl ErrorHandling +_021DA7BE: + mov r0, #1 + str r0, [r4, #0x18] + pop {r4, pc} + thumb_func_end MOD16_021DA7B4 + + thumb_func_start MOD16_021DA7C4 +MOD16_021DA7C4: ; 0x021DA7C4 + push {r4, lr} + add r4, r0, #0 + bne _021DA7CE + bl ErrorHandling +_021DA7CE: + ldr r0, [r4, #8] + cmp r0, #5 + bne _021DA7D8 + mov r0, #1 + pop {r4, pc} +_021DA7D8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA7C4 + + thumb_func_start MOD16_021DA7DC +MOD16_021DA7DC: ; 0x021DA7DC + push {r4, lr} + add r4, r0, #0 + bne _021DA7E6 + bl ErrorHandling +_021DA7E6: + ldr r0, [r4, #8] + cmp r0, #2 + bne _021DA7F0 + mov r0, #1 + pop {r4, pc} +_021DA7F0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA7DC + + thumb_func_start MOD16_021DA7F4 +MOD16_021DA7F4: ; 0x021DA7F4 + mov r1, #0 + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DA7F4 + + thumb_func_start MOD16_021DA800 +MOD16_021DA800: ; 0x021DA800 + mov r1, #0 + str r1, [r0] + str r1, [r0, #8] + bx lr + thumb_func_end MOD16_021DA800 + + thumb_func_start MOD16_021DA808 +MOD16_021DA808: ; 0x021DA808 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #0 + bne _021DA818 + bl ErrorHandling +_021DA818: + cmp r4, #0 + bne _021DA820 + bl ErrorHandling +_021DA820: + add r0, r4, #0 + add r1, r6, #0 + blx r5 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DA808 + + thumb_func_start MOD16_021DA828 +MOD16_021DA828: ; 0x021DA828 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _021DA83A + bl ErrorHandling +_021DA83A: + cmp r4, #0 + bne _021DA842 + bl ErrorHandling +_021DA842: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _021DA84C + bl ErrorHandling +_021DA84C: + ldr r3, [sp, #0x18] + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + blx r5 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA828 + + thumb_func_start MOD16_021DA858 +MOD16_021DA858: ; 0x021DA858 + push {r4, lr} + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021DA868 + bl ErrorHandling +_021DA868: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DA858 + + thumb_func_start MOD16_021DA888 +MOD16_021DA888: ; 0x021DA888 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #0 + bne _021DA898 + bl ErrorHandling +_021DA898: + str r4, [r5] + str r6, [r5, #4] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DA888 + + thumb_func_start MOD16_021DA8A0 +MOD16_021DA8A0: ; 0x021DA8A0 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r4, #0 + bne _021DA8AE + bl ErrorHandling +_021DA8AE: + add r0, r4, #0 + bl MOD16_021DA908 + cmp r0, #0 + bne _021DA8CA + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DA918 + add r1, r0, #0 + beq _021DA8CA + add r0, r4, #0 + bl MOD16_021DA950 +_021DA8CA: + add r0, r4, #0 + bl MOD16_021DA908 + cmp r0, #1 + bne _021DA8EA + ldr r1, [r4, #8] + add r0, r1, #0 + ldr r1, [r1, #4] + add r0, #8 + blx r1 + cmp r0, #1 + bne _021DA8EA + add r0, r4, #0 + mov r1, #0 + bl MOD16_021DA950 +_021DA8EA: + ldr r0, [r4, #8] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA8A0 + + thumb_func_start MOD16_021DA8F0 +MOD16_021DA8F0: ; 0x021DA8F0 + push {r4, lr} + add r4, r0, #0 + bne _021DA8FA + bl ErrorHandling +_021DA8FA: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DA904 + mov r0, #1 + pop {r4, pc} +_021DA904: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA8F0 + + thumb_func_start MOD16_021DA908 +MOD16_021DA908: ; 0x021DA908 + ldr r0, [r0, #8] + cmp r0, #0 + beq _021DA912 + mov r0, #1 + bx lr +_021DA912: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021DA908 + + thumb_func_start MOD16_021DA918 +MOD16_021DA918: ; 0x021DA918 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r7, r1, #0 + mov r6, #0 + cmp r0, #0 + ble _021DA94C + add r4, r6, #0 +_021DA928: + ldr r0, [r5] + cmp r0, #0 + bne _021DA932 + bl ErrorHandling +_021DA932: + ldr r0, [r5] + ldr r1, [r0, r4] + tst r1, r7 + beq _021DA942 + mov r1, #0x14 + mul r1, r6 + add r0, r0, r1 + pop {r3, r4, r5, r6, r7, pc} +_021DA942: + ldr r0, [r5, #4] + add r6, r6, #1 + add r4, #0x14 + cmp r6, r0 + blt _021DA928 +_021DA94C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DA918 + + thumb_func_start MOD16_021DA950 +MOD16_021DA950: ; 0x021DA950 + str r1, [r0, #8] + cmp r1, #0 + beq _021DA95A + mov r0, #0 + str r0, [r1, #8] +_021DA95A: + bx lr + thumb_func_end MOD16_021DA950 + + thumb_func_start MOD16_021DA95C +MOD16_021DA95C: ; 0x021DA95C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r2, [r4, #8] + cmp r0, #3 + bhi _021DA9BC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA974: ; jump table + .short _021DA97C - _021DA974 - 2 ; case 0 + .short _021DA98A - _021DA974 - 2 ; case 1 + .short _021DA99C - _021DA974 - 2 ; case 2 + .short _021DA9AE - _021DA974 - 2 ; case 3 +_021DA97C: + ldr r0, [r2, #4] + bl MOD16_021DA7B4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9C0 +_021DA98A: + ldr r0, [r2, #4] + bl MOD16_021DA7C4 + cmp r0, #1 + bne _021DA9C0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9C0 +_021DA99C: + ldr r0, [r2] + ldr r1, [r2, #8] + ldr r2, [r2, #4] + bl MOD16_021DAC44 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9C0 +_021DA9AE: + ldr r0, [r2, #4] + bl MOD16_021DA7DC + cmp r0, #1 + bne _021DA9C0 + mov r0, #1 + pop {r4, pc} +_021DA9BC: + bl ErrorHandling +_021DA9C0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021DA95C + + thumb_func_start MOD16_021DA9C4 +MOD16_021DA9C4: ; 0x021DA9C4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #8] + cmp r0, #0 + beq _021DA9DC + cmp r0, #1 + beq _021DA9FC + cmp r0, #2 + beq _021DAA3A + b _021DAA44 +_021DA9DC: + ldr r0, [r4] + bl MOD16_021DA7B4 + ldr r0, [r4, #4] + bl MOD16_021DA7B4 + ldr r0, [r4, #8] + bl MOD16_021DA7B4 + ldr r0, [r4, #0xc] + bl MOD16_021DA7B4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAA48 +_021DA9FC: + ldr r0, [r4] + bl MOD16_021DA7C4 + str r0, [sp] + ldr r0, [r4, #4] + bl MOD16_021DA7C4 + str r0, [sp, #4] + ldr r0, [r4, #8] + bl MOD16_021DA7C4 + str r0, [sp, #8] + ldr r0, [r4, #0xc] + bl MOD16_021DA7C4 + str r0, [sp, #0xc] + mov r1, #0 + add r2, sp, #0 +_021DAA20: + ldr r0, [r2] + cmp r0, #0 + beq _021DAA2E + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #4 + blt _021DAA20 +_021DAA2E: + cmp r1, #4 + blt _021DAA48 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAA48 +_021DAA3A: + ldr r1, [r4, #0x10] + mov r0, #1 + str r0, [r1] + add sp, #0x10 + pop {r3, r4, r5, pc} +_021DAA44: + bl ErrorHandling +_021DAA48: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DA9C4 + + thumb_func_start MOD16_021DAA50 +MOD16_021DAA50: ; 0x021DAA50 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #8] + cmp r0, #3 + bls _021DAA60 + b _021DAB68 +_021DAA60: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAA6C: ; jump table + .short _021DAA74 - _021DAA6C - 2 ; case 0 + .short _021DAA94 - _021DAA6C - 2 ; case 1 + .short _021DAAD2 - _021DAA6C - 2 ; case 2 + .short _021DAB02 - _021DAA6C - 2 ; case 3 +_021DAA74: + ldr r0, [r4] + bl MOD16_021DA7B4 + ldr r0, [r4, #4] + bl MOD16_021DA7B4 + ldr r0, [r4, #8] + bl MOD16_021DA7B4 + ldr r0, [r4, #0xc] + bl MOD16_021DA7B4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAB6C +_021DAA94: + ldr r0, [r4] + bl MOD16_021DA7C4 + str r0, [sp] + ldr r0, [r4, #4] + bl MOD16_021DA7C4 + str r0, [sp, #4] + ldr r0, [r4, #8] + bl MOD16_021DA7C4 + str r0, [sp, #8] + ldr r0, [r4, #0xc] + bl MOD16_021DA7C4 + str r0, [sp, #0xc] + mov r1, #0 + add r2, sp, #0 +_021DAAB8: + ldr r0, [r2] + cmp r0, #0 + beq _021DAAC6 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #4 + blt _021DAAB8 +_021DAAC6: + cmp r1, #4 + blt _021DAB6C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAB6C +_021DAAD2: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x10] + ldr r2, [r4] + bl MOD16_021DAC44 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x14] + ldr r2, [r4, #4] + bl MOD16_021DAC44 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x18] + ldr r2, [r4, #8] + bl MOD16_021DAC44 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x1c] + ldr r2, [r4, #0xc] + bl MOD16_021DAC44 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAB6C +_021DAB02: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021DAB12 + ldr r0, [r4] + bl MOD16_021DA7DC + str r0, [sp] + b _021DAB16 +_021DAB12: + mov r0, #1 + str r0, [sp] +_021DAB16: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021DAB24 + ldr r0, [r4, #4] + bl MOD16_021DA7DC + str r0, [sp, #4] +_021DAB24: + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021DAB34 + ldr r0, [r4, #8] + bl MOD16_021DA7DC + str r0, [sp, #8] + b _021DAB38 +_021DAB34: + mov r0, #1 + str r0, [sp, #8] +_021DAB38: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021DAB48 + ldr r0, [r4, #0xc] + bl MOD16_021DA7DC + str r0, [sp, #0xc] + b _021DAB4C +_021DAB48: + mov r0, #1 + str r0, [sp, #0xc] +_021DAB4C: + mov r2, #0 + add r1, sp, #0 +_021DAB50: + ldr r0, [r1] + cmp r0, #0 + beq _021DAB5E + add r2, r2, #1 + add r1, r1, #4 + cmp r2, #4 + blt _021DAB50 +_021DAB5E: + cmp r2, #4 + blt _021DAB6C + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DAB68: + bl ErrorHandling +_021DAB6C: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DAA50 + + thumb_func_start MOD16_021DAB74 +MOD16_021DAB74: ; 0x021DAB74 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #8] + cmp r0, #3 + bhi _021DAC38 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAB8E: ; jump table + .short _021DAB96 - _021DAB8E - 2 ; case 0 + .short _021DABAA - _021DAB8E - 2 ; case 1 + .short _021DABD8 - _021DAB8E - 2 ; case 2 + .short _021DABF4 - _021DAB8E - 2 ; case 3 +_021DAB96: + ldr r0, [r4] + bl MOD16_021DA7B4 + ldr r0, [r4, #4] + bl MOD16_021DA7B4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAC3C +_021DABAA: + ldr r0, [r4] + bl MOD16_021DA7C4 + str r0, [sp] + ldr r0, [r4, #4] + bl MOD16_021DA7C4 + str r0, [sp, #4] + mov r1, #0 + add r2, sp, #0 +_021DABBE: + ldr r0, [r2] + cmp r0, #0 + beq _021DABCC + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021DABBE +_021DABCC: + cmp r1, #2 + blt _021DAC3C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAC3C +_021DABD8: + ldr r0, [r4, #0x10] + ldr r1, [r4, #8] + ldr r2, [r4] + bl MOD16_021DAC44 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0xc] + ldr r2, [r4, #4] + bl MOD16_021DAC44 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DAC3C +_021DABF4: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DAC04 + ldr r0, [r4] + bl MOD16_021DA7DC + str r0, [sp] + b _021DAC08 +_021DAC04: + mov r0, #1 + str r0, [sp] +_021DAC08: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DAC18 + ldr r0, [r4, #4] + bl MOD16_021DA7DC + str r0, [sp, #4] + b _021DAC1C +_021DAC18: + mov r0, #1 + str r0, [sp, #4] +_021DAC1C: + mov r2, #0 + add r1, sp, #0 +_021DAC20: + ldr r0, [r1] + cmp r0, #0 + beq _021DAC2E + add r2, r2, #1 + add r1, r1, #4 + cmp r2, #2 + blt _021DAC20 +_021DAC2E: + cmp r2, #2 + blt _021DAC3C + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DAC38: + bl ErrorHandling +_021DAC3C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DAB74 + + thumb_func_start MOD16_021DAC44 +MOD16_021DAC44: ; 0x021DAC44 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + beq _021DAC76 + ldr r0, [r5] + add r1, sp, #0 + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x14 + str r0, [sp, #0xc] + add r0, r2, #0 + bl MOD16_021DA624 + ldr r1, [r5, #0x20] + ldr r2, [r5, #0x24] + add r0, r4, #0 + bl MOD16_021DA888 +_021DAC76: + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DAC44 + + thumb_func_start MOD16_021DAC7C +MOD16_021DAC7C: ; 0x021DAC7C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021DAC8A + bl ErrorHandling +_021DAC8A: + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DAC7C + + thumb_func_start MOD16_021DAC98 +MOD16_021DAC98: ; 0x021DAC98 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r1, _021DAD1C ; =MOD16_021DAA50 + str r3, [r6] + str r1, [r6, #4] + mov r1, #0x30 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DACB2 + bl ErrorHandling +_021DACB2: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x30 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7A88 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7A9C + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD16_021D7AB0 + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD16_021D7AC4 + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + nop +_021DAD1C: .word MOD16_021DAA50 + thumb_func_end MOD16_021DAC98 + + thumb_func_start MOD16_021DAD20 +MOD16_021DAD20: ; 0x021DAD20 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAD74 ; =MOD16_021DA9C4 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x14 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAD3A + bl ErrorHandling +_021DAD3A: + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021DAD40: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAD40 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r6, #0 + bl MOD16_021D7B28 + str r0, [r4, #0x10] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAD74: .word MOD16_021DA9C4 + thumb_func_end MOD16_021DAD20 + + thumb_func_start MOD16_021DAD78 +MOD16_021DAD78: ; 0x021DAD78 + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r1, _021DAE08 ; =MOD16_021DAA50 + str r3, [r6] + str r1, [r6, #4] + mov r1, #0x30 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAD92 + bl ErrorHandling +_021DAD92: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x30 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7A88 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7A9C + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD16_021D7AB0 + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD16_021D7AC4 + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #0x28] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #0x2c] + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAE08: .word MOD16_021DAA50 + thumb_func_end MOD16_021DAD78 + + thumb_func_start MOD16_021DAE0C +MOD16_021DAE0C: ; 0x021DAE0C + push {r4, r5, r6, lr} + add r6, r1, #0 + ldr r1, _021DAE90 ; =MOD16_021DAA50 + str r3, [r6] + str r1, [r6, #4] + mov r1, #0x30 + add r5, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAE26 + bl ErrorHandling +_021DAE26: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x30 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7A60 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7A74 + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7A88 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7A9C + str r0, [r4, #0x14] + add r0, r5, #0 + bl MOD16_021D7AB0 + str r0, [r4, #0x18] + add r0, r5, #0 + bl MOD16_021D7AC4 + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + nop +_021DAE90: .word MOD16_021DAA50 + thumb_func_end MOD16_021DAE0C + + thumb_func_start MOD16_021DAE94 +MOD16_021DAE94: ; 0x021DAE94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021DAED0 ; =MOD16_021DA95C + str r3, [r5] + add r6, r1, #0 + str r0, [r5, #4] + add r0, r2, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021DAEB0 + bl ErrorHandling +_021DAEB0: + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D7B5C + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DAED0: .word MOD16_021DA95C + thumb_func_end MOD16_021DAE94 + + thumb_func_start MOD16_021DAED4 +MOD16_021DAED4: ; 0x021DAED4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAF34 ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAEEE + bl ErrorHandling +_021DAEEE: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DAEF4: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAEF4 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #6 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #4 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAF34: .word MOD16_021DAB74 + thumb_func_end MOD16_021DAED4 + + thumb_func_start MOD16_021DAF38 +MOD16_021DAF38: ; 0x021DAF38 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAF98 ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAF52 + bl ErrorHandling +_021DAF52: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DAF58: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAF58 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #7 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #5 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAF98: .word MOD16_021DAB74 + thumb_func_end MOD16_021DAF38 + + thumb_func_start MOD16_021DAF9C +MOD16_021DAF9C: ; 0x021DAF9C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DAFFC ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DAFB6 + bl ErrorHandling +_021DAFB6: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DAFBC: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DAFBC + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #8 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #6 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DAFFC: .word MOD16_021DAB74 + thumb_func_end MOD16_021DAF9C + + thumb_func_start MOD16_021DB000 +MOD16_021DB000: ; 0x021DB000 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB054 ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB01A + bl ErrorHandling +_021DB01A: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #8 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB054: .word MOD16_021DA95C + thumb_func_end MOD16_021DB000 + + thumb_func_start MOD16_021DB058 +MOD16_021DB058: ; 0x021DB058 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB0AC ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB072 + bl ErrorHandling +_021DB072: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #9 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB0AC: .word MOD16_021DA95C + thumb_func_end MOD16_021DB058 + + thumb_func_start MOD16_021DB0B0 +MOD16_021DB0B0: ; 0x021DB0B0 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB110 ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB0CA + bl ErrorHandling +_021DB0CA: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB0D0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB0D0 + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #2 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #2 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB110: .word MOD16_021DAB74 + thumb_func_end MOD16_021DB0B0 + + thumb_func_start MOD16_021DB114 +MOD16_021DB114: ; 0x021DB114 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB168 ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB12E + bl ErrorHandling +_021DB12E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #2 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB168: .word MOD16_021DA95C + thumb_func_end MOD16_021DB114 + + thumb_func_start MOD16_021DB16C +MOD16_021DB16C: ; 0x021DB16C + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB1CC ; =MOD16_021DAB74 + str r3, [r5] + str r1, [r5, #4] + mov r1, #0x18 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB186 + bl ErrorHandling +_021DB186: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB18C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB18C + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4] + add r0, r6, #0 + bl MOD16_021D7A4C + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + bl MOD16_021D7A9C + str r0, [r4, #0xc] + add r0, r6, #0 + mov r1, #3 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r6, #0 + mov r1, #7 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB1CC: .word MOD16_021DAB74 + thumb_func_end MOD16_021DB16C + + thumb_func_start MOD16_021DB1D0 +MOD16_021DB1D0: ; 0x021DB1D0 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, _021DB224 ; =MOD16_021DA95C + str r3, [r5] + str r1, [r5, #4] + mov r1, #0xc + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB1EA + bl ErrorHandling +_021DB1EA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r6, #0 + bl MOD16_021D7A38 + str r0, [r4, #4] + add r0, r6, #0 + bl MOD16_021D7A88 + str r0, [r4, #8] + add r0, r6, #0 + mov r1, #4 + bl MOD16_021D7B5C + str r0, [r4] + str r4, [r5, #0x10] + pop {r4, r5, r6, pc} + nop +_021DB224: .word MOD16_021DA95C + thumb_func_end MOD16_021DB1D0 + + thumb_func_start MOD16_021DB228 +MOD16_021DB228: ; 0x021DB228 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021DB23C + bl ErrorHandling +_021DB23C: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB242: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB242 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + bl FUN_02011744 + str r0, [r4] + ldr r1, [r5, #8] + ldr r0, [r5, #0xc] + lsl r1, r1, #4 + bl FUN_02016998 + str r0, [r4, #0xc] + cmp r0, #0 + bne _021DB268 + bl ErrorHandling +_021DB268: + ldr r2, [r5, #8] + ldr r0, [r4, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, [r5, #8] + str r0, [r4, #0x10] + ldr r0, [r5] + str r0, [r4, #4] + ldr r0, [r5, #4] + str r0, [r4, #8] + ldr r0, [r5, #0xc] + str r0, [r4, #0x14] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DB228 + + thumb_func_start MOD16_021DB288 +MOD16_021DB288: ; 0x021DB288 + push {r4, lr} + add r4, r0, #0 + bne _021DB292 + bl ErrorHandling +_021DB292: + add r0, r4, #0 + bl MOD16_021DB358 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + ldr r0, [r4] + bl FUN_020117BC + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021DB2AA: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DB2AA + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DB288 + + thumb_func_start MOD16_021DB2BC +MOD16_021DB2BC: ; 0x021DB2BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl FUN_02011898 + add r1, r0, #0 + add r0, r4, #0 + bl MOD16_021DB2D4 + pop {r4, pc} + thumb_func_end MOD16_021DB2BC + + thumb_func_start MOD16_021DB2D4 +MOD16_021DB2D4: ; 0x021DB2D4 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + bl MOD16_021DB460 + add r4, r0, #0 + bne _021DB2EA + bl ErrorHandling +_021DB2EA: + ldr r2, [r5, #0x20] + add r0, r6, #0 + mov r1, #1 + add r3, r4, #4 + bl FUN_0201D568 + ldr r0, [r5] + ldr r0, [r0] + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + ldr r0, [r5] + ldr r0, [r0, #4] + str r0, [sp, #8] + ldr r0, [r5, #8] + str r0, [sp, #0xc] + ldr r0, [r5, #0xc] + str r0, [sp, #0x10] + ldr r0, [r4, #8] + str r0, [sp, #0x14] + ldr r0, [r5, #0x10] + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x18] + str r0, [sp, #0x20] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x24] + ldr r0, [r5, #0x20] + str r0, [sp, #0x28] + ldr r0, [r5, #0x24] + str r0, [sp, #0x2c] + add r0, sp, #0 + bl FUN_020117E8 + str r0, [r4] + add r0, r4, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DB2D4 + + thumb_func_start MOD16_021DB338 +MOD16_021DB338: ; 0x021DB338 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02011870 + add r0, r4, #4 + bl FUN_0201D5E8 + mov r1, #0x10 + mov r0, #0 +_021DB34C: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021DB34C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DB338 + + thumb_func_start MOD16_021DB358 +MOD16_021DB358: ; 0x021DB358 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _021DB384 + add r4, r6, #0 +_021DB366: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD16_021DB450 + cmp r0, #0 + beq _021DB37A + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD16_021DB338 +_021DB37A: + ldr r0, [r5, #0x10] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blt _021DB366 +_021DB384: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DB358 + + thumb_func_start MOD16_021DB388 +MOD16_021DB388: ; 0x021DB388 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x14] + add r4, r1, #0 + mov r1, #1 + add r6, r2, #0 + bl FUN_02018FF4 + add r7, r0, #0 + bl FUN_0201901C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r4, #0x18 + lsl r3, r6, #0x18 + ldr r0, [r5, #8] + add r1, r7, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020190EC + add r0, r7, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB388 + + thumb_func_start MOD16_021DB3BC +MOD16_021DB3BC: ; 0x021DB3BC + ldr r3, _021DB3C4 ; =0x020191A5 + mov r1, #1 + bx r3 + nop +_021DB3C4: .word 0x020191A5 + thumb_func_end MOD16_021DB3BC + + thumb_func_start MOD16_021DB3C8 +MOD16_021DB3C8: ; 0x021DB3C8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r3, #0 + add r6, r1, #0 + ldr r3, [r5, #0x14] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0 + bne _021DB3E4 + bl ErrorHandling +_021DB3E4: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DB428 ; =0x00030201 + mov r1, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_0201BDE0 + mov r0, #2 + add r1, r4, #0 + mov r2, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DB428: .word 0x00030201 + thumb_func_end MOD16_021DB3C8 + + thumb_func_start MOD16_021DB42C +MOD16_021DB42C: ; 0x021DB42C + push {r3, lr} + sub sp, #0x10 + ldr r0, [sp, #0x18] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DB44C ; =0x00030201 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r1, #0 + mov r1, #2 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 +_021DB44C: .word 0x00030201 + thumb_func_end MOD16_021DB42C + + thumb_func_start MOD16_021DB450 +MOD16_021DB450: ; 0x021DB450 + ldr r0, [r0] + cmp r0, #0 + beq _021DB45A + mov r0, #1 + bx lr +_021DB45A: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB450 + + thumb_func_start MOD16_021DB460 +MOD16_021DB460: ; 0x021DB460 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _021DB48C + add r4, r6, #0 +_021DB46E: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD16_021DB450 + cmp r0, #0 + bne _021DB482 + ldr r1, [r5, #0xc] + lsl r0, r6, #4 + add r0, r1, r0 + pop {r4, r5, r6, pc} +_021DB482: + ldr r0, [r5, #0x10] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blt _021DB46E +_021DB48C: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DB460 + + thumb_func_start MOD16_021DB490 +MOD16_021DB490: ; 0x021DB490 + push {r3, lr} + mov r1, #0x14 + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x14 + mov r1, #0 +_021DB49E: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021DB49E + pop {r3, pc} + thumb_func_end MOD16_021DB490 + + thumb_func_start MOD16_021DB4A8 +MOD16_021DB4A8: ; 0x021DB4A8 + ldr r3, _021DB4AC ; =0x02016A19 + bx r3 + .align 2, 0 +_021DB4AC: .word 0x02016A19 + thumb_func_end MOD16_021DB4A8 + + thumb_func_start MOD16_021DB4B0 +MOD16_021DB4B0: ; 0x021DB4B0 + push {r3, r4, r5, r6} + add r6, r0, #0 + mov r5, #0x14 + mov r4, #0 +_021DB4B8: + strb r4, [r6] + add r6, r6, #1 + sub r5, r5, #1 + bne _021DB4B8 + str r1, [r0] + str r2, [r0, #4] + str r3, [r0, #8] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB4B0 + + thumb_func_start MOD16_021DB4CC +MOD16_021DB4CC: ; 0x021DB4CC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + cmp r1, #4 + bhi _021DB526 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DB4E2: ; jump table + .short _021DB4EC - _021DB4E2 - 2 ; case 0 + .short _021DB4F4 - _021DB4E2 - 2 ; case 1 + .short _021DB4FC - _021DB4E2 - 2 ; case 2 + .short _021DB50E - _021DB4E2 - 2 ; case 3 + .short _021DB520 - _021DB4E2 - 2 ; case 4 +_021DB4EC: + add r1, r4, #0 + bl MOD16_021DB68C + pop {r3, r4, r5, pc} +_021DB4F4: + add r1, r4, #0 + bl MOD16_021DB6BC + pop {r3, r4, r5, pc} +_021DB4FC: + cmp r4, #0 + blt _021DB506 + ldr r0, [r5, #4] + cmp r4, r0 + blt _021DB50A +_021DB506: + bl ErrorHandling +_021DB50A: + str r4, [r5, #0xc] + pop {r3, r4, r5, pc} +_021DB50E: + cmp r4, #0 + blt _021DB518 + ldr r0, [r5, #8] + cmp r4, r0 + blt _021DB51C +_021DB518: + bl ErrorHandling +_021DB51C: + str r4, [r5, #0x10] + pop {r3, r4, r5, pc} +_021DB520: + add r1, r4, #0 + bl MOD16_021DB6EC +_021DB526: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DB4CC + + thumb_func_start MOD16_021DB528 +MOD16_021DB528: ; 0x021DB528 + ldr r2, [r0, #0x10] + ldr r1, [r0, #4] + add r3, r2, #0 + mul r3, r1 + ldr r1, [r0, #0xc] + add r2, r3, r1 + ldr r1, [r0] + mov r0, #0x1c + mul r0, r2 + add r0, r1, r0 + ldr r0, [r0, #0x18] + bx lr + thumb_func_end MOD16_021DB528 + + thumb_func_start MOD16_021DB540 +MOD16_021DB540: ; 0x021DB540 + push {r4, r5} + ldr r4, [r0, #0x10] + ldr r3, [r0, #4] + add r5, r4, #0 + mul r5, r3 + ldr r3, [r0, #0xc] + add r5, r5, r3 + mov r3, #0x1c + add r4, r5, #0 + mul r4, r3 + ldr r3, [r0] + ldr r3, [r3, r4] + str r3, [r1] + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #4] + str r0, [r2] + pop {r4, r5} + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB540 + + thumb_func_start MOD16_021DB568 +MOD16_021DB568: ; 0x021DB568 + push {r4, r5} + ldr r4, [r0, #0x10] + ldr r3, [r0, #4] + add r5, r4, #0 + mul r5, r3 + ldr r3, [r0, #0xc] + add r5, r5, r3 + mov r3, #0x1c + add r4, r5, #0 + mul r4, r3 + ldr r3, [r0] + add r3, r3, r4 + ldr r3, [r3, #8] + str r3, [r1] + ldr r0, [r0] + add r0, r0, r4 + ldr r0, [r0, #0xc] + str r0, [r2] + pop {r4, r5} + bx lr + thumb_func_end MOD16_021DB568 + + thumb_func_start MOD16_021DB590 +MOD16_021DB590: ; 0x021DB590 + str r1, [r0] + str r2, [r0, #4] + ldr r1, [sp] + str r3, [r0, #8] + str r1, [r0, #0xc] + ldr r1, [sp, #4] + str r1, [r0, #0x10] + ldr r1, [sp, #8] + str r1, [r0, #0x14] + ldr r1, [sp, #0xc] + str r1, [r0, #0x18] + bx lr + thumb_func_end MOD16_021DB590 + + thumb_func_start MOD16_021DB5A8 +MOD16_021DB5A8: ; 0x021DB5A8 + push {r3, r4, r5, r6} + ldr r4, [sp, #0x10] + cmp r0, #0 + beq _021DB5B4 + cmp r0, #2 + bne _021DB5C0 +_021DB5B4: + ldr r6, [sp, #0x14] + lsr r5, r6, #0x1f + add r5, r6, r5 + asr r5, r5, #1 + sub r3, r3, r5 + b _021DB5CA +_021DB5C0: + ldr r6, [sp, #0x14] + lsr r5, r6, #0x1f + add r5, r6, r5 + asr r5, r5, #1 + add r3, r3, r5 +_021DB5CA: + cmp r0, #1 + bhi _021DB5DA + ldr r5, [sp, #0x18] + lsr r0, r5, #0x1f + add r0, r5, r0 + asr r0, r0, #1 + sub r4, r4, r0 + b _021DB5E4 +_021DB5DA: + ldr r5, [sp, #0x18] + lsr r0, r5, #0x1f + add r0, r5, r0 + asr r0, r0, #1 + add r4, r4, r0 +_021DB5E4: + str r3, [r1] + str r4, [r2] + pop {r3, r4, r5, r6} + bx lr + thumb_func_end MOD16_021DB5A8 + + thumb_func_start MOD16_021DB5EC +MOD16_021DB5EC: ; 0x021DB5EC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + beq _021DB602 + cmp r4, #1 + beq _021DB602 + bl ErrorHandling +_021DB602: + ldr r0, [r5, #0xc] + mov r1, #0x1c +_021DB606: + add r0, r0, r4 + bmi _021DB626 + ldr r2, [r5, #4] + cmp r0, r2 + bge _021DB626 + ldr r3, [r5, #0x10] + ldr r2, [r5, #4] + mul r2, r3 + add r6, r2, r0 + add r2, r6, #0 + ldr r3, [r5] + mul r2, r1 + add r6, r3, r2 + ldr r2, [r6, #0x10] + cmp r2, #2 + beq _021DB606 +_021DB626: + cmp r0, #0 + blt _021DB638 + ldr r1, [r5, #4] + cmp r0, r1 + bge _021DB638 + ldr r1, [r6, #0x10] + cmp r1, #0 + bne _021DB638 + str r0, [r5, #0xc] +_021DB638: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DB5EC + + thumb_func_start MOD16_021DB63C +MOD16_021DB63C: ; 0x021DB63C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + cmp r4, r0 + beq _021DB652 + cmp r4, #1 + beq _021DB652 + bl ErrorHandling +_021DB652: + ldr r0, [r5, #0x10] + mov r1, #0x1c +_021DB656: + add r0, r0, r4 + bmi _021DB678 + ldr r2, [r5, #8] + cmp r0, r2 + bge _021DB678 + ldr r2, [r5, #4] + add r3, r0, #0 + mul r3, r2 + ldr r2, [r5, #0xc] + add r6, r3, r2 + add r2, r6, #0 + ldr r3, [r5] + mul r2, r1 + add r6, r3, r2 + ldr r2, [r6, #0x14] + cmp r2, #2 + beq _021DB656 +_021DB678: + cmp r0, #0 + blt _021DB68A + ldr r1, [r5, #8] + cmp r0, r1 + bge _021DB68A + ldr r1, [r6, #0x10] + cmp r1, #0 + bne _021DB68A + str r0, [r5, #0x10] +_021DB68A: + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DB63C + + thumb_func_start MOD16_021DB68C +MOD16_021DB68C: ; 0x021DB68C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + cmp r1, #0 + bge _021DB698 + neg r5, r1 + b _021DB69A +_021DB698: + add r5, r1, #0 +_021DB69A: + add r0, r1, #0 + add r1, r5, #0 + bl _s32_div_f + add r7, r0, #0 + mov r4, #0 + cmp r5, #0 + ble _021DB6B8 +_021DB6AA: + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DB5EC + add r4, r4, #1 + cmp r4, r5 + blt _021DB6AA +_021DB6B8: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DB68C + + thumb_func_start MOD16_021DB6BC +MOD16_021DB6BC: ; 0x021DB6BC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + cmp r1, #0 + bge _021DB6C8 + neg r5, r1 + b _021DB6CA +_021DB6C8: + add r5, r1, #0 +_021DB6CA: + add r0, r1, #0 + add r1, r5, #0 + bl _s32_div_f + add r7, r0, #0 + mov r4, #0 + cmp r5, #0 + ble _021DB6E8 +_021DB6DA: + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DB63C + add r4, r4, #1 + cmp r4, r5 + blt _021DB6DA +_021DB6E8: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DB6BC + + thumb_func_start MOD16_021DB6EC +MOD16_021DB6EC: ; 0x021DB6EC + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r2, [r4, #4] + ldr r0, [r4, #8] + add r3, r2, #0 + mul r3, r0 + mov r5, #0 + cmp r3, #0 + ble _021DB724 + ldr r6, [r4] +_021DB700: + ldr r0, [r6, #0x18] + cmp r1, r0 + bne _021DB71C + add r0, r5, #0 + add r1, r2, #0 + bl _s32_div_f + str r1, [r4, #0xc] + ldr r1, [r4, #4] + add r0, r5, #0 + bl _s32_div_f + str r0, [r4, #0x10] + pop {r4, r5, r6, pc} +_021DB71C: + add r5, r5, #1 + add r6, #0x1c + cmp r5, r3 + blt _021DB700 +_021DB724: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DB6EC + + thumb_func_start MOD16_021DB728 +MOD16_021DB728: ; 0x021DB728 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp, #0x10] + ldr r0, [sp, #0x5c] + str r2, [sp, #0x18] + str r1, [sp, #0x14] + str r0, [sp, #0x5c] + mov r0, #0 + str r3, [sp, #0x1c] + add r1, sp, #0x48 + str r0, [sp, #0x38] + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x20] + cmp r0, #0 + ble _021DB7BC + ldr r0, [sp, #0x38] + ldrb r6, [r1, #0x10] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + ldrh r0, [r1, #0x24] + str r0, [sp, #0x2c] + ldrh r0, [r1, #0x20] + str r0, [sp, #0x28] + ldrb r0, [r1, #0x18] + str r0, [sp, #0x24] +_021DB75A: + ldr r0, [sp, #0x24] + mov r7, #0 + cmp r0, #0 + ble _021DB7A2 + ldr r1, [sp, #0x5c] + ldr r0, [sp, #0x30] + add r4, r7, #0 + add r5, r1, r0 + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x34] + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] +_021DB776: + str r6, [sp] + ldrb r0, [r5] + ldr r1, [sp, #0x14] + str r0, [sp, #4] + ldr r0, [sp, #0x28] + add r0, r0, r4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x3c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl MOD16_021DB7F4 + ldr r0, [sp, #0x24] + add r7, r7, #1 + add r4, r4, r6 + add r5, r5, #1 + cmp r7, r0 + blt _021DB776 +_021DB7A2: + ldr r0, [sp, #0x34] + ldr r1, [sp, #0x30] + add r0, r0, r6 + str r0, [sp, #0x34] + ldr r0, [sp, #0x20] + add r0, r1, r0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x38] + add r1, r0, #1 + ldr r0, [sp, #0x20] + str r1, [sp, #0x38] + cmp r1, r0 + blt _021DB75A +_021DB7BC: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB728 + + thumb_func_start MOD16_021DB7C0 +MOD16_021DB7C0: ; 0x021DB7C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r2, #0 + str r0, [sp, #4] + add r5, r1, #0 + mov r6, #0 + cmp r7, #0 + ble _021DB7F0 +_021DB7D0: + mov r4, #0 + cmp r5, #0 + ble _021DB7EA +_021DB7D6: + ldr r0, [sp, #4] + add r1, r4, #0 + add r2, r6, #0 + add r3, r5, #0 + str r7, [sp] + bl MOD16_021DB84C + add r4, r4, #1 + cmp r4, r5 + blt _021DB7D6 +_021DB7EA: + add r6, r6, #1 + cmp r6, r7 + blt _021DB7D0 +_021DB7F0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB7C0 + + thumb_func_start MOD16_021DB7F4 +MOD16_021DB7F4: ; 0x021DB7F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x3c] + str r0, [sp, #0x18] + add r5, r2, #0 + add r6, r3, #0 + cmp r1, #0 + beq _021DB848 + ldr r0, [sp, #0x38] + add r4, r1, #0 + mul r4, r0 + add r0, r4, #0 + add r1, r5, #0 + bl _s32_div_f + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl _s32_div_f + str r5, [sp] + add r4, r1, #0 + str r6, [sp, #4] + add r0, sp, #0x28 + ldrb r1, [r0, #0x18] + lsl r2, r4, #0x10 + lsl r3, r7, #0x10 + str r1, [sp, #8] + ldrb r0, [r0, #0x1c] + ldr r1, [sp, #0x1c] + lsr r2, r2, #0x10 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + lsr r3, r3, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + bl FUN_02019658 +_021DB848: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB7F4 + + thumb_func_start MOD16_021DB84C +MOD16_021DB84C: ; 0x021DB84C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + add r6, r1, #0 + add r1, r7, #0 + mul r1, r3 + add r4, r0, #0 + add r5, r6, r1 + ldrb r1, [r4, r5] + cmp r1, #0 + bne _021DB87A + ldr r1, [sp, #0x20] + str r3, [sp] + str r1, [sp, #4] + add r1, sp, #8 + add r2, r6, #0 + add r3, r7, #0 + bl MOD16_021DB8B0 + ldr r0, [sp, #8] + bl MOD16_021DB9D0 + strb r0, [r4, r5] +_021DB87A: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DB84C + + thumb_func_start MOD16_021DB880 +MOD16_021DB880: ; 0x021DB880 + push {r3, r4} + cmp r1, #0 + blt _021DB88A + cmp r1, r3 + blt _021DB892 +_021DB88A: + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr +_021DB892: + cmp r2, #0 + blt _021DB89C + ldr r4, [sp, #8] + cmp r2, r4 + blt _021DB8A4 +_021DB89C: + mov r0, #0 + mvn r0, r0 + pop {r3, r4} + bx lr +_021DB8A4: + mul r3, r2 + add r1, r1, r3 + ldrb r0, [r0, r1] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD16_021DB880 + + thumb_func_start MOD16_021DB8B0 +MOD16_021DB8B0: ; 0x021DB8B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + ldr r1, [sp, #0x20] + add r6, r2, #0 + str r1, [sp, #0x20] + add r7, r3, #0 + mov r1, #0 + str r1, [r5] + ldr r4, [sp, #0x24] + ldr r3, [sp, #0x20] + add r1, r6, #0 + sub r2, r7, #1 + str r0, [sp, #4] + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB8DE + ldr r1, [r5] + mov r0, #1 + orr r0, r1 + str r0, [r5] +_021DB8DE: + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #0 + add r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB8F8 + ldr r1, [r5] + mov r0, #2 + orr r0, r1 + str r0, [r5] +_021DB8F8: + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + sub r1, r6, #1 + add r2, r7, #0 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB912 + ldr r1, [r5] + mov r0, #4 + orr r0, r1 + str r0, [r5] +_021DB912: + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #1 + add r2, r7, #0 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB92C + ldr r1, [r5] + mov r0, #8 + orr r0, r1 + str r0, [r5] +_021DB92C: + ldr r0, [r5] + mov r1, #1 + tst r1, r0 + bne _021DB954 + mov r1, #4 + tst r0, r1 + bne _021DB954 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + sub r1, r6, #1 + sub r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB954 + ldr r1, [r5] + mov r0, #0x10 + orr r0, r1 + str r0, [r5] +_021DB954: + ldr r0, [r5] + mov r1, #1 + tst r1, r0 + bne _021DB97C + mov r1, #8 + tst r0, r1 + bne _021DB97C + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #1 + sub r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB97C + ldr r1, [r5] + mov r0, #0x20 + orr r0, r1 + str r0, [r5] +_021DB97C: + ldr r0, [r5] + mov r1, #2 + tst r1, r0 + bne _021DB9A4 + mov r1, #4 + tst r0, r1 + bne _021DB9A4 + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + sub r1, r6, #1 + add r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB9A4 + ldr r1, [r5] + mov r0, #0x40 + orr r0, r1 + str r0, [r5] +_021DB9A4: + ldr r0, [r5] + mov r1, #2 + tst r1, r0 + bne _021DB9CC + mov r1, #8 + tst r0, r1 + bne _021DB9CC + ldr r0, [sp, #4] + ldr r3, [sp, #0x20] + add r1, r6, #1 + add r2, r7, #1 + str r4, [sp] + bl MOD16_021DB880 + cmp r0, #1 + bne _021DB9CC + ldr r1, [r5] + mov r0, #0x80 + orr r0, r1 + str r0, [r5] +_021DB9CC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DB8B0 + + thumb_func_start MOD16_021DB9D0 +MOD16_021DB9D0: ; 0x021DB9D0 + push {r4, lr} + cmp r0, #0x84 + bgt _021DBAA6 + blt _021DB9DA + b _021DBB98 +_021DB9DA: + cmp r0, #0x58 + bgt _021DBA8C + blt _021DB9E2 + b _021DBB70 +_021DB9E2: + cmp r0, #0x48 + bgt _021DBA7E + blt _021DB9EA + b _021DBBA0 +_021DB9EA: + cmp r0, #0x41 + bhi _021DBA84 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DB9FA: ; jump table + .short _021DBAE8 - _021DB9FA - 2 ; case 0 + .short _021DBAEC - _021DB9FA - 2 ; case 1 + .short _021DBAF0 - _021DB9FA - 2 ; case 2 + .short _021DBAFC - _021DB9FA - 2 ; case 3 + .short _021DBAF4 - _021DB9FA - 2 ; case 4 + .short _021DBB00 - _021DB9FA - 2 ; case 5 + .short _021DBB08 - _021DB9FA - 2 ; case 6 + .short _021DBB14 - _021DB9FA - 2 ; case 7 + .short _021DBAF8 - _021DB9FA - 2 ; case 8 + .short _021DBB04 - _021DB9FA - 2 ; case 9 + .short _021DBB0C - _021DB9FA - 2 ; case 10 + .short _021DBB18 - _021DB9FA - 2 ; case 11 + .short _021DBB10 - _021DB9FA - 2 ; case 12 + .short _021DBB1C - _021DB9FA - 2 ; case 13 + .short _021DBB20 - _021DB9FA - 2 ; case 14 + .short _021DBB24 - _021DB9FA - 2 ; case 15 + .short _021DBB28 - _021DB9FA - 2 ; case 16 + .short _021DBBA4 - _021DB9FA - 2 ; case 17 + .short _021DBB8C - _021DB9FA - 2 ; case 18 + .short _021DBBA4 - _021DB9FA - 2 ; case 19 + .short _021DBBA4 - _021DB9FA - 2 ; case 20 + .short _021DBBA4 - _021DB9FA - 2 ; case 21 + .short _021DBBA4 - _021DB9FA - 2 ; case 22 + .short _021DBBA4 - _021DB9FA - 2 ; case 23 + .short _021DBB9C - _021DB9FA - 2 ; case 24 + .short _021DBBA4 - _021DB9FA - 2 ; case 25 + .short _021DBB80 - _021DB9FA - 2 ; case 26 + .short _021DBBA4 - _021DB9FA - 2 ; case 27 + .short _021DBBA4 - _021DB9FA - 2 ; case 28 + .short _021DBBA4 - _021DB9FA - 2 ; case 29 + .short _021DBBA4 - _021DB9FA - 2 ; case 30 + .short _021DBBA4 - _021DB9FA - 2 ; case 31 + .short _021DBB2C - _021DB9FA - 2 ; case 32 + .short _021DBBA4 - _021DB9FA - 2 ; case 33 + .short _021DBB90 - _021DB9FA - 2 ; case 34 + .short _021DBBA4 - _021DB9FA - 2 ; case 35 + .short _021DBB94 - _021DB9FA - 2 ; case 36 + .short _021DBBA4 - _021DB9FA - 2 ; case 37 + .short _021DBB7C - _021DB9FA - 2 ; case 38 + .short _021DBBA4 - _021DB9FA - 2 ; case 39 + .short _021DBBA4 - _021DB9FA - 2 ; case 40 + .short _021DBBA4 - _021DB9FA - 2 ; case 41 + .short _021DBBA4 - _021DB9FA - 2 ; case 42 + .short _021DBBA4 - _021DB9FA - 2 ; case 43 + .short _021DBBA4 - _021DB9FA - 2 ; case 44 + .short _021DBBA4 - _021DB9FA - 2 ; case 45 + .short _021DBBA4 - _021DB9FA - 2 ; case 46 + .short _021DBBA4 - _021DB9FA - 2 ; case 47 + .short _021DBB38 - _021DB9FA - 2 ; case 48 + .short _021DBBA4 - _021DB9FA - 2 ; case 49 + .short _021DBB68 - _021DB9FA - 2 ; case 50 + .short _021DBBA4 - _021DB9FA - 2 ; case 51 + .short _021DBBA4 - _021DB9FA - 2 ; case 52 + .short _021DBBA4 - _021DB9FA - 2 ; case 53 + .short _021DBBA4 - _021DB9FA - 2 ; case 54 + .short _021DBBA4 - _021DB9FA - 2 ; case 55 + .short _021DBBA4 - _021DB9FA - 2 ; case 56 + .short _021DBBA4 - _021DB9FA - 2 ; case 57 + .short _021DBBA4 - _021DB9FA - 2 ; case 58 + .short _021DBBA4 - _021DB9FA - 2 ; case 59 + .short _021DBBA4 - _021DB9FA - 2 ; case 60 + .short _021DBBA4 - _021DB9FA - 2 ; case 61 + .short _021DBBA4 - _021DB9FA - 2 ; case 62 + .short _021DBBA4 - _021DB9FA - 2 ; case 63 + .short _021DBB30 - _021DB9FA - 2 ; case 64 + .short _021DBB84 - _021DB9FA - 2 ; case 65 +_021DBA7E: + cmp r0, #0x49 + bgt _021DBA86 + beq _021DBB78 +_021DBA84: + b _021DBBA4 +_021DBA86: + cmp r0, #0x50 + beq _021DBB3C + b _021DBBA4 +_021DBA8C: + cmp r0, #0x70 + bgt _021DBA98 + bge _021DBB50 + cmp r0, #0x60 + beq _021DBB44 + b _021DBBA4 +_021DBA98: + cmp r0, #0x80 + bgt _021DBAA0 + beq _021DBB34 + b _021DBBA4 +_021DBAA0: + cmp r0, #0x81 + beq _021DBB88 + b _021DBBA4 +_021DBAA6: + cmp r0, #0xb0 + bgt _021DBAC6 + bge _021DBB54 + cmp r0, #0x90 + bgt _021DBAB8 + bge _021DBB40 + cmp r0, #0x85 + beq _021DBB74 + b _021DBBA4 +_021DBAB8: + cmp r0, #0xa0 + bgt _021DBAC0 + beq _021DBB48 + b _021DBBA4 +_021DBAC0: + cmp r0, #0xa4 + beq _021DBB6C + b _021DBBA4 +_021DBAC6: + cmp r0, #0xd0 + bgt _021DBADA + bge _021DBB58 + cmp r0, #0xc0 + bgt _021DBAD4 + beq _021DBB4C + b _021DBBA4 +_021DBAD4: + cmp r0, #0xc1 + beq _021DBB64 + b _021DBBA4 +_021DBADA: + cmp r0, #0xe0 + bgt _021DBAE2 + beq _021DBB5C + b _021DBBA4 +_021DBAE2: + cmp r0, #0xf0 + beq _021DBB60 + b _021DBBA4 +_021DBAE8: + mov r4, #0 + b _021DBBA8 +_021DBAEC: + mov r4, #2 + b _021DBBA8 +_021DBAF0: + mov r4, #3 + b _021DBBA8 +_021DBAF4: + mov r4, #4 + b _021DBBA8 +_021DBAF8: + mov r4, #5 + b _021DBBA8 +_021DBAFC: + mov r4, #6 + b _021DBBA8 +_021DBB00: + mov r4, #7 + b _021DBBA8 +_021DBB04: + mov r4, #8 + b _021DBBA8 +_021DBB08: + mov r4, #9 + b _021DBBA8 +_021DBB0C: + mov r4, #0xa + b _021DBBA8 +_021DBB10: + mov r4, #0xb + b _021DBBA8 +_021DBB14: + mov r4, #0xc + b _021DBBA8 +_021DBB18: + mov r4, #0xd + b _021DBBA8 +_021DBB1C: + mov r4, #0xe + b _021DBBA8 +_021DBB20: + mov r4, #0xf + b _021DBBA8 +_021DBB24: + mov r4, #0x10 + b _021DBBA8 +_021DBB28: + mov r4, #0x11 + b _021DBBA8 +_021DBB2C: + mov r4, #0x12 + b _021DBBA8 +_021DBB30: + mov r4, #0x13 + b _021DBBA8 +_021DBB34: + mov r4, #0x14 + b _021DBBA8 +_021DBB38: + mov r4, #0x15 + b _021DBBA8 +_021DBB3C: + mov r4, #0x16 + b _021DBBA8 +_021DBB40: + mov r4, #0x17 + b _021DBBA8 +_021DBB44: + mov r4, #0x18 + b _021DBBA8 +_021DBB48: + mov r4, #0x19 + b _021DBBA8 +_021DBB4C: + mov r4, #0x1a + b _021DBBA8 +_021DBB50: + mov r4, #0x1b + b _021DBBA8 +_021DBB54: + mov r4, #0x1c + b _021DBBA8 +_021DBB58: + mov r4, #0x1d + b _021DBBA8 +_021DBB5C: + mov r4, #0x1e + b _021DBBA8 +_021DBB60: + mov r4, #0x1f + b _021DBBA8 +_021DBB64: + mov r4, #0x20 + b _021DBBA8 +_021DBB68: + mov r4, #0x21 + b _021DBBA8 +_021DBB6C: + mov r4, #0x22 + b _021DBBA8 +_021DBB70: + mov r4, #0x23 + b _021DBBA8 +_021DBB74: + mov r4, #0x24 + b _021DBBA8 +_021DBB78: + mov r4, #0x25 + b _021DBBA8 +_021DBB7C: + mov r4, #0x26 + b _021DBBA8 +_021DBB80: + mov r4, #0x27 + b _021DBBA8 +_021DBB84: + mov r4, #0x28 + b _021DBBA8 +_021DBB88: + mov r4, #0x29 + b _021DBBA8 +_021DBB8C: + mov r4, #0x2a + b _021DBBA8 +_021DBB90: + mov r4, #0x2b + b _021DBBA8 +_021DBB94: + mov r4, #0x2c + b _021DBBA8 +_021DBB98: + mov r4, #0x2d + b _021DBBA8 +_021DBB9C: + mov r4, #0x2e + b _021DBBA8 +_021DBBA0: + mov r4, #0x2f + b _021DBBA8 +_021DBBA4: + bl ErrorHandling +_021DBBA8: + add r0, r4, #0 + pop {r4, pc} + thumb_func_end MOD16_021DB9D0 + + thumb_func_start MOD16_021DBBAC +MOD16_021DBBAC: ; 0x021DBBAC + ldr r3, _021DBBB0 ; =0x02021A21 + bx r3 + .align 2, 0 +_021DBBB0: .word 0x02021A21 + thumb_func_end MOD16_021DBBAC + + thumb_func_start MOD16_021DBBB4 +MOD16_021DBBB4: ; 0x021DBBB4 + add r1, r0, #1 + ldr r0, _021DBBC0 ; =0x021FF568 + ldr r3, _021DBBC4 ; =0x02087A39 + ldrb r0, [r0, r1] + bx r3 + nop +_021DBBC0: .word 0x021FF568 +_021DBBC4: .word 0x02087A39 + thumb_func_end MOD16_021DBBB4 + + thumb_func_start MOD16_021DBBC8 +MOD16_021DBBC8: ; 0x021DBBC8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r2, #0 + add r2, sp, #4 + str r2, [sp] + add r2, sp, #0xc + add r3, sp, #8 + add r5, r0, #0 + bl MOD16_021DBCE0 + ldr r2, [sp, #4] + cmp r2, #6 + bne _021DBBEE + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200AA50 + add sp, #0x10 + pop {r3, r4, r5, pc} +_021DBBEE: + ldr r1, [sp, #0xc] + mov r0, #6 + mul r0, r1 + add r1, r2, r0 + ldr r0, _021DBC04 ; =0x0000026E + add r2, r4, #0 + str r1, [sp, #4] + bl MOD16_021DBCA0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DBC04: .word 0x0000026E + thumb_func_end MOD16_021DBBC8 + + thumb_func_start MOD16_021DBC08 +MOD16_021DBC08: ; 0x021DBC08 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r2, #0 + add r2, sp, #4 + str r2, [sp] + add r2, sp, #0xc + add r3, sp, #8 + add r5, r0, #0 + bl MOD16_021DBCE0 + ldr r2, [sp, #4] + cmp r2, #6 + bne _021DBC28 + str r5, [sp, #4] + ldr r0, _021DBC40 ; =0x0000026D + b _021DBC34 +_021DBC28: + ldr r1, [sp, #0xc] + mov r0, #6 + mul r0, r1 + add r0, r2, r0 + str r0, [sp, #4] + ldr r0, _021DBC44 ; =0x0000026F +_021DBC34: + ldr r1, [sp, #4] + add r2, r4, #0 + bl MOD16_021DBCA0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DBC40: .word 0x0000026D +_021DBC44: .word 0x0000026F + thumb_func_end MOD16_021DBC08 + + thumb_func_start MOD16_021DBC48 +MOD16_021DBC48: ; 0x021DBC48 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r2, #0 + add r2, sp, #4 + add r6, r3, #0 + str r2, [sp] + add r2, sp, #0xc + add r3, sp, #8 + add r5, r0, #0 + bl MOD16_021DBCE0 + ldr r0, [sp, #4] + cmp r0, #6 + bne _021DBC74 + cmp r4, #1 + blt _021DBC6C + bl ErrorHandling +_021DBC6C: + add r0, r5, r4 + str r0, [sp, #4] + ldr r0, _021DBC98 ; =0x00000267 + b _021DBC8C +_021DBC74: + cmp r4, #1 + blt _021DBC7C + bl ErrorHandling +_021DBC7C: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + add r2, r0, r4 + mov r0, #6 + mul r0, r1 + add r0, r2, r0 + str r0, [sp, #4] + ldr r0, _021DBC9C ; =0x00000269 +_021DBC8C: + ldr r1, [sp, #4] + add r2, r6, #0 + bl MOD16_021DBCA0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DBC98: .word 0x00000267 +_021DBC9C: .word 0x00000269 + thumb_func_end MOD16_021DBC48 + + thumb_func_start MOD16_021DBCA0 +MOD16_021DBCA0: ; 0x021DBCA0 + push {r4, r5, r6, lr} + add r3, r0, #0 + add r5, r2, #0 + add r6, r1, #0 + add r2, r3, #0 + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl FUN_0200A86C + add r4, r0, #0 + beq _021DBCDA + mov r0, #1 + lsl r0, r0, #8 + add r1, r5, #0 + bl FUN_020219F4 + add r5, r0, #0 + beq _021DBCD0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0200A8E0 +_021DBCD0: + add r0, r4, #0 + bl FUN_0200A8B8 + add r0, r5, #0 + pop {r4, r5, r6, pc} +_021DBCDA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DBCA0 + + thumb_func_start MOD16_021DBCE0 +MOD16_021DBCE0: ; 0x021DBCE0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + ldr r6, [sp, #0x18] + bl FUN_02087A1C + str r0, [r5] + cmp r0, #6 + blt _021DBCFA + bl ErrorHandling +_021DBCFA: + add r0, r7, #0 + bl FUN_02087A50 + str r0, [r4] + ldr r5, [r5] + cmp r5, #6 + blt _021DBD0C + bl ErrorHandling +_021DBD0C: + cmp r5, #1 + bne _021DBD12 + mov r5, #6 +_021DBD12: + str r5, [r6] + ldr r0, [r4] + cmp r0, #0xe + bne _021DBD22 + cmp r5, #6 + beq _021DBD22 + mov r0, #0 + b _021DBD24 +_021DBD22: + mov r0, #1 +_021DBD24: + cmp r0, #0 + bne _021DBD2C + bl ErrorHandling +_021DBD2C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DBCE0 + + thumb_func_start MOD16_021DBD30 +MOD16_021DBD30: ; 0x021DBD30 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + cmp r2, #9 + bhi _021DBD82 + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DBD46: ; jump table + .short _021DBD5A - _021DBD46 - 2 ; case 0 + .short _021DBD5E - _021DBD46 - 2 ; case 1 + .short _021DBD62 - _021DBD46 - 2 ; case 2 + .short _021DBD66 - _021DBD46 - 2 ; case 3 + .short _021DBD6A - _021DBD46 - 2 ; case 4 + .short _021DBD70 - _021DBD46 - 2 ; case 5 + .short _021DBD74 - _021DBD46 - 2 ; case 6 + .short _021DBD78 - _021DBD46 - 2 ; case 7 + .short _021DBD7C - _021DBD46 - 2 ; case 8 + .short _021DBD80 - _021DBD46 - 2 ; case 9 +_021DBD5A: + mov r5, #4 + b _021DBD82 +_021DBD5E: + ldr r5, _021DBDA0 ; =0x000001F3 + b _021DBD82 +_021DBD62: + ldr r5, _021DBDA4 ; =0x000003E2 + b _021DBD82 +_021DBD66: + ldr r5, _021DBDA8 ; =0x000005D1 + b _021DBD82 +_021DBD6A: + mov r5, #0x1f + lsl r5, r5, #6 + b _021DBD82 +_021DBD70: + ldr r5, _021DBDAC ; =0x000009AF + b _021DBD82 +_021DBD74: + ldr r5, _021DBDB0 ; =0x00000B9E + b _021DBD82 +_021DBD78: + ldr r5, _021DBDB4 ; =0x00000D8D + b _021DBD82 +_021DBD7C: + ldr r5, _021DBDB8 ; =0x00000F7C + b _021DBD82 +_021DBD80: + ldr r5, _021DBDBC ; =0x0000116B +_021DBD82: + mov r2, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x8b + add r1, r5, r1 + bl FUN_02006D18 + str r0, [r4] + ldr r0, [sp, #8] + lsr r0, r0, #2 + str r0, [r4, #4] + add sp, #0xc + pop {r4, r5, pc} + nop +_021DBDA0: .word 0x000001F3 +_021DBDA4: .word 0x000003E2 +_021DBDA8: .word 0x000005D1 +_021DBDAC: .word 0x000009AF +_021DBDB0: .word 0x00000B9E +_021DBDB4: .word 0x00000D8D +_021DBDB8: .word 0x00000F7C +_021DBDBC: .word 0x0000116B + thumb_func_end MOD16_021DBD30 + + thumb_func_start MOD16_021DBDC0 +MOD16_021DBDC0: ; 0x021DBDC0 + push {r4, lr} + add r4, r0, #0 + bne _021DBDCA + bl ErrorHandling +_021DBDCA: + ldr r0, [r4] + cmp r0, #0 + bne _021DBDD4 + bl ErrorHandling +_021DBDD4: + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DBDC0 + + thumb_func_start MOD16_021DBDE4 +MOD16_021DBDE4: ; 0x021DBDE4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x8b + add r2, r1, #0 + bl FUN_02006D18 + cmp r4, #0 + beq _021DBE06 + ldr r1, [sp, #8] + lsr r1, r1, #2 + str r1, [r4] +_021DBE06: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DBDE4 + + thumb_func_start MOD16_021DBE0C +MOD16_021DBE0C: ; 0x021DBE0C + push {r4, r5, lr} + sub sp, #0xc + mov r2, #0 + add r3, r0, #0 + add r4, r1, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x8b + mov r1, #2 + bl FUN_02006D18 + add r5, r0, #0 + cmp r4, #0 + beq _021DBE34 + ldr r0, [sp, #8] + mov r1, #0x24 + bl _u32_div_f + str r0, [r4] +_021DBE34: + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DBE0C + + thumb_func_start MOD16_021DBE3C +MOD16_021DBE3C: ; 0x021DBE3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp, #4] + add r4, r3, #0 + str r0, [sp] + ldrb r1, [r4, #1] + ldrb r0, [r4, #3] + add r0, r1, r0 + cmp r0, r2 + blt _021DBE54 + bl ErrorHandling +_021DBE54: + ldrb r1, [r4] + ldrb r0, [r4, #2] + add r1, r1, r0 + ldr r0, [sp, #4] + cmp r1, r0 + blt _021DBE64 + bl ErrorHandling +_021DBE64: + ldrb r7, [r4, #1] + ldrb r0, [r4, #3] + add r0, r7, r0 + cmp r7, r0 + bge _021DBEBE + ldr r0, [sp, #4] + mul r0, r7 + mov ip, r0 +_021DBE74: + ldrb r5, [r4] + ldrb r3, [r4, #2] + add r1, r5, #0 + add r0, r5, r3 + cmp r5, r0 + bge _021DBEAA + ldr r2, [sp] + mov r0, ip + add r0, r2, r0 + add r2, r0, r5 +_021DBE88: + sub r6, r1, r5 + ldrb r5, [r4, #1] + ldrb r0, [r2] + add r1, r1, #1 + sub r5, r7, r5 + mul r5, r3 + add r3, r4, r6 + add r3, r5, r3 + ldrb r3, [r3, #4] + orr r0, r3 + strb r0, [r2] + ldrb r3, [r4, #2] + ldrb r5, [r4] + add r2, r2, #1 + add r0, r5, r3 + cmp r1, r0 + blt _021DBE88 +_021DBEAA: + ldr r0, [sp, #4] + mov r1, ip + add r0, r1, r0 + mov ip, r0 + ldrb r1, [r4, #1] + ldrb r0, [r4, #3] + add r7, r7, #1 + add r0, r1, r0 + cmp r7, r0 + blt _021DBE74 +_021DBEBE: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DBE3C + + thumb_func_start MOD16_021DBEC4 +MOD16_021DBEC4: ; 0x021DBEC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + ldr r0, [sp, #0x30] + str r3, [sp, #4] + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + ldr r5, [sp, #0x34] + ldr r0, [r0, #4] + ldr r4, [sp, #0x38] + sub r0, r0, #1 + cmp r0, #0 + ble _021DBF4E + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + ldr r7, [sp, #8] + str r0, [sp, #0x14] +_021DBEF2: + ldr r0, [sp, #0x30] + ldr r0, [r0] + ldr r0, [r0, r7] + cmp r0, #0 + bne _021DBF00 + bl ErrorHandling +_021DBF00: + mov r1, #0 + cmp r4, #0 + bls _021DBF18 + ldr r0, [sp, #0x30] + ldr r0, [r0] + ldr r2, [r0, r7] +_021DBF0C: + ldrb r0, [r5, r1] + cmp r2, r0 + beq _021DBF18 + add r1, r1, #1 + cmp r1, r4 + blo _021DBF0C +_021DBF18: + cmp r1, r4 + blo _021DBF3A + ldr r3, [sp, #0x30] + mov r6, #0x24 + ldr r3, [r3] + ldr r0, [sp] + ldr r3, [r3, r7] + ldr r1, [sp, #0x10] + mul r6, r3 + ldr r3, [sp, #4] + ldr r2, [sp, #0x14] + add r3, r3, r6 + bl MOD16_021DBE3C + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] +_021DBF3A: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + ldr r0, [r0, #4] + sub r1, r0, #1 + ldr r0, [sp, #0xc] + cmp r0, r1 + blt _021DBEF2 +_021DBF4E: + ldr r0, [sp, #8] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DBEC4 + + thumb_func_start MOD16_021DBF54 +MOD16_021DBF54: ; 0x021DBF54 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + ldr r4, [sp, #0x24] + add r5, r0, #0 + ldrb r6, [r4] + mul r3, r6 + add r1, r1, r3 + str r1, [sp] + ldrb r6, [r4, #1] + ldr r3, [sp, #0x20] + lsl r1, r1, #0xc + mul r3, r6 + add r2, r2, r3 + str r1, [sp] + str r2, [sp, #4] + lsl r1, r2, #0xc + str r1, [sp, #4] + add r1, sp, #0 + bl FUN_02020044 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _021DBF8E + ldr r1, [sp, #0x2c] + add r0, r5, #0 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021DBF8E: + ldr r1, [sp, #0x28] + add r0, r5, #0 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DBF54 + + thumb_func_start MOD16_021DBF9C +MOD16_021DBF9C: ; 0x021DBF9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + mov ip, r0 + ldr r0, [sp, #0x40] + ldr r7, [sp, #0x50] + str r0, [sp, #0x40] + ldr r0, [sp, #0x44] + str r1, [sp, #0x10] + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + str r2, [sp, #0x14] + str r0, [sp, #0x48] + ldr r0, [sp, #0x4c] + str r3, [sp, #0x18] + str r0, [sp, #0x4c] + ldr r0, [sp, #0x54] + ldr r5, [sp, #0x5c] + str r0, [sp, #0x54] + ldr r0, [sp, #0x58] + ldr r4, [sp, #0x60] + str r0, [sp, #0x58] + mov r0, #0 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + ldr r0, [r7, #4] + sub r0, r0, #1 + cmp r0, #0 + ble _021DC05C + add r0, r1, #0 + lsl r1, r0, #2 + mov r0, ip + add r0, r0, r1 + ldr r6, [sp, #0x20] + str r0, [sp, #0x1c] +_021DBFE0: + ldr r0, [r7] + ldr r0, [r0, r6] + cmp r0, #0 + bne _021DBFEC + bl ErrorHandling +_021DBFEC: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + blt _021DBFF8 + bl ErrorHandling +_021DBFF8: + mov r1, #0 + cmp r4, #0 + bls _021DC00E + ldr r0, [r7] + ldr r2, [r0, r6] +_021DC002: + ldrb r0, [r5, r1] + cmp r2, r0 + beq _021DC00E + add r1, r1, #1 + cmp r1, r4 + blo _021DC002 +_021DC00E: + cmp r1, r4 + blo _021DC04A + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x40] + str r0, [sp] + ldr r0, [r7] + ldr r3, [sp, #0x44] + ldr r0, [r0, r6] + lsl r1, r0, #2 + ldr r0, [sp, #0x4c] + add r0, r0, r1 + str r0, [sp, #4] + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x18] + str r0, [sp, #8] + ldr r0, [sp, #0x58] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + bl MOD16_021DBF54 + ldr r0, [sp, #0x1c] + add r0, r0, #4 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] +_021DC04A: + ldr r0, [sp, #0x24] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x24] + ldr r0, [r7, #4] + sub r1, r0, #1 + ldr r0, [sp, #0x24] + cmp r0, r1 + blt _021DBFE0 +_021DC05C: + ldr r1, [sp, #0x64] + ldr r0, [sp, #0x20] + str r0, [r1] + ldr r0, [sp, #0x10] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DBF9C + + thumb_func_start MOD16_021DC068 +MOD16_021DC068: ; 0x021DC068 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DC10C + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DC15C + add r7, r0, #0 + ldr r0, [sp] + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021DC198 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DC230 + str r0, [r5, #0x24] + ldr r0, _021DC0B4 ; =MOD16_021DC234 + str r0, [r5, #8] + ldr r0, _021DC0B8 ; =MOD16_021DC280 + str r0, [r5, #0xc] + ldr r0, _021DC0BC ; =MOD16_021DC2B0 + str r0, [r5, #0x10] + ldr r0, _021DC0C0 ; =MOD16_021DC2C4 + str r0, [r5, #0x14] + ldr r0, _021DC0C4 ; =MOD16_021DC3A8 + str r0, [r5, #0x18] + ldr r0, _021DC0C8 ; =MOD16_021DC424 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC0B4: .word MOD16_021DC234 +_021DC0B8: .word MOD16_021DC280 +_021DC0BC: .word MOD16_021DC2B0 +_021DC0C0: .word MOD16_021DC2C4 +_021DC0C4: .word MOD16_021DC3A8 +_021DC0C8: .word MOD16_021DC424 + thumb_func_end MOD16_021DC068 + + thumb_func_start MOD16_021DC0CC +MOD16_021DC0CC: ; 0x021DC0CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DC148 + ldr r0, [r4, #4] + bl MOD16_021DC184 + ldr r0, [r4, #0x20] + bl MOD16_021DC1F8 + pop {r4, pc} + thumb_func_end MOD16_021DC0CC + + thumb_func_start MOD16_021DC0E4 +MOD16_021DC0E4: ; 0x021DC0E4 + ldr r1, [r0, #0x24] + cmp r1, #1 + beq _021DC102 + ldr r1, [r0, #0x28] + cmp r1, #1 + beq _021DC102 + ldr r1, [r0, #0x2c] + cmp r1, #1 + beq _021DC102 + ldr r1, [r0, #0x30] + cmp r1, #1 + beq _021DC102 + ldr r0, [r0, #0x34] + cmp r0, #1 + bne _021DC106 +_021DC102: + mov r0, #0 + bx lr +_021DC106: + mov r0, #1 + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC0E4 + + thumb_func_start MOD16_021DC10C +MOD16_021DC10C: ; 0x021DC10C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + bne _021DC11E + bl ErrorHandling +_021DC11E: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x38 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + mov r0, #1 + str r0, [r4, #0x1c] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DC10C + + thumb_func_start MOD16_021DC148 +MOD16_021DC148: ; 0x021DC148 + push {r4, lr} + add r4, r0, #0 + bne _021DC152 + bl ErrorHandling +_021DC152: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC148 + + thumb_func_start MOD16_021DC15C +MOD16_021DC15C: ; 0x021DC15C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021DC16E + bl ErrorHandling +_021DC16E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DC15C + + thumb_func_start MOD16_021DC184 +MOD16_021DC184: ; 0x021DC184 + push {r4, lr} + add r4, r0, #0 + bne _021DC18E + bl ErrorHandling +_021DC18E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC184 + + thumb_func_start MOD16_021DC198 +MOD16_021DC198: ; 0x021DC198 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD16_021DC230 + add r2, r0, #0 + mov r1, #0x14 + add r0, r5, #0 + mul r1, r2 + bl FUN_02016998 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + mov r3, #1 + bl MOD16_021DAC98 + add r1, r6, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r4, #0 + mov r3, #2 + bl MOD16_021DAD78 + add r1, r6, #0 + add r0, r5, #0 + add r1, #0x28 + add r2, r4, #0 + mov r3, #4 + bl MOD16_021DAD20 + add r0, r6, #0 + add r0, #0x3c + add r1, r4, #0 + add r2, r5, #0 + mov r3, #8 + bl MOD16_021DAE94 + add r1, r6, #0 + add r0, r5, #0 + add r1, #0x50 + add r2, r4, #0 + mov r3, #0x10 + bl MOD16_021DAE0C + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DC198 + + thumb_func_start MOD16_021DC1F8 +MOD16_021DC1F8: ; 0x021DC1F8 + push {r4, lr} + add r4, r0, #0 + bne _021DC202 + bl ErrorHandling +_021DC202: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x28 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x3c + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x50 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021DC1F8 + + thumb_func_start MOD16_021DC230 +MOD16_021DC230: ; 0x021DC230 + mov r0, #5 + bx lr + thumb_func_end MOD16_021DC230 + + thumb_func_start MOD16_021DC234 +MOD16_021DC234: ; 0x021DC234 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x24 + bl FUN_02016998 + str r0, [r5, #8] + cmp r0, #0 + bne _021DC24C + bl ErrorHandling +_021DC24C: + ldr r0, [r5, #8] + mov r1, #0 + mov r2, #0x24 + bl Call_FillMemWithValue + ldr r1, [r5, #8] + add r0, r4, #0 + bl MOD16_021DC4D4 + ldr r0, [r4, #4] + bl MOD16_021D9EEC + mov r1, #1 + str r1, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _021DC274 + str r1, [r4, #0x10] +_021DC274: + add r0, r4, #0 + bl MOD16_021DC540 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DC234 + + thumb_func_start MOD16_021DC280 +MOD16_021DC280: ; 0x021DC280 + push {r3, lr} + add r2, r0, #0 + ldr r0, [r2, #0xc] + ldr r3, [r2, #8] + cmp r0, #1 + bne _021DC290 + mov r0, #1 + pop {r3, pc} +_021DC290: + ldr r0, [r2] + cmp r0, #0 + bne _021DC2A0 + mov r0, #0 + str r0, [r1, #0x18] + mov r0, #1 + str r0, [r2] + b _021DC2AA +_021DC2A0: + ldr r2, [r2, #4] + add r0, r1, #0 + add r1, r3, #0 + bl MOD16_021DC4F8 +_021DC2AA: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DC280 + + thumb_func_start MOD16_021DC2B0 +MOD16_021DC2B0: ; 0x021DC2B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC2B0 + + thumb_func_start MOD16_021DC2C4 +MOD16_021DC2C4: ; 0x021DC2C4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + ldr r7, [r4, #8] + cmp r0, #3 + bhi _021DC39C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DC2E0: ; jump table + .short _021DC2E8 - _021DC2E0 - 2 ; case 0 + .short _021DC316 - _021DC2E0 - 2 ; case 1 + .short _021DC360 - _021DC2E0 - 2 ; case 2 + .short _021DC388 - _021DC2E0 - 2 ; case 3 +_021DC2E8: + mov r1, #0x52 + ldr r0, [r4, #4] + lsl r1, r1, #2 + bl FUN_02016998 + add r7, r0, #0 + bne _021DC2FA + bl ErrorHandling +_021DC2FA: + str r7, [r4, #8] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DD1A0 + ldr r1, [r5] + add r0, r7, #0 + add r2, r6, #0 + bl MOD16_021DCE44 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC3A0 +_021DC316: + mov r0, #0x5d + ldr r1, [r6, #4] + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + bne _021DC32E + ldr r1, [r5] + ldr r3, [r4, #4] + add r0, r7, #0 + bl MOD16_021DC690 + b _021DC338 +_021DC32E: + ldr r1, [r5] + ldr r3, [r4, #4] + add r0, r7, #0 + bl MOD16_021DC770 +_021DC338: + ldr r0, [r6, #0x14] + cmp r0, #0 + beq _021DC34C + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DD7C4 + b _021DC358 +_021DC34C: + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DD724 +_021DC358: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC3A0 +_021DC360: + ldr r0, [r6, #0x14] + cmp r0, #0 + beq _021DC372 + add r0, r7, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021DD850 + b _021DC37C +_021DC372: + add r0, r7, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021DD760 +_021DC37C: + cmp r0, #0 + beq _021DC3A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC3A0 +_021DC388: + mov r0, #0x10 + str r0, [sp] + ldr r0, _021DC3A4 ; =0x04000050 + mov r1, #1 + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DC39C: + bl ErrorHandling +_021DC3A0: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC3A4: .word 0x04000050 + thumb_func_end MOD16_021DC2C4 + + thumb_func_start MOD16_021DC3A8 +MOD16_021DC3A8: ; 0x021DC3A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r6, r0, #0 + add r7, r1, #0 + ldr r0, [r5, #0x1c] + ldr r4, [r7, #8] + cmp r0, #0 + bne _021DC3BC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DC3BC: + ldr r0, [r5, #4] + bl MOD16_021D9EC4 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r2, [r4, r1] + cmp r2, r0 + beq _021DC3EC + str r0, [r4, r1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DCFD4 + ldr r1, [r6] + ldr r3, [r7, #4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DD244 + ldr r1, [r6] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DCE44 +_021DC3EC: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DCF1C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DD060 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DD12C + ldr r1, [r6] + ldr r3, [r7, #4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DD1C0 + ldr r1, [r6] + add r0, r4, #0 + add r2, r5, #0 + bl MOD16_021DD49C + add r0, r5, #0 + bl MOD16_021DD4F0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DC3A8 + + thumb_func_start MOD16_021DC424 +MOD16_021DC424: ; 0x021DC424 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021DC4C6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DC440: ; jump table + .short _021DC448 - _021DC440 - 2 ; case 0 + .short _021DC484 - _021DC440 - 2 ; case 1 + .short _021DC4AC - _021DC440 - 2 ; case 2 + .short _021DC4C2 - _021DC440 - 2 ; case 3 +_021DC448: + ldr r0, _021DC4D0 ; =0x04000050 + mov r3, #0 + strh r3, [r0] + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021DC474 + ldr r1, [r5] + ldr r3, [r4, #4] + add r0, r6, #0 + bl MOD16_021DD6DC + ldr r0, [r5] + add r1, r7, #0 + bl MOD16_021DD4E0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021DD7C4 + b _021DC47C +_021DC474: + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD724 +_021DC47C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC4CA +_021DC484: + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021DC496 + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021DD850 + b _021DC4A0 +_021DC496: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021DD760 +_021DC4A0: + cmp r0, #0 + beq _021DC4CA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC4CA +_021DC4AC: + ldr r1, [r5] + add r0, r6, #0 + bl MOD16_021DC754 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DC4CA +_021DC4C2: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DC4C6: + bl ErrorHandling +_021DC4CA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC4D0: .word 0x04000050 + thumb_func_end MOD16_021DC424 + + thumb_func_start MOD16_021DC4D4 +MOD16_021DC4D4: ; 0x021DC4D4 + mov r2, #0 + str r2, [r0, #8] + str r2, [r1] + mov r0, #0x3c + str r0, [r1, #4] + mov r0, #4 + str r0, [r1, #8] + str r0, [r1, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC4D4 + + thumb_func_start MOD16_021DC4E8 +MOD16_021DC4E8: ; 0x021DC4E8 + mov r0, #0xa + lsl r0, r0, #6 + str r0, [r1, #4] + mov r0, #0 + str r0, [r1, #8] + str r0, [r1, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC4E8 + + thumb_func_start MOD16_021DC4F8 +MOD16_021DC4F8: ; 0x021DC4F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021DC598 + cmp r0, #1 + beq _021DC53E + add r0, r5, #0 + bl MOD16_021DC540 + ldr r0, [r4] + cmp r0, #0 + bne _021DC52A + ldr r0, [r4, #0x14] + cmp r0, #1 + bne _021DC522 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DDB0C + b _021DC52A +_021DC522: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DDB58 +_021DC52A: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021DC538 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DC620 +_021DC538: + add r0, r5, #0 + bl MOD16_021DC550 +_021DC53E: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DC4F8 + + thumb_func_start MOD16_021DC540 +MOD16_021DC540: ; 0x021DC540 + mov r1, #0 + str r1, [r0, #0x24] + str r1, [r0, #0x28] + str r1, [r0, #0x2c] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DC540 + + thumb_func_start MOD16_021DC550 +MOD16_021DC550: ; 0x021DC550 + ldr r1, _021DC594 ; =0x021C48B8 + mov r2, #2 + ldr r1, [r1, #0x48] + tst r2, r1 + beq _021DC572 + mov r1, #0x5d + ldr r2, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021DC56C + mov r1, #1 + str r1, [r0, #0x28] + bx lr +_021DC56C: + mov r1, #1 + str r1, [r0, #0x24] + bx lr +_021DC572: + mov r3, #1 + add r2, r1, #0 + tst r2, r3 + beq _021DC57E + str r3, [r0, #0x2c] + bx lr +_021DC57E: + lsl r2, r3, #0xa + tst r2, r1 + beq _021DC588 + str r3, [r0, #0x34] + bx lr +_021DC588: + mov r2, #4 + tst r1, r2 + beq _021DC590 + str r3, [r0, #0x30] +_021DC590: + bx lr + nop +_021DC594: .word 0x021C48B8 + thumb_func_end MOD16_021DC550 + + thumb_func_start MOD16_021DC598 +MOD16_021DC598: ; 0x021DC598 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5, #0x28] + add r4, r2, #0 + cmp r1, #0 + beq _021DC5B4 + bl MOD16_021DD9C8 + ldr r0, _021DC618 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DC5B4: + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _021DC5CA + add r1, r4, #0 + bl MOD16_021DDAB4 + ldr r0, _021DC618 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DC5CA: + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021DC5F6 + ldr r0, [r5, #4] + bl MOD16_021D9EC4 + add r1, r0, #0 + ldr r0, [r5, #4] + bl MOD16_021D9EDC + ldr r1, _021DC61C ; =0x000001EE + cmp r0, r1 + beq _021DC5F6 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD9E0 + ldr r0, _021DC618 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DC5F6: + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _021DC604 + add r0, r5, #0 + bl MOD16_021DD9F8 + pop {r4, r5, r6, pc} +_021DC604: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021DC614 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DDA2C + pop {r4, r5, r6, pc} +_021DC614: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DC618: .word 0x000005DD +_021DC61C: .word 0x000001EE + thumb_func_end MOD16_021DC598 + + thumb_func_start MOD16_021DC620 +MOD16_021DC620: ; 0x021DC620 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #0 + beq _021DC670 + ldr r2, [r4, #4] + ldr r1, [r0, #0xc] + sub r1, r1, r2 + cmp r1, #0 + ble _021DC638 + str r1, [r0, #0xc] + pop {r4, pc} +_021DC638: + mov r1, #0 + str r1, [r0, #0xc] + str r1, [r4] + ldr r0, [r4, #0xc] + cmp r0, #0 + ble _021DC670 + ldr r0, [r4, #8] + sub r0, r0, #1 + cmp r0, #0 + ble _021DC650 + str r0, [r4, #8] + pop {r4, pc} +_021DC650: + ldr r0, [r4, #4] + bl _fflt + ldr r1, _021DC674 ; =0x3FCCCCCD + bl _fmul + bl _ffix + str r0, [r4, #4] + ldr r0, [r4, #0xc] + sub r1, r0, #1 + mov r0, #4 + sub r0, r0, r1 + str r1, [r4, #0xc] + lsl r0, r0, #2 + str r0, [r4, #8] +_021DC670: + pop {r4, pc} + nop +_021DC674: .word 0x3FCCCCCD + thumb_func_end MOD16_021DC620 + + thumb_func_start MOD16_021DC678 +MOD16_021DC678: ; 0x021DC678 + mov r3, #0xa + lsl r3, r3, #6 + str r3, [r0, #0xc] + str r2, [r1] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021DC678 + + thumb_func_start MOD16_021DC684 +MOD16_021DC684: ; 0x021DC684 + ldr r3, _021DC68C ; =MOD16_021D9E70 + ldr r0, [r0, #4] + bx r3 + nop +_021DC68C: .word MOD16_021D9E70 + thumb_func_end MOD16_021DC684 + + thumb_func_start MOD16_021DC690 +MOD16_021DC690: ; 0x021DC690 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + mov r1, #0 + add r5, r0, #0 + add r4, r2, #0 + add r7, r3, #0 + str r1, [sp] + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + str r7, [sp, #4] + bl MOD16_021D8CFC + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DC860 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + add r3, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DC8F8 + ldr r0, [r4, #4] + bl MOD16_021D9F28 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl MOD16_021D9F34 + add r3, r0, #0 + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DC958 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021DCAB4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DCB58 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DCCC0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DD63C + str r0, [r5, #0x4c] + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD16_021DCD68 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF10 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF1C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD060 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD110 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD12C + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD16_021DD1C0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021DD49C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DC690 + + thumb_func_start MOD16_021DC754 +MOD16_021DC754: ; 0x021DC754 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021DCED8 + add r0, r4, #0 + bl MOD16_021DCAFC + add r0, r4, #0 + bl MOD16_021DCEBC + add r0, r4, #0 + bl MOD16_021DC93C + pop {r4, pc} + thumb_func_end MOD16_021DC754 + + thumb_func_start MOD16_021DC770 +MOD16_021DC770: ; 0x021DC770 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r4, r2, #0 + mov r0, #0x20 + str r0, [sp] + add r6, r3, #0 + mov r2, #0 + add r0, r7, #0 + mov r1, #4 + add r3, r2, #0 + str r6, [sp, #4] + bl MOD16_021D8CFC + add r0, r7, #0 + mov r1, #0 + add r2, sp, #0x10 + add r3, r6, #0 + bl MOD16_021D8D70 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + mov r1, #2 + ldr r0, [r0, #0xc] + lsl r1, r1, #8 + str r0, [sp, #8] + bl DC_FlushRange + ldr r0, [sp, #8] + mov r2, #0x1e + add r0, #0x20 + mov r1, #0x20 + lsl r2, r2, #4 + str r0, [sp, #8] + bl GX_LoadBGPltt + ldr r0, [sp, #0xc] + bl FUN_02016A18 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DC860 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + add r3, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021DC8F8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021DCAB4 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021DCB58 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021DCCC0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DD63C + str r0, [r5, #0x4c] + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DCD68 + ldr r0, [r4, #4] + bl MOD16_021D9F28 + add r2, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021DCA2C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF10 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DCF1C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD060 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD110 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD12C + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DD1C0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021DD49C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DC770 + + thumb_func_start MOD16_021DC860 +MOD16_021DC860: ; 0x021DC860 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r0, #0 + str r4, [sp, #0xc] + ldr r2, [r5] + mov r1, #0x1c + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + add r0, r5, #0 + mov r1, #0x26 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + add r0, r5, #0 + mov r1, #0x27 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #4 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #1 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #3 + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021DC860 + + thumb_func_start MOD16_021DC8F8 +MOD16_021DC8F8: ; 0x021DC8F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + add r6, r1, #0 + str r0, [sp, #8] + add r4, r2, #0 + str r4, [sp, #0xc] + add r7, r3, #0 + ldr r2, [r6] + add r0, r6, #0 + mov r1, #0x1c + mov r3, #2 + bl MOD16_021D8CB4 + cmp r7, #1 + bne _021DC924 + mov r1, #0x2a + b _021DC926 +_021DC924: + mov r1, #0x28 +_021DC926: + add r3, r5, #0 + add r0, r6, #0 + mov r2, #1 + add r3, #0xdc + str r4, [sp] + bl MOD16_021D8D48 + add r5, #0xd8 + str r0, [r5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DC8F8 + + thumb_func_start MOD16_021DC93C +MOD16_021DC93C: ; 0x021DC93C + push {r4, lr} + add r4, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #0 + add r0, #0xd8 + str r1, [r0] + add r4, #0xdc + str r1, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DC93C + + thumb_func_start MOD16_021DC958 +MOD16_021DC958: ; 0x021DC958 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp, #0x10] + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021DCA24 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0 + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #1 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x80 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r1, r7, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r0, #0xaa + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x30 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #0x10] + add r0, r4, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r0, #0xaa + str r0, [sp] + mov r1, #0 + ldr r0, _021DCA28 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0xb4 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r0, [r5] + mov r1, #1 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DCA24: .word 0x00000266 +_021DCA28: .word 0x00020100 + thumb_func_end MOD16_021DC958 + + thumb_func_start MOD16_021DCA2C +MOD16_021DCA2C: ; 0x021DCA2C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + add r7, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021DCAAC ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0x6c + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021DCAB0 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + mov r0, #1 + str r0, [sp] + add r0, r4, #0 + add r1, r7, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r0, #0xaa + str r0, [sp] + mov r1, #0 + ldr r0, _021DCAB0 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x30 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r0, [r5] + mov r1, #1 + bl FUN_0201AC68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCAAC: .word 0x00000266 +_021DCAB0: .word 0x00020100 + thumb_func_end MOD16_021DCA2C + + thumb_func_start MOD16_021DCAB4 +MOD16_021DCAB4: ; 0x021DCAB4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r0, #2 + mov r1, #0 + add r2, r4, #0 + bl FUN_02008DEC + add r1, r5, #0 + add r1, #0x80 + str r0, [r1] + mov r0, #2 + mov r1, #1 + add r2, r4, #0 + bl FUN_02008DEC + add r1, r5, #0 + add r1, #0x84 + str r0, [r1] + mov r0, #2 + add r1, r0, #0 + add r2, r4, #0 + bl FUN_02008DEC + add r1, r5, #0 + add r1, #0x88 + str r0, [r1] + mov r0, #2 + mov r1, #3 + add r2, r4, #0 + bl FUN_02008DEC + add r5, #0x8c + str r0, [r5] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DCAB4 + + thumb_func_start MOD16_021DCAFC +MOD16_021DCAFC: ; 0x021DCAFC + push {r4, lr} + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0x51 + bl FUN_020094F0 + bl FUN_02009C0C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #3 + bl FUN_020094F0 + bl FUN_02009E04 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0x6f + bl FUN_020094F0 + bl FUN_02009C0C + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + bl FUN_02008E2C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_02008E2C + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02008E2C + add r4, #0x8c + ldr r0, [r4] + bl FUN_02008E2C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DCAFC + + thumb_func_start MOD16_021DCB58 +MOD16_021DCB58: ; 0x021DCB58 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r6, r0, #0 + mov r2, #0x51 + add r0, r5, #0 + str r2, [sp] + mov r3, #1 + str r3, [sp, #4] + str r4, [sp, #8] + add r0, #0x80 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_020091E0 + add r7, r0, #0 + bl FUN_02009B04 + add r0, r7, #0 + bl FUN_02009474 + mov r2, #3 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + add r0, r5, #0 + str r4, [sp, #0xc] + add r0, #0x84 + ldr r0, [r0] + add r1, r6, #0 + mov r3, #0 + bl FUN_02009298 + add r7, r0, #0 + bl FUN_02009D68 + add r0, r7, #0 + bl FUN_02009474 + mov r2, #0x4f + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x88 + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r2, #0x50 + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x8c + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r0, #0x50 + str r0, [sp] + sub r0, #0x51 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + add r1, r5, #0 + add r1, #0x80 + ldr r1, [r1] + mov r2, #3 + str r1, [sp, #0x14] + add r1, r5, #0 + add r1, #0x84 + ldr r1, [r1] + mov r3, #0x4f + str r1, [sp, #0x18] + add r1, r5, #0 + add r1, #0x88 + ldr r1, [r1] + str r1, [sp, #0x1c] + add r1, r5, #0 + add r1, #0x8c + ldr r1, [r1] + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, #0 + add r0, #0x90 + mov r1, #0x51 + bl FUN_02008AA4 + mov r2, #0x6f + str r2, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x80 + ldr r0, [r0] + add r1, r6, #0 + bl FUN_020091E0 + add r7, r0, #0 + bl FUN_02009B04 + add r0, r7, #0 + bl FUN_02009474 + mov r2, #0x6d + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x88 + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r2, #0x6e + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + add r0, r5, #0 + str r4, [sp, #8] + add r0, #0x8c + ldr r0, [r0] + add r1, r6, #0 + mov r3, #1 + bl FUN_02009358 + mov r0, #0x6e + str r0, [sp] + sub r0, #0x6f + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + add r1, r5, #0 + add r1, #0x80 + ldr r1, [r1] + mov r2, #3 + str r1, [sp, #0x14] + add r1, r5, #0 + add r1, #0x84 + ldr r1, [r1] + mov r3, #0x6d + str r1, [sp, #0x18] + add r1, r5, #0 + add r1, #0x88 + ldr r1, [r1] + str r1, [sp, #0x1c] + add r1, r5, #0 + add r1, #0x8c + ldr r1, [r1] + add r5, #0xb4 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, #0 + mov r1, #0x6f + bl FUN_02008AA4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DCB58 + + thumb_func_start MOD16_021DCCC0 +MOD16_021DCCC0: ; 0x021DCCC0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r4, #0 + add r6, r0, #0 + add r3, r1, #0 + add r5, sp, #0 + add r0, r4, #0 + add r1, r4, #0 + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r3, r0] + add r5, r6, #0 + str r0, [sp] + add r0, r6, #0 + add r0, #0x90 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #0x18] + mov r0, #0x20 + str r2, [sp, #0x1c] + str r0, [sp, #0x14] + add r7, r4, #0 +_021DCCF4: + add r0, sp, #0 + bl FUN_0201FF84 + add r1, r7, #0 + stmia r5!, {r0} + bl FUN_02020130 + add r4, r4, #1 + cmp r4, #9 + blt _021DCCF4 + mov r5, #0 + str r5, [sp, #0x14] + add r4, r6, #0 + add r7, sp, #0 +_021DCD10: + add r0, r7, #0 + bl FUN_0201FF84 + mov r1, #1 + str r0, [r4, #0x50] + bl FUN_02020130 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #9 + blt _021DCD10 + mov r0, #0 + str r0, [sp, #0x14] + add r0, sp, #0 + bl FUN_0201FF84 + mov r1, #2 + str r0, [r6, #0x74] + bl FUN_02020130 + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0xe + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xb4 + str r0, [sp, #4] + add r0, sp, #0 + bl FUN_0201FF84 + str r0, [r6, #0x7c] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r6, #0x7c] + mov r1, #1 + bl FUN_02020398 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DCCC0 + + thumb_func_start MOD16_021DCD68 +MOD16_021DCD68: ; 0x021DCD68 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r1, [sp, #8] + str r0, [sp, #4] + mov r1, #0x15 + ldr r0, [sp, #8] + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #4] + add r7, r2, #0 + add r0, #0x98 + ldr r0, [r0] + str r3, [sp, #0xc] + str r0, [sp, #0x24] + mov r0, #2 + str r0, [sp, #0x34] + mov r0, #1 + str r0, [sp, #0x3c] + add r0, r3, #0 + str r1, [sp, #0x28] + str r1, [sp, #0x2c] + str r1, [sp, #0x30] + str r1, [sp, #0x38] + str r0, [sp, #0x40] + ldr r0, [r7, #4] + bl MOD16_021D9EC4 + sub r4, r0, #4 + ldr r0, [sp, #4] + ldr r6, [r0, #0x24] + ldr r0, [r7, #4] + bl MOD16_021D9ED0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] +_021DCDB4: + ldr r0, [sp, #4] + lsl r1, r6, #2 + add r5, r0, r1 + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DCDC8 + bl MOD16_021DB338 + mov r0, #0 + str r0, [r5, #0x28] +_021DCDC8: + cmp r4, #0 + blt _021DCE20 + ldr r0, [sp, #0x10] + cmp r4, r0 + bge _021DCE20 + ldr r0, [r7, #4] + add r1, r4, #0 + bl MOD16_021D9EDC + add r1, r0, #0 + ldr r0, _021DCE40 ; =0x000001EE + cmp r1, r0 + beq _021DCE0E + ldr r0, [r7, #4] + bl MOD16_021D9E08 + add r3, r0, #0 + ldr r0, [sp, #8] + ldr r1, [r7, #4] + ldr r2, [sp, #0xc] + ldr r3, [r3] + bl MOD16_021D7E14 + ldr r1, [sp, #4] + str r0, [sp, #0x20] + str r0, [sp, #0x18] + ldr r1, [r1, #0x4c] + add r0, sp, #0x1c + bl MOD16_021DB2D4 + str r0, [r5, #0x28] + ldr r0, [sp, #0x18] + bl MOD16_021DB3BC + b _021DCE24 +_021DCE0E: + add r0, r4, #1 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r3, r6, #0 + bl MOD16_021DD370 + b _021DCE24 +_021DCE20: + mov r0, #0 + str r0, [r5, #0x28] +_021DCE24: + add r0, r6, #1 + mov r1, #9 + bl _s32_div_f + ldr r0, [sp, #0x14] + add r6, r1, #0 + add r0, r0, #1 + add r4, r4, #1 + str r0, [sp, #0x14] + cmp r0, #9 + blt _021DCDB4 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021DCE40: .word 0x000001EE + thumb_func_end MOD16_021DCD68 + + thumb_func_start MOD16_021DCE44 +MOD16_021DCE44: ; 0x021DCE44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r1, #0 + bl MOD16_021D9EC4 + str r0, [sp, #8] + ldr r0, [r4, #4] + bl MOD16_021D9D88 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9E08 + add r7, r0, #0 + ldr r0, [r4, #4] + ldr r1, [sp, #8] + bl MOD16_021D9EDC + ldr r1, _021DCEB8 ; =0x000001EE + cmp r0, r1 + bne _021DCE8C + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D870C + ldr r0, [r5, #0x7c] + cmp r0, #0 + beq _021DCEB4 + mov r1, #1 + bl FUN_020200A0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_021DCE8C: + mov r0, #0x38 + str r0, [sp] + mov r0, #0x50 + str r0, [sp, #4] + ldr r1, [r4, #4] + ldr r2, [r7] + add r0, r6, #0 + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021D870C + ldr r0, [r5, #0x7c] + cmp r0, #0 + beq _021DCEB4 + mov r1, #0 + bl FUN_020200A0 +_021DCEB4: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DCEB8: .word 0x000001EE + thumb_func_end MOD16_021DCE44 + + thumb_func_start MOD16_021DCEBC +MOD16_021DCEBC: ; 0x021DCEBC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DCEC2: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DCECC + bl MOD16_021DB338 +_021DCECC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DCEC2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DCEBC + + thumb_func_start MOD16_021DCED8 +MOD16_021DCED8: ; 0x021DCED8 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021DCEE0: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DCEE0 + mov r5, #0 + add r4, r6, #0 +_021DCEF2: + ldr r0, [r4, #0x50] + bl FUN_0201FFC8 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #9 + blt _021DCEF2 + ldr r0, [r6, #0x74] + bl FUN_0201FFC8 + ldr r0, [r6, #0x7c] + bl FUN_0201FFC8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DCED8 + + thumb_func_start MOD16_021DCF10 +MOD16_021DCF10: ; 0x021DCF10 + ldr r3, _021DCF18 ; =MOD16_021DD44C + mov r2, #0 + str r2, [r0, #0x24] + bx r3 + .align 2, 0 +_021DCF18: .word MOD16_021DD44C + thumb_func_end MOD16_021DCF10 + + thumb_func_start MOD16_021DCF1C +MOD16_021DCF1C: ; 0x021DCF1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0x24] + str r1, [sp] + str r0, [sp, #4] + mov r4, #0 +_021DCF2A: + ldr r0, [sp] + ldr r0, [r0, #8] + cmp r0, #1 + bne _021DCF36 + add r0, r4, #2 + b _021DCF38 +_021DCF36: + add r0, r4, #0 +_021DCF38: + add r1, r4, #1 + ldr r3, [sp] + lsl r7, r1, #2 + mov r2, #0xa + lsl r0, r0, #2 + ldr r1, _021DCFCC ; =0x021FF570 + str r0, [sp, #8] + ldr r0, [r1, r0] + lsl r2, r2, #6 + ldr r6, [r3, #0xc] + add r3, r2, #0 + ldr r1, [r1, r7] + sub r3, r3, r6 + bl MOD16_021DD174 + str r0, [sp, #0xc] + ldr r3, [sp] + mov r2, #0xa + ldr r1, _021DCFD0 ; =0x021FF59C + ldr r0, [sp, #8] + lsl r2, r2, #6 + ldr r6, [r3, #0xc] + ldr r0, [r1, r0] + add r3, r2, #0 + ldr r1, [r1, r7] + sub r3, r3, r6 + bl MOD16_021DD174 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + add r1, sp, #0xc + lsl r6, r0, #2 + ldr r0, [r5, r6] + bl FUN_02020044 + mov r0, #4 + sub r7, r0, r4 + bpl _021DCF86 + neg r7, r7 +_021DCF86: + lsl r1, r7, #1 + bpl _021DCF8C + neg r1, r1 +_021DCF8C: + ldr r0, [r5, r6] + add r1, #0x20 + bl FUN_02020310 + cmp r4, #4 + bne _021DCFA2 + ldr r0, [r5, r6] + mov r1, #0 + bl FUN_020202DC + b _021DCFB6 +_021DCFA2: + add r1, r7, #6 + cmp r1, #9 + ldr r0, [r5, r6] + bge _021DCFB0 + bl FUN_020202DC + b _021DCFB6 +_021DCFB0: + mov r1, #9 + bl FUN_020202DC +_021DCFB6: + ldr r0, [sp, #4] + mov r1, #9 + add r0, r0, #1 + bl _s32_div_f + add r4, r4, #1 + str r1, [sp, #4] + cmp r4, #9 + blt _021DCF2A + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DCFCC: .word 0x021FF570 +_021DCFD0: .word 0x021FF59C + thumb_func_end MOD16_021DCF1C + + thumb_func_start MOD16_021DCFD4 +MOD16_021DCFD4: ; 0x021DCFD4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9EC4 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9ED0 + add r7, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + bne _021DD026 + ldr r0, [r5, #0x24] + add r0, r0, #1 + cmp r0, #9 + bge _021DCFFA + b _021DCFFC +_021DCFFA: + mov r0, #0 +_021DCFFC: + str r0, [r5, #0x24] + ldr r0, [r5, #0x24] + mov r1, #9 + add r0, #8 + bl _s32_div_f + add r0, r6, #4 + cmp r0, r7 + blt _021DD01A + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD01A: + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD026: + cmp r0, #2 + bne _021DD054 + ldr r0, [r5, #0x24] + sub r0, r0, #1 + bmi _021DD032 + b _021DD034 +_021DD032: + mov r0, #8 +_021DD034: + str r0, [r5, #0x24] + ldr r1, [r5, #0x24] + sub r0, r6, #4 + bpl _021DD048 + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD048: + lsl r0, r1, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} +_021DD054: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DD44C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DCFD4 + + thumb_func_start MOD16_021DD060 +MOD16_021DD060: ; 0x021DD060 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7, #4] + bl MOD16_021D9EC4 + add r5, r0, #0 + ldr r0, [r7, #4] + bl MOD16_021D9ED0 + str r0, [sp, #4] + sub r0, r5, #4 + mov r4, #0 + str r0, [sp, #8] +_021DD07E: + ldr r0, [sp] + mov r1, #9 + ldr r0, [r0, #0x24] + add r0, r0, r4 + bl _s32_div_f + ldr r0, [sp, #8] + add r5, r1, #0 + mov r6, #0 + add r1, r0, r4 + bmi _021DD0B6 + ldr r0, [sp, #4] + cmp r1, r0 + bge _021DD0B6 + ldr r0, [r7, #4] + bl MOD16_021D9EDC + add r1, r0, #0 + ldr r0, _021DD10C ; =0x000001EE + cmp r1, r0 + beq _021DD0B6 + ldr r0, [r7, #4] + bl MOD16_021D9E08 + ldr r0, [r0, #4] + cmp r0, #2 + bne _021DD0B6 + mov r6, #1 +_021DD0B6: + ldr r0, [sp] + lsl r1, r5, #2 + add r5, r0, r1 + ldr r0, [r5, #0x50] + add r1, r6, #0 + bl FUN_020200A0 + cmp r6, #0 + beq _021DD102 + ldr r0, [r5] + bl FUN_0202011C + mov r1, #0x36 + ldr r2, [r0] + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [sp, #0xc] + ldr r0, [r0, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + ldr r0, [r5, #0x50] + bl FUN_02020044 + ldr r0, [r5] + bl FUN_02020300 + add r1, r0, #0 + ldr r0, [r5, #0x50] + bl FUN_020202A8 + ldr r0, [r5] + bl FUN_0202032C + add r1, r0, #0 + ldr r0, [r5, #0x50] + sub r1, r1, #1 + bl FUN_02020310 +_021DD102: + add r4, r4, #1 + cmp r4, #9 + blt _021DD07E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD10C: .word 0x000001EE + thumb_func_end MOD16_021DD060 + + thumb_func_start MOD16_021DD110 +MOD16_021DD110: ; 0x021DD110 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #4] + bl MOD16_021D9ED0 + add r1, r0, #0 + mov r0, #0x36 + lsl r0, r0, #0xc + lsl r1, r1, #0xc + bl FX_Div + str r0, [r4, #0x78] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DD110 + + thumb_func_start MOD16_021DD12C +MOD16_021DD12C: ; 0x021DD12C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r1, #4] + bl MOD16_021D9EC4 + add r2, r0, #0 + ldr r0, [r4, #0x78] + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + mov r0, #0x3a + lsl r0, r0, #0xc + str r1, [sp, #4] + add r0, r1, r0 + str r0, [sp, #4] + mov r0, #0x3e + lsl r0, r0, #0xe + str r0, [sp] + ldr r0, [r4, #0x74] + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DD12C + + thumb_func_start MOD16_021DD174 +MOD16_021DD174: ; 0x021DD174 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + sub r0, r1, r5 + lsl r2, r3, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + lsl r1, r4, #0xc + bl FX_Div + add r0, r0, r5 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD174 + + thumb_func_start MOD16_021DD1A0 +MOD16_021DD1A0: ; 0x021DD1A0 + push {r3, r4, r5, lr} + mov r2, #0x52 + add r5, r1, #0 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, [r5, #4] + bl MOD16_021D9EC4 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DD1A0 + + thumb_func_start MOD16_021DD1C0 +MOD16_021DD1C0: ; 0x021DD1C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r5, [r7, #0x24] + mov r6, #0 +_021DD1CA: + lsl r0, r5, #2 + add r4, r7, r0 + ldr r0, [r4, #0x28] + cmp r0, #0 + beq _021DD20C + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl MOD16_021DD220 + ldr r0, [r4, #0x28] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r2, [sp] + bl FUN_020118C4 + ldr r0, [r4] + bl FUN_0202032C + add r1, r0, #0 + ldr r0, [r4, #0x28] + sub r1, r1, #1 + ldr r0, [r0] + bl FUN_02011A30 + ldr r0, [r4] + bl FUN_02020300 + add r1, r0, #0 + ldr r0, [r4, #0x28] + ldr r0, [r0] + bl FUN_02011A90 +_021DD20C: + add r0, r5, #1 + mov r1, #9 + bl _s32_div_f + add r6, r6, #1 + add r5, r1, #0 + cmp r6, #9 + blt _021DD1CA + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DD1C0 + + thumb_func_start MOD16_021DD220 +MOD16_021DD220: ; 0x021DD220 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + bl FUN_0202011C + ldr r1, [r0] + asr r1, r1, #0xc + str r1, [r5] + ldr r0, [r0, #4] + asr r0, r0, #0xc + str r0, [r4] + ldr r0, [r5] + sub r0, #0x40 + str r0, [r5] + ldr r0, [r4] + sub r0, #8 + str r0, [r4] + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD220 + + thumb_func_start MOD16_021DD244 +MOD16_021DD244: ; 0x021DD244 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + str r1, [sp, #8] + str r3, [sp, #0xc] + bl MOD16_021D9EC4 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl MOD16_021D9ED0 + ldr r1, [r4, #8] + str r0, [sp, #0x10] + cmp r1, #1 + beq _021DD26C + cmp r1, #2 + beq _021DD276 + b _021DD27C +_021DD26C: + ldr r6, [r5, #0x24] + ldr r0, [sp, #0x14] + add r6, #8 + add r7, r0, #4 + b _021DD27C +_021DD276: + ldr r0, [sp, #0x14] + ldr r6, [r5, #0x24] + sub r7, r0, #4 +_021DD27C: + cmp r1, #0 + bne _021DD290 + ldr r1, [sp, #8] + ldr r3, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + bl MOD16_021DCD68 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DD290: + add r0, r6, #0 + mov r1, #9 + bl _s32_div_f + ldr r0, [sp, #0x10] + add r6, r1, #0 + cmp r7, r0 + bge _021DD2DA + cmp r7, #0 + blt _021DD2DA + ldr r0, [r4, #4] + add r1, r7, #0 + bl MOD16_021D9EDC + ldr r1, _021DD2F0 ; =0x000001EE + cmp r0, r1 + beq _021DD2C6 + str r6, [sp] + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r3, [sp, #0xc] + add r0, r5, #0 + add r2, r4, #0 + bl MOD16_021DD2F4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DD2C6: + add r0, r7, #1 + str r0, [sp] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r5, #0 + add r3, r6, #0 + bl MOD16_021DD370 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021DD2DA: + lsl r4, r6, #2 + add r5, #0x28 + ldr r0, [r5, r4] + cmp r0, #0 + beq _021DD2EC + bl MOD16_021DB338 + mov r0, #0 + str r0, [r5, r4] +_021DD2EC: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD2F0: .word 0x000001EE + thumb_func_end MOD16_021DD244 + + thumb_func_start MOD16_021DD2F4 +MOD16_021DD2F4: ; 0x021DD2F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + ldr r0, [r4, #4] + ldr r1, [sp, #0x44] + add r7, r3, #0 + bl MOD16_021D9E08 + str r0, [sp] + cmp r0, #0 + bne _021DD312 + bl ErrorHandling +_021DD312: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r3, [sp] + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x24] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + str r1, [sp, #0x20] + str r7, [sp, #0x28] + ldr r1, [r4, #4] + ldr r3, [r3] + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021D7E14 + add r6, r0, #0 + ldr r0, [sp, #0x40] + add r4, r5, #0 + add r4, #0x28 + lsl r7, r0, #2 + ldr r0, [r4, r7] + cmp r0, #0 + beq _021DD358 + bl MOD16_021DB338 +_021DD358: + str r6, [sp, #8] + ldr r1, [r5, #0x4c] + add r0, sp, #4 + bl MOD16_021DB2D4 + str r0, [r4, r7] + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD2F4 + + thumb_func_start MOD16_021DD370 +MOD16_021DD370: ; 0x021DD370 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r2, #0 + str r0, [sp, #0x10] + add r5, r1, #0 + mov r0, #0x20 + add r1, r4, #0 + add r6, r3, #0 + bl FUN_020219F4 + add r7, r0, #0 + ldr r2, _021DD444 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r4, #0 + bl FUN_0200A86C + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [sp, #0x14] + ldr r0, [r5, r1] + mov r2, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + add r0, #0x98 + ldr r0, [r0] + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] + str r0, [sp, #0x2c] + str r0, [sp, #0x34] + mov r0, #1 + str r2, [sp, #0x30] + str r4, [sp, #0x3c] + str r0, [sp, #0x38] + ldr r0, [r5, r1] + mov r1, #0xf + bl MOD16_021DB388 + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #0x58] + add r0, r7, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02021B04 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DD448 ; =0x00030201 + add r2, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x16 + bl FUN_0201BDE0 + ldr r0, [sp, #0x14] + mov r1, #0x63 + add r2, r7, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DD448 ; =0x00030201 + add r2, r7, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r5, #0 + mov r1, #2 + mov r3, #0x31 + bl FUN_0201BDE0 + ldr r4, [sp, #0x10] + lsl r6, r6, #2 + add r4, #0x28 + ldr r0, [r4, r6] + cmp r0, #0 + beq _021DD420 + bl MOD16_021DB338 +_021DD420: + ldr r1, [sp, #0x10] + str r5, [sp, #0x1c] + ldr r1, [r1, #0x4c] + add r0, sp, #0x18 + bl MOD16_021DB2D4 + str r0, [r4, r6] + add r0, r5, #0 + bl MOD16_021DB3BC + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD444: .word 0x00000266 +_021DD448: .word 0x00030201 + thumb_func_end MOD16_021DD370 + + thumb_func_start MOD16_021DD44C +MOD16_021DD44C: ; 0x021DD44C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9EC4 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9ED0 + sub r4, r5, #4 + ldr r5, [r6, #0x24] + str r0, [sp] + mov r7, #0 +_021DD468: + cmp r4, #0 + blt _021DD47E + ldr r0, [sp] + cmp r4, r0 + bge _021DD47E + lsl r0, r5, #2 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + b _021DD488 +_021DD47E: + lsl r0, r5, #2 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 +_021DD488: + add r0, r5, #1 + mov r1, #9 + bl _s32_div_f + add r7, r7, #1 + add r5, r1, #0 + add r4, r4, #1 + cmp r7, #9 + blt _021DD468 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DD44C + + thumb_func_start MOD16_021DD49C +MOD16_021DD49C: ; 0x021DD49C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r2, #0xc] + mov r0, #0xa + lsl r0, r0, #6 + sub r0, r0, r1 + lsl r0, r0, #0xc + mov r2, #0x1f + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0xa + lsl r1, r1, #0x12 + bl FX_Div + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021D8700 + mov r1, #0x17 + asr r2, r5, #0xc + bl FUN_02007558 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD49C + + thumb_func_start MOD16_021DD4E0 +MOD16_021DD4E0: ; 0x021DD4E0 + push {r3, lr} + bl MOD16_021D8700 + mov r1, #0x17 + mov r2, #0x1f + bl FUN_02007558 + pop {r3, pc} + thumb_func_end MOD16_021DD4E0 + + thumb_func_start MOD16_021DD4F0 +MOD16_021DD4F0: ; 0x021DD4F0 + push {r4, lr} + mov r1, #0xa + ldr r0, [r0, #0xc] + lsl r1, r1, #6 + sub r0, r1, r0 + lsl r3, r0, #0xc + asr r2, r3, #0x1f + lsr r0, r3, #0x10 + lsl r4, r2, #0x10 + orr r4, r0 + mov r0, #2 + lsl r3, r3, #0x10 + mov r2, #0 + lsl r0, r0, #0xa + add r0, r3, r0 + adc r4, r2 + lsl r2, r4, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + lsl r1, r1, #0xc + bl FX_Div + asr r1, r0, #0xc + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _021DD52C ; =0x04000052 + strh r1, [r0] + pop {r4, pc} + .align 2, 0 +_021DD52C: .word 0x04000052 + thumb_func_end MOD16_021DD4F0 + + thumb_func_start MOD16_021DD530 +MOD16_021DD530: ; 0x021DD530 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0x14] + ldr r0, _021DD5BC ; =0x00000685 + add r5, r2, #0 + str r1, [sp, #0x18] + add r4, r3, #0 + bl FUN_020054C8 + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021DD576 + cmp r4, #0 + beq _021DD568 + ldr r0, [sp, #0x18] + mov r6, #3 + ldr r0, [r0] + mov r4, #0 + ldr r0, [r0] + mov r1, #1 + add r2, r6, #0 + mov r3, #0xc0 + str r4, [sp, #0x1c] + mov r7, #0xe + mov r5, #4 + bl FUN_020179E0 + b _021DD594 +_021DD568: + mov r0, #3 + mov r6, #0 + str r0, [sp, #0x1c] + mov r4, #0xe + add r7, r6, #0 + mov r5, #4 + b _021DD594 +_021DD576: + cmp r4, #0 + beq _021DD588 + mov r0, #0xc + str r0, [sp, #0x1c] + mov r4, #0x14 + mov r6, #3 + mov r7, #0xe + mov r5, #4 + b _021DD594 +_021DD588: + mov r0, #3 + str r0, [sp, #0x1c] + mov r4, #0xe + mov r6, #0xc + mov r7, #0x14 + mov r5, #4 +_021DD594: + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp] + str r6, [sp, #4] + str r4, [sp, #8] + str r7, [sp, #0xc] + ldr r1, [sp, #0x18] + str r5, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [r1] + add r3, #0xdc + str r3, [sp, #0x14] + ldr r1, [r1] + ldr r3, [r3] + add r0, #0xe0 + mov r2, #2 + bl MOD16_021D7CA4 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD5BC: .word 0x00000685 + thumb_func_end MOD16_021DD530 + + thumb_func_start MOD16_021DD5C0 +MOD16_021DD5C0: ; 0x021DD5C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xe0 + add r4, r1, #0 + bl MOD16_021D7CC8 + add r6, r0, #0 + bne _021DD60A + add r0, r5, #0 + add r0, #0xf8 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xfc + ldr r0, [r0] + sub r0, r0, #1 + mul r0, r1 + mov r1, #1 + lsl r1, r1, #8 + ldr r1, [r5, r1] + bl _s32_div_f + add r5, #0xf0 + ldr r1, [r5] + add r0, r0, r1 + lsl r3, r0, #3 + mov r0, #0x2f + sub r3, #0x70 + mvn r0, r0 + cmp r3, r0 + bge _021DD5FE + add r3, r0, #0 +_021DD5FE: + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + mov r2, #3 + bl FUN_0201AEE4 +_021DD60A: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DD5C0 + + thumb_func_start MOD16_021DD610 +MOD16_021DD610: ; 0x021DD610 + push {r3, lr} + ldr r1, [r1, #0x10] + cmp r1, #0 + bne _021DD62A + cmp r2, #0 + bne _021DD62A + ldr r0, [r0] + mov r1, #1 + ldr r0, [r0] + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 +_021DD62A: + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021DD638 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + pop {r3, pc} + .align 2, 0 +_021DD638: .word 0xFFFF1FFF + thumb_func_end MOD16_021DD610 + + thumb_func_start MOD16_021DD63C +MOD16_021DD63C: ; 0x021DD63C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0xf + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r1, #1 + add r2, r5, #0 + bl FUN_02011898 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021DB3BC + add r0, r5, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD63C + + thumb_func_start MOD16_021DD664 +MOD16_021DD664: ; 0x021DD664 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x74] + mov r1, #1 + bl FUN_02020398 + mov r6, #1 + mov r4, #0 + add r7, r6, #0 +_021DD676: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x50] + add r1, r7, #0 + bl FUN_02020398 + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DD694 + ldr r0, [r0] + mov r1, #1 + bl FUN_02011AF0 +_021DD694: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DD676 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD664 + + thumb_func_start MOD16_021DD6A0 +MOD16_021DD6A0: ; 0x021DD6A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x74] + mov r1, #0 + bl FUN_02020398 + mov r4, #0 + add r6, r4, #0 + add r7, r4, #0 +_021DD6B2: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x50] + add r1, r7, #0 + bl FUN_02020398 + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DD6D0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02011AF0 +_021DD6D0: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blt _021DD6B2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD6A0 + + thumb_func_start MOD16_021DD6DC +MOD16_021DD6DC: ; 0x021DD6DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x24] + add r6, r1, #0 + add r0, r0, #4 + mov r1, #9 + add r5, r2, #0 + add r7, r3, #0 + bl _s32_div_f + lsl r0, r1, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r4, r0, #0 + ldr r0, [r5, #4] + bl MOD16_021D9D88 + add r3, r0, #0 + ldr r0, [r4] + add r2, r7, #0 + str r0, [sp] + ldr r0, [r4, #4] + str r0, [sp, #4] + ldr r1, [r5, #4] + add r0, r6, #0 + bl MOD16_021D7E9C + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D891C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD6DC + + thumb_func_start MOD16_021DD724 +MOD16_021DD724: ; 0x021DD724 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl MOD16_021DD530 + ldr r0, [r5, #0x10] + cmp r0, #1 + beq _021DD75E + cmp r4, #0 + beq _021DD74C + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x39 + bl FUN_0200A208 + pop {r3, r4, r5, pc} +_021DD74C: + mov r0, #1 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x39 + bl FUN_0200A208 +_021DD75E: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD724 + + thumb_func_start MOD16_021DD760 +MOD16_021DD760: ; 0x021DD760 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021DD5C0 + add r7, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD77C + mov r0, #1 + bl FUN_0200A344 + b _021DD77E +_021DD77C: + mov r0, #1 +_021DD77E: + cmp r7, #1 + bne _021DD7BE + cmp r0, #1 + bne _021DD7BE + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD7B0 + cmp r6, #0 + bne _021DD7B0 + mov r0, #0xf + mvn r0, r0 + mov r1, #0x3f + mov r2, #1 + bl FUN_0200A274 + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 +_021DD7B0: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DD610 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DD7BE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD760 + + thumb_func_start MOD16_021DD7C4 +MOD16_021DD7C4: ; 0x021DD7C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + bl MOD16_021DD664 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021DD530 + cmp r4, #0 + bne _021DD7F4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD910 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021DD96C +_021DD7F4: + ldr r0, [r7, #0x10] + cmp r0, #1 + beq _021DD84A + cmp r4, #0 + beq _021DD826 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r2, r1, #0 + sub r2, #0x14 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021DD826: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 +_021DD84A: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DD7C4 + + thumb_func_start MOD16_021DD850 +MOD16_021DD850: ; 0x021DD850 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r7, r0, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021DD5C0 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD876 + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #0xc] +_021DD876: + cmp r6, #0 + bne _021DD890 + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021DD944 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021DD9A0 + str r0, [sp, #0x14] + b _021DD896 +_021DD890: + mov r0, #1 + str r0, [sp, #0x10] + str r0, [sp, #0x14] +_021DD896: + mov r1, #0 + add r2, sp, #8 +_021DD89A: + ldr r0, [r2] + cmp r0, #0 + beq _021DD8A8 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #4 + blt _021DD89A +_021DD8A8: + cmp r1, #4 + bne _021DD906 + cmp r6, #0 + bne _021DD8E0 + ldr r0, [r4, #0x10] + cmp r0, #1 + beq _021DD8F6 + mov r3, #0 + add r0, r3, #0 + str r3, [sp] + sub r0, #0x10 + str r0, [sp, #4] + ldr r0, _021DD90C ; =0x04000050 + mov r1, #0x2e + mov r2, #8 + bl G2x_SetBlendBrightnessExt_ + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + b _021DD8F6 +_021DD8E0: + add r0, r7, #0 + bl MOD16_021DD6A0 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D8950 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 +_021DD8F6: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DD610 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DD906: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD90C: .word 0x04000050 + thumb_func_end MOD16_021DD850 + + thumb_func_start MOD16_021DD910 +MOD16_021DD910: ; 0x021DD910 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0x48 + add r5, r0, #0 + str r1, [sp] + mov r0, #4 + add r1, #0xbc + str r0, [sp, #4] + add r0, r5, r1 + mov r1, #0x38 + mov r2, #0x30 + mov r3, #0x50 + bl MOD16_021D8BD8 + mov r2, #0x41 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D86F4 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DD910 + + thumb_func_start MOD16_021DD944 +MOD16_021DD944: ; 0x021DD944 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x41 + lsl r0, r0, #2 + add r0, r5, r0 + add r4, r1, #0 + bl MOD16_021D8BF4 + mov r2, #0x41 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + add r6, r0, #0 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D86F4 + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DD944 + + thumb_func_start MOD16_021DD96C +MOD16_021DD96C: ; 0x021DD96C + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x49 + lsl r0, r0, #2 + add r4, r1, #0 + add r0, r5, r0 + mov r1, #0xaa + mov r2, #0xac + mov r3, #0x52 + bl MOD16_021D8BD8 + mov r2, #0x49 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D7F6C + add sp, #8 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DD96C + + thumb_func_start MOD16_021DD9A0 +MOD16_021DD9A0: ; 0x021DD9A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + add r0, r5, r0 + add r4, r1, #0 + bl MOD16_021D8BF4 + mov r2, #0x49 + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r2, r2, #4 + add r6, r0, #0 + ldr r0, [r4] + ldr r2, [r5, r2] + bl MOD16_021D7F6C + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DD9A0 + + thumb_func_start MOD16_021DD9C8 +MOD16_021DD9C8: ; 0x021DD9C8 + ldr r3, [r0] + mov r1, #4 + ldr r2, [r3] + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + mov r1, #2 + str r1, [r0, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DD9C8 + + thumb_func_start MOD16_021DD9E0 +MOD16_021DD9E0: ; 0x021DD9E0 + ldr r3, [r1] + mov r0, #2 + ldr r2, [r3] + orr r2, r0 + str r2, [r3] + mov r3, #0 + str r3, [r1, #0x10] + mov r2, #1 + str r2, [r1, #0x14] + str r3, [r1, #0xc] + str r0, [r1, #0x20] + bx lr + thumb_func_end MOD16_021DD9E0 + + thumb_func_start MOD16_021DD9F8 +MOD16_021DD9F8: ; 0x021DD9F8 + push {r3, lr} + mov r1, #0x5d + ldr r2, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021DDA24 + ldr r3, [r0] + mov r1, #1 + ldr r2, [r3] + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + mov r1, #2 + str r1, [r0, #0x20] + ldr r0, _021DDA28 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + pop {r3, pc} +_021DDA24: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_021DDA28: .word 0x000005DD + thumb_func_end MOD16_021DD9F8 + + thumb_func_start MOD16_021DDA2C +MOD16_021DDA2C: ; 0x021DDA2C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + mov r1, #0x5d + ldr r0, [r5, #4] + lsl r1, r1, #6 + ldr r1, [r0, r1] + cmp r1, #1 + bne _021DDA46 + add sp, #0x10 + mov r0, #0 + pop {r4, r5, r6, pc} +_021DDA46: + bl MOD16_021D9D04 + cmp r0, #0 + bne _021DDA52 + mov r4, #1 + b _021DDA54 +_021DDA52: + mov r4, #0 +_021DDA54: + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021DDAA8 + ldr r0, [r5, #4] + add r1, r4, #0 + bl MOD16_021D9CEC + ldr r0, _021DDAB0 ; =0x000005DD + bl FUN_020054C8 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r4, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r5, #4] + add r2, r1, #0 + add r3, r1, #0 + bl MOD16_021D9CB0 + ldr r0, [r5, #4] + mov r1, #0 + bl MOD16_021D9D28 + mov r3, #0 + str r3, [r5, #0xc] + ldr r2, [r5] + mov r0, #0x10 + ldr r1, [r2] + add sp, #0x10 + orr r0, r1 + str r0, [r2] + str r3, [r5, #0x10] + str r3, [r5, #0x14] + mov r0, #2 + str r0, [r5, #0x20] + str r3, [r5, #0x1c] + mov r0, #1 + pop {r4, r5, r6, pc} +_021DDAA8: + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021DDAB0: .word 0x000005DD + thumb_func_end MOD16_021DDA2C + + thumb_func_start MOD16_021DDAB4 +MOD16_021DDAB4: ; 0x021DDAB4 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + bl MOD16_021D9DE8 + add r6, r0, #0 + ldr r0, [r5, #4] + bl MOD16_021D9D04 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, [r5, #4] + add r2, r1, #0 + add r3, r1, #0 + bl MOD16_021D9CB0 + ldr r2, [r5] + mov r0, #0x10 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + ldr r0, [r5, #4] + add r1, r6, #0 + bl MOD16_021D9DC0 + mov r2, #0 + str r2, [r5, #0xc] + mov r0, #0x5d + ldr r1, [r5, #4] + lsl r0, r0, #6 + str r2, [r1, r0] + str r2, [r5, #0x10] + str r2, [r5, #0x14] + str r2, [r5, #8] + mov r0, #2 + str r0, [r5, #0x20] + str r2, [r5, #0x1c] + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DDAB4 + + thumb_func_start MOD16_021DDB0C +MOD16_021DDB0C: ; 0x021DDB0C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r4, r1, #0 + sub r0, r0, #1 + str r0, [r5, #0x18] + bmi _021DDB42 + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD16_021DC684 + cmp r0, #0 + beq _021DDB3C + ldr r2, [r5, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC678 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021DDB54 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021DDB3C: + mov r0, #0 + str r0, [r5, #0x18] + pop {r3, r4, r5, pc} +_021DDB42: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r5, #0x14] + str r0, [r4, #0x20] + pop {r3, r4, r5, pc} + nop +_021DDB54: .word 0x0000068B + thumb_func_end MOD16_021DDB0C + + thumb_func_start MOD16_021DDB58 +MOD16_021DDB58: ; 0x021DDB58 + push {r3, r4, r5, lr} + ldr r2, _021DDC24 ; =0x021C48B8 + add r4, r1, #0 + ldr r3, [r2, #0x44] + add r5, r0, #0 + mov r1, #0x40 + add r0, r3, #0 + tst r0, r1 + beq _021DDB9A + add r0, r4, #0 + sub r1, #0x41 + bl MOD16_021DC684 + cmp r0, #0 + beq _021DDB8C + add r0, r4, #0 + add r1, r5, #0 + mov r2, #2 + bl MOD16_021DC678 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021DDC28 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021DDB8C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r4, #0x20] + pop {r3, r4, r5, pc} +_021DDB9A: + mov r0, #0x80 + tst r0, r3 + beq _021DDBD0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021DC684 + cmp r0, #0 + beq _021DDBC2 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD16_021DC678 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021DDC28 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021DDBC2: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r4, #0x20] + pop {r3, r4, r5, pc} +_021DDBD0: + ldr r1, [r2, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _021DDBF2 + mov r0, #1 + str r0, [r5, #0x14] + mov r0, #5 + str r0, [r5, #0x18] + sub r0, r0, #6 + str r0, [r5, #0x1c] + mov r0, #2 + str r0, [r5, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4E8 + pop {r3, r4, r5, pc} +_021DDBF2: + mov r0, #0x10 + tst r0, r1 + beq _021DDC0E + mov r1, #1 + str r1, [r5, #0x14] + mov r0, #5 + str r0, [r5, #0x18] + str r1, [r5, #0x1c] + str r1, [r5, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4E8 + pop {r3, r4, r5, pc} +_021DDC0E: + ldr r0, [r4, #0x20] + cmp r0, #1 + bne _021DDC20 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DC4D4 + mov r0, #0 + str r0, [r4, #0x20] +_021DDC20: + pop {r3, r4, r5, pc} + nop +_021DDC24: .word 0x021C48B8 +_021DDC28: .word 0x0000068B + thumb_func_end MOD16_021DDB58 + + thumb_func_start MOD16_021DDC2C +MOD16_021DDC2C: ; 0x021DDC2C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DDCA4 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DDCEC + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DDD14 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DDD90 + str r0, [r5, #0x24] + ldr r0, _021DDC74 ; =MOD16_021DDD94 + str r0, [r5, #8] + ldr r0, _021DDC78 ; =MOD16_021DDDDC + str r0, [r5, #0xc] + ldr r0, _021DDC7C ; =MOD16_021DDE28 + str r0, [r5, #0x10] + ldr r0, _021DDC80 ; =MOD16_021DDE3C + str r0, [r5, #0x14] + ldr r0, _021DDC84 ; =MOD16_021DDECC + str r0, [r5, #0x18] + ldr r0, _021DDC88 ; =MOD16_021DDF60 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DDC74: .word MOD16_021DDD94 +_021DDC78: .word MOD16_021DDDDC +_021DDC7C: .word MOD16_021DDE28 +_021DDC80: .word MOD16_021DDE3C +_021DDC84: .word MOD16_021DDECC +_021DDC88: .word MOD16_021DDF60 + thumb_func_end MOD16_021DDC2C + + thumb_func_start MOD16_021DDC8C +MOD16_021DDC8C: ; 0x021DDC8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DDD50 + ldr r0, [r4] + bl MOD16_021DDD64 + ldr r0, [r4, #0x20] + bl MOD16_021DDD78 + pop {r4, pc} + thumb_func_end MOD16_021DDC8C + + thumb_func_start MOD16_021DDCA4 +MOD16_021DDCA4: ; 0x021DDCA4 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x28 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DDCB8 + bl ErrorHandling +_021DDCB8: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x28 + bl Call_FillMemWithValue + add r0, r6, #0 + mov r1, #0 + bl MOD16_021D7B5C + ldr r0, [r0] + mov r1, #0 + str r0, [r4, #0x1c] + add r2, r4, #0 + mov r0, #4 +_021DDCD4: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #7 + blt _021DDCD4 + add r0, r6, #0 + bl MOD16_021D7AEC + str r0, [r4, #0x20] + str r5, [r4, #0x24] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DDCA4 + + thumb_func_start MOD16_021DDCEC +MOD16_021DDCEC: ; 0x021DDCEC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021DDCFE + bl ErrorHandling +_021DDCFE: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DDCEC + + thumb_func_start MOD16_021DDD14 +MOD16_021DDD14: ; 0x021DDD14 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021DDD90 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DDD34 + bl ErrorHandling +_021DDD34: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + mov r3, #1 + bl MOD16_021DAE94 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DDD14 + + thumb_func_start MOD16_021DDD50 +MOD16_021DDD50: ; 0x021DDD50 + push {r4, lr} + add r4, r0, #0 + bne _021DDD5A + bl ErrorHandling +_021DDD5A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DDD50 + + thumb_func_start MOD16_021DDD64 +MOD16_021DDD64: ; 0x021DDD64 + push {r4, lr} + add r4, r0, #0 + bne _021DDD6E + bl ErrorHandling +_021DDD6E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DDD64 + + thumb_func_start MOD16_021DDD78 +MOD16_021DDD78: ; 0x021DDD78 + push {r4, lr} + add r4, r0, #0 + bne _021DDD82 + bl ErrorHandling +_021DDD82: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021DDD78 + + thumb_func_start MOD16_021DDD90 +MOD16_021DDD90: ; 0x021DDD90 + mov r0, #1 + bx lr + thumb_func_end MOD16_021DDD90 + + thumb_func_start MOD16_021DDD94 +MOD16_021DDD94: ; 0x021DDD94 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x24 + bl FUN_02016998 + str r0, [r5, #8] + cmp r0, #0 + bne _021DDDAC + bl ErrorHandling +_021DDDAC: + ldr r0, [r5, #8] + mov r1, #0 + mov r2, #0x24 + bl Call_FillMemWithValue + ldr r1, _021DDDD8 ; =0x000004CD + ldr r0, [r5, #8] + add r2, r4, #0 + str r1, [r0, #0x1c] + mov r1, #0 + mov r0, #4 +_021DDDC2: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #7 + blt _021DDDC2 + ldr r0, [r5, #8] + ldr r2, [r5, #4] + add r1, r4, #0 + bl MOD16_021DDFE0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDDD8: .word 0x000004CD + thumb_func_end MOD16_021DDD94 + + thumb_func_start MOD16_021DDDDC +MOD16_021DDDDC: ; 0x021DDDDC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021DDDEC + mov r0, #1 + pop {r3, r4, r5, pc} +_021DDDEC: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021DDDF6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021DDDF6: + ldr r2, [r5, #0x1c] + add r0, r4, #0 + ldr r1, [r2, #0xc] + ldr r2, [r2, #8] + bl MOD16_021DE9B0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DE09C + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021DDE1C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021DE824 + b _021DDE22 +_021DDE1C: + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] +_021DDE22: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DDDDC + + thumb_func_start MOD16_021DDE28 +MOD16_021DDE28: ; 0x021DDE28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl MOD16_021DE0EC + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021DDE28 + + thumb_func_start MOD16_021DDE3C +MOD16_021DDE3C: ; 0x021DDE3C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021DDEC8 + add r5, r1, r1 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021DDE56: ; jump table + .short _021DDE60 - _021DDE56 - 2 ; case 0 + .short _021DDE84 - _021DDE56 - 2 ; case 1 + .short _021DDE94 - _021DDE56 - 2 ; case 2 + .short _021DDEAE - _021DDE56 - 2 ; case 3 + .short _021DDEC0 - _021DDE56 - 2 ; case 4 +_021DDE60: + ldr r0, [r4, #4] + mov r1, #0x3c + bl FUN_02016998 + str r0, [r4, #8] + cmp r0, #0 + bne _021DDE72 + bl ErrorHandling +_021DDE72: + ldr r0, [r4, #8] + mov r1, #0 + mov r2, #0x3c + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDE84: + add r1, r3, #0 + ldr r3, [r4, #4] + bl MOD16_021DE1E0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDE94: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDEAE: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DDEC8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDEC8 +_021DDEC0: + add r0, r1, #1 + str r0, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DDEC8: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DDE3C + + thumb_func_start MOD16_021DDECC +MOD16_021DDECC: ; 0x021DDECC + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1, #8] + add r5, r2, #0 + add r7, r0, #0 + ldr r0, [r4] + ldr r1, [r5] + ldr r6, [r3, #8] + bl MOD16_021D7B98 + ldr r0, [r4, #4] + ldr r1, [r5, #4] + bl MOD16_021D7B98 + ldr r0, [r4, #8] + ldr r1, [r5, #8] + bl MOD16_021D7B98 + ldr r0, [r4, #0x18] + ldr r1, [r5, #0xc] + bl MOD16_021D7B98 + ldr r0, [r4, #0x1c] + ldr r1, [r5, #0x10] + bl MOD16_021D7B98 + mov r2, #5 + str r2, [sp] + ldr r0, [r4] + ldr r1, [r4, #0xc] + sub r2, #0x13 + mov r3, #3 + bl MOD16_021DEA24 + mov r2, #5 + str r2, [sp] + ldr r0, [r4, #4] + ldr r1, [r4, #0x10] + sub r2, #0x13 + mov r3, #3 + bl MOD16_021DEA24 + mov r2, #5 + str r2, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #0x14] + sub r2, #0x13 + mov r3, #2 + bl MOD16_021DEA24 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021DDF4E + mov r0, #0x83 + ldr r1, [r6, #0xc] + lsl r0, r0, #2 + bl FUN_0201BC84 + add r2, r0, #0 + ldr r3, [r6, #0x1c] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021DE8D0 + b _021DDF5C +_021DDF4E: + cmp r0, #1 + bne _021DDF5C + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD16_021DE93C +_021DDF5C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DDECC + + thumb_func_start MOD16_021DDF60 +MOD16_021DDF60: ; 0x021DDF60 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021DDFD8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DDF7C: ; jump table + .short _021DDF86 - _021DDF7C - 2 ; case 0 + .short _021DDFA0 - _021DDF7C - 2 ; case 1 + .short _021DDFB2 - _021DDF7C - 2 ; case 2 + .short _021DDFC2 - _021DDF7C - 2 ; case 3 + .short _021DDFD2 - _021DDF7C - 2 ; case 4 +_021DDF86: + mov r0, #2 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFA0: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DDFD8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFB2: + add r1, r2, #0 + ldr r2, [r4, #4] + bl MOD16_021DE228 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFC2: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDFD8 +_021DDFD2: + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021DDFD8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DDF60 + + thumb_func_start MOD16_021DDFE0 +MOD16_021DDFE0: ; 0x021DDFE0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x1c + bl FUN_02016998 + str r0, [r5, #8] + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x10 + mov r2, #0x40 + mov r3, #0 + bl MOD16_021D7C98 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x40 + add r0, r0, #4 + mov r2, #0x70 + mov r3, #0 + bl MOD16_021D7C98 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x70 + add r0, #8 + mov r2, #0xc0 + mov r3, #0 + bl MOD16_021D7C98 + mov r0, #0x84 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x38 + add r0, #0xc + mov r2, #0x48 + mov r3, #0x74 + bl MOD16_021D7C98 + mov r0, #0x84 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0x8a + add r0, #0x10 + mov r2, #0x9a + mov r3, #0x74 + bl MOD16_021D7C98 + ldr r0, [r5, #8] + mov r1, #0xfe + strb r1, [r0, #0x14] + ldr r0, [r5, #8] + mov r1, #0xf8 + strb r1, [r0, #0x15] + ldr r0, [r5, #8] + mov r1, #0x68 + strb r1, [r0, #0x16] + ldr r0, [r5, #8] + mov r2, #0x10 + strb r1, [r0, #0x17] + mov r0, #0xb4 + str r0, [sp] + ldr r0, [r5, #8] + mov r1, #0 + add r0, #0x18 + mov r3, #0x74 + bl MOD16_021D7C98 + add r0, r6, #0 + mov r1, #8 + bl FUN_02016998 + add r3, r0, #0 + str r5, [r3] + str r4, [r3, #4] + str r3, [r5, #4] + str r6, [sp] + ldr r0, [r5, #8] + ldr r2, _021DE098 ; =MOD16_021DE108 + mov r1, #7 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021DE098: .word MOD16_021DE108 + thumb_func_end MOD16_021DDFE0 + + thumb_func_start MOD16_021DE09C +MOD16_021DE09C: ; 0x021DE09C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #4 +_021DE0A8: + add r1, r1, #1 + stmia r2!, {r0} + cmp r1, #7 + blt _021DE0A8 + add r0, r4, #0 + bl MOD16_021DEA34 + ldr r0, [r5] + bl FUN_02022144 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + ldr r1, [r1, #4] + bl MOD16_021DEA5C + cmp r0, #0 + bne _021DE0CE + mov r0, #0 + str r0, [r5, #0xc] +_021DE0CE: + ldr r0, [r4, #0x14] + cmp r0, #4 + ldr r0, [r5, #0x1c] + beq _021DE0E0 + ldr r1, [r5, #0xc] + bl MOD16_021DEAFC + str r0, [r5, #0x1c] + pop {r3, r4, r5, pc} +_021DE0E0: + mov r1, #0 + bl MOD16_021DEAFC + str r0, [r5, #0x1c] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DE09C + + thumb_func_start MOD16_021DE0EC +MOD16_021DE0EC: ; 0x021DE0EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + thumb_func_end MOD16_021DE0EC + + thumb_func_start MOD16_021DE108 +MOD16_021DE108: ; 0x021DE108 + push {r4, r5, r6, lr} + ldr r5, [r2, #4] + add r6, r0, #0 + ldr r0, [r5, #0x1c] + ldr r4, [r2] + ldr r0, [r0, #4] + lsl r2, r6, #2 + str r1, [r5, r2] + cmp r1, #0 + beq _021DE122 + cmp r1, #2 + beq _021DE12E + b _021DE1D6 +_021DE122: + ldr r0, _021DE1DC ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x14] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x18] + pop {r4, r5, r6, pc} +_021DE12E: + cmp r6, #6 + bhi _021DE1A2 + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DE13E: ; jump table + .short _021DE14C - _021DE13E - 2 ; case 0 + .short _021DE154 - _021DE13E - 2 ; case 1 + .short _021DE15C - _021DE13E - 2 ; case 2 + .short _021DE164 - _021DE13E - 2 ; case 3 + .short _021DE174 - _021DE13E - 2 ; case 4 + .short _021DE1A2 - _021DE13E - 2 ; case 5 + .short _021DE18A - _021DE13E - 2 ; case 6 +_021DE14C: + ldr r0, [r5, #0x1c] + mov r1, #1 + str r1, [r0, #0x34] + b _021DE1A2 +_021DE154: + ldr r0, [r5, #0x1c] + mov r1, #1 + str r1, [r0, #0x30] + b _021DE1A2 +_021DE15C: + ldr r0, [r5, #0x1c] + mov r1, #1 + str r1, [r0, #0x2c] + b _021DE1A2 +_021DE164: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021DE1A2 + add r0, r5, #0 + mov r1, #0 + bl MOD16_021DEAB8 + b _021DE1A2 +_021DE174: + ldr r1, [r4, #0x20] + cmp r1, #0 + bne _021DE1A2 + bl MOD16_021D9D94 + add r1, r0, #0 + add r0, r5, #0 + sub r1, r1, #1 + bl MOD16_021DEAB8 + b _021DE1A2 +_021DE18A: + ldr r0, [r5, #0x1c] + mov r1, #0x5d + ldr r2, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021DE19E + mov r1, #1 + str r1, [r0, #0x28] + b _021DE1A2 +_021DE19E: + mov r1, #1 + str r1, [r0, #0x24] +_021DE1A2: + cmp r6, #5 + bne _021DE1D0 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _021DE1C6 + add r0, r4, #0 + bl MOD16_021DE8A0 + ldr r1, [r4, #0xc] + cmp r1, #0x10 + bgt _021DE1C6 + mov r0, #0xf + mvn r0, r0 + cmp r1, r0 + blt _021DE1C6 + mov r0, #0 + str r0, [r4, #0xc] +_021DE1C6: + ldr r0, _021DE1DC ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x14] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x18] +_021DE1D0: + mov r0, #1 + str r0, [r4, #0x20] + pop {r4, r5, r6, pc} +_021DE1D6: + mov r0, #0 + str r0, [r4, #0x20] + pop {r4, r5, r6, pc} + .align 2, 0 +_021DE1DC: .word 0x021C48F8 + thumb_func_end MOD16_021DE108 + + thumb_func_start MOD16_021DE1E0 +MOD16_021DE1E0: ; 0x021DE1E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021DE254 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021DE788 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021DE308 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD16_021DE3FC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD16_021DE594 + mov r0, #7 + mov r1, #3 + bl FUN_020178BC + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DE1E0 + + thumb_func_start MOD16_021DE228 +MOD16_021DE228: ; 0x021DE228 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD16_021DE768 + add r0, r5, #0 + bl MOD16_021DE568 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DE3B8 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021DE808 + mov r0, #7 + mov r1, #1 + bl FUN_020178BC + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DE228 + + thumb_func_start MOD16_021DE254 +MOD16_021DE254: ; 0x021DE254 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r7, r1, #0 + ldr r6, [r0] + mov r1, #0 + add r4, r2, #0 + str r1, [sp] + str r4, [sp, #4] + mov r2, #4 + add r3, r1, #0 + bl MOD16_021D8CFC + ldr r0, [r7, #0x1c] + mov r1, #0x5d + ldr r0, [r0, #4] + lsl r1, r1, #6 + ldr r1, [r0, r1] + cmp r1, #1 + bne _021DE292 + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #1 + mov r2, #4 + mov r3, #0x60 + bl MOD16_021D8CFC + b _021DE2AC +_021DE292: + bl MOD16_021D9D04 + cmp r0, #1 + bne _021DE2AC + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #0x19 + mov r2, #4 + mov r3, #0x60 + bl MOD16_021D8CFC +_021DE2AC: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, [r5] + mov r1, #0x1d + add r2, r6, #0 + mov r3, #6 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x29 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + mov r1, #6 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DE254 + + thumb_func_start MOD16_021DE308 +MOD16_021DE308: ; 0x021DE308 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021DE3A8 ; =0x0000043C + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x54 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x2c] + bl FUN_02009B04 + ldr r0, [r5, #0x2c] + bl FUN_02009474 + ldr r0, _021DE3AC ; =0x000003EB + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x30] + bl FUN_02009D68 + ldr r0, [r5, #0x30] + bl FUN_02009474 + ldr r0, _021DE3B0 ; =0x0000043A + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x52 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x34] + ldr r0, _021DE3B4 ; =0x0000043B + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x53 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x38] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE3A8: .word 0x0000043C +_021DE3AC: .word 0x000003EB +_021DE3B0: .word 0x0000043A +_021DE3B4: .word 0x0000043B + thumb_func_end MOD16_021DE308 + + thumb_func_start MOD16_021DE3B8 +MOD16_021DE3B8: ; 0x021DE3B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x30] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x34] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x38] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DE3B8 + + thumb_func_start MOD16_021DE3FC +MOD16_021DE3FC: ; 0x021DE3FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + add r7, r3, #0 + add r5, r0, #0 + mov r0, #0 + ldr r4, [r1] + ldr r3, _021DE564 ; =0x0000043B + add r6, r2, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x4c + sub r2, #0x50 + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #8 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #3 + lsl r0, r0, #0x10 + str r0, [sp, #0x34] + lsl r1, r1, #0xe + lsl r0, r0, #2 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + str r7, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE494 + ldr r0, [r5] + mov r1, #0 + bl FUN_020200A0 +_021DE494: + mov r0, #3 + lsl r0, r0, #0x10 + mov r1, #0x16 + str r0, [sp, #0x34] + lsl r1, r1, #0xe + lsl r0, r0, #2 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #4] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r6, #0x1c] + mov r1, #1 + ldr r0, [r0, #4] + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021DE4D0 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE4D8 +_021DE4D0: + ldr r0, [r5, #4] + mov r1, #0 + bl FUN_020200A0 +_021DE4D8: + mov r0, #3 + lsl r0, r0, #0x10 + mov r1, #0x26 + str r0, [sp, #0x34] + lsl r1, r1, #0xe + lsl r0, r0, #2 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5, #8] + bl FUN_02020130 + mov r0, #0x1f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #1 + mov r0, #3 + lsl r1, r1, #0x12 + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #3 + str r0, [r5, #0x18] + bl FUN_02020130 + mov r0, #0x1f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #0x92 + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #4 + str r0, [r5, #0x1c] + bl FUN_02020130 + mov r0, #0x1f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #2 + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #5 + str r0, [r5, #0x20] + bl FUN_02020130 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE564: .word 0x0000043B + thumb_func_end MOD16_021DE3FC + + thumb_func_start MOD16_021DE568 +MOD16_021DE568: ; 0x021DE568 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + ldr r0, [r4, #4] + bl FUN_0201FFC8 + ldr r0, [r4, #8] + bl FUN_0201FFC8 + ldr r0, [r4, #0x18] + bl FUN_0201FFC8 + ldr r0, [r4, #0x1c] + bl FUN_0201FFC8 + ldr r0, [r4, #0x20] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DE568 + + thumb_func_start MOD16_021DE594 +MOD16_021DE594: ; 0x021DE594 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + add r7, r3, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021DE5AA + bl ErrorHandling +_021DE5AA: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021DE760 ; =0x000003EB + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + mov r1, #0 + bl FUN_02009E54 + mov r1, #0x27 + mvn r1, r1 + str r1, [sp, #0x28] + add r1, #0x1a + str r1, [sp, #0x2c] + mov r1, #0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + mov r1, #2 + str r0, [sp, #0x20] + str r1, [sp, #0x38] + str r7, [sp, #0x3c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xa + mov r2, #4 + bl MOD16_021DB388 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + ldr r2, _021DE764 ; =0x00000266 + mov r3, #7 + bl MOD16_021DB3C8 + ldr r0, [sp, #0x10] + str r0, [sp, #0x1c] + ldr r0, [r5] + str r0, [sp, #0x24] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0xc] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE638 + ldr r0, [r5, #0xc] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 +_021DE638: + ldr r0, [sp, #0x10] + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xa + mov r2, #4 + bl MOD16_021DB388 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #8] + ldr r2, _021DE764 ; =0x00000266 + mov r3, #5 + bl MOD16_021DB3C8 + ldr r0, [sp, #8] + str r0, [sp, #0x1c] + ldr r0, [r5, #4] + str r0, [sp, #0x24] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0x10] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [r6, #0x1c] + mov r1, #1 + ldr r0, [r0, #4] + bl MOD16_021D9CD0 + cmp r0, #0 + beq _021DE698 + ldr r0, [r6, #0x1c] + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021DE6A2 +_021DE698: + ldr r0, [r5, #0x10] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 +_021DE6A2: + ldr r0, [sp, #8] + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xa + mov r2, #4 + bl MOD16_021DB388 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0x14] + ldr r2, _021DE764 ; =0x00000266 + mov r3, #0x1d + bl MOD16_021DB3C8 + ldr r0, [sp, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r5, #8] + str r0, [sp, #0x24] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0x14] + ldr r0, [r0] + add r1, r7, #2 + bl FUN_02011A60 + ldr r0, [sp, #0x14] + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xe + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0xc] + ldr r0, [r6, #0x1c] + ldr r2, _021DE764 ; =0x00000266 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + bne _021DE722 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0xc] + mov r3, #0x6a + bl MOD16_021DB3C8 + b _021DE736 +_021DE722: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, [sp, #0xc] + mov r3, #0x6b + bl MOD16_021DB3C8 +_021DE736: + ldr r0, [sp, #0xc] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x20] + str r0, [sp, #0x24] + mov r0, #0xa + str r0, [sp, #0x28] + sub r0, #0x12 + str r0, [sp, #0x2c] + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r5, #0x24] + ldr r0, [r0] + add r1, r7, #1 + bl FUN_02011A60 + ldr r0, [sp, #0xc] + bl MOD16_021DB3BC + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DE760: .word 0x000003EB +_021DE764: .word 0x00000266 + thumb_func_end MOD16_021DE594 + + thumb_func_start MOD16_021DE768 +MOD16_021DE768: ; 0x021DE768 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl MOD16_021DB338 + ldr r0, [r4, #0x10] + bl MOD16_021DB338 + ldr r0, [r4, #0x14] + bl MOD16_021DB338 + ldr r0, [r4, #0x24] + bl MOD16_021DB338 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DE768 + + thumb_func_start MOD16_021DE788 +MOD16_021DE788: ; 0x021DE788 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + ldr r4, [r0] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r6, [sp, #0xc] + mov r1, #0x1b + add r2, r4, #0 + mov r3, #7 + bl MOD16_021D8CB4 + str r6, [sp] + ldr r0, [r5] + mov r1, #0x25 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #7 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #7 + bl FUN_0201AC68 + mov r2, #0 + add r3, r2, #0 + add r0, r4, #0 + mov r1, #7 + sub r3, #0x78 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #7 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DE788 + + thumb_func_start MOD16_021DE808 +MOD16_021DE808: ; 0x021DE808 + push {r4, lr} + ldr r0, [r0] + add r3, r1, #0 + ldr r4, [r0] + mov r0, #7 + mov r1, #0x40 + mov r2, #0 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #7 + bl FUN_02018744 + pop {r4, pc} + thumb_func_end MOD16_021DE808 + + thumb_func_start MOD16_021DE824 +MOD16_021DE824: ; 0x021DE824 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r2, [r4, #0x1c] + add r5, r0, #0 + ldr r3, [r2, #0xc] + ldr r1, [r2, #4] + cmp r3, #0 + bgt _021DE860 + ldr r3, [r5, #0x10] + cmp r3, #0 + beq _021DE85C + bl MOD16_021DEA84 + cmp r0, #0 + bne _021DE84C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DEAAC + b _021DE860 +_021DE84C: + mov r1, #0xa + ldr r0, [r4, #0x1c] + lsl r1, r1, #6 + str r1, [r0, #0xc] + ldr r0, _021DE89C ; =0x0000068B + bl FUN_020054C8 + b _021DE860 +_021DE85C: + mov r0, #0 + str r0, [r2, #8] +_021DE860: + ldr r0, [r5, #0x10] + cmp r0, #0 + bge _021DE86E + ldr r0, [r4, #0x1c] + mov r1, #1 + str r1, [r0, #8] + b _021DE876 +_021DE86E: + ble _021DE876 + ldr r0, [r4, #0x1c] + mov r1, #2 + str r1, [r0, #8] +_021DE876: + ldr r2, [r4, #0x1c] + ldr r0, [r2, #8] + cmp r0, #0 + beq _021DE898 + ldr r1, [r5, #0x10] + cmp r1, #0 + bge _021DE886 + neg r1, r1 +_021DE886: + ldr r0, [r2, #0xc] + sub r0, r0, r1 + str r0, [r2, #0xc] + ldr r1, [r4, #0x1c] + ldr r0, [r1, #0xc] + cmp r0, #0 + bge _021DE898 + mov r0, #0 + str r0, [r1, #0xc] +_021DE898: + pop {r3, r4, r5, pc} + nop +_021DE89C: .word 0x0000068B + thumb_func_end MOD16_021DE824 + + thumb_func_start MOD16_021DE8A0 +MOD16_021DE8A0: ; 0x021DE8A0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + str r0, [sp] + ldr r3, _021DE8CC ; =0x021C48F8 + ldr r0, [r4, #0x14] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + ldr r1, [r4, #0x18] + sub r0, #0xf8 + sub r1, #0x68 + sub r2, #0xf8 + sub r3, #0x68 + bl FUN_0201BBD0 + mov r1, #0xa + mul r1, r0 + str r1, [r4, #0xc] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021DE8CC: .word 0x021C48F8 + thumb_func_end MOD16_021DE8A0 + + thumb_func_start MOD16_021DE8D0 +MOD16_021DE8D0: ; 0x021DE8D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + lsl r0, r2, #0xc + add r4, r1, #0 + asr r6, r3, #0x1f + add r2, r3, #0 + asr r1, r0, #0x1f + add r3, r6, #0 + bl _ll_mul + mov r3, #2 + mov r6, #0 + lsl r3, r3, #0xa + add r3, r0, r3 + adc r1, r6 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + asr r0, r1, #0xc + ldrh r2, [r5, #0x28] + mov r1, #0xb6 + add r0, r2, r0 + strh r0, [r5, #0x28] + ldrh r0, [r5, #0x28] + strh r0, [r5, #0x28] + bl _s32_div_f + add r3, r0, #0 + ldr r0, [r4] + lsl r3, r3, #0x10 + ldr r0, [r0] + mov r1, #7 + add r2, r6, #0 + lsr r3, r3, #0x10 + bl FUN_0201AF08 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #9 + mov r3, #0x80 + bl FUN_0201AF50 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #0xc + mov r3, #0x68 + bl FUN_0201AF50 + ldrh r0, [r5, #0x28] + strh r0, [r5, #0x2a] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021DE8D0 + + thumb_func_start MOD16_021DE93C +MOD16_021DE93C: ; 0x021DE93C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + ldr r6, [r7, #0x1c] + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0xa + ldr r0, [r6, #0xc] + lsl r1, r1, #6 + sub r2, r1, r0 + ldr r0, _021DE9AC ; =0x000011C7 + mul r0, r2 + bl _s32_div_f + ldr r1, [r6, #8] + cmp r1, #1 + bne _021DE95E + neg r0, r0 +_021DE95E: + ldrh r1, [r5, #0x2a] + add r0, r1, r0 + strh r0, [r5, #0x28] + ldrh r0, [r5, #0x28] + mov r1, #0xb6 + strh r0, [r5, #0x28] + bl _s32_div_f + add r3, r0, #0 + ldr r0, [r4] + lsl r3, r3, #0x10 + ldr r0, [r0] + mov r1, #7 + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_0201AF08 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #9 + mov r3, #0x80 + bl FUN_0201AF50 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #0xc + mov r3, #0x68 + bl FUN_0201AF50 + ldr r0, [r7, #0x1c] + ldr r0, [r0, #0xc] + cmp r0, #0 + bne _021DE9A8 + ldrh r0, [r5, #0x28] + strh r0, [r5, #0x2a] +_021DE9A8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE9AC: .word 0x000011C7 + thumb_func_end MOD16_021DE93C + + thumb_func_start MOD16_021DE9B0 +MOD16_021DE9B0: ; 0x021DE9B0 + push {r3, r4} + ldr r3, [r0, #0xc] + cmp r3, #0 + ble _021DE9C8 + sub r3, r3, #2 + cmp r3, #4 + blt _021DE9C2 + str r3, [r0, #0xc] + b _021DE9D8 +_021DE9C2: + mov r3, #4 + str r3, [r0, #0xc] + b _021DE9D8 +_021DE9C8: + add r4, r3, #2 + mov r3, #3 + mvn r3, r3 + cmp r4, r3 + bgt _021DE9D6 + str r4, [r0, #0xc] + b _021DE9D8 +_021DE9D6: + str r3, [r0, #0xc] +_021DE9D8: + ldr r3, [r0, #0xc] + str r3, [r0, #0x10] + ldr r4, [r0, #0xc] + cmp r4, #0x21 + bgt _021DEA1A + mov r3, #0x20 + mvn r3, r3 + cmp r4, r3 + blt _021DEA1A + cmp r1, #0 + bne _021DEA08 + mov r3, #0 + str r3, [r0, #0x10] + ldr r2, [r0, #0xc] + cmp r2, #4 + bgt _021DEA1A + sub r1, r3, #4 + cmp r2, r1 + blt _021DEA1A + ldr r1, _021DEA20 ; =0x000004CD + str r3, [r0, #0xc] + str r1, [r0, #0x1c] + pop {r3, r4} + bx lr +_021DEA08: + cmp r2, #1 + bne _021DEA14 + str r3, [r0, #0x10] + str r3, [r0, #0xc] + pop {r3, r4} + bx lr +_021DEA14: + mov r1, #0x21 + str r1, [r0, #0x10] + str r1, [r0, #0xc] +_021DEA1A: + pop {r3, r4} + bx lr + nop +_021DEA20: .word 0x000004CD + thumb_func_end MOD16_021DE9B0 + + thumb_func_start MOD16_021DEA24 +MOD16_021DEA24: ; 0x021DEA24 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D7C70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DEA24 + + thumb_func_start MOD16_021DEA34 +MOD16_021DEA34: ; 0x021DEA34 + ldr r2, [r0, #0x1c] + ldr r1, [r2, #0x2c] + cmp r1, #0 + beq _021DEA42 + mov r1, #2 + str r1, [r0, #8] + bx lr +_021DEA42: + ldr r1, [r2, #0x34] + cmp r1, #0 + beq _021DEA4E + mov r1, #2 + str r1, [r0] + bx lr +_021DEA4E: + ldr r1, [r2, #0x30] + cmp r1, #0 + beq _021DEA58 + mov r1, #2 + str r1, [r0, #4] +_021DEA58: + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEA34 + + thumb_func_start MOD16_021DEA5C +MOD16_021DEA5C: ; 0x021DEA5C + push {r3, lr} + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _021DEA7E + bge _021DEA6A + mov r2, #1 + b _021DEA6E +_021DEA6A: + mov r2, #0 + mvn r2, r2 +_021DEA6E: + add r0, r1, #0 + add r1, r2, #0 + bl MOD16_021D9EA8 + cmp r0, #0 + bne _021DEA7E + mov r0, #0 + pop {r3, pc} +_021DEA7E: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DEA5C + + thumb_func_start MOD16_021DEA84 +MOD16_021DEA84: ; 0x021DEA84 + push {r3, lr} + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021DEAA6 + bge _021DEA92 + mov r2, #1 + b _021DEA96 +_021DEA92: + mov r2, #0 + mvn r2, r2 +_021DEA96: + add r0, r1, #0 + add r1, r2, #0 + bl MOD16_021D9E70 + cmp r0, #0 + bne _021DEAA6 + mov r0, #0 + pop {r3, pc} +_021DEAA6: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DEA84 + + thumb_func_start MOD16_021DEAAC +MOD16_021DEAAC: ; 0x021DEAAC + mov r2, #0 + str r2, [r0, #0x10] + str r2, [r0, #0xc] + ldr r0, [r1, #0x1c] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021DEAAC + + thumb_func_start MOD16_021DEAB8 +MOD16_021DEAB8: ; 0x021DEAB8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + add r5, r1, #0 + bl MOD16_021DC0E4 + cmp r0, #0 + beq _021DEAF8 + ldr r0, [r4, #0x1c] + add r1, r5, #0 + ldr r0, [r0, #4] + bl MOD16_021D9D28 + ldr r1, [r4, #0x20] + mov r2, #1 + ldr r0, [r1] + mov r3, #2 + orr r0, r2 + str r0, [r1] + ldr r1, [r4, #0x1c] + mov r0, #0 + str r0, [r1, #0xc] + ldr r1, [r4, #0x1c] + str r3, [r1, #0x20] + ldr r1, [r4, #0x1c] + str r2, [r1, #0x10] + ldr r1, [r4, #0x1c] + str r0, [r1, #0x14] + ldr r1, [r4, #0x1c] + str r0, [r1, #8] + ldr r1, [r4, #0x1c] + str r0, [r1, #0x1c] +_021DEAF8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEAB8 + + thumb_func_start MOD16_021DEAFC +MOD16_021DEAFC: ; 0x021DEAFC + cmp r1, #0 + bge _021DEB02 + neg r1, r1 +_021DEB02: + cmp r1, #0x40 + bge _021DEB14 + add r2, r0, #0 + ldr r1, _021DEB24 ; =0x000004CD + sub r2, #0x29 + cmp r2, r1 + blt _021DEB22 + sub r0, #0x29 + bx lr +_021DEB14: + ldr r1, _021DEB28 ; =0x00000333 + add r2, r0, r1 + mov r1, #1 + lsl r1, r1, #0xc + cmp r2, r1 + bgt _021DEB22 + add r0, r2, #0 +_021DEB22: + bx lr + .align 2, 0 +_021DEB24: .word 0x000004CD +_021DEB28: .word 0x00000333 + thumb_func_end MOD16_021DEAFC + + thumb_func_start MOD16_021DEB2C +MOD16_021DEB2C: ; 0x021DEB2C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DEC64 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DECA0 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DECC8 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DED44 + str r0, [r5, #0x24] + ldr r0, _021DEB74 ; =MOD16_021DED48 + str r0, [r5, #8] + ldr r0, _021DEB78 ; =MOD16_021DED80 + str r0, [r5, #0xc] + ldr r0, _021DEB7C ; =MOD16_021DEEA4 + str r0, [r5, #0x10] + ldr r0, _021DEB80 ; =MOD16_021DEEB8 + str r0, [r5, #0x14] + ldr r0, _021DEB84 ; =MOD16_021DEF34 + str r0, [r5, #0x18] + ldr r0, _021DEB88 ; =MOD16_021DEF70 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DEB74: .word MOD16_021DED48 +_021DEB78: .word MOD16_021DED80 +_021DEB7C: .word MOD16_021DEEA4 +_021DEB80: .word MOD16_021DEEB8 +_021DEB84: .word MOD16_021DEF34 +_021DEB88: .word MOD16_021DEF70 + thumb_func_end MOD16_021DEB2C + + thumb_func_start MOD16_021DEB8C +MOD16_021DEB8C: ; 0x021DEB8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DED04 + ldr r0, [r4, #4] + bl MOD16_021DED18 + ldr r0, [r4, #0x20] + bl MOD16_021DED2C + pop {r4, pc} + thumb_func_end MOD16_021DEB8C + + thumb_func_start MOD16_021DEBA4 +MOD16_021DEBA4: ; 0x021DEBA4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #4 + blt _021DEBB2 + bl ErrorHandling +_021DEBB2: + str r5, [r4, #0xc] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEBA4 + + thumb_func_start MOD16_021DEBB8 +MOD16_021DEBB8: ; 0x021DEBB8 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEBB8 + + thumb_func_start MOD16_021DEBC0 +MOD16_021DEBC0: ; 0x021DEBC0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #6 + blt _021DEBCE + bl ErrorHandling +_021DEBCE: + str r5, [r4, #0x10] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEBC0 + + thumb_func_start MOD16_021DEBD4 +MOD16_021DEBD4: ; 0x021DEBD4 + ldr r0, [r0] + ldr r0, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEBD4 + + thumb_func_start MOD16_021DEBDC +MOD16_021DEBDC: ; 0x021DEBDC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #0xa + blt _021DEBEA + bl ErrorHandling +_021DEBEA: + str r5, [r4, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEBDC + + thumb_func_start MOD16_021DEBF0 +MOD16_021DEBF0: ; 0x021DEBF0 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEBF0 + + thumb_func_start MOD16_021DEBF8 +MOD16_021DEBF8: ; 0x021DEBF8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + ldr r4, [r0] + cmp r5, #0x12 + blt _021DEC08 + bl ErrorHandling +_021DEC08: + cmp r6, #0 + bne _021DEC10 + str r5, [r4, #0x18] + pop {r4, r5, r6, pc} +_021DEC10: + str r5, [r4, #0x1c] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DEBF8 + + thumb_func_start MOD16_021DEC14 +MOD16_021DEC14: ; 0x021DEC14 + ldr r0, [r0] + cmp r1, #0 + bne _021DEC1E + ldr r0, [r0, #0x18] + bx lr +_021DEC1E: + ldr r0, [r0, #0x1c] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC14 + + thumb_func_start MOD16_021DEC24 +MOD16_021DEC24: ; 0x021DEC24 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #0xf + blt _021DEC32 + bl ErrorHandling +_021DEC32: + str r5, [r4, #0x20] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEC24 + + thumb_func_start MOD16_021DEC38 +MOD16_021DEC38: ; 0x021DEC38 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC38 + + thumb_func_start MOD16_021DEC40 +MOD16_021DEC40: ; 0x021DEC40 + ldr r2, [r0] + mov r0, #1 + str r0, [r2, #0x24] + str r1, [r2, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC40 + + thumb_func_start MOD16_021DEC4C +MOD16_021DEC4C: ; 0x021DEC4C + ldr r0, [r0] + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC4C + + thumb_func_start MOD16_021DEC54 +MOD16_021DEC54: ; 0x021DEC54 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC54 + + thumb_func_start MOD16_021DEC5C +MOD16_021DEC5C: ; 0x021DEC5C + ldr r0, [r0] + ldr r0, [r0, #0x34] + bx lr + .align 2, 0 + thumb_func_end MOD16_021DEC5C + + thumb_func_start MOD16_021DEC64 +MOD16_021DEC64: ; 0x021DEC64 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x38 + bl FUN_02016998 + add r4, r0, #0 + bne _021DEC76 + bl ErrorHandling +_021DEC76: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x38 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B5C + ldr r0, [r0] + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DEC64 + + thumb_func_start MOD16_021DECA0 +MOD16_021DECA0: ; 0x021DECA0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021DECB2 + bl ErrorHandling +_021DECB2: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DECA0 + + thumb_func_start MOD16_021DECC8 +MOD16_021DECC8: ; 0x021DECC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021DED44 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021DECE8 + bl ErrorHandling +_021DECE8: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DAE0C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DECC8 + + thumb_func_start MOD16_021DED04 +MOD16_021DED04: ; 0x021DED04 + push {r4, lr} + add r4, r0, #0 + bne _021DED0E + bl ErrorHandling +_021DED0E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DED04 + + thumb_func_start MOD16_021DED18 +MOD16_021DED18: ; 0x021DED18 + push {r4, lr} + add r4, r0, #0 + bne _021DED22 + bl ErrorHandling +_021DED22: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DED18 + + thumb_func_start MOD16_021DED2C +MOD16_021DED2C: ; 0x021DED2C + push {r4, lr} + add r4, r0, #0 + bne _021DED36 + bl ErrorHandling +_021DED36: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021DED2C + + thumb_func_start MOD16_021DED44 +MOD16_021DED44: ; 0x021DED44 + mov r0, #1 + bx lr + thumb_func_end MOD16_021DED44 + + thumb_func_start MOD16_021DED48 +MOD16_021DED48: ; 0x021DED48 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r6, r0, #0 + bne _021DED5E + bl ErrorHandling +_021DED5E: + mov r0, #0 + strb r0, [r6] + strb r0, [r6, #1] + strb r0, [r6, #2] + strb r0, [r6, #3] + str r6, [r5, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x30] + mov r0, #1 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DED48 + + thumb_func_start MOD16_021DED80 +MOD16_021DED80: ; 0x021DED80 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + cmp r0, #1 + bne _021DED94 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_021DED94: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021DEDA0 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, pc} +_021DEDA0: + ldr r0, [r5] + cmp r0, #4 + bhi _021DEE96 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DEDB2: ; jump table + .short _021DEDBC - _021DEDB2 - 2 ; case 0 + .short _021DEDF2 - _021DEDB2 - 2 ; case 1 + .short _021DEE10 - _021DEDB2 - 2 ; case 2 + .short _021DEE20 - _021DEDB2 - 2 ; case 3 + .short _021DEE84 - _021DEDB2 - 2 ; case 4 +_021DEDBC: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021DEDC6 + mov r0, #0 + str r0, [r4, #0x2c] +_021DEDC6: + ldr r0, [r4, #0x24] + cmp r0, #1 + bne _021DEE9A + ldr r0, [r4, #0x28] + cmp r0, #0 + bne _021DEDE2 + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + mov r0, #4 + str r0, [r4, #0x30] + b _021DEE9A +_021DEDE2: + mov r0, #1 + str r0, [r4, #0x30] + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DEE9A +_021DEDF2: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _021DEE9A + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #2 + str r0, [r4, #0x30] + mov r0, #0x20 + str r0, [r4, #0x34] + ldr r0, _021DEEA0 ; =0x000005FF + bl FUN_020054C8 + b _021DEE9A +_021DEE10: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _021DEE9A + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DEE9A +_021DEE20: + ldr r0, [r4, #4] + bl MOD16_021D9D04 + ldr r1, [r4, #0x1c] + str r1, [sp] + ldr r1, [r4, #0x20] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #4] + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r4, #4] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl MOD16_021D9A90 + cmp r0, #1 + bne _021DEE6A + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD16_021D9E3C + mov r0, #0x5d + ldr r1, [r4, #4] + mov r2, #1 + lsl r0, r0, #6 + str r2, [r1, r0] + ldr r0, [r4, #8] + str r2, [r0, #0x18] + b _021DEE9A +_021DEE6A: + mov r0, #0 + str r0, [r4, #0x28] + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #3 + str r0, [r4, #0x30] + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DEE9A +_021DEE84: + ldr r0, [r4, #0x34] + sub r0, r0, #1 + str r0, [r4, #0x34] + bpl _021DEE9A + mov r0, #0 + str r0, [r4, #0x30] + str r0, [r4, #0x34] + str r0, [r5] + b _021DEE9A +_021DEE96: + bl ErrorHandling +_021DEE9A: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021DEEA0: .word 0x000005FF + thumb_func_end MOD16_021DED80 + + thumb_func_start MOD16_021DEEA4 +MOD16_021DEEA4: ; 0x021DEEA4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DEEA4 + + thumb_func_start MOD16_021DEEB8 +MOD16_021DEEB8: ; 0x021DEEB8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + ldr r3, [r3, #8] + ldr r0, [r4, #8] + cmp r1, #3 + bhi _021DEF2E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DEED4: ; jump table + .short _021DEEDC - _021DEED4 - 2 ; case 0 + .short _021DEEF6 - _021DEED4 - 2 ; case 1 + .short _021DEF18 - _021DEED4 - 2 ; case 2 + .short _021DEF2A - _021DEED4 - 2 ; case 3 +_021DEEDC: + ldr r0, [r4, #4] + mov r1, #0x64 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x64 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEF2E +_021DEEF6: + ldr r1, [r4, #4] + str r1, [sp] + add r1, r5, #0 + bl MOD16_021DEFF8 + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEF2E +_021DEF18: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021DEF2E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEF2E +_021DEF2A: + mov r0, #1 + pop {r3, r4, r5, pc} +_021DEF2E: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DEEB8 + + thumb_func_start MOD16_021DEF34 +MOD16_021DEF34: ; 0x021DEF34 + push {r4, lr} + add r3, r1, #0 + ldr r1, [r2, #0x30] + add r4, r0, #0 + ldr r0, [r3, #8] + cmp r1, #0 + bne _021DEF4C + ldr r3, [r3, #4] + add r1, r4, #0 + bl MOD16_021DF450 + b _021DEF6A +_021DEF4C: + cmp r1, #1 + beq _021DEF54 + cmp r1, #3 + bne _021DEF5E +_021DEF54: + ldr r3, [r3, #4] + add r1, r4, #0 + bl MOD16_021DF89C + b _021DEF6A +_021DEF5E: + cmp r1, #4 + beq _021DEF6A + ldr r3, [r3, #4] + add r1, r4, #0 + bl MOD16_021DF90C +_021DEF6A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DEF34 + + thumb_func_start MOD16_021DEF70 +MOD16_021DEF70: ; 0x021DEF70 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021DEFF2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DEF8C: ; jump table + .short _021DEF96 - _021DEF8C - 2 ; case 0 + .short _021DEFBC - _021DEF8C - 2 ; case 1 + .short _021DEFCE - _021DEF8C - 2 ; case 2 + .short _021DEFDC - _021DEF8C - 2 ; case 3 + .short _021DEFEC - _021DEF8C - 2 ; case 4 +_021DEF96: + ldr r0, [r2, #0x28] + cmp r0, #0 + bne _021DEFB6 + mov r0, #1 + str r0, [sp] + mov r0, #6 + add r1, r0, #0 + sub r1, #0x16 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFB6: + mov r0, #2 + str r0, [r4] + b _021DEFF2 +_021DEFBC: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021DEFF2 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFCE: + add r1, r3, #0 + bl MOD16_021DF0BC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFDC: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DEFF2 +_021DEFEC: + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_021DEFF2: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DEF70 + + thumb_func_start MOD16_021DEFF8 +MOD16_021DEFF8: ; 0x021DEFF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0] + add r4, r2, #0 + ldr r6, [sp, #0x18] + bl FUN_02018744 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r5] + mov r1, #7 + add r0, r0, #4 + bl FUN_0201AB24 + add r0, r5, #0 + bl MOD16_021DF17C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DF108 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + str r0, [sp] + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DF140 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021DF198 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021DF288 + ldr r1, [r4, #0xc] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF350 + ldr r1, [r4, #0xc] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF514 + ldr r1, [r4, #0x10] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF5D0 + ldr r1, [r4, #0x14] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF630 + ldr r1, [r4, #0x18] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7B0 + ldr r1, [r4, #0x1c] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7BC + ldr r1, [r4, #0x20] + add r0, r7, #0 + bl MOD16_021DF7C8 + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DEFF8 + + thumb_func_start MOD16_021DF0BC +MOD16_021DF0BC: ; 0x021DF0BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021DF33C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DF244 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021DF168 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_0201AB24 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DF0BC + + thumb_func_start MOD16_021DF108 +MOD16_021DF108: ; 0x021DF108 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r4, r2, #0 + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x1c + mov r3, #3 + bl MOD16_021D8CB4 + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + mov r2, #0 + ldr r0, [r5] + mov r1, #5 + add r3, r2, #0 + bl MOD16_021D8CFC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DF108 + + thumb_func_start MOD16_021DF140 +MOD16_021DF140: ; 0x021DF140 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _021DF150 + mov r2, #0x2a + b _021DF152 +_021DF150: + mov r2, #0x28 +_021DF152: + str r3, [sp] + ldr r0, [r1] + add r3, r4, #0 + add r1, r2, #0 + mov r2, #1 + add r3, #0x60 + bl MOD16_021D8D48 + str r0, [r4, #0x5c] + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021DF140 + + thumb_func_start MOD16_021DF168 +MOD16_021DF168: ; 0x021DF168 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x5c] + str r0, [r4, #0x60] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DF168 + + thumb_func_start MOD16_021DF17C +MOD16_021DF17C: ; 0x021DF17C + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DF17C + + thumb_func_start MOD16_021DF198 +MOD16_021DF198: ; 0x021DF198 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021DF234 ; =0x00003AE9 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x51 + bl FUN_020091E0 + str r0, [r5, #0x24] + bl FUN_02009B04 + ldr r0, [r5, #0x24] + bl FUN_02009474 + ldr r0, _021DF238 ; =0x00003A9B + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xc + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x28] + bl FUN_02009D68 + ldr r0, [r5, #0x28] + bl FUN_02009474 + ldr r0, _021DF23C ; =0x00003AE7 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x4f + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x2c] + ldr r0, _021DF240 ; =0x00003AE8 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x50 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x30] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF234: .word 0x00003AE9 +_021DF238: .word 0x00003A9B +_021DF23C: .word 0x00003AE7 +_021DF240: .word 0x00003AE8 + thumb_func_end MOD16_021DF198 + + thumb_func_start MOD16_021DF244 +MOD16_021DF244: ; 0x021DF244 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x28] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x28] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DF244 + + thumb_func_start MOD16_021DF288 +MOD16_021DF288: ; 0x021DF288 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r6, r3, #0 + ldr r4, [r1] + ldr r3, _021DF338 ; =0x00003AE8 + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x4d + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + lsl r0, r0, #0x13 + str r0, [sp, #0x34] + mov r0, #0x29 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + mov r1, #3 + str r0, [r5, #0x20] + bl FUN_02020130 + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #0x34] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #0x58] + mov r1, #0x11 + bl FUN_02020130 + ldr r0, [r5, #0x58] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, #0x58] + mov r1, #1 + bl FUN_020200EC + ldr r0, [r5, #0x58] + mov r1, #0 + bl FUN_02020238 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF338: .word 0x00003AE8 + thumb_func_end MOD16_021DF288 + + thumb_func_start MOD16_021DF33C +MOD16_021DF33C: ; 0x021DF33C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_0201FFC8 + ldr r0, [r4, #0x58] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DF33C + + thumb_func_start MOD16_021DF350 +MOD16_021DF350: ; 0x021DF350 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [r0] + mov r0, #0xd0 + str r0, [sp] + mov r0, #0x20 + add r6, r1, #0 + add r7, r2, #0 + str r0, [sp, #4] + add r0, r5, #4 + mov r1, #0 + mov r2, #0x18 + mov r3, #8 + bl FUN_020196F4 + cmp r6, #3 + bhi _021DF394 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF37E: ; jump table + .short _021DF386 - _021DF37E - 2 ; case 0 + .short _021DF38A - _021DF37E - 2 ; case 1 + .short _021DF38E - _021DF37E - 2 ; case 2 + .short _021DF392 - _021DF37E - 2 ; case 3 +_021DF386: + mov r4, #0x5a + b _021DF394 +_021DF38A: + mov r4, #0x57 + b _021DF394 +_021DF38E: + mov r4, #0x58 + b _021DF394 +_021DF392: + mov r4, #0x59 +_021DF394: + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021D8270 + add r6, r0, #0 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #0xd0 + sub r0, r1, r0 + lsr r4, r0, #1 + add r0, r6, #0 + add r4, #0x18 + bl FUN_02002F90 + lsl r1, r0, #4 + mov r0, #0x20 + sub r0, r0, r1 + lsr r0, r0, #1 + add r0, #8 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF3E0 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r6, #0 + add r3, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DF3E0: .word 0x00020100 + thumb_func_end MOD16_021DF350 + + thumb_func_start MOD16_021DF3E4 +MOD16_021DF3E4: ; 0x021DF3E4 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [r0] + mov r0, #0xd0 + str r0, [sp] + mov r0, #0x20 + add r5, r1, #0 + str r0, [sp, #4] + add r0, r4, #4 + mov r1, #0 + mov r2, #0x18 + mov r3, #8 + bl FUN_020196F4 + mov r0, #0x5d + add r1, r5, #0 + bl MOD16_021D8270 + add r6, r0, #0 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #0xd0 + sub r0, r1, r0 + lsr r5, r0, #1 + add r0, r6, #0 + add r5, #0x18 + bl FUN_02002F90 + lsl r1, r0, #4 + mov r0, #0x20 + sub r0, r0, r1 + lsr r0, r0, #1 + add r0, #8 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF44C ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #4 + add r2, r6, #0 + add r3, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_021DF44C: .word 0x00020100 + thumb_func_end MOD16_021DF3E4 + + thumb_func_start MOD16_021DF450 +MOD16_021DF450: ; 0x021DF450 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r1, #0 + ldr r1, [r4, #0x2c] + ldr r0, [r5, #0x18] + add r7, r3, #0 + cmp r1, r0 + beq _021DF474 + str r1, [r5, #0x18] + cmp r1, #1 + bne _021DF474 + mov r0, #0x40 + str r0, [r5, #0x1c] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021DF3E4 +_021DF474: + ldr r0, [r5, #0x1c] + cmp r0, #0 + ble _021DF480 + sub r0, r0, #1 + str r0, [r5, #0x1c] + b _021DF492 +_021DF480: + bne _021DF492 + ldr r1, [r4, #0xc] + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF350 + ldr r0, [r5, #0x1c] + sub r0, r0, #1 + str r0, [r5, #0x1c] +_021DF492: + ldr r1, [r4, #0xc] + ldr r0, [r5] + cmp r0, r1 + beq _021DF4B0 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF514 + ldr r1, [r4, #0xc] + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF350 + ldr r0, [r4, #0xc] + str r0, [r5] +_021DF4B0: + ldr r1, [r4, #0x10] + ldr r0, [r5, #4] + cmp r0, r1 + beq _021DF4C4 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF5D0 + ldr r0, [r4, #0x10] + str r0, [r5, #4] +_021DF4C4: + ldr r1, [r4, #0x14] + ldr r0, [r5, #8] + cmp r0, r1 + beq _021DF4D8 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF630 + ldr r0, [r4, #0x14] + str r0, [r5, #8] +_021DF4D8: + ldr r1, [r4, #0x18] + ldr r0, [r5, #0xc] + cmp r0, r1 + beq _021DF4EC + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF7B0 + ldr r0, [r4, #0x18] + str r0, [r5, #0xc] +_021DF4EC: + ldr r1, [r4, #0x1c] + ldr r0, [r5, #0x10] + cmp r0, r1 + beq _021DF500 + add r0, r6, #0 + add r2, r7, #0 + bl MOD16_021DF7BC + ldr r0, [r4, #0x1c] + str r0, [r5, #0x10] +_021DF500: + ldr r1, [r4, #0x20] + ldr r0, [r5, #0x14] + cmp r0, r1 + beq _021DF512 + add r0, r5, #0 + bl MOD16_021DF7C8 + ldr r0, [r4, #0x20] + str r0, [r5, #0x14] +_021DF512: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DF450 + + thumb_func_start MOD16_021DF514 +MOD16_021DF514: ; 0x021DF514 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + str r2, [sp] + add r7, r1, #0 + str r2, [sp, #0xc] + ldr r0, [r4] + mov r1, #0x2b + mov r2, #1 + add r3, sp, #0x14 + bl MOD16_021D8D48 + ldr r2, [sp, #0x14] + mov r3, #0 + str r3, [sp] + str r0, [sp, #0x10] + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + cmp r7, #3 + bhi _021DF584 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF566: ; jump table + .short _021DF56E - _021DF566 - 2 ; case 0 + .short _021DF574 - _021DF566 - 2 ; case 1 + .short _021DF57A - _021DF566 - 2 ; case 2 + .short _021DF580 - _021DF566 - 2 ; case 3 +_021DF56E: + mov r5, #6 + mov r6, #0x2c + b _021DF584 +_021DF574: + mov r5, #9 + mov r6, #0x2d + b _021DF584 +_021DF57A: + mov r5, #0xc + mov r6, #0x2e + b _021DF584 +_021DF580: + mov r5, #0x11 + mov r6, #0x2f +_021DF584: + ldr r0, [sp, #0xc] + add r1, r6, #0 + str r0, [sp] + ldr r0, [r4] + mov r2, #1 + add r3, sp, #0x14 + bl MOD16_021D8D48 + add r6, r0, #0 + lsl r0, r5, #0x18 + ldr r2, [sp, #0x14] + lsr r0, r0, #0x18 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DF514 + + thumb_func_start MOD16_021DF5D0 +MOD16_021DF5D0: ; 0x021DF5D0 + push {r4, r5, r6, lr} + sub sp, #0x10 + ldr r4, [r0] + mov r0, #0x50 + str r0, [sp] + mov r0, #0x10 + add r5, r1, #0 + add r6, r2, #0 + str r0, [sp, #4] + add r0, r4, #4 + mov r1, #0 + mov r2, #0x58 + mov r3, #0x34 + bl FUN_020196F4 + add r5, #0x51 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021D8270 + add r5, r0, #0 + mov r0, #0 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0x50 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x34 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF62C ; =0x00040300 + str r1, [sp, #4] + str r0, [sp, #8] + add r3, #0x58 + add r0, r4, #4 + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021DF62C: .word 0x00040300 + thumb_func_end MOD16_021DF5D0 + + thumb_func_start MOD16_021DF630 +MOD16_021DF630: ; 0x021DF630 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [r0] + mov r0, #0x50 + str r0, [sp] + mov r0, #0x10 + add r6, r1, #0 + add r7, r2, #0 + str r0, [sp, #4] + add r0, r5, #4 + mov r1, #0 + mov r2, #0x58 + mov r3, #0x4d + bl FUN_020196F4 + cmp r6, #9 + bhi _021DF698 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF65E: ; jump table + .short _021DF672 - _021DF65E - 2 ; case 0 + .short _021DF676 - _021DF65E - 2 ; case 1 + .short _021DF67A - _021DF65E - 2 ; case 2 + .short _021DF67E - _021DF65E - 2 ; case 3 + .short _021DF682 - _021DF65E - 2 ; case 4 + .short _021DF686 - _021DF65E - 2 ; case 5 + .short _021DF68A - _021DF65E - 2 ; case 6 + .short _021DF68E - _021DF65E - 2 ; case 7 + .short _021DF692 - _021DF65E - 2 ; case 8 + .short _021DF696 - _021DF65E - 2 ; case 9 +_021DF672: + mov r4, #0x73 + b _021DF698 +_021DF676: + mov r4, #0x36 + b _021DF698 +_021DF67A: + mov r4, #0x37 + b _021DF698 +_021DF67E: + mov r4, #0x38 + b _021DF698 +_021DF682: + mov r4, #0x39 + b _021DF698 +_021DF686: + mov r4, #0x3a + b _021DF698 +_021DF68A: + mov r4, #0x3b + b _021DF698 +_021DF68E: + mov r4, #0x3c + b _021DF698 +_021DF692: + mov r4, #0x3d + b _021DF698 +_021DF696: + mov r4, #0x3e +_021DF698: + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021D8270 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + mov r3, #0x50 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x4d + str r0, [sp] + mov r1, #0 + ldr r0, _021DF6D4 ; =0x00040300 + str r1, [sp, #4] + str r0, [sp, #8] + add r3, #0x58 + add r0, r5, #4 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF6D4: .word 0x00040300 + thumb_func_end MOD16_021DF630 + + thumb_func_start MOD16_021DF6D8 +MOD16_021DF6D8: ; 0x021DF6D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r5, [r0] + add r7, r3, #0 + mov r0, #0x50 + str r0, [sp] + mov r0, #0x10 + lsl r3, r7, #0x10 + add r6, r1, #0 + str r2, [sp, #0x10] + str r0, [sp, #4] + add r0, r5, #4 + mov r1, #0 + mov r2, #0x58 + lsr r3, r3, #0x10 + bl FUN_020196F4 + cmp r6, #0x11 + bhi _021DF774 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF70A: ; jump table + .short _021DF72E - _021DF70A - 2 ; case 0 + .short _021DF732 - _021DF70A - 2 ; case 1 + .short _021DF736 - _021DF70A - 2 ; case 2 + .short _021DF73A - _021DF70A - 2 ; case 3 + .short _021DF73E - _021DF70A - 2 ; case 4 + .short _021DF742 - _021DF70A - 2 ; case 5 + .short _021DF746 - _021DF70A - 2 ; case 6 + .short _021DF74A - _021DF70A - 2 ; case 7 + .short _021DF74E - _021DF70A - 2 ; case 8 + .short _021DF752 - _021DF70A - 2 ; case 9 + .short _021DF756 - _021DF70A - 2 ; case 10 + .short _021DF75A - _021DF70A - 2 ; case 11 + .short _021DF75E - _021DF70A - 2 ; case 12 + .short _021DF762 - _021DF70A - 2 ; case 13 + .short _021DF766 - _021DF70A - 2 ; case 14 + .short _021DF76A - _021DF70A - 2 ; case 15 + .short _021DF76E - _021DF70A - 2 ; case 16 + .short _021DF772 - _021DF70A - 2 ; case 17 +_021DF72E: + mov r4, #0x74 + b _021DF774 +_021DF732: + mov r4, #0x40 + b _021DF774 +_021DF736: + mov r4, #0x46 + b _021DF774 +_021DF73A: + mov r4, #0x49 + b _021DF774 +_021DF73E: + mov r4, #0x47 + b _021DF774 +_021DF742: + mov r4, #0x48 + b _021DF774 +_021DF746: + mov r4, #0x4c + b _021DF774 +_021DF74A: + mov r4, #0x4b + b _021DF774 +_021DF74E: + mov r4, #0x4d + b _021DF774 +_021DF752: + mov r4, #0x50 + b _021DF774 +_021DF756: + mov r4, #0x41 + b _021DF774 +_021DF75A: + mov r4, #0x42 + b _021DF774 +_021DF75E: + mov r4, #0x44 + b _021DF774 +_021DF762: + mov r4, #0x43 + b _021DF774 +_021DF766: + mov r4, #0x4a + b _021DF774 +_021DF76A: + mov r4, #0x45 + b _021DF774 +_021DF76E: + mov r4, #0x4e + b _021DF774 +_021DF772: + mov r4, #0x4f +_021DF774: + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl MOD16_021D8270 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + mov r3, #0x50 + bl FUN_02002F40 + add r3, r0, #0 + str r7, [sp] + mov r1, #0 + ldr r0, _021DF7AC ; =0x00040300 + str r1, [sp, #4] + str r0, [sp, #8] + add r3, #0x58 + add r0, r5, #4 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DF7AC: .word 0x00040300 + thumb_func_end MOD16_021DF6D8 + + thumb_func_start MOD16_021DF7B0 +MOD16_021DF7B0: ; 0x021DF7B0 + push {r3, lr} + mov r3, #0x66 + bl MOD16_021DF6D8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DF7B0 + + thumb_func_start MOD16_021DF7BC +MOD16_021DF7BC: ; 0x021DF7BC + push {r3, lr} + mov r3, #0x78 + bl MOD16_021DF6D8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021DF7BC + + thumb_func_start MOD16_021DF7C8 +MOD16_021DF7C8: ; 0x021DF7C8 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + ldr r0, [r4, #0x20] + bne _021DF7DA + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_021DF7DA: + mov r1, #1 + bl FUN_020200A0 + cmp r5, #0xe + bhi _021DF898 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DF7F0: ; jump table + .short _021DF898 - _021DF7F0 - 2 ; case 0 + .short _021DF80E - _021DF7F0 - 2 ; case 1 + .short _021DF818 - _021DF7F0 - 2 ; case 2 + .short _021DF822 - _021DF7F0 - 2 ; case 3 + .short _021DF82C - _021DF7F0 - 2 ; case 4 + .short _021DF836 - _021DF7F0 - 2 ; case 5 + .short _021DF840 - _021DF7F0 - 2 ; case 6 + .short _021DF84A - _021DF7F0 - 2 ; case 7 + .short _021DF854 - _021DF7F0 - 2 ; case 8 + .short _021DF85E - _021DF7F0 - 2 ; case 9 + .short _021DF868 - _021DF7F0 - 2 ; case 10 + .short _021DF872 - _021DF7F0 - 2 ; case 11 + .short _021DF87C - _021DF7F0 - 2 ; case 12 + .short _021DF886 - _021DF7F0 - 2 ; case 13 + .short _021DF890 - _021DF7F0 - 2 ; case 14 +_021DF80E: + ldr r0, [r4, #0x20] + mov r1, #3 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF818: + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF822: + ldr r0, [r4, #0x20] + mov r1, #5 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF82C: + ldr r0, [r4, #0x20] + mov r1, #6 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF836: + ldr r0, [r4, #0x20] + mov r1, #7 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF840: + ldr r0, [r4, #0x20] + mov r1, #8 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF84A: + ldr r0, [r4, #0x20] + mov r1, #9 + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF854: + ldr r0, [r4, #0x20] + mov r1, #0xa + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF85E: + ldr r0, [r4, #0x20] + mov r1, #0xb + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF868: + ldr r0, [r4, #0x20] + mov r1, #0xc + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF872: + ldr r0, [r4, #0x20] + mov r1, #0xd + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF87C: + ldr r0, [r4, #0x20] + mov r1, #0xe + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF886: + ldr r0, [r4, #0x20] + mov r1, #0xf + bl FUN_02020130 + pop {r3, r4, r5, pc} +_021DF890: + ldr r0, [r4, #0x20] + mov r1, #0x10 + bl FUN_02020130 +_021DF898: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DF7C8 + + thumb_func_start MOD16_021DF89C +MOD16_021DF89C: ; 0x021DF89C + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r2, #0x34] + add r4, r1, #0 + cmp r0, #4 + bne _021DF900 + ldr r0, [r2, #0x30] + cmp r0, #1 + bne _021DF8D4 + mov r1, #0 + str r1, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + ldr r1, [r4] + add r0, r5, #0 + ldr r1, [r1] + ldr r3, [r5, #0x60] + add r0, #0x34 + mov r2, #2 + bl MOD16_021D7CA4 + b _021DF900 +_021DF8D4: + add r0, r4, #0 + add r1, r5, #0 + add r2, r3, #0 + bl MOD16_021DF9C0 + mov r0, #0xc + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + ldr r1, [r4] + add r0, r5, #0 + ldr r1, [r1] + ldr r3, [r5, #0x60] + add r0, #0x34 + mov r2, #2 + bl MOD16_021D7CA4 +_021DF900: + add r5, #0x34 + add r0, r5, #0 + bl MOD16_021D7CC8 + add sp, #0x14 + pop {r4, r5, pc} + thumb_func_end MOD16_021DF89C + + thumb_func_start MOD16_021DF90C +MOD16_021DF90C: ; 0x021DF90C + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #0x34] + add r4, r1, #0 + add r7, r3, #0 + cmp r0, #0x20 + bne _021DF92E + ldr r0, [r5, #0x58] + mov r1, #1 + bl FUN_020200A0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021DF970 + b _021DF94C +_021DF92E: + cmp r0, #0 + bne _021DF94C + ldr r0, [r5, #0x58] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_02019220 +_021DF94C: + ldr r2, [r6, #0x34] + mov r1, #4 + sub r2, r1, r2 + ldr r1, _021DF96C ; =0x00007FFF + add r3, r2, #0 + mul r3, r1 + asr r1, r3, #1 + lsr r1, r1, #0x1e + add r1, r3, r1 + lsl r1, r1, #0xe + ldr r0, [r5, #0x58] + lsr r1, r1, #0x10 + bl FUN_02020088 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DF96C: .word 0x00007FFF + thumb_func_end MOD16_021DF90C + + thumb_func_start MOD16_021DF970 +MOD16_021DF970: ; 0x021DF970 + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r5, [r0] + add r4, r1, #0 + add r0, r5, #4 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x5e + add r1, r4, #0 + bl MOD16_021D8270 + add r4, r0, #0 + mov r0, #0x80 + str r0, [sp] + mov r1, #0 + ldr r0, _021DF9BC ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #4 + add r2, r4, #0 + mov r3, #0x60 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DF9BC: .word 0x00020100 + thumb_func_end MOD16_021DF970 + + thumb_func_start MOD16_021DF9C0 +MOD16_021DF9C0: ; 0x021DF9C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r1, #0 + add r1, r0, #0 + add r6, r2, #0 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + ldr r0, [r5] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r1, [r4] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF514 + ldr r1, [r4] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF350 + ldr r1, [r4, #4] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF5D0 + ldr r1, [r4, #8] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF630 + ldr r1, [r4, #0xc] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7B0 + ldr r1, [r4, #0x10] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021DF7BC + ldr r1, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DF7C8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DF9C0 + + thumb_func_start MOD16_021DFA28 +MOD16_021DFA28: ; 0x021DFA28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021DFAA0 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DFAE8 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021DFB20 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021DFB50 + str r0, [r5, #0x24] + ldr r0, _021DFA70 ; =MOD16_021DFB54 + str r0, [r5, #8] + ldr r0, _021DFA74 ; =MOD16_021DFBB8 + str r0, [r5, #0xc] + ldr r0, _021DFA78 ; =MOD16_021DFCEC + str r0, [r5, #0x10] + ldr r0, _021DFA7C ; =MOD16_021DFD0C + str r0, [r5, #0x14] + ldr r0, _021DFA80 ; =MOD16_021DFD9C + str r0, [r5, #0x18] + ldr r0, _021DFA84 ; =MOD16_021DFECC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DFA70: .word MOD16_021DFB54 +_021DFA74: .word MOD16_021DFBB8 +_021DFA78: .word MOD16_021DFCEC +_021DFA7C: .word MOD16_021DFD0C +_021DFA80: .word MOD16_021DFD9C +_021DFA84: .word MOD16_021DFECC + thumb_func_end MOD16_021DFA28 + + thumb_func_start MOD16_021DFA88 +MOD16_021DFA88: ; 0x021DFA88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021DFB24 + ldr r0, [r4, #4] + bl MOD16_021DFB38 + ldr r0, [r4, #0x20] + bl MOD16_021DFB4C + pop {r4, pc} + thumb_func_end MOD16_021DFA88 + + thumb_func_start MOD16_021DFAA0 +MOD16_021DFAA0: ; 0x021DFAA0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021DFAB2 + bl ErrorHandling +_021DFAB2: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021DFAB8: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DFAB8 + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021D7B7C + str r0, [r4, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFAA0 + + thumb_func_start MOD16_021DFAE8 +MOD16_021DFAE8: ; 0x021DFAE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021DFAFA + bl ErrorHandling +_021DFAFA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFAE8 + + thumb_func_start MOD16_021DFB20 +MOD16_021DFB20: ; 0x021DFB20 + mov r0, #0 + bx lr + thumb_func_end MOD16_021DFB20 + + thumb_func_start MOD16_021DFB24 +MOD16_021DFB24: ; 0x021DFB24 + push {r4, lr} + add r4, r0, #0 + bne _021DFB2E + bl ErrorHandling +_021DFB2E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DFB24 + + thumb_func_start MOD16_021DFB38 +MOD16_021DFB38: ; 0x021DFB38 + push {r4, lr} + add r4, r0, #0 + bne _021DFB42 + bl ErrorHandling +_021DFB42: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021DFB38 + + thumb_func_start MOD16_021DFB4C +MOD16_021DFB4C: ; 0x021DFB4C + bx lr + .align 2, 0 + thumb_func_end MOD16_021DFB4C + + thumb_func_start MOD16_021DFB50 +MOD16_021DFB50: ; 0x021DFB50 + mov r0, #0 + bx lr + thumb_func_end MOD16_021DFB50 + + thumb_func_start MOD16_021DFB54 +MOD16_021DFB54: ; 0x021DFB54 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x9c + bl FUN_02016998 + add r4, r0, #0 + bne _021DFB6A + bl ErrorHandling +_021DFB6A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x9c + bl Call_FillMemWithValue + add r0, r4, #0 + ldr r1, _021DFBB4 ; =0x0000FFFF + str r4, [r5, #8] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E2864 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E0048 + ldr r1, [r5, #4] + add r0, r4, #0 + bl MOD16_021E18E8 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E1930 + mov r1, #0 + mov r0, #4 +_021DFBA4: + add r1, r1, #1 + str r0, [r4, #0x2c] + add r4, r4, #4 + cmp r1, #6 + blt _021DFBA4 + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021DFBB4: .word 0x0000FFFF + thumb_func_end MOD16_021DFB54 + + thumb_func_start MOD16_021DFBB8 +MOD16_021DFBB8: ; 0x021DFBB8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #0xc] + ldr r4, [r5, #8] + ldr r7, [r0, #4] + ldr r0, [r5, #0xc] + cmp r0, #1 + bne _021DFBD2 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DFBD2: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021DFBDE + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DFBDE: + ldr r0, [r6, #8] + bl MOD16_021DEC54 + cmp r0, #0 + beq _021DFBEE + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DFBEE: + ldr r0, [r6, #8] + bl MOD16_021DEBB8 + str r0, [sp, #4] + ldr r0, [r5] + cmp r0, #4 + bhi _021DFCE4 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DFC08: ; jump table + .short _021DFC12 - _021DFC08 - 2 ; case 0 + .short _021DFC6E - _021DFC08 - 2 ; case 1 + .short _021DFC7C - _021DFC08 - 2 ; case 2 + .short _021DFCD2 - _021DFC08 - 2 ; case 3 + .short _021DFCE0 - _021DFC08 - 2 ; case 4 +_021DFC12: + ldr r1, [r4, #0x24] + ldr r0, [sp, #4] + cmp r1, r0 + bne _021DFC22 + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x20] + cmp r1, r0 + beq _021DFC4A +_021DFC22: + add r0, r4, #0 + mov r1, #0 + add r0, #0x98 + str r1, [r0] + mov r0, #2 + str r0, [r7, #4] + add r0, r4, #0 + add r0, #0x98 + str r0, [r7, #8] + add r0, r4, #0 + bl MOD16_021E0214 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD16_021E0224 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFC4A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E0104 + ldr r0, [r6, #4] + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021DFC64 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E1804 +_021DFC64: + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E2870 + b _021DFCE4 +_021DFC6E: + add r4, #0x98 + ldr r1, [r4] + cmp r1, #0 + beq _021DFCE4 + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFC7C: + ldr r0, [r4, #0x24] + add r1, r6, #0 + str r0, [sp] + ldr r0, [sp, #4] + str r0, [r4, #0x24] + ldr r0, [r4, #0x20] + str r0, [r4, #0x28] + ldr r2, [r5, #4] + add r0, r4, #0 + bl MOD16_021E00A0 + ldr r1, [r5, #4] + add r0, r4, #0 + bl MOD16_021E1970 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E2864 + ldr r1, [r4, #0x24] + ldr r0, [sp] + cmp r0, r1 + beq _021DFCB2 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E1930 +_021DFCB2: + add r0, r4, #0 + mov r1, #0 + add r0, #0x98 + str r1, [r0] + mov r0, #1 + str r0, [r7, #4] + add r0, r4, #0 + add r0, #0x98 + str r0, [r7, #8] + add r0, r4, #0 + bl MOD16_021E02C4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFCD2: + add r4, #0x98 + ldr r1, [r4] + cmp r1, #0 + beq _021DFCE4 + add r0, r0, #1 + str r0, [r5] + b _021DFCE4 +_021DFCE0: + mov r0, #0 + str r0, [r5] +_021DFCE4: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DFBB8 + + thumb_func_start MOD16_021DFCEC +MOD16_021DFCEC: ; 0x021DFCEC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #8] + add r0, r5, #0 + bl MOD16_021E0090 + add r0, r5, #0 + bl MOD16_021E18D0 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFCEC + + thumb_func_start MOD16_021DFD0C +MOD16_021DFD0C: ; 0x021DFD0C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4] + add r6, r0, #0 + add r7, r2, #0 + ldr r5, [r3, #8] + ldr r0, [r4, #8] + cmp r1, #3 + bhi _021DFD96 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DFD2A: ; jump table + .short _021DFD32 - _021DFD2A - 2 ; case 0 + .short _021DFD50 - _021DFD2A - 2 ; case 1 + .short _021DFD80 - _021DFD2A - 2 ; case 2 + .short _021DFD92 - _021DFD2A - 2 ; case 3 +_021DFD32: + mov r1, #0x4e + ldr r0, [r4, #4] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x4e + str r0, [r4, #8] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFD96 +_021DFD50: + ldr r1, [r4, #4] + add r3, r5, #0 + str r1, [sp] + add r1, r6, #0 + bl MOD16_021DFF74 + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021E1988 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFD96 +_021DFD80: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DFD96 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFD96 +_021DFD92: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DFD96: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021DFD0C + + thumb_func_start MOD16_021DFD9C +MOD16_021DFD9C: ; 0x021DFD9C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r0, r2, #0 + add r5, r1, #0 + ldr r0, [r0, #8] + str r2, [sp, #4] + ldr r6, [r3, #8] + ldr r4, [r5, #8] + bl MOD16_021DEC54 + cmp r0, #0 + beq _021DFDC2 + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E2E74 + b _021DFE4C +_021DFDC2: + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E2CC8 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r2, [r6, #0x24] + ldr r3, [r4, r0] + cmp r3, r2 + bne _021DFDE0 + add r0, r0, #4 + ldr r1, [r4, r0] + ldr r0, [r6, #0x28] + cmp r1, r0 + beq _021DFE42 +_021DFDE0: + mov r0, #0x41 + lsl r0, r0, #2 + str r2, [r4, r0] + ldr r1, [r6, #0x28] + add r0, r0, #4 + str r1, [r4, r0] + cmp r3, #3 + bne _021DFDFE + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E1BD0 + add r0, r4, #0 + bl MOD16_021E22A8 +_021DFDFE: + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E1CA4 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E2344 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #3 + bne _021DFE30 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E1B3C + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E20EC +_021DFE30: + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r4, r3] + add r3, r3, #4 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #1 + bl MOD16_021E2DBC +_021DFE42: + ldr r2, [sp, #4] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E19A4 +_021DFE4C: + mov r7, #0 + str r6, [sp, #8] + add r5, r4, #0 +_021DFE52: + ldr r1, [sp, #8] + ldr r0, [r5] + ldr r1, [r1, #0x2c] + bl MOD16_021D7B98 + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _021DFE7A + cmp r7, #5 + bne _021DFE6A + mov r3, #1 + b _021DFE6C +_021DFE6A: + mov r3, #3 +_021DFE6C: + mov r0, #5 + str r0, [sp] + mov r2, #5 + ldr r0, [r5] + mvn r2, r2 + bl MOD16_021D7C70 +_021DFE7A: + ldr r0, [sp, #8] + add r7, r7, #1 + add r0, r0, #4 + add r5, r5, #4 + str r0, [sp, #8] + cmp r7, #6 + blt _021DFE52 + mov r5, #0 + mov r7, #6 +_021DFE8C: + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _021DFE98 + ldr r1, [r6, #0x44] + bl MOD16_021D7B98 +_021DFE98: + ldr r1, [r4, #0x6c] + cmp r1, #0 + beq _021DFEAC + str r7, [sp] + mov r2, #5 + ldr r0, [r4, #0x30] + mvn r2, r2 + mov r3, #0xb + bl MOD16_021D7C70 +_021DFEAC: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021DFEBC + ldr r1, [r6, #0x44] + bl MOD16_021D7B98 +_021DFEBC: + add r5, r5, #1 + add r4, r4, #4 + add r6, r6, #4 + cmp r5, #0xf + blt _021DFE8C + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021DFD9C + + thumb_func_start MOD16_021DFECC +MOD16_021DFECC: ; 0x021DFECC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021DFF6E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DFEE8: ; jump table + .short _021DFEF2 - _021DFEE8 - 2 ; case 0 + .short _021DFF1C - _021DFEE8 - 2 ; case 1 + .short _021DFF2E - _021DFEE8 - 2 ; case 2 + .short _021DFF56 - _021DFEE8 - 2 ; case 3 + .short _021DFF68 - _021DFEE8 - 2 ; case 4 +_021DFEF2: + ldr r0, [r2, #8] + bl MOD16_021DEC4C + cmp r0, #1 + bne _021DFF02 + mov r0, #2 + str r0, [r4] + b _021DFF6E +_021DFF02: + mov r0, #2 + str r0, [sp] + mov r0, #6 + add r1, r0, #0 + sub r1, #0x16 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF1C: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021DFF6E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF2E: + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021DFFB8 + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #3 + bne _021DFF4E + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E1BD0 + add r0, r5, #0 + bl MOD16_021E22A8 +_021DFF4E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF56: + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DFF6E +_021DFF68: + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021DFF6E: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021DFECC + + thumb_func_start MOD16_021DFF74 +MOD16_021DFF74: ; 0x021DFF74 + push {r4, r5, r6, lr} + ldr r4, [sp, #0x10] + add r6, r1, #0 + add r5, r0, #0 + add r1, r2, #0 + add r0, r6, #0 + add r2, r4, #0 + bl MOD16_021DFFE0 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E1A14 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E1C10 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E22D0 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r3, [r5, r3] + add r0, r5, #0 + mov r1, #1 + bl MOD16_021E2DBC + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021DFF74 + + thumb_func_start MOD16_021DFFB8 +MOD16_021DFFB8: ; 0x021DFFB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E2334 + add r0, r5, #0 + bl MOD16_021E1C94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E1AE4 + mov r0, #0x79 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B14 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021DFFB8 + + thumb_func_start MOD16_021DFFE0 +MOD16_021DFFE0: ; 0x021DFFE0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x1d + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x4b + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021DFFE0 + + thumb_func_start MOD16_021E0048 +MOD16_021E0048: ; 0x021E0048 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD16_021E0158 + ldr r0, [r5, #0x28] + add r1, r4, #0 + str r0, [sp] + ldr r3, [r5, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021E00C4 + add r0, r5, #0 + bl MOD16_021E0070 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E0048 + + thumb_func_start MOD16_021E0070 +MOD16_021E0070: ; 0x021E0070 + mov r2, #0 + add r3, r0, #0 + mov r1, #3 +_021E0076: + add r2, r2, #1 + str r1, [r3, #0x2c] + add r3, r3, #4 + cmp r2, #6 + blt _021E0076 + mov r2, #0 + mov r1, #3 +_021E0084: + add r2, r2, #1 + str r1, [r0, #0x44] + add r0, r0, #4 + cmp r2, #0xf + blt _021E0084 + bx lr + thumb_func_end MOD16_021E0070 + + thumb_func_start MOD16_021E0090 +MOD16_021E0090: ; 0x021E0090 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E026C + add r0, r4, #0 + bl MOD16_021E02AC + pop {r4, pc} + thumb_func_end MOD16_021E0090 + + thumb_func_start MOD16_021E00A0 +MOD16_021E00A0: ; 0x021E00A0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl MOD16_021E02AC + ldr r0, [r5, #0x28] + add r1, r4, #0 + str r0, [sp] + ldr r3, [r5, #0x24] + add r0, r5, #0 + add r2, r6, #0 + bl MOD16_021E00C4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E00A0 + + thumb_func_start MOD16_021E00C4 +MOD16_021E00C4: ; 0x021E00C4 + push {r3, lr} + cmp r3, #3 + bhi _021E0100 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021E00D6: ; jump table + .short _021E00DE - _021E00D6 - 2 ; case 0 + .short _021E00E4 - _021E00D6 - 2 ; case 1 + .short _021E00EA - _021E00D6 - 2 ; case 2 + .short _021E00FC - _021E00D6 - 2 ; case 3 +_021E00DE: + bl MOD16_021E02D4 + pop {r3, pc} +_021E00E4: + bl MOD16_021E0400 + pop {r3, pc} +_021E00EA: + ldr r3, [sp, #8] + cmp r3, #0 + bne _021E00F6 + bl MOD16_021E0558 + pop {r3, pc} +_021E00F6: + bl MOD16_021E06F8 + pop {r3, pc} +_021E00FC: + bl MOD16_021E08A0 +_021E0100: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E00C4 + + thumb_func_start MOD16_021E0104 +MOD16_021E0104: ; 0x021E0104 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E01FC + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E011C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E0104 + + thumb_func_start MOD16_021E011C +MOD16_021E011C: ; 0x021E011C + push {r3, lr} + cmp r2, #3 + bhi _021E0156 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E012E: ; jump table + .short _021E0136 - _021E012E - 2 ; case 0 + .short _021E013C - _021E012E - 2 ; case 1 + .short _021E0142 - _021E012E - 2 ; case 2 + .short _021E0152 - _021E012E - 2 ; case 3 +_021E0136: + bl MOD16_021E0364 + pop {r3, pc} +_021E013C: + bl MOD16_021E0490 + pop {r3, pc} +_021E0142: + cmp r3, #0 + bne _021E014C + bl MOD16_021E05FC + pop {r3, pc} +_021E014C: + bl MOD16_021E07B0 + pop {r3, pc} +_021E0152: + bl MOD16_021E0930 +_021E0156: + pop {r3, pc} + thumb_func_end MOD16_021E011C + + thumb_func_start MOD16_021E0158 +MOD16_021E0158: ; 0x021E0158 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x18 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x20 + add r0, r0, #4 + mov r2, #0x40 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #0xec + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #0x20 + mov r3, #0xbc + bl MOD16_021D7C98 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x40 + add r0, #8 + mov r2, #0x60 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x60 + add r0, #0xc + mov r2, #0x80 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x80 + add r0, #0x10 + mov r2, #0xa0 + mov r3, #0xc0 + bl MOD16_021D7C98 + mov r0, #0xfc + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x14 + mov r2, #0xc0 + mov r3, #0xac + bl MOD16_021D7C98 + str r4, [r5, #0x10] + str r5, [r5, #0x14] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021E01F8 ; =MOD16_021E0284 + mov r1, #6 + add r3, #0x10 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E01F8: .word MOD16_021E0284 + thumb_func_end MOD16_021E0158 + + thumb_func_start MOD16_021E01FC +MOD16_021E01FC: ; 0x021E01FC + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E0214 + ldr r0, [r4] + bl FUN_02022144 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD16_021E0224 + pop {r4, pc} + thumb_func_end MOD16_021E01FC + + thumb_func_start MOD16_021E0214 +MOD16_021E0214: ; 0x021E0214 + mov r2, #0 + mov r1, #3 +_021E0218: + add r2, r2, #1 + str r1, [r0, #0x2c] + add r0, r0, #4 + cmp r2, #6 + blt _021E0218 + bx lr + thumb_func_end MOD16_021E0214 + + thumb_func_start MOD16_021E0224 +MOD16_021E0224: ; 0x021E0224 + cmp r1, #3 + bhi _021E026A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E0234: ; jump table + .short _021E023C - _021E0234 - 2 ; case 0 + .short _021E0248 - _021E0234 - 2 ; case 1 + .short _021E0254 - _021E0234 - 2 ; case 2 + .short _021E0260 - _021E0234 - 2 ; case 3 +_021E023C: + ldr r1, [r0, #0x30] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x30] + bx lr +_021E0248: + ldr r1, [r0, #0x34] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x34] + bx lr +_021E0254: + ldr r1, [r0, #0x38] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x38] + bx lr +_021E0260: + ldr r1, [r0, #0x3c] + cmp r1, #2 + beq _021E026A + mov r1, #1 + str r1, [r0, #0x3c] +_021E026A: + bx lr + thumb_func_end MOD16_021E0224 + + thumb_func_start MOD16_021E026C +MOD16_021E026C: ; 0x021E026C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E026C + + thumb_func_start MOD16_021E0284 +MOD16_021E0284: ; 0x021E0284 + ldr r2, [r2, #4] + lsl r3, r0, #2 + add r3, r2, r3 + str r1, [r3, #0x2c] + cmp r1, #2 + bne _021E02A4 + add r1, r2, #0 + add r1, #0x80 + str r0, [r1] + add r0, r2, #0 + add r0, #0x94 + ldr r0, [r0] + add r2, #0x94 + add r0, r0, #1 + str r0, [r2] + bx lr +_021E02A4: + mov r0, #0 + add r2, #0x94 + str r0, [r2] + bx lr + thumb_func_end MOD16_021E0284 + + thumb_func_start MOD16_021E02AC +MOD16_021E02AC: ; 0x021E02AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0202212C + ldr r0, [r4, #0xc] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E02AC + + thumb_func_start MOD16_021E02C4 +MOD16_021E02C4: ; 0x021E02C4 + mov r2, #0 + mov r1, #3 +_021E02C8: + add r2, r2, #1 + str r1, [r0, #0x44] + add r0, r0, #4 + cmp r2, #0xf + blt _021E02C8 + bx lr + thumb_func_end MOD16_021E02C4 + + thumb_func_start MOD16_021E02D4 +MOD16_021E02D4: ; 0x021E02D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x18 + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x30 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E02F4: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0304: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0304 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #3 + blt _021E02F4 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r3, [sp, #4] + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r2, _021E0360 ; =MOD16_021E03EC + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #6 + ldr r0, [r0, #0xc] + add r3, #0x10 + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E0360: .word MOD16_021E03EC + thumb_func_end MOD16_021E02D4 + + thumb_func_start MOD16_021E0364 +MOD16_021E0364: ; 0x021E0364 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E0370: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #6 + blt _021E0370 + ldr r0, [r4, #8] + bl FUN_02022144 + ldr r0, [r5, #8] + bl MOD16_021DEBD4 + cmp r0, #5 + bhi _021E03E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0396: ; jump table + .short _021E03A2 - _021E0396 - 2 ; case 0 + .short _021E03AE - _021E0396 - 2 ; case 1 + .short _021E03BA - _021E0396 - 2 ; case 2 + .short _021E03C6 - _021E0396 - 2 ; case 3 + .short _021E03D2 - _021E0396 - 2 ; case 4 + .short _021E03DE - _021E0396 - 2 ; case 5 +_021E03A2: + ldr r0, [r4, #0x44] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x44] + pop {r3, r4, r5, pc} +_021E03AE: + ldr r0, [r4, #0x48] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_021E03BA: + ldr r0, [r4, #0x4c] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x4c] + pop {r3, r4, r5, pc} +_021E03C6: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} +_021E03D2: + ldr r0, [r4, #0x54] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_021E03DE: + ldr r0, [r4, #0x58] + cmp r0, #2 + beq _021E03E8 + mov r0, #1 + str r0, [r4, #0x58] +_021E03E8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E0364 + + thumb_func_start MOD16_021E03EC +MOD16_021E03EC: ; 0x021E03EC + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x44] + cmp r1, #2 + bne _021E03FC + add r3, #0x84 + str r0, [r3] +_021E03FC: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E03EC + + thumb_func_start MOD16_021E0400 +MOD16_021E0400: ; 0x021E0400 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x28 + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E0420: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0430: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0430 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021E0420 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r3, [sp, #4] + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r2, _021E048C ; =MOD16_021E0544 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xa + ldr r0, [r0, #0xc] + add r3, #0x10 + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E048C: .word MOD16_021E0544 + thumb_func_end MOD16_021E0400 + + thumb_func_start MOD16_021E0490 +MOD16_021E0490: ; 0x021E0490 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E049C: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xa + blt _021E049C + ldr r0, [r4, #8] + bl FUN_02022144 + ldr r0, [r5, #8] + bl MOD16_021DEBF0 + cmp r0, #9 + bhi _021E0540 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E04C2: ; jump table + .short _021E0540 - _021E04C2 - 2 ; case 0 + .short _021E04D6 - _021E04C2 - 2 ; case 1 + .short _021E04E2 - _021E04C2 - 2 ; case 2 + .short _021E04EE - _021E04C2 - 2 ; case 3 + .short _021E04FA - _021E04C2 - 2 ; case 4 + .short _021E0506 - _021E04C2 - 2 ; case 5 + .short _021E0512 - _021E04C2 - 2 ; case 6 + .short _021E051E - _021E04C2 - 2 ; case 7 + .short _021E052A - _021E04C2 - 2 ; case 8 + .short _021E0536 - _021E04C2 - 2 ; case 9 +_021E04D6: + ldr r0, [r4, #0x44] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x44] + pop {r3, r4, r5, pc} +_021E04E2: + ldr r0, [r4, #0x48] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_021E04EE: + ldr r0, [r4, #0x4c] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x4c] + pop {r3, r4, r5, pc} +_021E04FA: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} +_021E0506: + ldr r0, [r4, #0x54] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_021E0512: + ldr r0, [r4, #0x58] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x58] + pop {r3, r4, r5, pc} +_021E051E: + ldr r0, [r4, #0x5c] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x5c] + pop {r3, r4, r5, pc} +_021E052A: + ldr r0, [r4, #0x60] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, r5, pc} +_021E0536: + ldr r0, [r4, #0x64] + cmp r0, #2 + beq _021E0540 + mov r0, #1 + str r0, [r4, #0x64] +_021E0540: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E0490 + + thumb_func_start MOD16_021E0544 +MOD16_021E0544: ; 0x021E0544 + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x44] + cmp r1, #2 + bne _021E0554 + add r3, #0x84 + str r0, [r3] +_021E0554: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E0544 + + thumb_func_start MOD16_021E0558 +MOD16_021E0558: ; 0x021E0558 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x2c + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E0578: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0588: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0588 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021E0578 + mov r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xa0 + ldr r0, [r0, #0xc] + mov r2, #0xc0 + add r0, #0x28 + mov r3, #8 + bl MOD16_021D7C98 + ldr r3, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r2, _021E05F8 ; =MOD16_021E06CC + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + mov r1, #0xb + str r0, [sp] + ldr r0, [sp, #4] + add r3, #0x10 + ldr r0, [r0, #0xc] + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E05F8: .word MOD16_021E06CC + thumb_func_end MOD16_021E0558 + + thumb_func_start MOD16_021E05FC +MOD16_021E05FC: ; 0x021E05FC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r2, r5, #0 + mov r0, #3 +_021E0608: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xb + blt _021E0608 + ldr r0, [r5, #8] + bl FUN_02022144 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E063C + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E063C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E05FC + + thumb_func_start MOD16_021E063C +MOD16_021E063C: ; 0x021E063C + cmp r1, #9 + bhi _021E06CA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E064C: ; jump table + .short _021E06CA - _021E064C - 2 ; case 0 + .short _021E0660 - _021E064C - 2 ; case 1 + .short _021E066C - _021E064C - 2 ; case 2 + .short _021E0678 - _021E064C - 2 ; case 3 + .short _021E0684 - _021E064C - 2 ; case 4 + .short _021E0690 - _021E064C - 2 ; case 5 + .short _021E069C - _021E064C - 2 ; case 6 + .short _021E06A8 - _021E064C - 2 ; case 7 + .short _021E06B4 - _021E064C - 2 ; case 8 + .short _021E06C0 - _021E064C - 2 ; case 9 +_021E0660: + ldr r1, [r0, #0x44] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x44] + bx lr +_021E066C: + ldr r1, [r0, #0x48] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x48] + bx lr +_021E0678: + ldr r1, [r0, #0x4c] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x4c] + bx lr +_021E0684: + ldr r1, [r0, #0x50] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x50] + bx lr +_021E0690: + ldr r1, [r0, #0x54] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x54] + bx lr +_021E069C: + ldr r1, [r0, #0x58] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x58] + bx lr +_021E06A8: + ldr r1, [r0, #0x5c] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x5c] + bx lr +_021E06B4: + ldr r1, [r0, #0x60] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x60] + bx lr +_021E06C0: + ldr r1, [r0, #0x64] + cmp r1, #2 + beq _021E06CA + mov r1, #1 + str r1, [r0, #0x64] +_021E06CA: + bx lr + thumb_func_end MOD16_021E063C + + thumb_func_start MOD16_021E06CC +MOD16_021E06CC: ; 0x021E06CC + ldr r2, [r2, #4] + lsl r3, r0, #2 + add r3, r2, r3 + str r1, [r3, #0x44] + cmp r1, #2 + bne _021E06F0 + add r1, r2, #0 + add r1, #0x90 + ldr r1, [r1] + cmp r1, #0 + bne _021E06F6 + add r1, r2, #0 + add r1, #0x84 + str r0, [r1] + mov r0, #1 + add r2, #0x90 + str r0, [r2] + bx lr +_021E06F0: + mov r0, #0 + add r2, #0x90 + str r0, [r2] +_021E06F6: + bx lr + thumb_func_end MOD16_021E06CC + + thumb_func_start MOD16_021E06F8 +MOD16_021E06F8: ; 0x021E06F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x28 + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E0718: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x30 + sub r7, #0x10 + str r0, [sp, #0x18] +_021E0728: + add r0, r5, #0 + add r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x28 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x50 + cmp r4, #2 + blt _021E0728 + ldr r0, [sp, #0x10] + add r6, r6, #2 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #4 + blt _021E0718 + mov r0, #0xa8 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0x80 + ldr r0, [r0, #0xc] + mov r2, #0xa0 + add r0, #0x20 + mov r3, #0x58 + bl MOD16_021D7C98 + mov r0, #0x28 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xa0 + ldr r0, [r0, #0xc] + mov r2, #0xc0 + add r0, #0x24 + mov r3, #8 + bl MOD16_021D7C98 + ldr r3, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r2, _021E07AC ; =MOD16_021E07F0 + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + mov r1, #0xa + str r0, [sp] + ldr r0, [sp, #4] + add r3, #0x10 + ldr r0, [r0, #0xc] + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E07AC: .word MOD16_021E07F0 + thumb_func_end MOD16_021E06F8 + + thumb_func_start MOD16_021E07B0 +MOD16_021E07B0: ; 0x021E07B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r1, #0 + add r2, r5, #0 + mov r0, #3 +_021E07BC: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xa + blt _021E07BC + ldr r0, [r5, #8] + bl FUN_02022144 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E081C + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC14 + add r1, r0, #0 + add r0, r5, #0 + bl MOD16_021E081C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E07B0 + + thumb_func_start MOD16_021E07F0 +MOD16_021E07F0: ; 0x021E07F0 + ldr r2, [r2, #4] + lsl r3, r0, #2 + add r3, r2, r3 + str r1, [r3, #0x44] + cmp r1, #2 + bne _021E0814 + add r1, r2, #0 + add r1, #0x90 + ldr r1, [r1] + cmp r1, #0 + bne _021E081A + add r1, r2, #0 + add r1, #0x84 + str r0, [r1] + mov r0, #1 + add r2, #0x90 + str r0, [r2] + bx lr +_021E0814: + mov r0, #0 + add r2, #0x90 + str r0, [r2] +_021E081A: + bx lr + thumb_func_end MOD16_021E07F0 + + thumb_func_start MOD16_021E081C +MOD16_021E081C: ; 0x021E081C + sub r1, #0xa + cmp r1, #7 + bhi _021E089C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E082E: ; jump table + .short _021E083E - _021E082E - 2 ; case 0 + .short _021E084A - _021E082E - 2 ; case 1 + .short _021E0856 - _021E082E - 2 ; case 2 + .short _021E0862 - _021E082E - 2 ; case 3 + .short _021E086E - _021E082E - 2 ; case 4 + .short _021E087A - _021E082E - 2 ; case 5 + .short _021E0886 - _021E082E - 2 ; case 6 + .short _021E0892 - _021E082E - 2 ; case 7 +_021E083E: + ldr r1, [r0, #0x44] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x44] + bx lr +_021E084A: + ldr r1, [r0, #0x48] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x48] + bx lr +_021E0856: + ldr r1, [r0, #0x4c] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x4c] + bx lr +_021E0862: + ldr r1, [r0, #0x50] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x50] + bx lr +_021E086E: + ldr r1, [r0, #0x54] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x54] + bx lr +_021E087A: + ldr r1, [r0, #0x58] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x58] + bx lr +_021E0886: + ldr r1, [r0, #0x5c] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x5c] + bx lr +_021E0892: + ldr r1, [r0, #0x60] + cmp r1, #2 + beq _021E089C + mov r1, #1 + str r1, [r0, #0x60] +_021E089C: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E081C + + thumb_func_start MOD16_021E08A0 +MOD16_021E08A0: ; 0x021E08A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + mov r1, #0x3c + str r2, [sp, #0xc] + bl FUN_02016998 + ldr r1, [sp, #4] + str r0, [r1, #0xc] + mov r0, #0 + str r0, [sp, #0x14] + mov r0, #0x10 + ldr r6, [sp, #0x14] + str r0, [sp, #0x10] +_021E08C0: + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x10] + str r0, [sp, #0x18] + add r0, #0x10 + mov r4, #0 + mov r5, #0x1c + sub r7, #0x10 + str r0, [sp, #0x18] +_021E08D0: + add r0, r5, #0 + add r0, #0x18 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r5, #0 + ldr r1, [r0, #0xc] + add r0, r4, r6 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0 + sub r3, #0x18 + bl MOD16_021D7C98 + add r4, r4, #1 + add r5, #0x38 + cmp r4, #3 + blt _021E08D0 + ldr r0, [sp, #0x10] + add r6, r6, #3 + add r0, #0x20 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #5 + blt _021E08C0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r3, [sp, #4] + str r1, [r0, #0x10] + str r0, [r0, #0x14] + ldr r0, [sp, #0xc] + ldr r2, _021E092C ; =MOD16_021E0A28 + str r0, [sp] + ldr r0, [sp, #4] + mov r1, #0xf + ldr r0, [r0, #0xc] + add r3, #0x10 + bl FUN_020220C4 + ldr r1, [sp, #4] + str r0, [r1, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E092C: .word MOD16_021E0A28 + thumb_func_end MOD16_021E08A0 + + thumb_func_start MOD16_021E0930 +MOD16_021E0930: ; 0x021E0930 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E093C: + add r1, r1, #1 + str r0, [r2, #0x44] + add r2, r2, #4 + cmp r1, #0xf + blt _021E093C + ldr r0, [r4, #8] + bl FUN_02022144 + ldr r0, [r5, #8] + bl MOD16_021DEC38 + cmp r0, #0xe + bhi _021E0A26 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0962: ; jump table + .short _021E0A26 - _021E0962 - 2 ; case 0 + .short _021E0980 - _021E0962 - 2 ; case 1 + .short _021E098C - _021E0962 - 2 ; case 2 + .short _021E0998 - _021E0962 - 2 ; case 3 + .short _021E09A4 - _021E0962 - 2 ; case 4 + .short _021E09B0 - _021E0962 - 2 ; case 5 + .short _021E09BC - _021E0962 - 2 ; case 6 + .short _021E09C8 - _021E0962 - 2 ; case 7 + .short _021E09D4 - _021E0962 - 2 ; case 8 + .short _021E09E0 - _021E0962 - 2 ; case 9 + .short _021E09EC - _021E0962 - 2 ; case 10 + .short _021E09F8 - _021E0962 - 2 ; case 11 + .short _021E0A04 - _021E0962 - 2 ; case 12 + .short _021E0A10 - _021E0962 - 2 ; case 13 + .short _021E0A1C - _021E0962 - 2 ; case 14 +_021E0980: + ldr r0, [r4, #0x60] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x60] + pop {r3, r4, r5, pc} +_021E098C: + ldr r0, [r4, #0x70] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x70] + pop {r3, r4, r5, pc} +_021E0998: + ldr r0, [r4, #0x58] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x58] + pop {r3, r4, r5, pc} +_021E09A4: + ldr r0, [r4, #0x48] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x48] + pop {r3, r4, r5, pc} +_021E09B0: + ldr r0, [r4, #0x74] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x74] + pop {r3, r4, r5, pc} +_021E09BC: + ldr r0, [r4, #0x64] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x64] + pop {r3, r4, r5, pc} +_021E09C8: + ldr r0, [r4, #0x78] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x78] + pop {r3, r4, r5, pc} +_021E09D4: + ldr r0, [r4, #0x54] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x54] + pop {r3, r4, r5, pc} +_021E09E0: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x50] + pop {r3, r4, r5, pc} +_021E09EC: + ldr r0, [r4, #0x5c] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x5c] + pop {r3, r4, r5, pc} +_021E09F8: + ldr r0, [r4, #0x68] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x68] + pop {r3, r4, r5, pc} +_021E0A04: + ldr r0, [r4, #0x4c] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x4c] + pop {r3, r4, r5, pc} +_021E0A10: + ldr r0, [r4, #0x44] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x44] + pop {r3, r4, r5, pc} +_021E0A1C: + ldr r0, [r4, #0x6c] + cmp r0, #2 + beq _021E0A26 + mov r0, #1 + str r0, [r4, #0x6c] +_021E0A26: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E0930 + + thumb_func_start MOD16_021E0A28 +MOD16_021E0A28: ; 0x021E0A28 + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x44] + cmp r1, #2 + bne _021E0A38 + add r3, #0x84 + str r0, [r3] +_021E0A38: + bx lr + .align 2, 0 + thumb_func_end MOD16_021E0A28 + + thumb_func_start MOD16_021E0A3C +MOD16_021E0A3C: ; 0x021E0A3C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + add r6, r0, #0 + cmp r4, #5 + bhi _021E0A9A + add r5, r4, r4 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021E0A54: ; jump table + .short _021E0A60 - _021E0A54 - 2 ; case 0 + .short _021E0A6A - _021E0A54 - 2 ; case 1 + .short _021E0A74 - _021E0A54 - 2 ; case 2 + .short _021E0A7E - _021E0A54 - 2 ; case 3 + .short _021E0A88 - _021E0A54 - 2 ; case 4 + .short _021E0A92 - _021E0A54 - 2 ; case 5 +_021E0A60: + mov r2, #0x10 + mov r1, #0xd4 + mov r3, #0x1c + add r0, r2, #0 + b _021E0A9A +_021E0A6A: + mov r1, #0xe0 + mov r2, #0x30 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A74: + mov r1, #0xe0 + mov r2, #0x50 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A7E: + mov r1, #0xe0 + mov r2, #0x70 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A88: + mov r1, #0xe0 + mov r2, #0x90 + mov r3, #0x2c + mov r0, #0x10 + b _021E0A9A +_021E0A92: + mov r1, #0xd4 + mov r2, #0xb0 + mov r3, #0x3c + mov r0, #0x10 +_021E0A9A: + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + str r4, [sp, #0xc] + bl MOD16_021DB590 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E0A3C + + thumb_func_start MOD16_021E0AB0 +MOD16_021E0AB0: ; 0x021E0AB0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0BB4 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + beq _021E0B86 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E0B94 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #5 + bhi _021E0B76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0ADE: ; jump table + .short _021E0B60 - _021E0ADE - 2 ; case 0 + .short _021E0AEA - _021E0ADE - 2 ; case 1 + .short _021E0B02 - _021E0ADE - 2 ; case 2 + .short _021E0B18 - _021E0ADE - 2 ; case 3 + .short _021E0B30 - _021E0ADE - 2 ; case 4 + .short _021E0B48 - _021E0ADE - 2 ; case 5 +_021E0AEA: + add r0, r4, #0 + mov r1, #1 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B02: + add r0, r4, #0 + mov r1, #2 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B18: + add r0, r4, #0 + mov r1, #3 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B30: + add r0, r4, #0 + mov r1, #4 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B48: + add r0, r4, #0 + mov r1, #5 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] + b _021E0B76 +_021E0B60: + add r0, r4, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] +_021E0B76: + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + b _021E0B94 +_021E0B86: + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] +_021E0B94: + ldr r0, _021E0BB4 ; =0x021C48B8 + mov r1, #2 + ldr r0, [r0, #0x48] + tst r0, r1 + beq _021E0BB2 + add r0, r4, #0 + mov r2, #0 + add r0, #0x80 + str r2, [r0] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x2c] +_021E0BB2: + pop {r4, pc} + .align 2, 0 +_021E0BB4: .word 0x021C48B8 + thumb_func_end MOD16_021E0AB0 + + thumb_func_start MOD16_021E0BB8 +MOD16_021E0BB8: ; 0x021E0BB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #6 + ldr r7, [sp, #0x20] + str r0, [sp, #0x18] +_021E0BDC: + mov r4, #0 + mov r6, #0x30 +_021E0BE0: + ldr r0, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x20] + cmp r0, #5 + bhi _021E0C48 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0BF6: ; jump table + .short _021E0C02 - _021E0BF6 - 2 ; case 0 + .short _021E0C0E - _021E0BF6 - 2 ; case 1 + .short _021E0C1A - _021E0BF6 - 2 ; case 2 + .short _021E0C26 - _021E0BF6 - 2 ; case 3 + .short _021E0C32 - _021E0BF6 - 2 ; case 4 + .short _021E0C3E - _021E0BF6 - 2 ; case 5 +_021E0C02: + cmp r4, #2 + bne _021E0C0A + mov r1, #0 + b _021E0C48 +_021E0C0A: + mov r5, #1 + b _021E0C48 +_021E0C0E: + cmp r4, #2 + bne _021E0C16 + mov r1, #1 + b _021E0C48 +_021E0C16: + mov r5, #0 + b _021E0C48 +_021E0C1A: + cmp r4, #2 + bne _021E0C22 + mov r1, #2 + b _021E0C48 +_021E0C22: + mov r5, #0 + b _021E0C48 +_021E0C26: + cmp r4, #2 + bne _021E0C2E + mov r1, #3 + b _021E0C48 +_021E0C2E: + mov r5, #0 + b _021E0C48 +_021E0C32: + cmp r4, #2 + bne _021E0C3A + mov r1, #4 + b _021E0C48 +_021E0C3A: + mov r5, #1 + b _021E0C48 +_021E0C3E: + cmp r4, #2 + bne _021E0C46 + mov r1, #5 + b _021E0C48 +_021E0C46: + mov r5, #1 +_021E0C48: + cmp r4, #2 + bge _021E0C6E + mov r0, #0x10 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r4, r7 + mov r1, #0x1c + mul r1, r2 + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r0, r1 + add r1, r6, #0 + mov r3, #0x3c + bl MOD16_021DB590 + b _021E0C7E +_021E0C6E: + ldr r0, [sp, #0x10] + add r2, r4, r7 + ldr r3, [r0, #0x1c] + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E0C7E: + add r4, r4, #1 + add r6, #0x50 + cmp r4, #3 + blt _021E0BE0 + ldr r0, [sp, #0x1c] + add r7, r7, #3 + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #6 + blt _021E0BDC + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E0BB8 + + thumb_func_start MOD16_021E0CB8 +MOD16_021E0CB8: ; 0x021E0CB8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0D8C ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + beq _021E0D82 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E0D88 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + sub r0, #8 + cmp r0, #5 + bhi _021E0D88 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0CE8: ; jump table + .short _021E0CF4 - _021E0CE8 - 2 ; case 0 + .short _021E0D0C - _021E0CE8 - 2 ; case 1 + .short _021E0D24 - _021E0CE8 - 2 ; case 2 + .short _021E0D3A - _021E0CE8 - 2 ; case 3 + .short _021E0D52 - _021E0CE8 - 2 ; case 4 + .short _021E0D6A - _021E0CE8 - 2 ; case 5 +_021E0CF4: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D0C: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D24: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D3A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D52: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D6A: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0D82: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E0D88: + pop {r4, pc} + nop +_021E0D8C: .word 0x021C48B8 + thumb_func_end MOD16_021E0CB8 + + thumb_func_start MOD16_021E0D90 +MOD16_021E0D90: ; 0x021E0D90 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #6 + ldr r7, [sp, #0x20] + str r0, [sp, #0x18] +_021E0DB4: + mov r4, #0 + mov r6, #0x30 +_021E0DB8: + ldr r0, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x20] + cmp r0, #5 + bhi _021E0E20 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0DCE: ; jump table + .short _021E0DDA - _021E0DCE - 2 ; case 0 + .short _021E0DE6 - _021E0DCE - 2 ; case 1 + .short _021E0DF2 - _021E0DCE - 2 ; case 2 + .short _021E0DFE - _021E0DCE - 2 ; case 3 + .short _021E0E0A - _021E0DCE - 2 ; case 4 + .short _021E0E16 - _021E0DCE - 2 ; case 5 +_021E0DDA: + cmp r4, #2 + bne _021E0DE2 + mov r1, #0 + b _021E0E20 +_021E0DE2: + mov r5, #0 + b _021E0E20 +_021E0DE6: + cmp r4, #2 + bne _021E0DEE + mov r1, #1 + b _021E0E20 +_021E0DEE: + mov r5, #0 + b _021E0E20 +_021E0DF2: + cmp r4, #2 + bne _021E0DFA + mov r1, #2 + b _021E0E20 +_021E0DFA: + mov r5, #0 + b _021E0E20 +_021E0DFE: + cmp r4, #2 + bne _021E0E06 + mov r1, #3 + b _021E0E20 +_021E0E06: + mov r5, #0 + b _021E0E20 +_021E0E0A: + cmp r4, #2 + bne _021E0E12 + mov r1, #4 + b _021E0E20 +_021E0E12: + mov r5, #0 + b _021E0E20 +_021E0E16: + cmp r4, #2 + bne _021E0E1E + mov r1, #5 + b _021E0E20 +_021E0E1E: + mov r5, #1 +_021E0E20: + cmp r4, #2 + bge _021E0E46 + mov r0, #0x10 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r4, r7 + mov r1, #0x1c + mul r1, r2 + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r0, r1 + add r1, r6, #0 + mov r3, #0x3c + bl MOD16_021DB590 + b _021E0E56 +_021E0E46: + ldr r0, [sp, #0x10] + add r2, r4, r7 + ldr r3, [r0, #0x1c] + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E0E56: + add r4, r4, #1 + add r6, #0x50 + cmp r4, #3 + blt _021E0DB8 + ldr r0, [sp, #0x1c] + add r7, r7, #3 + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #6 + blt _021E0DB4 + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E0D90 + + thumb_func_start MOD16_021E0E90 +MOD16_021E0E90: ; 0x021E0E90 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E0FD8 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E0EA0 + b _021E0FD0 +_021E0EA0: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E0EB4 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0xf + bls _021E0EB6 +_021E0EB4: + b _021E0FD6 +_021E0EB6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E0EC2: ; jump table + .short _021E0FD6 - _021E0EC2 - 2 ; case 0 + .short _021E0FD6 - _021E0EC2 - 2 ; case 1 + .short _021E0FD6 - _021E0EC2 - 2 ; case 2 + .short _021E0FD6 - _021E0EC2 - 2 ; case 3 + .short _021E0FD6 - _021E0EC2 - 2 ; case 4 + .short _021E0FD6 - _021E0EC2 - 2 ; case 5 + .short _021E0EE2 - _021E0EC2 - 2 ; case 6 + .short _021E0EFA - _021E0EC2 - 2 ; case 7 + .short _021E0F12 - _021E0EC2 - 2 ; case 8 + .short _021E0F28 - _021E0EC2 - 2 ; case 9 + .short _021E0F40 - _021E0EC2 - 2 ; case 10 + .short _021E0F58 - _021E0EC2 - 2 ; case 11 + .short _021E0F70 - _021E0EC2 - 2 ; case 12 + .short _021E0F88 - _021E0EC2 - 2 ; case 13 + .short _021E0FA0 - _021E0EC2 - 2 ; case 14 + .short _021E0FB8 - _021E0EC2 - 2 ; case 15 +_021E0EE2: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0EFA: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F12: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F28: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F40: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F58: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F70: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0F88: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0FA0: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0FB8: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E0FD0: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E0FD6: + pop {r4, pc} + .align 2, 0 +_021E0FD8: .word 0x021C48B8 + thumb_func_end MOD16_021E0E90 + + thumb_func_start MOD16_021E0FDC +MOD16_021E0FDC: ; 0x021E0FDC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #0x10 + str r0, [sp, #0x24] + mov r0, #6 + str r0, [sp, #0x20] + ldr r0, [sp, #0x28] + str r0, [sp, #0x1c] +_021E1002: + mov r0, #0x30 + mov r4, #0 + str r0, [sp, #0x18] +_021E1008: + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x28] + cmp r0, #5 + bhi _021E1098 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1020: ; jump table + .short _021E102C - _021E1020 - 2 ; case 0 + .short _021E103C - _021E1020 - 2 ; case 1 + .short _021E104C - _021E1020 - 2 ; case 2 + .short _021E105C - _021E1020 - 2 ; case 3 + .short _021E106C - _021E1020 - 2 ; case 4 + .short _021E107C - _021E1020 - 2 ; case 5 +_021E102C: + cmp r4, #2 + bne _021E1034 + mov r1, #0 + b _021E1098 +_021E1034: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E103C: + cmp r4, #2 + bne _021E1044 + mov r1, #1 + b _021E1098 +_021E1044: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E104C: + cmp r4, #2 + bne _021E1054 + mov r1, #2 + b _021E1098 +_021E1054: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E105C: + cmp r4, #2 + bne _021E1064 + mov r1, #3 + b _021E1098 +_021E1064: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E106C: + cmp r4, #2 + bne _021E1074 + mov r1, #4 + b _021E1098 +_021E1074: + mov r5, #0 + mov r7, #0x3c + mov r6, #0x10 + b _021E1098 +_021E107C: + cmp r4, #2 + bne _021E1084 + mov r1, #5 + b _021E1098 +_021E1084: + cmp r4, #0 + bne _021E1092 + mov r7, #0x10 + mov r5, #0 + add r6, r7, #0 + mov r3, #0x18 + b _021E1098 +_021E1092: + mov r5, #1 + mov r7, #0x3c + mov r6, #0x10 +_021E1098: + cmp r4, #2 + bge _021E10BE + str r6, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + ldr r2, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r1, r4, r0 + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + add r1, r3, #0 + ldr r2, [sp, #0x24] + add r3, r7, #0 + bl MOD16_021DB590 + b _021E10D0 +_021E10BE: + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r2, r4, r0 + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E10D0: + ldr r0, [sp, #0x18] + add r4, r4, #1 + add r0, #0x50 + str r0, [sp, #0x18] + cmp r4, #3 + blt _021E1008 + ldr r0, [sp, #0x24] + add r0, #0x20 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r0, r0, #2 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, r0, #3 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #6 + blt _021E1002 + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E0FDC + + thumb_func_start MOD16_021E1110 +MOD16_021E1110: ; 0x021E1110 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E1278 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E1120 + b _021E1270 +_021E1120: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E1134 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0x10 + bls _021E1136 +_021E1134: + b _021E1276 +_021E1136: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1142: ; jump table + .short _021E1276 - _021E1142 - 2 ; case 0 + .short _021E1276 - _021E1142 - 2 ; case 1 + .short _021E1276 - _021E1142 - 2 ; case 2 + .short _021E1276 - _021E1142 - 2 ; case 3 + .short _021E1276 - _021E1142 - 2 ; case 4 + .short _021E1276 - _021E1142 - 2 ; case 5 + .short _021E1164 - _021E1142 - 2 ; case 6 + .short _021E117C - _021E1142 - 2 ; case 7 + .short _021E1194 - _021E1142 - 2 ; case 8 + .short _021E11AA - _021E1142 - 2 ; case 9 + .short _021E11C2 - _021E1142 - 2 ; case 10 + .short _021E11DA - _021E1142 - 2 ; case 11 + .short _021E11F2 - _021E1142 - 2 ; case 12 + .short _021E120A - _021E1142 - 2 ; case 13 + .short _021E1222 - _021E1142 - 2 ; case 14 + .short _021E123A - _021E1142 - 2 ; case 15 + .short _021E1258 - _021E1142 - 2 ; case 16 +_021E1164: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E117C: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1194: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11AA: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11C2: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11DA: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E11F2: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E120A: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1222: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E123A: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + mov r0, #1 + add r4, #0x8c + str r0, [r4] + pop {r4, pc} +_021E1258: + add r0, r4, #0 + mov r1, #0xa + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1270: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E1276: + pop {r4, pc} + .align 2, 0 +_021E1278: .word 0x021C48B8 + thumb_func_end MOD16_021E1110 + + thumb_func_start MOD16_021E127C +MOD16_021E127C: ; 0x021E127C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x7e + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x2c] + mov r0, #0x10 + str r0, [sp, #0x24] + mov r0, #6 + str r0, [sp, #0x20] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x1c] +_021E12A2: + mov r0, #0x30 + mov r4, #0 + str r0, [sp, #0x18] +_021E12A8: + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x2c] + cmp r0, #5 + bhi _021E1364 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E12C0: ; jump table + .short _021E12CC - _021E12C0 - 2 ; case 0 + .short _021E12E0 - _021E12C0 - 2 ; case 1 + .short _021E12F4 - _021E12C0 - 2 ; case 2 + .short _021E1308 - _021E12C0 - 2 ; case 3 + .short _021E131C - _021E12C0 - 2 ; case 4 + .short _021E1340 - _021E12C0 - 2 ; case 5 +_021E12CC: + cmp r4, #2 + bne _021E12D4 + mov r1, #0 + b _021E1364 +_021E12D4: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E12E0: + cmp r4, #2 + bne _021E12E8 + mov r1, #1 + b _021E1364 +_021E12E8: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E12F4: + cmp r4, #2 + bne _021E12FC + mov r1, #2 + b _021E1364 +_021E12FC: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E1308: + cmp r4, #2 + bne _021E1310 + mov r1, #3 + b _021E1364 +_021E1310: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E131C: + cmp r4, #2 + bne _021E1324 + mov r1, #4 + b _021E1364 +_021E1324: + cmp r4, #0 + bne _021E1334 + mov r0, #0x3c + mov r6, #1 + mov r5, #2 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E1334: + mov r6, #0 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 + b _021E1364 +_021E1340: + cmp r4, #2 + bne _021E1348 + mov r1, #5 + b _021E1364 +_021E1348: + cmp r4, #0 + bne _021E135A + mov r0, #0x10 + mov r6, #0 + add r5, r6, #0 + str r0, [sp, #0x28] + add r7, r0, #0 + mov r3, #0x18 + b _021E1364 +_021E135A: + mov r6, #1 + mov r0, #0x3c + add r5, r6, #0 + str r0, [sp, #0x28] + mov r7, #0x10 +_021E1364: + cmp r4, #2 + bge _021E138A + str r7, [sp] + str r6, [sp, #4] + str r5, [sp, #8] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + ldr r2, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r1, r4, r0 + mov r0, #0x1c + mul r0, r1 + add r0, r2, r0 + add r1, r3, #0 + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl MOD16_021DB590 + b _021E139C +_021E138A: + ldr r0, [sp, #0x10] + ldr r3, [r0, #0x1c] + ldr r0, [sp, #0x1c] + add r2, r4, r0 + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E139C: + ldr r0, [sp, #0x18] + add r4, r4, #1 + add r0, #0x50 + str r0, [sp, #0x18] + cmp r4, #3 + bge _021E13AA + b _021E12A8 +_021E13AA: + ldr r0, [sp, #0x24] + add r0, #0x20 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r0, r0, #2 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, r0, #3 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #6 + bge _021E13C8 + b _021E12A2 +_021E13C8: + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #3 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E127C + + thumb_func_start MOD16_021E13E0 +MOD16_021E13E0: ; 0x021E13E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E1530 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E13F0 + b _021E1528 +_021E13F0: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E1404 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0x10 + bls _021E1406 +_021E1404: + b _021E152E +_021E1406: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1412: ; jump table + .short _021E152E - _021E1412 - 2 ; case 0 + .short _021E152E - _021E1412 - 2 ; case 1 + .short _021E152E - _021E1412 - 2 ; case 2 + .short _021E152E - _021E1412 - 2 ; case 3 + .short _021E152E - _021E1412 - 2 ; case 4 + .short _021E152E - _021E1412 - 2 ; case 5 + .short _021E1434 - _021E1412 - 2 ; case 6 + .short _021E144C - _021E1412 - 2 ; case 7 + .short _021E1464 - _021E1412 - 2 ; case 8 + .short _021E147A - _021E1412 - 2 ; case 9 + .short _021E1492 - _021E1412 - 2 ; case 10 + .short _021E14AA - _021E1412 - 2 ; case 11 + .short _021E14C2 - _021E1412 - 2 ; case 12 + .short _021E14DA - _021E1412 - 2 ; case 13 + .short _021E152E - _021E1412 - 2 ; case 14 + .short _021E14F2 - _021E1412 - 2 ; case 15 + .short _021E1510 - _021E1412 - 2 ; case 16 +_021E1434: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E144C: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1464: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E147A: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1492: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14AA: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14C2: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14DA: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E14F2: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + mov r0, #1 + add r4, #0x8c + str r0, [r4] + pop {r4, pc} +_021E1510: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1528: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E152E: + pop {r4, pc} + .align 2, 0 +_021E1530: .word 0x021C48B8 + thumb_func_end MOD16_021E13E0 + + thumb_func_start MOD16_021E1534 +MOD16_021E1534: ; 0x021E1534 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r1, #0 + mov r1, #0x2a + lsl r1, r1, #4 + bl FUN_02016998 + ldr r1, [sp, #0x10] + str r0, [r1, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #6 + ldr r7, [sp, #0x20] + str r0, [sp, #0x18] +_021E1558: + mov r4, #0 + mov r6, #0x1c +_021E155C: + ldr r0, [sp, #0x18] + add r1, r4, r0 + ldr r0, [sp, #0x20] + cmp r0, #5 + bhi _021E15C4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1572: ; jump table + .short _021E157E - _021E1572 - 2 ; case 0 + .short _021E158A - _021E1572 - 2 ; case 1 + .short _021E1596 - _021E1572 - 2 ; case 2 + .short _021E15A2 - _021E1572 - 2 ; case 3 + .short _021E15AE - _021E1572 - 2 ; case 4 + .short _021E15BA - _021E1572 - 2 ; case 5 +_021E157E: + cmp r4, #3 + bne _021E1586 + mov r1, #0 + b _021E15C4 +_021E1586: + mov r5, #0 + b _021E15C4 +_021E158A: + cmp r4, #3 + bne _021E1592 + mov r1, #1 + b _021E15C4 +_021E1592: + mov r5, #0 + b _021E15C4 +_021E1596: + cmp r4, #3 + bne _021E159E + mov r1, #2 + b _021E15C4 +_021E159E: + mov r5, #0 + b _021E15C4 +_021E15A2: + cmp r4, #3 + bne _021E15AA + mov r1, #3 + b _021E15C4 +_021E15AA: + mov r5, #0 + b _021E15C4 +_021E15AE: + cmp r4, #3 + bne _021E15B6 + mov r1, #4 + b _021E15C4 +_021E15B6: + mov r5, #0 + b _021E15C4 +_021E15BA: + cmp r4, #3 + bne _021E15C2 + mov r1, #5 + b _021E15C4 +_021E15C2: + mov r5, #1 +_021E15C4: + cmp r4, #3 + bge _021E15EA + mov r0, #0x14 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r4, r7 + mov r1, #0x1c + mul r1, r2 + ldr r0, [r0, #0x1c] + ldr r2, [sp, #0x1c] + add r0, r0, r1 + add r1, r6, #0 + mov r3, #0x20 + bl MOD16_021DB590 + b _021E15FA +_021E15EA: + ldr r0, [sp, #0x10] + add r2, r4, r7 + ldr r3, [r0, #0x1c] + mov r0, #0x1c + mul r0, r2 + add r0, r3, r0 + bl MOD16_021E0A3C +_021E15FA: + add r4, r4, #1 + add r6, #0x38 + cmp r4, #4 + blt _021E155C + ldr r0, [sp, #0x1c] + add r7, r7, #4 + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #3 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #6 + blt _021E1558 + ldr r0, [sp, #0x14] + bl MOD16_021DB490 + ldr r1, [sp, #0x10] + mov r2, #4 + str r0, [r1, #0x18] + ldr r1, [r1, #0x1c] + mov r3, #6 + bl MOD16_021DB4B0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E1534 + + thumb_func_start MOD16_021E1634 +MOD16_021E1634: ; 0x021E1634 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E1800 ; =0x021C48B8 + ldr r1, [r0, #0x44] + mov r0, #1 + tst r0, r1 + bne _021E1644 + b _021E17F6 +_021E1644: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0 + bne _021E1658 + ldr r0, [r4, #0x18] + bl MOD16_021DB528 + cmp r0, #0x14 + bls _021E165A +_021E1658: + b _021E17FC +_021E165A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1666: ; jump table + .short _021E17FC - _021E1666 - 2 ; case 0 + .short _021E17FC - _021E1666 - 2 ; case 1 + .short _021E17FC - _021E1666 - 2 ; case 2 + .short _021E17FC - _021E1666 - 2 ; case 3 + .short _021E17FC - _021E1666 - 2 ; case 4 + .short _021E17FC - _021E1666 - 2 ; case 5 + .short _021E1690 - _021E1666 - 2 ; case 6 + .short _021E16A8 - _021E1666 - 2 ; case 7 + .short _021E16C0 - _021E1666 - 2 ; case 8 + .short _021E16D6 - _021E1666 - 2 ; case 9 + .short _021E16EE - _021E1666 - 2 ; case 10 + .short _021E1706 - _021E1666 - 2 ; case 11 + .short _021E171E - _021E1666 - 2 ; case 12 + .short _021E1736 - _021E1666 - 2 ; case 13 + .short _021E174E - _021E1666 - 2 ; case 14 + .short _021E1766 - _021E1666 - 2 ; case 15 + .short _021E177E - _021E1666 - 2 ; case 16 + .short _021E1796 - _021E1666 - 2 ; case 17 + .short _021E17AE - _021E1666 - 2 ; case 18 + .short _021E17C6 - _021E1666 - 2 ; case 19 + .short _021E17DE - _021E1666 - 2 ; case 20 +_021E1690: + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16A8: + add r0, r4, #0 + mov r1, #1 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16C0: + add r0, r4, #0 + mov r1, #2 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16D6: + add r0, r4, #0 + mov r1, #3 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E16EE: + add r0, r4, #0 + mov r1, #4 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1706: + add r0, r4, #0 + mov r1, #5 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E171E: + add r0, r4, #0 + mov r1, #6 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1736: + add r0, r4, #0 + mov r1, #7 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E174E: + add r0, r4, #0 + mov r1, #8 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1766: + add r0, r4, #0 + mov r1, #9 + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E177E: + add r0, r4, #0 + mov r1, #0xa + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E1796: + add r0, r4, #0 + mov r1, #0xb + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17AE: + add r0, r4, #0 + mov r1, #0xc + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17C6: + add r0, r4, #0 + mov r1, #0xd + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17DE: + add r0, r4, #0 + mov r1, #0xe + add r0, #0x84 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + mov r1, #2 + lsl r0, r0, #2 + add r0, r4, r0 + str r1, [r0, #0x44] + pop {r4, pc} +_021E17F6: + mov r0, #0 + add r4, #0x8c + str r0, [r4] +_021E17FC: + pop {r4, pc} + nop +_021E1800: .word 0x021C48B8 + thumb_func_end MOD16_021E1634 + + thumb_func_start MOD16_021E1804 +MOD16_021E1804: ; 0x021E1804 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E1890 ; =0x021C48B8 + add r4, r1, #0 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021E1826 + ldr r0, [r5, #0x18] + mov r1, #0 + mov r2, #1 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E1826: + ldr r0, _021E1890 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _021E1842 + mov r1, #0 + ldr r0, [r5, #0x18] + sub r2, r1, #1 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E1842: + ldr r0, _021E1890 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x40 + tst r0, r1 + beq _021E185E + mov r1, #1 + ldr r0, [r5, #0x18] + sub r2, r1, #2 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E185E: + ldr r0, _021E1890 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x80 + tst r0, r1 + beq _021E187A + mov r1, #1 + ldr r0, [r5, #0x18] + add r2, r1, #0 + bl MOD16_021DB4CC + add r0, r5, #0 + mov r1, #1 + add r0, #0x8c + str r1, [r0] +_021E187A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E0AB0 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E1894 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E1890: .word 0x021C48B8 + thumb_func_end MOD16_021E1804 + + thumb_func_start MOD16_021E1894 +MOD16_021E1894: ; 0x021E1894 + push {r3, lr} + cmp r2, #3 + bhi _021E18CE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E18A6: ; jump table + .short _021E18AE - _021E18A6 - 2 ; case 0 + .short _021E18B4 - _021E18A6 - 2 ; case 1 + .short _021E18BA - _021E18A6 - 2 ; case 2 + .short _021E18CA - _021E18A6 - 2 ; case 3 +_021E18AE: + bl MOD16_021E0CB8 + pop {r3, pc} +_021E18B4: + bl MOD16_021E0E90 + pop {r3, pc} +_021E18BA: + cmp r3, #0 + bne _021E18C4 + bl MOD16_021E1110 + pop {r3, pc} +_021E18C4: + bl MOD16_021E13E0 + pop {r3, pc} +_021E18CA: + bl MOD16_021E1634 +_021E18CE: + pop {r3, pc} + thumb_func_end MOD16_021E1894 + + thumb_func_start MOD16_021E18D0 +MOD16_021E18D0: ; 0x021E18D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl FUN_02016A18 + ldr r0, [r4, #0x18] + bl MOD16_021DB4A8 + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + pop {r4, pc} + thumb_func_end MOD16_021E18D0 + + thumb_func_start MOD16_021E18E8 +MOD16_021E18E8: ; 0x021E18E8 + push {r3, lr} + ldr r2, [r0, #0x24] + ldr r3, [r0, #0x28] + bl MOD16_021E18F4 + pop {r3, pc} + thumb_func_end MOD16_021E18E8 + + thumb_func_start MOD16_021E18F4 +MOD16_021E18F4: ; 0x021E18F4 + push {r3, lr} + cmp r2, #3 + bhi _021E192E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E1906: ; jump table + .short _021E190E - _021E1906 - 2 ; case 0 + .short _021E1914 - _021E1906 - 2 ; case 1 + .short _021E191A - _021E1906 - 2 ; case 2 + .short _021E192A - _021E1906 - 2 ; case 3 +_021E190E: + bl MOD16_021E0BB8 + pop {r3, pc} +_021E1914: + bl MOD16_021E0D90 + pop {r3, pc} +_021E191A: + cmp r3, #0 + bne _021E1924 + bl MOD16_021E0FDC + pop {r3, pc} +_021E1924: + bl MOD16_021E127C + pop {r3, pc} +_021E192A: + bl MOD16_021E1534 +_021E192E: + pop {r3, pc} + thumb_func_end MOD16_021E18F4 + + thumb_func_start MOD16_021E1930 +MOD16_021E1930: ; 0x021E1930 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + cmp r0, #3 + bhi _021E195E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1946: ; jump table + .short _021E194E - _021E1946 - 2 ; case 0 + .short _021E1952 - _021E1946 - 2 ; case 1 + .short _021E1956 - _021E1946 - 2 ; case 2 + .short _021E195A - _021E1946 - 2 ; case 3 +_021E194E: + mov r4, #1 + b _021E1962 +_021E1952: + mov r4, #2 + b _021E1962 +_021E1956: + mov r4, #3 + b _021E1962 +_021E195A: + mov r4, #4 + b _021E1962 +_021E195E: + bl ErrorHandling +_021E1962: + ldr r0, [r5, #0x18] + mov r1, #4 + add r2, r4, #0 + bl MOD16_021DB4CC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E1930 + + thumb_func_start MOD16_021E1970 +MOD16_021E1970: ; 0x021E1970 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E18D0 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E18F4 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E1970 + + thumb_func_start MOD16_021E1988 +MOD16_021E1988: ; 0x021E1988 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, [r4, #0x18] + ldr r1, [r5] + add r6, r2, #0 + bl MOD16_021D8B48 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E19A4 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E1988 + + thumb_func_start MOD16_021E19A4 +MOD16_021E19A4: ; 0x021E19A4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r2, #4] + add r4, r1, #0 + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021E19D2 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021E19EC + cmp r0, #0 + beq _021E19C8 + ldr r0, [r4, #0x18] + ldr r1, [r5] + bl MOD16_021D8B48 +_021E19C8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E19DC + pop {r3, r4, r5, pc} +_021E19D2: + add r0, r5, #0 + mov r1, #0 + bl MOD16_021E19EC + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E19A4 + + thumb_func_start MOD16_021E19DC +MOD16_021E19DC: ; 0x021E19DC + ldr r3, _021E19E8 ; =MOD16_021D8AD4 + add r2, r0, #0 + ldr r0, [r1, #0x18] + ldr r1, [r2] + bx r3 + nop +_021E19E8: .word MOD16_021D8AD4 + thumb_func_end MOD16_021E19DC + + thumb_func_start MOD16_021E19EC +MOD16_021E19EC: ; 0x021E19EC + push {r3, r4, r5, lr} + ldr r4, [r0] + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r5, r1, #0 + bl MOD16_021D8B30 + cmp r5, r0 + beq _021E1A10 + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r5, #0 + bl MOD16_021D8B14 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E1A10: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E19EC + + thumb_func_start MOD16_021E1A14 +MOD16_021E1A14: ; 0x021E1A14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E1AD4 ; =0x00003EFD + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x7d + mov r3, #1 + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xe4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E1AD8 ; =0x00003E83 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + add r1, r5, #0 + add r1, #0xe8 + str r0, [r1] + add r0, r5, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_02009D68 + add r0, r5, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E1ADC ; =0x00003EFE + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7e + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xec + str r0, [r1] + ldr r0, _021E1AE0 ; =0x00003EFC + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7c + mov r3, #1 + bl FUN_02009358 + add r5, #0xf0 + str r0, [r5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E1AD4: .word 0x00003EFD +_021E1AD8: .word 0x00003E83 +_021E1ADC: .word 0x00003EFE +_021E1AE0: .word 0x00003EFC + thumb_func_end MOD16_021E1A14 + + thumb_func_start MOD16_021E1AE4 +MOD16_021E1AE4: ; 0x021E1AE4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xe4 + ldr r0, [r0] + ldr r4, [r1] + bl FUN_02009C0C + add r0, r5, #0 + add r0, #0xe8 + ldr r0, [r0] + bl FUN_02009E04 + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xe4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x51 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xe8 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xec + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + add r5, #0xf0 + ldr r0, [r4, r0] + ldr r1, [r5] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E1AE4 + + thumb_func_start MOD16_021E1B3C +MOD16_021E1B3C: ; 0x021E1B3C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + mov r0, #0x3f + lsl r0, r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x80 + mov r3, #1 + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xf4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xf4 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xf4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E1BC8 ; =0x00003F01 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x81 + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xfc + str r0, [r1] + ldr r0, _021E1BCC ; =0x00003EFF + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7f + mov r3, #1 + bl FUN_02009358 + mov r1, #1 + lsl r1, r1, #8 + str r0, [r5, r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E1BC8: .word 0x00003F01 +_021E1BCC: .word 0x00003EFF + thumb_func_end MOD16_021E1B3C + + thumb_func_start MOD16_021E1BD0 +MOD16_021E1BD0: ; 0x021E1BD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xf4 + ldr r0, [r0] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xf4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xfc + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, #0x4c + ldr r1, [r5, r1] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E1BD0 + + thumb_func_start MOD16_021E1C10 +MOD16_021E1C10: ; 0x021E1C10 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E1C90 ; =0x00003EFC + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x79 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x2c + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + add r0, r5, #0 + str r6, [sp, #0x48] + bl MOD16_021E1D60 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #0x2c + bl MOD16_021E1D24 + add sp, #0x70 + pop {r4, r5, r6, pc} + nop +_021E1C90: .word 0x00003EFC + thumb_func_end MOD16_021E1C10 + + thumb_func_start MOD16_021E1C94 +MOD16_021E1C94: ; 0x021E1C94 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E1E14 + add r0, r4, #0 + bl MOD16_021E1E2C + pop {r4, pc} + thumb_func_end MOD16_021E1C94 + + thumb_func_start MOD16_021E1CA4 +MOD16_021E1CA4: ; 0x021E1CA4 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E1D20 ; =0x00003EFC + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x79 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + add r0, r5, #0 + str r6, [sp, #0x48] + bl MOD16_021E1E2C + mov r3, #0x41 + lsl r3, r3, #2 + ldr r2, [r5, r3] + add r3, r3, #4 + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #0x2c + bl MOD16_021E1D24 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E1D20: .word 0x00003EFC + thumb_func_end MOD16_021E1CA4 + + thumb_func_start MOD16_021E1D24 +MOD16_021E1D24: ; 0x021E1D24 + push {r3, lr} + cmp r2, #3 + bhi _021E1D5E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E1D36: ; jump table + .short _021E1D3E - _021E1D36 - 2 ; case 0 + .short _021E1D44 - _021E1D36 - 2 ; case 1 + .short _021E1D4A - _021E1D36 - 2 ; case 2 + .short _021E1D5A - _021E1D36 - 2 ; case 3 +_021E1D3E: + bl MOD16_021E1E4C + pop {r3, pc} +_021E1D44: + bl MOD16_021E1EBC + pop {r3, pc} +_021E1D4A: + cmp r3, #0 + bne _021E1D54 + bl MOD16_021E1F2C + pop {r3, pc} +_021E1D54: + bl MOD16_021E1FC0 + pop {r3, pc} +_021E1D5A: + bl MOD16_021E207C +_021E1D5E: + pop {r3, pc} + thumb_func_end MOD16_021E1D24 + + thumb_func_start MOD16_021E1D60 +MOD16_021E1D60: ; 0x021E1D60 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xe + add r6, r0, #0 + add r4, r1, #0 + mov r5, #0 + lsl r7, r7, #0x10 +_021E1D6C: + cmp r5, #5 + bhi _021E1DCA + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1D7C: ; jump table + .short _021E1D88 - _021E1D7C - 2 ; case 0 + .short _021E1D96 - _021E1D7C - 2 ; case 1 + .short _021E1DA0 - _021E1D7C - 2 ; case 2 + .short _021E1DAA - _021E1D7C - 2 ; case 3 + .short _021E1DB4 - _021E1D7C - 2 ; case 4 + .short _021E1DBE - _021E1D7C - 2 ; case 5 +_021E1D88: + mov r0, #0xd + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x35 + lsl r0, r0, #0xe + str r0, [r4, #8] + b _021E1DCA +_021E1D96: + mov r0, #0xf + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DA0: + mov r0, #0x11 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DAA: + mov r0, #0x13 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DB4: + mov r0, #0x15 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + str r7, [r4, #8] + b _021E1DCA +_021E1DBE: + mov r0, #0x17 + lsl r0, r0, #0x10 + str r0, [r4, #0xc] + mov r0, #0x35 + lsl r0, r0, #0xe + str r0, [r4, #8] +_021E1DCA: + add r0, r4, #0 + bl FUN_0201FF84 + str r0, [r6] + cmp r5, #5 + bhi _021E1E0A + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1DE2: ; jump table + .short _021E1DEE - _021E1DE2 - 2 ; case 0 + .short _021E1DF8 - _021E1DE2 - 2 ; case 1 + .short _021E1DF8 - _021E1DE2 - 2 ; case 2 + .short _021E1DF8 - _021E1DE2 - 2 ; case 3 + .short _021E1DF8 - _021E1DE2 - 2 ; case 4 + .short _021E1E02 - _021E1DE2 - 2 ; case 5 +_021E1DEE: + ldr r0, [r6] + mov r1, #3 + bl FUN_02020130 + b _021E1E0A +_021E1DF8: + ldr r0, [r6] + mov r1, #2 + bl FUN_02020130 + b _021E1E0A +_021E1E02: + ldr r0, [r6] + mov r1, #1 + bl FUN_02020130 +_021E1E0A: + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #6 + blt _021E1D6C + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1D60 + + thumb_func_start MOD16_021E1E14 +MOD16_021E1E14: ; 0x021E1E14 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E1E1A: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021E1E1A + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E1E14 + + thumb_func_start MOD16_021E1E2C +MOD16_021E1E2C: ; 0x021E1E2C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E1E34: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E1E40 + bl FUN_0201FFC8 + str r6, [r5, #0x30] +_021E1E40: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E1E34 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E1E2C + + thumb_func_start MOD16_021E1E4C +MOD16_021E1E4C: ; 0x021E1E4C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x30 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1E64: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1E7E: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1E7E + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #3 + blt _021E1E64 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1E4C + + thumb_func_start MOD16_021E1EBC +MOD16_021E1EBC: ; 0x021E1EBC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1ED4: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1EEE: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1EEE + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blt _021E1ED4 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1EBC + + thumb_func_start MOD16_021E1F2C +MOD16_021E1F2C: ; 0x021E1F2C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1F44: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1F5E: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1F5E + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blt _021E1F44 + mov r0, #0xb0 + mov r2, #0x18 + str r0, [r6, #0xc] + lsl r0, r2, #0xc + str r0, [r6, #8] + ldr r0, [r6, #0xc] + lsl r1, r0, #0xc + lsl r0, r2, #0xf + add r0, r1, r0 + str r0, [r6, #0xc] + add r0, r6, #0 + bl FUN_0201FF84 + ldr r1, [sp] + str r0, [r1, #0x58] + mov r1, #5 + bl FUN_02020130 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E1F2C + + thumb_func_start MOD16_021E1FC0 +MOD16_021E1FC0: ; 0x021E1FC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E1FD8: + ldr r0, [sp, #8] + mov r4, #0x30 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E1FF2: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x50 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #2 + blt _021E1FF2 + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + blt _021E1FD8 + mov r0, #0x90 + str r0, [r6, #0xc] + mov r0, #0x80 + lsl r0, r0, #0xc + str r0, [r6, #8] + ldr r0, [r6, #0xc] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + add r0, r6, #0 + bl FUN_0201FF84 + ldr r1, [sp] + str r0, [r1, #0x50] + mov r1, #0 + bl FUN_02020130 + mov r0, #0xb0 + mov r2, #0x18 + str r0, [r6, #0xc] + lsl r0, r2, #0xc + str r0, [r6, #8] + ldr r0, [r6, #0xc] + lsl r1, r0, #0xc + lsl r0, r2, #0xf + add r0, r1, r0 + str r0, [r6, #0xc] + add r0, r6, #0 + bl FUN_0201FF84 + ldr r1, [sp] + str r0, [r1, #0x54] + mov r1, #4 + bl FUN_02020130 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E1FC0 + + thumb_func_start MOD16_021E207C +MOD16_021E207C: ; 0x021E207C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #0x10 + add r6, r1, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r7, r6, #0 + str r0, [sp, #4] + add r7, #8 +_021E2094: + ldr r0, [sp, #8] + mov r4, #0x1c + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [r6, #0xc] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + lsl r1, r0, #2 + ldr r0, [sp] + add r5, r0, r1 +_021E20AE: + str r4, [r6, #8] + ldr r0, [r7] + lsl r0, r0, #0xc + str r0, [r7] + add r0, r6, #0 + bl FUN_0201FF84 + mov r1, #6 + str r0, [r5, #0x30] + bl FUN_02020130 + ldr r0, [sp, #0xc] + add r4, #0x38 + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #3 + blt _021E20AE + ldr r0, [sp, #8] + add r0, #0x20 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #3 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blt _021E2094 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E207C + + thumb_func_start MOD16_021E20EC +MOD16_021E20EC: ; 0x021E20EC + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + ldr r4, [r1] + ldr r3, _021E22A4 ; =0x00003EFF + str r0, [sp, #0x2c] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r5, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x58 + sub r2, #0x7c + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x38] + add r0, sp, #0x58 + str r0, [sp, #0x3c] + mov r0, #0xf + str r0, [sp, #0x4c] + mov r0, #2 + str r0, [sp, #0x50] + mov r0, #0 + str r0, [sp, #0x34] + mov r0, #0x10 + ldr r7, [sp, #0x34] + str r5, [sp, #0x54] + str r0, [sp, #0x30] +_021E2156: + ldr r0, [sp, #0x30] + mov r6, #0 + str r0, [sp, #0x44] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x2c] + lsl r1, r7, #2 + mov r5, #0x1c + add r4, r0, r1 +_021E216E: + str r5, [sp, #0x40] + lsl r0, r5, #0xc + str r0, [sp, #0x40] + add r0, sp, #0x38 + bl FUN_0201FF84 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r6, r7 + cmp r0, #0xe + bhi _021E2280 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2192: ; jump table + .short _021E21B0 - _021E2192 - 2 ; case 0 + .short _021E21BE - _021E2192 - 2 ; case 1 + .short _021E21CC - _021E2192 - 2 ; case 2 + .short _021E21DA - _021E2192 - 2 ; case 3 + .short _021E21E8 - _021E2192 - 2 ; case 4 + .short _021E21F6 - _021E2192 - 2 ; case 5 + .short _021E2204 - _021E2192 - 2 ; case 6 + .short _021E2212 - _021E2192 - 2 ; case 7 + .short _021E2220 - _021E2192 - 2 ; case 8 + .short _021E222E - _021E2192 - 2 ; case 9 + .short _021E223C - _021E2192 - 2 ; case 10 + .short _021E224A - _021E2192 - 2 ; case 11 + .short _021E2258 - _021E2192 - 2 ; case 12 + .short _021E2266 - _021E2192 - 2 ; case 13 + .short _021E2274 - _021E2192 - 2 ; case 14 +_021E21B0: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_02020130 + b _021E2280 +_021E21BE: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #5 + bl FUN_02020130 + b _021E2280 +_021E21CC: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xa + bl FUN_02020130 + b _021E2280 +_021E21DA: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #1 + bl FUN_02020130 + b _021E2280 +_021E21E8: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #6 + bl FUN_02020130 + b _021E2280 +_021E21F6: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xb + bl FUN_02020130 + b _021E2280 +_021E2204: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #2 + bl FUN_02020130 + b _021E2280 +_021E2212: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #9 + bl FUN_02020130 + b _021E2280 +_021E2220: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xc + bl FUN_02020130 + b _021E2280 +_021E222E: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #3 + bl FUN_02020130 + b _021E2280 +_021E223C: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #8 + bl FUN_02020130 + b _021E2280 +_021E224A: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0xd + bl FUN_02020130 + b _021E2280 +_021E2258: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #4 + bl FUN_02020130 + b _021E2280 +_021E2266: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #7 + bl FUN_02020130 + b _021E2280 +_021E2274: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_020200A0 +_021E2280: + add r6, r6, #1 + add r5, #0x38 + add r4, r4, #4 + cmp r6, #3 + bge _021E228C + b _021E216E +_021E228C: + ldr r0, [sp, #0x30] + add r7, r7, #3 + add r0, #0x20 + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, #5 + bge _021E22A0 + b _021E2156 +_021E22A0: + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E22A4: .word 0x00003EFF + thumb_func_end MOD16_021E20EC + + thumb_func_start MOD16_021E22A8 +MOD16_021E22A8: ; 0x021E22A8 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E22B0: + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E22C4 + bl FUN_0201FFC8 + add r0, r5, #0 + add r0, #0xa8 + str r6, [r0] +_021E22C4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E22B0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E22A8 + + thumb_func_start MOD16_021E22D0 +MOD16_021E22D0: ; 0x021E22D0 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r4, [r1] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021E2330 ; =0x00003E83 + add r6, r2, #0 + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #4] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0xc] + mov r0, #0 + mov r2, #0x15 + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + mov r0, #2 + str r0, [sp, #0x24] + str r6, [sp, #0x28] + lsl r2, r2, #4 + ldr r2, [r4, r2] + add r0, r5, #0 + add r1, sp, #4 + bl MOD16_021E23D0 + mov r3, #0x42 + lsl r3, r3, #2 + ldr r0, [r5, r3] + add r2, r3, #0 + str r0, [sp] + add r2, #0x48 + sub r3, r3, #4 + ldr r2, [r4, r2] + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #4 + bl MOD16_021E23A0 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + nop +_021E2330: .word 0x00003E83 + thumb_func_end MOD16_021E22D0 + + thumb_func_start MOD16_021E2334 +MOD16_021E2334: ; 0x021E2334 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E2554 + add r0, r4, #0 + bl MOD16_021E2570 + pop {r4, pc} + thumb_func_end MOD16_021E2334 + + thumb_func_start MOD16_021E2344 +MOD16_021E2344: ; 0x021E2344 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r4, [r1] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021E239C ; =0x00003E83 + add r6, r2, #0 + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #4] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + mov r0, #2 + str r0, [sp, #0x24] + add r0, r5, #0 + str r6, [sp, #0x28] + bl MOD16_021E2570 + mov r3, #0x42 + lsl r3, r3, #2 + ldr r0, [r5, r3] + add r2, r3, #0 + str r0, [sp] + add r2, #0x48 + sub r3, r3, #4 + ldr r2, [r4, r2] + ldr r3, [r5, r3] + add r0, r5, #0 + add r1, sp, #4 + bl MOD16_021E23A0 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + nop +_021E239C: .word 0x00003E83 + thumb_func_end MOD16_021E2344 + + thumb_func_start MOD16_021E23A0 +MOD16_021E23A0: ; 0x021E23A0 + push {r3, lr} + cmp r3, #0 + beq _021E23B0 + cmp r3, #1 + beq _021E23B6 + cmp r3, #2 + beq _021E23BC + pop {r3, pc} +_021E23B0: + bl MOD16_021E2590 + pop {r3, pc} +_021E23B6: + bl MOD16_021E2634 + pop {r3, pc} +_021E23BC: + ldr r3, [sp, #8] + cmp r3, #0 + bne _021E23C8 + bl MOD16_021E26F0 + pop {r3, pc} +_021E23C8: + bl MOD16_021E27AC + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E23A0 + + thumb_func_start MOD16_021E23D0 +MOD16_021E23D0: ; 0x021E23D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + add r6, r2, #0 + mov r1, #2 + bl FUN_0201E28C + add r7, r0, #0 + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x32 + bl MOD16_021DB3C8 + ldr r1, [sp, #8] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #4] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x1c] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #8] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0xc] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x2f + bl MOD16_021DB3C8 + ldr r1, [sp, #0xc] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #8] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x20] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #0xc] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x10] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x30 + bl MOD16_021DB3C8 + ldr r1, [sp, #0x10] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #0xc] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x24] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #0x10] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x31 + bl MOD16_021DB3C8 + ldr r1, [sp, #0x14] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #0x10] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x28] + ldr r0, [r0] + add r1, r7, #3 + bl FUN_02011A60 + ldr r0, [sp, #0x14] + bl MOD16_021DB3BC + add r0, r6, #0 + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0x18] + ldr r2, _021E2550 ; =0x00000266 + add r0, r6, #0 + mov r3, #0x33 + bl MOD16_021DB3C8 + ldr r1, [sp, #0x18] + neg r0, r0 + str r1, [r4, #4] + ldr r1, [r5, #0x14] + lsr r0, r0, #1 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + mov r0, #5 + mvn r0, r0 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD16_021DB2BC + str r0, [r5, #0x2c] + ldr r0, [r0] + add r1, r7, #1 + bl FUN_02011A60 + ldr r0, [sp, #0x18] + bl MOD16_021DB3BC + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2550: .word 0x00000266 + thumb_func_end MOD16_021E23D0 + + thumb_func_start MOD16_021E2554 +MOD16_021E2554: ; 0x021E2554 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E255A: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _021E2564 + bl MOD16_021DB338 +_021E2564: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021E255A + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2554 + + thumb_func_start MOD16_021E2570 +MOD16_021E2570: ; 0x021E2570 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E2578: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2584 + bl MOD16_021DB338 + str r6, [r5, #0x6c] +_021E2584: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E2578 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E2570 + + thumb_func_start MOD16_021E2590 +MOD16_021E2590: ; 0x021E2590 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E25AC: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #5 + bhi _021E25EA + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E25C8: ; jump table + .short _021E25D4 - _021E25C8 - 2 ; case 0 + .short _021E25D8 - _021E25C8 - 2 ; case 1 + .short _021E25DC - _021E25C8 - 2 ; case 2 + .short _021E25E0 - _021E25C8 - 2 ; case 3 + .short _021E25E4 - _021E25C8 - 2 ; case 4 + .short _021E25E8 - _021E25C8 - 2 ; case 5 +_021E25D4: + mov r4, #0x51 + b _021E25EA +_021E25D8: + mov r4, #0x52 + b _021E25EA +_021E25DC: + mov r4, #0x53 + b _021E25EA +_021E25E0: + mov r4, #0x54 + b _021E25EA +_021E25E4: + mov r4, #0x55 + b _021E25EA +_021E25E8: + mov r4, #0x56 +_021E25EA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E2630 ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #6 + blt _021E25AC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E2630: .word 0x00000266 + thumb_func_end MOD16_021E2590 + + thumb_func_start MOD16_021E2634 +MOD16_021E2634: ; 0x021E2634 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E2650: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #9 + bhi _021E26A6 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E266C: ; jump table + .short _021E2680 - _021E266C - 2 ; case 0 + .short _021E2684 - _021E266C - 2 ; case 1 + .short _021E2688 - _021E266C - 2 ; case 2 + .short _021E268C - _021E266C - 2 ; case 3 + .short _021E2690 - _021E266C - 2 ; case 4 + .short _021E2694 - _021E266C - 2 ; case 5 + .short _021E2698 - _021E266C - 2 ; case 6 + .short _021E269C - _021E266C - 2 ; case 7 + .short _021E26A0 - _021E266C - 2 ; case 8 + .short _021E26A4 - _021E266C - 2 ; case 9 +_021E2680: + mov r4, #0x36 + b _021E26A6 +_021E2684: + mov r4, #0x37 + b _021E26A6 +_021E2688: + mov r4, #0x38 + b _021E26A6 +_021E268C: + mov r4, #0x39 + b _021E26A6 +_021E2690: + mov r4, #0x3a + b _021E26A6 +_021E2694: + mov r4, #0x3b + b _021E26A6 +_021E2698: + mov r4, #0x3c + b _021E26A6 +_021E269C: + mov r4, #0x3d + b _021E26A6 +_021E26A0: + mov r4, #0x3e + b _021E26A6 +_021E26A4: + mov r4, #0x73 +_021E26A6: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E26EC ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #0xa + blt _021E2650 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E26EC: .word 0x00000266 + thumb_func_end MOD16_021E2634 + + thumb_func_start MOD16_021E26F0 +MOD16_021E26F0: ; 0x021E26F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E270C: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #9 + bhi _021E2762 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2728: ; jump table + .short _021E273C - _021E2728 - 2 ; case 0 + .short _021E2740 - _021E2728 - 2 ; case 1 + .short _021E2744 - _021E2728 - 2 ; case 2 + .short _021E2748 - _021E2728 - 2 ; case 3 + .short _021E274C - _021E2728 - 2 ; case 4 + .short _021E2750 - _021E2728 - 2 ; case 5 + .short _021E2754 - _021E2728 - 2 ; case 6 + .short _021E2758 - _021E2728 - 2 ; case 7 + .short _021E275C - _021E2728 - 2 ; case 8 + .short _021E2760 - _021E2728 - 2 ; case 9 +_021E273C: + mov r4, #0x40 + b _021E2762 +_021E2740: + mov r4, #0x46 + b _021E2762 +_021E2744: + mov r4, #0x49 + b _021E2762 +_021E2748: + mov r4, #0x47 + b _021E2762 +_021E274C: + mov r4, #0x48 + b _021E2762 +_021E2750: + mov r4, #0x4c + b _021E2762 +_021E2754: + mov r4, #0x4b + b _021E2762 +_021E2758: + mov r4, #0x4d + b _021E2762 +_021E275C: + mov r4, #0x50 + b _021E2762 +_021E2760: + mov r4, #0x74 +_021E2762: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E27A8 ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #0xa + blt _021E270C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E27A8: .word 0x00000266 + thumb_func_end MOD16_021E26F0 + + thumb_func_start MOD16_021E27AC +MOD16_021E27AC: ; 0x021E27AC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp, #8] + ldr r0, [r0, #8] + mov r1, #2 + str r2, [sp, #0xc] + bl FUN_0201E28C + str r0, [sp, #0x10] + add r0, #0xb + mov r5, #0 + str r0, [sp, #0x10] +_021E27C8: + ldr r0, [sp, #0xc] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r7, r0, #0 + cmp r5, #8 + bhi _021E2818 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E27E4: ; jump table + .short _021E27F6 - _021E27E4 - 2 ; case 0 + .short _021E27FA - _021E27E4 - 2 ; case 1 + .short _021E27FE - _021E27E4 - 2 ; case 2 + .short _021E2802 - _021E27E4 - 2 ; case 3 + .short _021E2806 - _021E27E4 - 2 ; case 4 + .short _021E280A - _021E27E4 - 2 ; case 5 + .short _021E280E - _021E27E4 - 2 ; case 6 + .short _021E2812 - _021E27E4 - 2 ; case 7 + .short _021E2816 - _021E27E4 - 2 ; case 8 +_021E27F6: + mov r4, #0x41 + b _021E2818 +_021E27FA: + mov r4, #0x42 + b _021E2818 +_021E27FE: + mov r4, #0x44 + b _021E2818 +_021E2802: + mov r4, #0x43 + b _021E2818 +_021E2806: + mov r4, #0x4a + b _021E2818 +_021E280A: + mov r4, #0x45 + b _021E2818 +_021E280E: + mov r4, #0x4e + b _021E2818 +_021E2812: + mov r4, #0x4f + b _021E2818 +_021E2816: + mov r4, #0x74 +_021E2818: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r2, _021E2860 ; =0x00000266 + add r1, r7, #0 + add r3, r4, #0 + bl MOD16_021DB3C8 + neg r0, r0 + lsr r1, r0, #1 + ldr r0, [sp, #8] + str r1, [r0, #0x10] + str r7, [r0, #4] + ldr r1, [r6, #0x30] + str r1, [r0, #0xc] + mov r1, #5 + mvn r1, r1 + str r1, [r0, #0x14] + bl MOD16_021DB2BC + str r0, [r6, #0x6c] + ldr r0, [r0] + ldr r1, [sp, #0x10] + bl FUN_02011A60 + add r0, r7, #0 + bl MOD16_021DB3BC + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #9 + blt _021E27C8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E2860: .word 0x00000266 + thumb_func_end MOD16_021E27AC + + thumb_func_start MOD16_021E2864 +MOD16_021E2864: ; 0x021E2864 + ldr r1, _021E286C ; =0x0000FFFF + add r0, #0x84 + str r1, [r0] + bx lr + .align 2, 0 +_021E286C: .word 0x0000FFFF + thumb_func_end MOD16_021E2864 + + thumb_func_start MOD16_021E2870 +MOD16_021E2870: ; 0x021E2870 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E28C4 + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E2888 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E2870 + + thumb_func_start MOD16_021E2888 +MOD16_021E2888: ; 0x021E2888 + push {r3, lr} + cmp r2, #3 + bhi _021E28C2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E289A: ; jump table + .short _021E28A2 - _021E289A - 2 ; case 0 + .short _021E28A8 - _021E289A - 2 ; case 1 + .short _021E28AE - _021E289A - 2 ; case 2 + .short _021E28BE - _021E289A - 2 ; case 3 +_021E28A2: + bl MOD16_021E2994 + pop {r3, pc} +_021E28A8: + bl MOD16_021E2A00 + pop {r3, pc} +_021E28AE: + cmp r3, #0 + bne _021E28B8 + bl MOD16_021E2A84 + pop {r3, pc} +_021E28B8: + bl MOD16_021E2B08 + pop {r3, pc} +_021E28BE: + bl MOD16_021E2C28 +_021E28C2: + pop {r3, pc} + thumb_func_end MOD16_021E2888 + + thumb_func_start MOD16_021E28C4 +MOD16_021E28C4: ; 0x021E28C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x80 + ldr r0, [r0] + add r4, r1, #0 + cmp r0, #5 + bhi _021E2982 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E28DE: ; jump table + .short _021E28EA - _021E28DE - 2 ; case 0 + .short _021E28FA - _021E28DE - 2 ; case 1 + .short _021E2914 - _021E28DE - 2 ; case 2 + .short _021E292E - _021E28DE - 2 ; case 3 + .short _021E2950 - _021E28DE - 2 ; case 4 + .short _021E296A - _021E28DE - 2 ; case 5 +_021E28EA: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEC40 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E28FA: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #0 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #0 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E2914: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #1 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E292E: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #2 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + add r0, r5, #0 + mov r1, #0 + add r0, #0x88 + str r1, [r0] + b _021E2982 +_021E2950: + ldr r0, [r4, #8] + bl MOD16_021DEBB8 + cmp r0, #3 + beq _021E2982 + ldr r0, [r4, #8] + mov r1, #3 + bl MOD16_021DEBA4 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 + b _021E2982 +_021E296A: + add r0, r5, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #1 + bgt _021E2982 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC40 + ldr r0, _021E298C ; =0x000005DD + bl FUN_020054C8 +_021E2982: + ldr r0, _021E2990 ; =0x0000FFFF + add r5, #0x80 + str r0, [r5] + pop {r3, r4, r5, pc} + nop +_021E298C: .word 0x000005DD +_021E2990: .word 0x0000FFFF + thumb_func_end MOD16_021E28C4 + + thumb_func_start MOD16_021E2994 +MOD16_021E2994: ; 0x021E2994 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #5 + bhi _021E29D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E29B0: ; jump table + .short _021E29BC - _021E29B0 - 2 ; case 0 + .short _021E29C0 - _021E29B0 - 2 ; case 1 + .short _021E29C4 - _021E29B0 - 2 ; case 2 + .short _021E29C8 - _021E29B0 - 2 ; case 3 + .short _021E29CC - _021E29B0 - 2 ; case 4 + .short _021E29D0 - _021E29B0 - 2 ; case 5 +_021E29BC: + mov r4, #0 + b _021E29D2 +_021E29C0: + mov r4, #1 + b _021E29D2 +_021E29C4: + mov r4, #2 + b _021E29D2 +_021E29C8: + mov r4, #3 + b _021E29D2 +_021E29CC: + mov r4, #4 + b _021E29D2 +_021E29D0: + mov r4, #5 +_021E29D2: + cmp r4, #0x64 + beq _021E29EE + ldr r0, [r6, #8] + bl MOD16_021DEBD4 + cmp r4, r0 + beq _021E29EE + ldr r0, _021E29F8 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r6, #8] + add r1, r4, #0 + bl MOD16_021DEBC0 +_021E29EE: + ldr r0, _021E29FC ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + nop +_021E29F8: .word 0x000005DD +_021E29FC: .word 0x0000FFFF + thumb_func_end MOD16_021E2994 + + thumb_func_start MOD16_021E2A00 +MOD16_021E2A00: ; 0x021E2A00 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #9 + bhi _021E2A56 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2A1C: ; jump table + .short _021E2A30 - _021E2A1C - 2 ; case 0 + .short _021E2A34 - _021E2A1C - 2 ; case 1 + .short _021E2A38 - _021E2A1C - 2 ; case 2 + .short _021E2A3C - _021E2A1C - 2 ; case 3 + .short _021E2A40 - _021E2A1C - 2 ; case 4 + .short _021E2A44 - _021E2A1C - 2 ; case 5 + .short _021E2A48 - _021E2A1C - 2 ; case 6 + .short _021E2A4C - _021E2A1C - 2 ; case 7 + .short _021E2A50 - _021E2A1C - 2 ; case 8 + .short _021E2A54 - _021E2A1C - 2 ; case 9 +_021E2A30: + mov r4, #1 + b _021E2A56 +_021E2A34: + mov r4, #2 + b _021E2A56 +_021E2A38: + mov r4, #3 + b _021E2A56 +_021E2A3C: + mov r4, #4 + b _021E2A56 +_021E2A40: + mov r4, #5 + b _021E2A56 +_021E2A44: + mov r4, #6 + b _021E2A56 +_021E2A48: + mov r4, #7 + b _021E2A56 +_021E2A4C: + mov r4, #8 + b _021E2A56 +_021E2A50: + mov r4, #9 + b _021E2A56 +_021E2A54: + mov r4, #0 +_021E2A56: + cmp r4, #0x64 + beq _021E2A72 + ldr r0, [r6, #8] + bl MOD16_021DEBF0 + cmp r4, r0 + beq _021E2A72 + ldr r0, _021E2A7C ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r6, #8] + add r1, r4, #0 + bl MOD16_021DEBDC +_021E2A72: + ldr r0, _021E2A80 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + nop +_021E2A7C: .word 0x000005DD +_021E2A80: .word 0x0000FFFF + thumb_func_end MOD16_021E2A00 + + thumb_func_start MOD16_021E2A84 +MOD16_021E2A84: ; 0x021E2A84 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #0xa + bhi _021E2AE8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2AA0: ; jump table + .short _021E2AB6 - _021E2AA0 - 2 ; case 0 + .short _021E2ABA - _021E2AA0 - 2 ; case 1 + .short _021E2ABE - _021E2AA0 - 2 ; case 2 + .short _021E2AC2 - _021E2AA0 - 2 ; case 3 + .short _021E2AC6 - _021E2AA0 - 2 ; case 4 + .short _021E2ACA - _021E2AA0 - 2 ; case 5 + .short _021E2ACE - _021E2AA0 - 2 ; case 6 + .short _021E2AD2 - _021E2AA0 - 2 ; case 7 + .short _021E2AD6 - _021E2AA0 - 2 ; case 8 + .short _021E2ADA - _021E2AA0 - 2 ; case 9 + .short _021E2ADE - _021E2AA0 - 2 ; case 10 +_021E2AB6: + mov r4, #1 + b _021E2AE8 +_021E2ABA: + mov r4, #2 + b _021E2AE8 +_021E2ABE: + mov r4, #3 + b _021E2AE8 +_021E2AC2: + mov r4, #4 + b _021E2AE8 +_021E2AC6: + mov r4, #5 + b _021E2AE8 +_021E2ACA: + mov r4, #6 + b _021E2AE8 +_021E2ACE: + mov r4, #7 + b _021E2AE8 +_021E2AD2: + mov r4, #8 + b _021E2AE8 +_021E2AD6: + mov r4, #9 + b _021E2AE8 +_021E2ADA: + mov r4, #0 + b _021E2AE8 +_021E2ADE: + mov r0, #1 + str r0, [r5, #0x20] + ldr r0, _021E2B00 ; =0x000005DD + bl FUN_020054C8 +_021E2AE8: + cmp r4, #0x64 + beq _021E2AF6 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E2B84 +_021E2AF6: + ldr r0, _021E2B04 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + nop +_021E2B00: .word 0x000005DD +_021E2B04: .word 0x0000FFFF + thumb_func_end MOD16_021E2A84 + + thumb_func_start MOD16_021E2B08 +MOD16_021E2B08: ; 0x021E2B08 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #9 + bhi _021E2B66 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2B24: ; jump table + .short _021E2B38 - _021E2B24 - 2 ; case 0 + .short _021E2B3C - _021E2B24 - 2 ; case 1 + .short _021E2B40 - _021E2B24 - 2 ; case 2 + .short _021E2B44 - _021E2B24 - 2 ; case 3 + .short _021E2B48 - _021E2B24 - 2 ; case 4 + .short _021E2B4C - _021E2B24 - 2 ; case 5 + .short _021E2B50 - _021E2B24 - 2 ; case 6 + .short _021E2B54 - _021E2B24 - 2 ; case 7 + .short _021E2B58 - _021E2B24 - 2 ; case 8 + .short _021E2B5C - _021E2B24 - 2 ; case 9 +_021E2B38: + mov r4, #0xa + b _021E2B66 +_021E2B3C: + mov r4, #0xb + b _021E2B66 +_021E2B40: + mov r4, #0xc + b _021E2B66 +_021E2B44: + mov r4, #0xd + b _021E2B66 +_021E2B48: + mov r4, #0xe + b _021E2B66 +_021E2B4C: + mov r4, #0xf + b _021E2B66 +_021E2B50: + mov r4, #0x10 + b _021E2B66 +_021E2B54: + mov r4, #0x11 + b _021E2B66 +_021E2B58: + mov r4, #0 + b _021E2B66 +_021E2B5C: + mov r0, #0 + str r0, [r5, #0x20] + ldr r0, _021E2B7C ; =0x000005DD + bl FUN_020054C8 +_021E2B66: + cmp r4, #0x64 + beq _021E2B74 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E2B84 +_021E2B74: + ldr r0, _021E2B80 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 +_021E2B7C: .word 0x000005DD +_021E2B80: .word 0x0000FFFF + thumb_func_end MOD16_021E2B08 + + thumb_func_start MOD16_021E2B84 +MOD16_021E2B84: ; 0x021E2B84 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + ldr r0, [r4, #8] + beq _021E2BE4 + mov r1, #0 + bl MOD16_021DEC14 + cmp r6, r0 + beq _021E2C20 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD16_021DEC14 + cmp r6, r0 + beq _021E2C20 + add r1, r5, #0 + add r1, #0x88 + ldr r0, [r4, #8] + ldr r1, [r1] + bl MOD16_021DEC14 + cmp r6, r0 + beq _021E2C20 + add r2, r5, #0 + add r2, #0x88 + ldr r0, [r4, #8] + ldr r2, [r2] + add r1, r6, #0 + bl MOD16_021DEBF8 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + add r5, #0x88 + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + str r0, [r5] + ldr r0, _021E2C24 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E2BE4: + mov r1, #0 + bl MOD16_021DEC14 + cmp r0, #0 + ldr r0, [r4, #8] + beq _021E2C00 + add r1, r6, #0 + mov r2, #0 + bl MOD16_021DEBF8 + ldr r0, _021E2C24 ; =0x000005DD + bl FUN_020054C8 + b _021E2C1A +_021E2C00: + mov r1, #1 + bl MOD16_021DEC14 + cmp r0, #0 + beq _021E2C1A + ldr r0, [r4, #8] + add r1, r6, #0 + mov r2, #1 + bl MOD16_021DEBF8 + ldr r0, _021E2C24 ; =0x000005DD + bl FUN_020054C8 +_021E2C1A: + mov r0, #0 + add r5, #0x88 + str r0, [r5] +_021E2C20: + pop {r4, r5, r6, pc} + nop +_021E2C24: .word 0x000005DD + thumb_func_end MOD16_021E2B84 + + thumb_func_start MOD16_021E2C28 +MOD16_021E2C28: ; 0x021E2C28 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x84 + ldr r0, [r0] + add r6, r1, #0 + mov r4, #0x64 + cmp r0, #0xe + bhi _021E2C9C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E2C44: ; jump table + .short _021E2C62 - _021E2C44 - 2 ; case 0 + .short _021E2C66 - _021E2C44 - 2 ; case 1 + .short _021E2C6A - _021E2C44 - 2 ; case 2 + .short _021E2C6E - _021E2C44 - 2 ; case 3 + .short _021E2C72 - _021E2C44 - 2 ; case 4 + .short _021E2C76 - _021E2C44 - 2 ; case 5 + .short _021E2C7A - _021E2C44 - 2 ; case 6 + .short _021E2C7E - _021E2C44 - 2 ; case 7 + .short _021E2C82 - _021E2C44 - 2 ; case 8 + .short _021E2C86 - _021E2C44 - 2 ; case 9 + .short _021E2C8A - _021E2C44 - 2 ; case 10 + .short _021E2C8E - _021E2C44 - 2 ; case 11 + .short _021E2C92 - _021E2C44 - 2 ; case 12 + .short _021E2C96 - _021E2C44 - 2 ; case 13 + .short _021E2C9A - _021E2C44 - 2 ; case 14 +_021E2C62: + mov r4, #0xd + b _021E2C9C +_021E2C66: + mov r4, #4 + b _021E2C9C +_021E2C6A: + mov r4, #0xc + b _021E2C9C +_021E2C6E: + mov r4, #9 + b _021E2C9C +_021E2C72: + mov r4, #8 + b _021E2C9C +_021E2C76: + mov r4, #3 + b _021E2C9C +_021E2C7A: + mov r4, #0xa + b _021E2C9C +_021E2C7E: + mov r4, #1 + b _021E2C9C +_021E2C82: + mov r4, #6 + b _021E2C9C +_021E2C86: + mov r4, #0xb + b _021E2C9C +_021E2C8A: + mov r4, #0xe + b _021E2C9C +_021E2C8E: + mov r4, #2 + b _021E2C9C +_021E2C92: + mov r4, #5 + b _021E2C9C +_021E2C96: + mov r4, #7 + b _021E2C9C +_021E2C9A: + mov r4, #0 +_021E2C9C: + cmp r4, #0x64 + beq _021E2CB8 + ldr r0, [r6, #8] + bl MOD16_021DEC38 + cmp r4, r0 + beq _021E2CB8 + ldr r0, _021E2CC0 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r6, #8] + add r1, r4, #0 + bl MOD16_021DEC24 +_021E2CB8: + ldr r0, _021E2CC4 ; =0x0000FFFF + add r5, #0x84 + str r0, [r5] + pop {r4, r5, r6, pc} + .align 2, 0 +_021E2CC0: .word 0x000005DD +_021E2CC4: .word 0x0000FFFF + thumb_func_end MOD16_021E2C28 + + thumb_func_start MOD16_021E2CC8 +MOD16_021E2CC8: ; 0x021E2CC8 + push {r3, r4, r5, lr} + mov r3, #0x4b + lsl r3, r3, #2 + ldr r2, [r0, r3] + cmp r2, #0 + bne _021E2CF4 + ldr r2, [r1, #4] + cmp r2, #0 + ble _021E2CF8 + str r2, [r0, r3] + mov r5, #0 + add r2, r3, #4 + str r5, [r0, r2] + add r2, r3, #0 + ldr r4, [r1, #8] + add r2, #8 + add r3, #8 + str r4, [r0, r2] + ldr r0, [r0, r3] + str r5, [r0] + str r5, [r1, #4] + pop {r3, r4, r5, pc} +_021E2CF4: + bl MOD16_021E2CFC +_021E2CF8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2CC8 + + thumb_func_start MOD16_021E2CFC +MOD16_021E2CFC: ; 0x021E2CFC + push {r4, lr} + sub sp, #8 + mov r3, #0x4b + add r4, r0, #0 + lsl r3, r3, #2 + ldr r1, [r4, r3] + cmp r1, #0 + beq _021E2DAE + add r0, r3, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021E2D1C + cmp r0, #1 + beq _021E2D6E + add sp, #8 + pop {r4, pc} +_021E2D1C: + cmp r1, #1 + bne _021E2D36 + mov r1, #0 + str r1, [sp] + mov r0, #2 + sub r3, #0x20 + str r0, [sp, #4] + add r0, r4, r3 + mov r2, #0x10 + add r3, r1, #0 + bl MOD16_021D8BD8 + b _021E2D4A +_021E2D36: + mov r2, #0 + str r2, [sp] + mov r0, #2 + sub r3, #0x20 + str r0, [sp, #4] + add r0, r4, r3 + mov r1, #0x10 + add r3, r2, #0 + bl MOD16_021D8BD8 +_021E2D4A: + mov r0, #0x43 + lsl r0, r0, #2 + ldr r3, [r4, r0] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021E2DB4 ; =0x04001050 + mov r1, #0 + mov r2, #4 + bl G2x_SetBlendAlpha_ + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_021E2D6E: + sub r3, #0x20 + add r0, r4, r3 + bl MOD16_021D8BF4 + mov r1, #0x43 + lsl r1, r1, #2 + ldr r3, [r4, r1] + mov r2, #0x10 + sub r2, r2, r3 + lsl r2, r2, #8 + orr r3, r2 + ldr r2, _021E2DB8 ; =0x04001052 + cmp r0, #1 + strh r3, [r2] + bne _021E2DAE + add r1, #0x20 + ldr r0, [r4, r1] + cmp r0, #1 + bne _021E2D9A + mov r1, #0 + sub r0, r2, #2 + strh r1, [r0] +_021E2D9A: + mov r1, #0x4d + lsl r1, r1, #2 + ldr r0, [r4, r1] + mov r2, #1 + str r2, [r0] + sub r0, r1, #4 + mov r2, #0 + str r2, [r4, r0] + sub r1, #8 + str r2, [r4, r1] +_021E2DAE: + add sp, #8 + pop {r4, pc} + nop +_021E2DB4: .word 0x04001050 +_021E2DB8: .word 0x04001052 + thumb_func_end MOD16_021E2CFC + + thumb_func_start MOD16_021E2DBC +MOD16_021E2DBC: ; 0x021E2DBC + push {r3, lr} + cmp r2, #2 + bne _021E2DD2 + cmp r3, #0 + bne _021E2DCC + bl MOD16_021E2E14 + pop {r3, pc} +_021E2DCC: + bl MOD16_021E2E44 + pop {r3, pc} +_021E2DD2: + bl MOD16_021E2DD8 + pop {r3, pc} + thumb_func_end MOD16_021E2DBC + + thumb_func_start MOD16_021E2DD8 +MOD16_021E2DD8: ; 0x021E2DD8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 +_021E2DE0: + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E2DEC + add r1, r4, #0 + bl FUN_02020398 +_021E2DEC: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2DFA + ldr r0, [r0] + add r1, r4, #0 + bl FUN_02011AF0 +_021E2DFA: + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + beq _021E2E0A + add r1, r4, #0 + bl FUN_02020398 +_021E2E0A: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0xf + blt _021E2DE0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E2DD8 + + thumb_func_start MOD16_021E2E14 +MOD16_021E2E14: ; 0x021E2E14 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021E2E1C: + cmp r4, #0xa + beq _021E2E3A + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E2E2C + add r1, r6, #0 + bl FUN_02020398 +_021E2E2C: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2E3A + ldr r0, [r0] + add r1, r6, #0 + bl FUN_02011AF0 +_021E2E3A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E2E1C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E2E14 + + thumb_func_start MOD16_021E2E44 +MOD16_021E2E44: ; 0x021E2E44 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_021E2E4C: + cmp r4, #9 + beq _021E2E6A + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021E2E5C + add r1, r6, #0 + bl FUN_02020398 +_021E2E5C: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _021E2E6A + ldr r0, [r0] + add r1, r6, #0 + bl FUN_02011AF0 +_021E2E6A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xf + blt _021E2E4C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E2E44 + + thumb_func_start MOD16_021E2E74 +MOD16_021E2E74: ; 0x021E2E74 + push {r3, r4, lr} + sub sp, #4 + add r4, r2, #0 + ldr r0, [r4, #8] + bl MOD16_021DEC5C + cmp r0, #4 + bne _021E2EC0 + ldr r0, [r4, #8] + bl MOD16_021DEC54 + cmp r0, #3 + bne _021E2EA4 + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + add sp, #4 + pop {r3, r4, pc} +_021E2EA4: + ldr r0, [r4, #8] + bl MOD16_021DEC54 + cmp r0, #1 + bne _021E2EC0 + mov r0, #2 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 +_021E2EC0: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021E2E74 + + thumb_func_start MOD16_021E2EC4 +MOD16_021E2EC4: ; 0x021E2EC4 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E2F64 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E2FA8 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E2FFC + str r0, [r5, #0x24] + ldr r0, _021E2F04 ; =MOD16_021E3000 + str r0, [r5, #8] + ldr r0, _021E2F08 ; =MOD16_021E3074 + str r0, [r5, #0xc] + ldr r0, _021E2F0C ; =MOD16_021E30B0 + str r0, [r5, #0x10] + ldr r0, _021E2F10 ; =MOD16_021E30E0 + str r0, [r5, #0x14] + ldr r0, _021E2F14 ; =MOD16_021E31E0 + str r0, [r5, #0x18] + ldr r0, _021E2F18 ; =MOD16_021E320C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E2F04: .word MOD16_021E3000 +_021E2F08: .word MOD16_021E3074 +_021E2F0C: .word MOD16_021E30B0 +_021E2F10: .word MOD16_021E30E0 +_021E2F14: .word MOD16_021E31E0 +_021E2F18: .word MOD16_021E320C + thumb_func_end MOD16_021E2EC4 + + thumb_func_start MOD16_021E2F1C +MOD16_021E2F1C: ; 0x021E2F1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E2FD4 + ldr r0, [r4, #4] + bl MOD16_021E2FE8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E2F1C + + thumb_func_start MOD16_021E2F30 +MOD16_021E2F30: ; 0x021E2F30 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E2F30 + + thumb_func_start MOD16_021E2F38 +MOD16_021E2F38: ; 0x021E2F38 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + cmp r5, #3 + blt _021E2F46 + bl ErrorHandling +_021E2F46: + str r5, [r4, #4] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2F38 + + thumb_func_start MOD16_021E2F4C +MOD16_021E2F4C: ; 0x021E2F4C + ldr r0, [r0, #4] + str r1, [r0, #4] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021E2F4C + + thumb_func_start MOD16_021E2F54 +MOD16_021E2F54: ; 0x021E2F54 + ldr r0, [r0, #4] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E2F54 + + thumb_func_start MOD16_021E2F5C +MOD16_021E2F5C: ; 0x021E2F5C + ldr r0, [r0, #4] + str r1, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E2F5C + + thumb_func_start MOD16_021E2F64 +MOD16_021E2F64: ; 0x021E2F64 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021E2F76 + bl ErrorHandling +_021E2F76: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E2F64 + + thumb_func_start MOD16_021E2FA8 +MOD16_021E2FA8: ; 0x021E2FA8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + bne _021E2FBA + bl ErrorHandling +_021E2FBA: + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021E2FC0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E2FC0 + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E2FA8 + + thumb_func_start MOD16_021E2FD4 +MOD16_021E2FD4: ; 0x021E2FD4 + push {r4, lr} + add r4, r0, #0 + bne _021E2FDE + bl ErrorHandling +_021E2FDE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E2FD4 + + thumb_func_start MOD16_021E2FE8 +MOD16_021E2FE8: ; 0x021E2FE8 + push {r4, lr} + add r4, r0, #0 + bne _021E2FF2 + bl ErrorHandling +_021E2FF2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E2FE8 + + thumb_func_start MOD16_021E2FFC +MOD16_021E2FFC: ; 0x021E2FFC + mov r0, #0 + bx lr + thumb_func_end MOD16_021E2FFC + + thumb_func_start MOD16_021E3000 +MOD16_021E3000: ; 0x021E3000 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #4] + add r5, r1, #0 + mov r1, #0x34 + bl FUN_02016998 + add r4, r0, #0 + bne _021E3016 + bl ErrorHandling +_021E3016: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x34 + bl Call_FillMemWithValue + str r4, [r6, #8] + ldr r1, [r5] + ldr r0, _021E3070 ; =0x00001744 + ldr r0, [r1, r0] + cmp r0, #0 + bne _021E3032 + mov r0, #0 + str r0, [r5, #4] + b _021E3042 +_021E3032: + sub r0, r0, #1 + cmp r0, #1 + bhi _021E303E + mov r0, #1 + str r0, [r5, #4] + b _021E3042 +_021E303E: + mov r0, #2 + str r0, [r5, #4] +_021E3042: + add r2, r4, #0 + ldr r0, [r6, #4] + add r1, r5, #0 + add r2, #0xc + bl MOD16_021E3E08 + str r0, [r4, #4] + add r2, r4, #0 + ldr r0, [r6, #4] + add r1, r5, #0 + add r2, #0x10 + bl MOD16_021E3E10 + str r0, [r4, #8] + ldr r2, [r6, #4] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E3FC4 + ldr r0, [r5, #4] + str r0, [r4] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E3070: .word 0x00001744 + thumb_func_end MOD16_021E3000 + + thumb_func_start MOD16_021E3074 +MOD16_021E3074: ; 0x021E3074 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r6, r1, #0 + ldr r4, [r5, #8] + cmp r0, #1 + bne _021E3086 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E3086: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021E3090 + mov r0, #0 + pop {r4, r5, r6, pc} +_021E3090: + ldr r1, [r4] + ldr r0, [r6, #4] + cmp r1, r0 + beq _021E30AC + add r0, r4, #0 + bl MOD16_021E4070 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E3FC4 + ldr r0, [r6, #4] + str r0, [r4] +_021E30AC: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3074 + + thumb_func_start MOD16_021E30B0 +MOD16_021E30B0: ; 0x021E30B0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #8] + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E30C0 + bl FUN_02016A18 +_021E30C0: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E30CA + bl FUN_02016A18 +_021E30CA: + add r0, r5, #0 + bl MOD16_021E4070 + add r0, r5, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E30B0 + + thumb_func_start MOD16_021E30E0 +MOD16_021E30E0: ; 0x021E30E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r3, #8] + add r4, r1, #0 + str r0, [sp, #4] + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E31CE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E3102: ; jump table + .short _021E310A - _021E3102 - 2 ; case 0 + .short _021E3142 - _021E3102 - 2 ; case 1 + .short _021E319A - _021E3102 - 2 ; case 2 + .short _021E31C2 - _021E3102 - 2 ; case 3 +_021E310A: + ldr r0, [r4, #4] + ldr r1, _021E31D4 ; =0x00000844 + bl FUN_02016998 + ldr r2, _021E31D4 ; =0x00000844 + str r0, [r4, #8] + mov r1, #0 + bl Call_FillMemWithValue + ldr r5, [r4, #8] + ldr r0, [r7, #4] + mov r1, #0 + str r0, [r5] + ldr r0, [r4, #4] + bl MOD16_021DBDE4 + ldr r1, _021E31D8 ; =0x00000804 + str r0, [r5, r1] + ldr r0, [r4, #4] + mov r1, #0 + bl MOD16_021DBE0C + ldr r1, _021E31DC ; =0x00000808 + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E31CE +_021E3142: + ldr r0, [r4, #4] + ldr r3, [sp, #4] + str r0, [sp] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E32D8 + ldr r0, [r4, #8] + ldr r2, [sp, #4] + ldr r3, [r4, #4] + add r1, r7, #0 + bl MOD16_021E3C18 + ldr r0, [r4, #8] + ldr r1, [sp, #4] + bl MOD16_021E3EF0 + add r0, r6, #0 + bl MOD16_021E4094 + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E3E6C + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021E3186 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E3998 + b _021E3192 +_021E3186: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E3A5C +_021E3192: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E31CE +_021E319A: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021E31AC + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E3A10 + b _021E31B6 +_021E31AC: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E3AEC +_021E31B6: + cmp r0, #0 + beq _021E31CE + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E31CE +_021E31C2: + add r0, r6, #0 + bl MOD16_021E40D4 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E31CE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E31D4: .word 0x00000844 +_021E31D8: .word 0x00000804 +_021E31DC: .word 0x00000808 + thumb_func_end MOD16_021E30E0 + + thumb_func_start MOD16_021E31E0 +MOD16_021E31E0: ; 0x021E31E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #8] + add r7, r2, #0 + ldr r4, [r3, #8] + str r0, [sp, #4] + bl MOD16_021E411C + ldr r0, [r5, #4] + add r1, r6, #0 + str r0, [sp] + ldr r0, [sp, #4] + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021E3F88 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E31E0 + + thumb_func_start MOD16_021E320C +MOD16_021E320C: ; 0x021E320C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E32CC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E3228: ; jump table + .short _021E3232 - _021E3228 - 2 ; case 0 + .short _021E3260 - _021E3228 - 2 ; case 1 + .short _021E3288 - _021E3228 - 2 ; case 2 + .short _021E329E - _021E3228 - 2 ; case 3 + .short _021E32C8 - _021E3228 - 2 ; case 4 +_021E3232: + add r0, r5, #0 + bl MOD16_021E4094 + ldr r0, [r6, #0xc] + cmp r0, #0 + bne _021E324C + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E3998 + b _021E3258 +_021E324C: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E3A5C +_021E3258: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E3260: + ldr r0, [r6, #0xc] + cmp r0, #0 + bne _021E3272 + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021E3A10 + b _021E327C +_021E3272: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021E3AEC +_021E327C: + cmp r0, #0 + beq _021E32CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E3288: + add r0, r5, #0 + bl MOD16_021E3DBC + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E3328 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E329E: + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, _021E32D0 ; =0x00000804 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, _021E32D4 ; =0x00000808 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E32CC +_021E32C8: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E32CC: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E32D0: .word 0x00000804 +_021E32D4: .word 0x00000808 + thumb_func_end MOD16_021E320C + + thumb_func_start MOD16_021E32D8 +MOD16_021E32D8: ; 0x021E32D8 + push {r3, r4, r5, r6, r7, lr} + ldr r6, [sp, #0x18] + add r7, r2, #0 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021E3348 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E3B70 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E34D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E36B0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD16_021E37E8 + ldr r1, [r7, #4] + add r0, r5, #0 + bl MOD16_021E3F50 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021E41FC + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E32D8 + + thumb_func_start MOD16_021E3328 +MOD16_021E3328: ; 0x021E3328 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E3BC8 + add r0, r5, #0 + bl MOD16_021E3904 + add r0, r5, #0 + bl MOD16_021E37C0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E361C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E3328 + + thumb_func_start MOD16_021E3348 +MOD16_021E3348: ; 0x021E3348 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r4, r2, #0 + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x40 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r7, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 + ldr r1, [r6] + ldr r0, _021E34C0 ; =0x00001764 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E33E6 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x41 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r7, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xd + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 +_021E33E6: + ldr r1, [r6] + ldr r0, _021E34C4 ; =0x0000176C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E342A + str r4, [sp] + ldr r0, [r5] + mov r1, #0x42 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r7, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #7 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0x1c + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 +_021E342A: + ldr r1, [r6] + ldr r0, _021E34C8 ; =0x00001760 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E346E + str r4, [sp] + ldr r0, [r5] + mov r1, #0x43 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r7, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xb + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r7, #0 + bl FUN_02016A18 +_021E346E: + ldr r1, [r6] + ldr r0, _021E34CC ; =0x00001768 + ldr r0, [r1, r0] + cmp r0, #0 + beq _021E34B2 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x44 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0x19 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 +_021E34B2: + ldr r0, [r5] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E34C0: .word 0x00001764 +_021E34C4: .word 0x0000176C +_021E34C8: .word 0x00001760 +_021E34CC: .word 0x00001768 + thumb_func_end MOD16_021E3348 + + thumb_func_start MOD16_021E34D0 +MOD16_021E34D0: ; 0x021E34D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E3600 ; =0x000017DC + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x6c + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xb4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E3604 ; =0x000017DA + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x6a + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + ldr r0, _021E3608 ; =0x000017DB + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x6b + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + ldr r0, _021E360C ; =0x000017CD + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5d + bl FUN_020091E0 + add r1, r5, #0 + add r1, #0xd0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02009B04 + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E3610 ; =0x0000177E + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xe + mov r3, #0 + bl FUN_02009298 + add r1, r5, #0 + add r1, #0xd4 + str r0, [r1] + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02009D68 + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02009474 + ldr r0, _021E3614 ; =0x000017CB + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5b + mov r3, #1 + bl FUN_02009358 + add r1, r5, #0 + add r1, #0xd8 + str r0, [r1] + ldr r0, _021E3618 ; =0x000017CC + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5c + mov r3, #1 + bl FUN_02009358 + add r5, #0xdc + str r0, [r5] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E3600: .word 0x000017DC +_021E3604: .word 0x000017DA +_021E3608: .word 0x000017DB +_021E360C: .word 0x000017CD +_021E3610: .word 0x0000177E +_021E3614: .word 0x000017CB +_021E3618: .word 0x000017CC + thumb_func_end MOD16_021E34D0 + + thumb_func_start MOD16_021E361C +MOD16_021E361C: ; 0x021E361C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xb4 + ldr r0, [r0] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xb4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xbc + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x53 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xc0 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + add r0, r5, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_02009C0C + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02009E04 + mov r0, #5 + add r1, r5, #0 + lsl r0, r0, #6 + add r1, #0xd0 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x51 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xd4 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x52 + add r1, r5, #0 + lsl r0, r0, #2 + add r1, #0xd8 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + add r5, #0xdc + ldr r0, [r4, r0] + ldr r1, [r5] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E361C + + thumb_func_start MOD16_021E36B0 +MOD16_021E36B0: ; 0x021E36B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E37B8 ; =0x000017CC + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x4e + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #0xa + lsl r0, r0, #0x10 + str r0, [sp, #0x34] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + add r1, r5, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #2 + bl FUN_02020130 + ldr r3, _021E37BC ; =0x000017DB + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x5d + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r4, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + str r6, [sp, #0x48] + str r4, [sp, #0x34] + str r4, [sp, #0x38] + add r6, sp, #0x2c + add r7, r4, #0 +_021E3796: + add r0, r6, #0 + bl FUN_0201FF84 + str r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_02020398 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x2c + blt _021E3796 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E37B8: .word 0x000017CC +_021E37BC: .word 0x000017DB + thumb_func_end MOD16_021E36B0 + + thumb_func_start MOD16_021E37C0 +MOD16_021E37C0: ; 0x021E37C0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl FUN_0201FFC8 + add r0, r5, #0 + mov r4, #0 + add r0, #0xc8 + str r4, [r0] + add r6, r4, #0 +_021E37D6: + ldr r0, [r5, #4] + bl FUN_0201FFC8 + str r6, [r5, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x2c + blt _021E37D6 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E37C0 + + thumb_func_start MOD16_021E37E8 +MOD16_021E37E8: ; 0x021E37E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r0, #0xc8 + add r4, r1, #0 + ldr r0, [r0] + add r6, r3, #0 + ldr r7, [r4] + cmp r0, #0 + bne _021E3800 + bl ErrorHandling +_021E3800: + mov r0, #0x51 + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, _021E38FC ; =0x0000177E + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r7, r1] + str r1, [sp, #0xc] + mov r1, #0 + bl FUN_02009E54 + mov r1, #1 + mov r2, #0x1e + str r0, [sp, #0x14] + str r1, [sp, #0x24] + str r2, [sp, #0x28] + str r1, [sp, #0x2c] + str r6, [sp, #0x30] + bl FUN_0201E28C + str r0, [sp, #8] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #0x10 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + ldr r2, _021E3900 ; =0x00000266 + add r1, r4, #0 + mov r3, #0x23 + bl MOD16_021DB3C8 + add r1, r5, #0 + lsr r0, r0, #1 + str r4, [sp, #0x10] + add r1, #0xc8 + ldr r1, [r1] + neg r0, r0 + str r0, [sp, #0x1c] + mov r0, #7 + mvn r0, r0 + str r0, [sp, #0x20] + add r0, sp, #0xc + str r1, [sp, #0x18] + bl MOD16_021DB2BC + add r1, r5, #0 + add r1, #0xcc + str r0, [r1] + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + ldr r1, [sp, #8] + ldr r0, [r0] + add r1, r1, #2 + bl FUN_02011A60 + add r0, r4, #0 + bl MOD16_021DB3BC + mov r6, #0 +_021E3890: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #9 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + add r3, r6, #0 + ldr r0, [r7, r0] + ldr r2, _021E3900 ; =0x00000266 + add r1, r4, #0 + add r3, #0x24 + bl MOD16_021DB3C8 + mov r1, #0 + str r1, [sp, #0x18] + mov r1, #0x48 + sub r0, r1, r0 + lsr r0, r0, #1 + add r0, #8 + str r0, [sp, #0x1c] + mov r0, #0x20 + str r0, [sp, #0x20] + add r0, sp, #0xc + str r4, [sp, #0x10] + bl MOD16_021DB2BC + add r1, r5, #0 + add r1, #0xe0 + str r0, [r1] + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + ldr r1, [sp, #8] + ldr r0, [r0] + add r1, r1, #2 + bl FUN_02011A60 + add r0, r4, #0 + bl MOD16_021DB3BC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021E3890 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021E38FC: .word 0x0000177E +_021E3900: .word 0x00000266 + thumb_func_end MOD16_021E37E8 + + thumb_func_start MOD16_021E3904 +MOD16_021E3904: ; 0x021E3904 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xcc + ldr r0, [r0] + bl MOD16_021DB338 + mov r4, #0 +_021E3912: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3912 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E3904 + + thumb_func_start MOD16_021E3928 +MOD16_021E3928: ; 0x021E3928 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #1 + bl FUN_02020398 + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + mov r4, #0 + mov r6, #1 +_021E3948: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3948 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3928 + + thumb_func_start MOD16_021E3960 +MOD16_021E3960: ; 0x021E3960 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + bl FUN_02020398 + add r0, r5, #0 + add r0, #0xcc + ldr r0, [r0] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + mov r4, #0 + add r6, r4, #0 +_021E3980: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3980 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3960 + + thumb_func_start MOD16_021E3998 +MOD16_021E3998: ; 0x021E3998 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E3928 + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E39FE + cmp r6, #0 + beq _021E39DA + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E39FE +_021E39DA: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E39FE: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E3998 + + thumb_func_start MOD16_021E3A10 +MOD16_021E3A10: ; 0x021E3A10 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E3A30 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E3A3A +_021E3A30: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E3A3A: + cmp r0, #0 + beq _021E3A4C + cmp r4, #0 + beq _021E3A48 + add r0, r6, #0 + bl MOD16_021E3960 +_021E3A48: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E3A4C: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E3A10 + + thumb_func_start MOD16_021E3A5C +MOD16_021E3A5C: ; 0x021E3A5C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + add r4, r3, #0 + bl MOD16_021E3928 + cmp r4, #0 + bne _021E3A86 + ldr r0, [r5, #8] + mov r1, #0x28 + str r0, [sp] + ldr r0, [r5, #0x10] + mov r3, #0x78 + str r0, [sp, #4] + ldr r0, _021E3AE8 ; =0x00000814 + ldr r2, [r5, #4] + add r0, r6, r0 + bl MOD16_021D8BD8 +_021E3A86: + ldr r0, [r7, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E3AE4 + cmp r4, #0 + beq _021E3ABE + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r2, #0x2f + str r2, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r2, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E3ABE: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r3, #0x2f + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r3, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 +_021E3AE4: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E3AE8: .word 0x00000814 + thumb_func_end MOD16_021E3A5C + + thumb_func_start MOD16_021E3AEC +MOD16_021E3AEC: ; 0x021E3AEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021E3B14 + ldr r0, _021E3B6C ; =0x00000814 + add r0, r5, r0 + bl MOD16_021D8BF4 + str r0, [sp] + ldr r2, _021E3B6C ; =0x00000814 + ldr r0, [r4] + ldr r1, [r5, r2] + add r2, r2, #4 + ldr r2, [r5, r2] + bl MOD16_021D86F4 + b _021E3B18 +_021E3B14: + mov r0, #1 + str r0, [sp] +_021E3B18: + ldr r0, [r6, #8] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021E3B32 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021E3B3E +_021E3B32: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021E3B3E: + mov r1, #0 + add r2, sp, #0 +_021E3B42: + ldr r0, [r2] + cmp r0, #0 + beq _021E3B50 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021E3B42 +_021E3B50: + cmp r1, #2 + bne _021E3B64 + cmp r7, #1 + bne _021E3B5E + add r0, r5, #0 + bl MOD16_021E3960 +_021E3B5E: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E3B64: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E3B6C: .word 0x00000814 + thumb_func_end MOD16_021E3AEC + + thumb_func_start MOD16_021E3B70 +MOD16_021E3B70: ; 0x021E3B70 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + add r0, r0, #4 + mov r1, #0 + bl FUN_02019620 + str r6, [sp] + ldr r3, _021E3BBC ; =0x000007F8 + ldr r0, [r4] + mov r1, #0x1e + mov r2, #1 + add r3, r5, r3 + bl MOD16_021D8D98 + ldr r1, _021E3BC0 ; =0x000007F4 + mov r2, #1 + str r0, [r5, r1] + str r6, [sp] + lsl r3, r2, #0xb + ldr r0, [r4] + mov r1, #0x1f + add r3, r5, r3 + bl MOD16_021D8D98 + ldr r1, _021E3BC4 ; =0x000007FC + str r0, [r5, r1] + ldr r0, [r4] + mov r1, #8 + add r0, r0, #4 + bl FUN_0201AB24 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021E3BBC: .word 0x000007F8 +_021E3BC0: .word 0x000007F4 +_021E3BC4: .word 0x000007FC + thumb_func_end MOD16_021E3B70 + + thumb_func_start MOD16_021E3BC8 +MOD16_021E3BC8: ; 0x021E3BC8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, _021E3C10 ; =0x000007F4 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r1, _021E3C10 ; =0x000007F4 + mov r2, #0 + str r2, [r5, r1] + add r0, r1, #4 + add r1, #8 + str r2, [r5, r0] + ldr r0, [r5, r1] + bl FUN_02016A18 + ldr r0, _021E3C14 ; =0x000007FC + mov r1, #0 + str r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + ldr r0, [r4] + add r0, r0, #4 + bl FUN_0201AB24 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3C10: .word 0x000007F4 +_021E3C14: .word 0x000007FC + thumb_func_end MOD16_021E3BC8 + + thumb_func_start MOD16_021E3C18 +MOD16_021E3C18: ; 0x021E3C18 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r2, #0 + add r6, r0, #0 + str r1, [sp, #0x28] + str r3, [sp, #0x2c] + bl MOD16_021E3DBC + add r0, r4, #0 + add r0, #0x1c + str r0, [sp] + ldr r0, [r4, #4] + mov r1, #0x1e + str r0, [sp, #4] + ldr r0, [r4, #0xc] + ldr r3, _021E3DAC ; =0x00000808 + str r0, [sp, #8] + add r0, r6, #0 + ldr r3, [r6, r3] + add r0, #0xec + add r2, r1, #0 + bl MOD16_021DBEC4 + ldr r1, _021E3DB0 ; =0x00000838 + str r0, [r6, r1] + ldr r0, [r4, #0x20] + sub r1, r0, #1 + ldr r0, [r4, #0xc] + add r7, r1, r0 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl FUN_020169D8 + add r5, r0, #0 + mov r1, #0 + cmp r7, #0 + ble _021E3C7E +_021E3C62: + ldr r2, [r4, #0xc] + cmp r1, r2 + bhs _021E3C6E + ldr r0, [r4, #4] + ldrb r0, [r0, r1] + b _021E3C76 +_021E3C6E: + sub r2, r1, r2 + ldr r0, [r4, #0x1c] + lsl r2, r2, #2 + ldr r0, [r0, r2] +_021E3C76: + strb r0, [r5, r1] + add r1, r1, #1 + cmp r1, r7 + blt _021E3C62 +_021E3C7E: + add r0, r4, #0 + add r0, #0x2c + str r0, [sp] + str r5, [sp, #4] + mov r0, #0x47 + lsl r0, r0, #4 + mov r1, #0x1e + ldr r3, _021E3DAC ; =0x00000808 + str r7, [sp, #8] + ldr r3, [r6, r3] + add r0, r6, r0 + add r2, r1, #0 + bl MOD16_021DBEC4 + mov r1, #0x21 + lsl r1, r1, #6 + str r0, [r6, r1] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + mov r1, #0x1e + add r0, #0xec + add r2, r1, #0 + bl MOD16_021DB7C0 + mov r0, #0x47 + lsl r0, r0, #4 + mov r1, #0x1e + add r0, r6, r0 + add r2, r1, #0 + bl MOD16_021DB7C0 + ldr r0, [sp, #0x28] + ldr r0, [r0] + bl MOD16_021D9DE8 + ldr r1, _021E3DB4 ; =0x0000015D + cmp r0, r1 + bne _021E3CDE + mov r1, #5 + str r1, [sp, #0x38] + mov r1, #0x5c + str r1, [sp, #0x34] + mov r1, #0xe + mov r0, #4 + str r1, [sp, #0x30] + b _021E3CEC +_021E3CDE: + mov r1, #1 + str r1, [sp, #0x38] + mov r1, #0x5c + str r1, [sp, #0x34] + mov r1, #0x20 + mov r0, #0 + str r1, [sp, #0x30] +_021E3CEC: + add r1, r6, #0 + mov r2, #0 + add r1, #0xc4 + str r2, [r1] + ldr r1, [sp, #0x30] + ldr r3, [sp, #0x34] + str r1, [sp] + mov r1, #5 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r1, _021E3DB8 ; =0x00000804 + ldr r2, [r6, r1] + add r1, #0x30 + str r2, [sp, #0xc] + add r2, r4, #0 + add r2, #0x14 + str r2, [sp, #0x10] + mov r2, #2 + str r2, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #8] + mov r2, #0x2c + str r0, [sp, #0x1c] + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + add r0, r6, r1 + add r1, r6, #0 + str r0, [sp, #0x24] + add r1, #0xc4 + ldr r1, [r1] + add r0, r6, #4 + bl MOD16_021DBF9C + add r1, r6, #0 + add r1, #0xc4 + str r0, [r1] + ldr r0, [r4, #0x18] + sub r1, r0, #1 + ldr r0, [r4, #0x10] + add r7, r1, r0 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl FUN_020169D8 + add r5, r0, #0 + mov r1, #0 + cmp r7, #0 + ble _021E3D68 +_021E3D4C: + ldr r2, [r4, #0x10] + cmp r1, r2 + bhs _021E3D58 + ldr r0, [r4, #8] + ldrb r0, [r0, r1] + b _021E3D60 +_021E3D58: + sub r2, r1, r2 + ldr r0, [r4, #0x14] + lsl r2, r2, #2 + ldr r0, [r0, r2] +_021E3D60: + strb r0, [r5, r1] + add r1, r1, #1 + cmp r1, r7 + blt _021E3D4C +_021E3D68: + ldr r0, [sp, #0x30] + ldr r1, _021E3DB8 ; =0x00000804 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r6, r1] + add r4, #0x24 + str r0, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x38] + add r1, #0x38 + str r0, [sp, #0x18] + str r5, [sp, #0x1c] + add r0, r6, r1 + str r7, [sp, #0x20] + add r1, r6, #0 + str r0, [sp, #0x24] + add r1, #0xc4 + ldr r1, [r1] + ldr r3, [sp, #0x34] + add r0, r6, #4 + mov r2, #0x2c + bl MOD16_021DBF9C + add r6, #0xc4 + str r0, [r6] + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E3DAC: .word 0x00000808 +_021E3DB0: .word 0x00000838 +_021E3DB4: .word 0x0000015D +_021E3DB8: .word 0x00000804 + thumb_func_end MOD16_021E3C18 + + thumb_func_start MOD16_021E3DBC +MOD16_021E3DBC: ; 0x021E3DBC + push {r3, r4, r5, r6, r7, lr} + mov r2, #0xe1 + add r6, r0, #0 + add r0, #0xec + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + mov r2, #0x47 + lsl r2, r2, #4 + add r0, r6, r2 + mov r1, #0 + sub r2, #0xec + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E3E00 + add r5, r6, #0 + add r7, r4, #0 +_021E3DEA: + ldr r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E3DEA +_021E3E00: + mov r0, #0 + add r6, #0xc4 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E3DBC + + thumb_func_start MOD16_021E3E08 +MOD16_021E3E08: ; 0x021E3E08 + mov r0, #0 + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E3E08 + + thumb_func_start MOD16_021E3E10 +MOD16_021E3E10: ; 0x021E3E10 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + ldr r2, [r5] + ldr r1, _021E3E60 ; =0x00001768 + mov r4, #0 + ldr r1, [r2, r1] + cmp r1, #0 + bne _021E3E30 + ldr r3, _021E3E64 ; =0x021FF5D6 + ldr r1, _021E3E68 ; =0x0000FFFF +_021E3E26: + add r3, r3, #2 + ldrh r2, [r3] + add r4, r4, #1 + cmp r2, r1 + bne _021E3E26 +_021E3E30: + cmp r4, #0 + beq _021E3E3C + add r1, r4, #0 + bl FUN_02016998 + b _021E3E3E +_021E3E3C: + mov r0, #0 +_021E3E3E: + str r4, [r6] + ldr r3, [r5] + ldr r2, _021E3E60 ; =0x00001768 + mov r1, #0 + ldr r2, [r3, r2] + cmp r2, #0 + bne _021E3E5E + ldr r4, _021E3E64 ; =0x021FF5D6 + ldr r2, _021E3E68 ; =0x0000FFFF +_021E3E50: + ldrh r3, [r4] + add r4, r4, #2 + strb r3, [r0, r1] + ldrh r3, [r4] + add r1, r1, #1 + cmp r3, r2 + bne _021E3E50 +_021E3E5E: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E3E60: .word 0x00001768 +_021E3E64: .word 0x021FF5D6 +_021E3E68: .word 0x0000FFFF + thumb_func_end MOD16_021E3E10 + + thumb_func_start MOD16_021E3E6C +MOD16_021E3E6C: ; 0x021E3E6C + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + mov r0, #2 + lsl r0, r0, #0xa + ldr r3, [r5, r0] + mov r0, #5 + str r0, [sp] + mov r0, #0x47 + lsl r0, r0, #4 + add r0, r5, r0 + str r0, [sp, #4] + mov r1, #0x1e + str r1, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x59 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldrh r2, [r3, #2] + ldr r1, [r3, #0x14] + ldrh r3, [r3] + ldr r0, [r4] + lsl r2, r2, #0x13 + lsl r3, r3, #0x13 + add r0, r0, #4 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD16_021DB728 + ldr r0, _021E3EEC ; =0x000007F8 + mov r1, #0x1e + ldr r3, [r5, r0] + mov r0, #5 + str r0, [sp] + add r5, #0xec + str r5, [sp, #4] + str r1, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0x59 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldrh r2, [r3, #2] + ldr r1, [r3, #0x14] + ldrh r3, [r3] + ldr r0, [r4] + lsl r2, r2, #0x13 + lsl r3, r3, #0x13 + add r0, r0, #4 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD16_021DB728 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_020191D0 + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E3EEC: .word 0x000007F8 + thumb_func_end MOD16_021E3E6C + + thumb_func_start MOD16_021E3EF0 +MOD16_021E3EF0: ; 0x021E3EF0 + push {r4, lr} + ldr r1, _021E3F4C ; =0x00000834 + add r4, r0, #0 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021E3F30 + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021E3F30 + add r0, r1, #0 + add r0, #8 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021E3F30 + add r1, #0xc + ldr r0, [r4, r1] + cmp r0, #0 + bne _021E3F30 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #1 + bl FUN_020200A0 + add r4, #0xcc + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} +_021E3F30: + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + bl FUN_020200A0 + add r4, #0xcc + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} + nop +_021E3F4C: .word 0x00000834 + thumb_func_end MOD16_021E3EF0 + + thumb_func_start MOD16_021E3F50 +MOD16_021E3F50: ; 0x021E3F50 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + mov r7, #1 +_021E3F5A: + cmp r4, r6 + bne _021E3F6E + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_020119D0 + b _021E3F7C +_021E3F6E: + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 +_021E3F7C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E3F5A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E3F50 + + thumb_func_start MOD16_021E3F88 +MOD16_021E3F88: ; 0x021E3F88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r2, #0 + add r4, r3, #0 + add r7, r1, #0 + ldr r2, [r5] + ldr r1, [r4] + cmp r2, r1 + beq _021E3FC0 + ldr r3, [sp, #0x18] + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E3C18 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021E3E6C + ldr r1, [r6, #4] + add r0, r5, #0 + bl MOD16_021E3F50 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E3EF0 + ldr r0, [r4] + str r0, [r5] +_021E3FC0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E3F88 + + thumb_func_start MOD16_021E3FC4 +MOD16_021E3FC4: ; 0x021E3FC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E3FE6 + cmp r0, #1 + beq _021E3FF0 + cmp r0, #2 + beq _021E3FFA + b _021E4004 +_021E3FE6: + mov r0, #0 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp] + b _021E4008 +_021E3FF0: + mov r0, #1 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp] + b _021E4008 +_021E3FFA: + mov r0, #2 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp] + b _021E4008 +_021E4004: + bl ErrorHandling +_021E4008: + add r0, r5, #0 + ldr r2, [sp, #4] + add r0, #0x14 + add r1, r7, #0 + add r3, r6, #0 + bl MOD16_021DBD30 + add r0, r5, #0 + ldr r2, [sp] + add r0, #0x1c + add r1, r7, #0 + add r3, r6, #0 + bl MOD16_021DBD30 + ldr r0, [r4] + bl MOD16_021D9A54 + cmp r0, #0 + bne _021E404E + add r0, r5, #0 + add r0, #0x24 + add r1, r7, #0 + mov r2, #3 + add r3, r6, #0 + bl MOD16_021DBD30 + add r5, #0x2c + add r0, r5, #0 + add r1, r7, #0 + mov r2, #8 + add r3, r6, #0 + bl MOD16_021DBD30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_021E404E: + add r0, r5, #0 + add r0, #0x24 + add r1, r7, #0 + mov r2, #4 + add r3, r6, #0 + bl MOD16_021DBD30 + add r5, #0x2c + add r0, r5, #0 + add r1, r7, #0 + mov r2, #9 + add r3, r6, #0 + bl MOD16_021DBD30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E3FC4 + + thumb_func_start MOD16_021E4070 +MOD16_021E4070: ; 0x021E4070 + push {r4, lr} + add r4, r0, #0 + add r0, #0x14 + bl MOD16_021DBDC0 + add r0, r4, #0 + add r0, #0x1c + bl MOD16_021DBDC0 + add r0, r4, #0 + add r0, #0x24 + bl MOD16_021DBDC0 + add r4, #0x2c + add r0, r4, #0 + bl MOD16_021DBDC0 + pop {r4, pc} + thumb_func_end MOD16_021E4070 + + thumb_func_start MOD16_021E4094 +MOD16_021E4094: ; 0x021E4094 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _021E40D0 ; =0x0000080C + mov r1, #0 + str r1, [r6, r0] + add r0, r0, #4 + str r1, [r6, r0] + mov r0, #2 + bl FUN_0201E6E4 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E40CE + add r5, r6, #0 + add r7, r4, #0 +_021E40B8: + ldr r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E40B8 +_021E40CE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E40D0: .word 0x0000080C + thumb_func_end MOD16_021E4094 + + thumb_func_start MOD16_021E40D4 +MOD16_021E40D4: ; 0x021E40D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x10 + str r0, [sp] + ldr r0, _021E4118 ; =0x04000050 + mov r1, #0xa + mov r2, #8 + mov r3, #0 + bl G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E4116 + add r5, r6, #0 + add r7, r4, #0 +_021E4100: + ldr r0, [r5, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E4100 +_021E4116: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4118: .word 0x04000050 + thumb_func_end MOD16_021E40D4 + + thumb_func_start MOD16_021E411C +MOD16_021E411C: ; 0x021E411C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021E41F4 ; =0x0000080C + ldr r1, [r5, r0] + cmp r1, #0x20 + blt _021E4172 + mov r4, #0 + str r4, [r5, r0] + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E4162 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + ble _021E4158 + add r6, r5, #0 + mov r7, #1 +_021E4142: + ldr r0, [r6, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, r0 + blt _021E4142 +_021E4158: + mov r0, #0x81 + mov r1, #1 + lsl r0, r0, #4 + str r1, [r5, r0] + b _021E4172 +_021E4162: + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x81 + add r1, r4, #0 + lsl r0, r0, #4 + str r1, [r5, r0] +_021E4172: + ldr r0, _021E41F4 ; =0x0000080C + ldr r1, [r5, r0] + cmp r1, #0x10 + blt _021E417E + mov r0, #0x20 + sub r1, r0, r1 +_021E417E: + lsl r2, r1, #0xc + asr r1, r2, #0x1f + lsr r0, r2, #0x10 + lsl r3, r1, #0x10 + mov r1, #2 + orr r3, r0 + lsl r2, r2, #0x10 + mov r0, #0 + lsl r1, r1, #0xa + add r4, r2, r1 + adc r3, r0 + lsl r2, r3, #0x14 + lsr r0, r4, #0xc + orr r0, r2 + lsl r1, r1, #5 + bl FX_Div + asr r1, r0, #0xc + mov r0, #1 + lsl r0, r0, #0xc + orr r1, r0 + ldr r0, _021E41F8 ; =0x04000052 + strh r1, [r0] + ldr r0, _021E41F4 ; =0x0000080C + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + ldr r1, [r5, r0] + cmp r1, #0x20 + blt _021E41F2 + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021E41CC + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + pop {r3, r4, r5, r6, r7, pc} +_021E41CC: + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021E41F2 + add r6, r5, #0 + add r7, r4, #0 +_021E41DC: + ldr r0, [r6, #4] + add r1, r7, #0 + bl FUN_020200A0 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, r0 + blt _021E41DC +_021E41F2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E41F4: .word 0x0000080C +_021E41F8: .word 0x04000052 + thumb_func_end MOD16_021E411C + + thumb_func_start MOD16_021E41FC +MOD16_021E41FC: ; 0x021E41FC + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x28 + str r0, [sp] + mov r0, #0x78 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E41FC + + thumb_func_start MOD16_021E4234 +MOD16_021E4234: ; 0x021E4234 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E42AC + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E42E8 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E4310 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E4340 + str r0, [r5, #0x24] + ldr r0, _021E427C ; =MOD16_021E4344 + str r0, [r5, #8] + ldr r0, _021E4280 ; =MOD16_021E437C + str r0, [r5, #0xc] + ldr r0, _021E4284 ; =MOD16_021E43AC + str r0, [r5, #0x10] + ldr r0, _021E4288 ; =MOD16_021E43C0 + str r0, [r5, #0x14] + ldr r0, _021E428C ; =MOD16_021E4478 + str r0, [r5, #0x18] + ldr r0, _021E4290 ; =MOD16_021E44AC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E427C: .word MOD16_021E4344 +_021E4280: .word MOD16_021E437C +_021E4284: .word MOD16_021E43AC +_021E4288: .word MOD16_021E43C0 +_021E428C: .word MOD16_021E4478 +_021E4290: .word MOD16_021E44AC + thumb_func_end MOD16_021E4234 + + thumb_func_start MOD16_021E4294 +MOD16_021E4294: ; 0x021E4294 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E4314 + ldr r0, [r4, #4] + bl MOD16_021E4328 + ldr r0, [r4, #0x20] + bl MOD16_021E433C + pop {r4, pc} + thumb_func_end MOD16_021E4294 + + thumb_func_start MOD16_021E42AC +MOD16_021E42AC: ; 0x021E42AC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + bne _021E42BE + bl ErrorHandling +_021E42BE: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r5, #0 + mov r1, #6 + bl MOD16_021D7B5C + str r0, [r4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E42AC + + thumb_func_start MOD16_021E42E8 +MOD16_021E42E8: ; 0x021E42E8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E42FA + bl ErrorHandling +_021E42FA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E42E8 + + thumb_func_start MOD16_021E4310 +MOD16_021E4310: ; 0x021E4310 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4310 + + thumb_func_start MOD16_021E4314 +MOD16_021E4314: ; 0x021E4314 + push {r4, lr} + add r4, r0, #0 + bne _021E431E + bl ErrorHandling +_021E431E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4314 + + thumb_func_start MOD16_021E4328 +MOD16_021E4328: ; 0x021E4328 + push {r4, lr} + add r4, r0, #0 + bne _021E4332 + bl ErrorHandling +_021E4332: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4328 + + thumb_func_start MOD16_021E433C +MOD16_021E433C: ; 0x021E433C + bx lr + .align 2, 0 + thumb_func_end MOD16_021E433C + + thumb_func_start MOD16_021E4340 +MOD16_021E4340: ; 0x021E4340 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4340 + + thumb_func_start MOD16_021E4344 +MOD16_021E4344: ; 0x021E4344 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x28 + bl FUN_02016998 + add r4, r0, #0 + bne _021E435A + bl ErrorHandling +_021E435A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x28 + bl Call_FillMemWithValue + str r4, [r5, #8] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E4A88 + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E47E4 + mov r0, #1 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E4344 + + thumb_func_start MOD16_021E437C +MOD16_021E437C: ; 0x021E437C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021E438C + mov r0, #1 + pop {r3, r4, r5, pc} +_021E438C: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021E4396 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4396: + ldr r0, [r5, #4] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021E43A8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E482C +_021E43A8: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E437C + + thumb_func_start MOD16_021E43AC +MOD16_021E43AC: ; 0x021E43AC + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021E4968 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021E43AC + + thumb_func_start MOD16_021E43C0 +MOD16_021E43C0: ; 0x021E43C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r3, #8] + add r4, r1, #0 + str r0, [sp] + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E4474 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E43E0: ; jump table + .short _021E43E8 - _021E43E0 - 2 ; case 0 + .short _021E4402 - _021E43E0 - 2 ; case 1 + .short _021E4436 - _021E43E0 - 2 ; case 2 + .short _021E4458 - _021E43E0 - 2 ; case 3 +_021E43E8: + ldr r0, [r4, #4] + mov r1, #0x2c + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x2c + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4474 +_021E4402: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E45F8 + ldr r2, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021E4980 + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021E49B8 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E4550 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4474 +_021E4436: + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E49B8 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E45BC + cmp r0, #0 + beq _021E4474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4474 +_021E4458: + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E49B8 + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E4474: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E43C0 + + thumb_func_start MOD16_021E4478 +MOD16_021E4478: ; 0x021E4478 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r3, #8] + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp] + ldr r7, [r5, #8] + ldr r2, [sp] + add r0, r7, #0 + add r1, r4, #0 + bl MOD16_021E4980 + ldr r1, [sp] + add r0, r6, #0 + add r2, r4, #0 + bl MOD16_021E4B14 + ldr r3, [r5, #4] + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E49B8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E4478 + + thumb_func_start MOD16_021E44AC +MOD16_021E44AC: ; 0x021E44AC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021E4534 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E44C8: ; jump table + .short _021E44D2 - _021E44C8 - 2 ; case 0 + .short _021E44F4 - _021E44C8 - 2 ; case 1 + .short _021E450A - _021E44C8 - 2 ; case 2 + .short _021E451C - _021E44C8 - 2 ; case 3 + .short _021E4530 - _021E44C8 - 2 ; case 4 +_021E44D2: + mov r0, #0x79 + ldr r1, [r6] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E4550 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E44F4: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021E45BC + cmp r0, #0 + beq _021E4534 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E450A: + ldr r2, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E4620 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E451C: + ldr r0, [r5, #0x14] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4534 +_021E4530: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E4534: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E44AC + + thumb_func_start MOD16_021E4538 +MOD16_021E4538: ; 0x021E4538 + ldr r3, _021E4540 ; =0x02020399 + ldr r0, [r0] + mov r1, #1 + bx r3 + .align 2, 0 +_021E4540: .word 0x02020399 + thumb_func_end MOD16_021E4538 + + thumb_func_start MOD16_021E4544 +MOD16_021E4544: ; 0x021E4544 + ldr r3, _021E454C ; =0x02020399 + ldr r0, [r0] + mov r1, #0 + bx r3 + .align 2, 0 +_021E454C: .word 0x02020399 + thumb_func_end MOD16_021E4544 + + thumb_func_start MOD16_021E4550 +MOD16_021E4550: ; 0x021E4550 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E4538 + ldr r0, [r4, #4] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E45B8 + cmp r6, #0 + beq _021E4594 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E4594: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E45B8: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E4550 + + thumb_func_start MOD16_021E45BC +MOD16_021E45BC: ; 0x021E45BC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #4] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E45DC + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E45E2 +_021E45DC: + mov r0, #2 + bl FUN_0200A344 +_021E45E2: + cmp r0, #0 + beq _021E45F4 + cmp r4, #0 + beq _021E45F0 + add r0, r6, #0 + bl MOD16_021E4544 +_021E45F0: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E45F4: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E45BC + + thumb_func_start MOD16_021E45F8 +MOD16_021E45F8: ; 0x021E45F8 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E4634 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E469C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E4750 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E45F8 + + thumb_func_start MOD16_021E4620 +MOD16_021E4620: ; 0x021E4620 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E47D8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E471C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E4620 + + thumb_func_start MOD16_021E4634 +MOD16_021E4634: ; 0x021E4634 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x45 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4634 + + thumb_func_start MOD16_021E469C +MOD16_021E469C: ; 0x021E469C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E4710 ; =0x000017D9 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x69 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #4] + bl FUN_02009B04 + ldr r0, [r5, #4] + bl FUN_02009474 + ldr r0, _021E4714 ; =0x000017D7 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x67 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0xc] + ldr r0, _021E4718 ; =0x000017D8 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x68 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x10] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E4710: .word 0x000017D9 +_021E4714: .word 0x000017D7 +_021E4718: .word 0x000017D8 + thumb_func_end MOD16_021E469C + + thumb_func_start MOD16_021E471C +MOD16_021E471C: ; 0x021E471C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #4] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0xc] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E471C + + thumb_func_start MOD16_021E4750 +MOD16_021E4750: ; 0x021E4750 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E47D0 ; =0x000017D8 + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021E47D4 ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #3 + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + str r1, [sp, #0x34] + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5] + bl FUN_02020130 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021E47D0: .word 0x000017D8 +_021E47D4: .word 0x0000083F + thumb_func_end MOD16_021E4750 + + thumb_func_start MOD16_021E47D8 +MOD16_021E47D8: ; 0x021E47D8 + ldr r3, _021E47E0 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021E47E0: .word 0x0201FFC9 + thumb_func_end MOD16_021E47D8 + + thumb_func_start MOD16_021E47E4 +MOD16_021E47E4: ; 0x021E47E4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #4 + bl FUN_02016998 + str r0, [r5, #0x14] + mov r1, #0xfe + strb r1, [r0] + ldr r1, [r5] + ldr r0, [r5, #0x14] + add r3, r5, #0 + strb r1, [r0, #1] + ldr r1, [r5, #4] + ldr r0, [r5, #0x14] + ldr r2, _021E4828 ; =MOD16_021E4938 + strb r1, [r0, #2] + ldr r0, [r5, #0x14] + mov r1, #0x20 + strb r1, [r0, #3] + str r4, [r5, #0x18] + str r5, [r5, #0x1c] + str r6, [sp] + ldr r0, [r5, #0x14] + mov r1, #1 + add r3, #0x18 + bl FUN_020220C4 + str r0, [r5, #0x10] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E4828: .word MOD16_021E4938 + thumb_func_end MOD16_021E47E4 + + thumb_func_start MOD16_021E482C +MOD16_021E482C: ; 0x021E482C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + add r5, r1, #0 + bl FUN_02022144 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E48BC + ldr r1, [r4] + ldr r0, [r4, #0x14] + strb r1, [r0, #1] + ldr r1, [r4, #4] + ldr r0, [r4, #0x14] + strb r1, [r0, #2] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E482C + + thumb_func_start MOD16_021E4850 +MOD16_021E4850: ; 0x021E4850 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021E48B4 ; =0x021C48F8 + add r4, r1, #0 + ldrh r0, [r0, #0x22] + cmp r0, #0 + bne _021E48B2 + ldr r0, [r4, #4] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021E48B2 + ldr r0, [r4] + bl MOD16_021E2F30 + ldr r1, _021E48B8 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x20 + tst r1, r2 + beq _021E4892 + sub r1, r0, #1 + bpl _021E487E + mov r1, #0 +_021E487E: + ldr r0, [r4] + bl MOD16_021E2F38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E4A88 + mov r0, #1 + str r0, [r5, #0x24] + pop {r3, r4, r5, pc} +_021E4892: + mov r1, #0x10 + tst r1, r2 + beq _021E48B2 + add r1, r0, #1 + cmp r1, #3 + blt _021E48A0 + mov r1, #2 +_021E48A0: + ldr r0, [r4] + bl MOD16_021E2F38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E4A88 + mov r0, #1 + str r0, [r5, #0x24] +_021E48B2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E48B4: .word 0x021C48F8 +_021E48B8: .word 0x021C48B8 + thumb_func_end MOD16_021E4850 + + thumb_func_start MOD16_021E48BC +MOD16_021E48BC: ; 0x021E48BC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #0 + str r2, [r5, #0x24] + ldr r3, [r5, #0x20] + add r4, r1, #0 + cmp r3, #0 + beq _021E492E + ldr r0, _021E4934 ; =0x021C48F8 + ldrh r1, [r0, #0x22] + cmp r1, #0 + beq _021E492A + ldrh r2, [r0, #0x1c] + ldr r1, [r5, #8] + sub r1, r2, r1 + str r1, [r5] + ldrh r1, [r0, #0x1e] + ldr r0, [r5, #0xc] + sub r0, r1, r0 + str r0, [r5, #4] + ldr r0, [r5] + cmp r0, #0x18 + bge _021E48EE + mov r0, #0x18 + str r0, [r5] +_021E48EE: + ldr r0, [r5] + cmp r0, #0xf6 + ble _021E48F8 + mov r0, #0xf6 + str r0, [r5] +_021E48F8: + ldr r0, [r5, #4] + cmp r0, #0x40 + bge _021E4902 + mov r0, #0x40 + str r0, [r5, #4] +_021E4902: + ldr r0, [r5] + bl MOD16_021E4AC0 + ldr r1, [r5, #4] + add r0, #0x84 + cmp r1, r0 + ble _021E4912 + str r0, [r5, #4] +_021E4912: + ldr r0, [r5] + mov r1, #0x55 + bl _s32_div_f + add r1, r0, #0 + cmp r1, #2 + ble _021E4922 + mov r1, #2 +_021E4922: + ldr r0, [r4] + bl MOD16_021E2F38 + pop {r3, r4, r5, pc} +_021E492A: + str r2, [r5, #0x20] + pop {r3, r4, r5, pc} +_021E492E: + bl MOD16_021E4850 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4934: .word 0x021C48F8 + thumb_func_end MOD16_021E48BC + + thumb_func_start MOD16_021E4938 +MOD16_021E4938: ; 0x021E4938 + push {r4, lr} + ldr r4, [r2, #4] + cmp r1, #0 + bne _021E495C + ldr r0, _021E4960 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + str r0, [r4, #0x20] + ldr r0, _021E4964 ; =0x021C48F8 + ldr r1, [r4] + ldrh r2, [r0, #0x1c] + sub r1, r2, r1 + str r1, [r4, #8] + ldrh r1, [r0, #0x1e] + ldr r0, [r4, #4] + sub r0, r1, r0 + str r0, [r4, #0xc] +_021E495C: + pop {r4, pc} + nop +_021E4960: .word 0x000005DD +_021E4964: .word 0x021C48F8 + thumb_func_end MOD16_021E4938 + + thumb_func_start MOD16_021E4968 +MOD16_021E4968: ; 0x021E4968 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_0202212C + ldr r0, [r4, #0x14] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4968 + + thumb_func_start MOD16_021E4980 +MOD16_021E4980: ; 0x021E4980 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r2] + add r4, r1, #0 + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r2, #4] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + str r1, [sp, #4] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4] + bl MOD16_021E2F30 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02020130 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4980 + + thumb_func_start MOD16_021E49B8 +MOD16_021E49B8: ; 0x021E49B8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r2] + add r7, r1, #0 + str r3, [sp] + mov r4, #0 + bl MOD16_021E2F30 + ldr r1, [r5, #0x18] + add r6, r0, #0 + cmp r1, r6 + bne _021E49DC + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E49DC + ldr r0, [r5, #0x1c] + cmp r0, r1 + beq _021E4A86 +_021E49DC: + ldr r0, [r5, #0x1c] + cmp r0, r6 + beq _021E49E8 + str r0, [r5, #0x18] + mov r0, #0 + str r0, [r5, #0x24] +_021E49E8: + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021E49F8 + cmp r0, #1 + beq _021E4A2E + cmp r0, #2 + beq _021E4A64 + b _021E4A6C +_021E49F8: + str r6, [r5, #0x1c] + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E4A04 + bl FUN_02016A18 +_021E4A04: + ldr r1, [r5, #0x18] + add r2, r5, #0 + ldr r0, [r7] + ldr r3, [sp] + add r1, #0xf + add r2, #0x20 + bl MOD16_021D8D70 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x18] + cmp r0, r6 + ble _021E4A24 + mov r4, #1 + b _021E4A26 +_021E4A24: + mov r4, #2 +_021E4A26: + ldr r0, [r5, #0x24] + add r0, r0, #1 + str r0, [r5, #0x24] + b _021E4A6C +_021E4A2E: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021E4A38 + bl FUN_02016A18 +_021E4A38: + ldr r1, [r5, #0x1c] + add r2, r5, #0 + ldr r0, [r7] + ldr r3, [sp] + add r1, #0xf + add r2, #0x20 + bl MOD16_021D8D70 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x28] + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x1c] + cmp r1, r0 + bge _021E4A5A + mov r4, #1 + b _021E4A5C +_021E4A5A: + mov r4, #2 +_021E4A5C: + ldr r0, [r5, #0x24] + add r0, r0, #1 + str r0, [r5, #0x24] + b _021E4A6C +_021E4A64: + mov r4, #0 + str r4, [r5, #0x24] + ldr r0, [r5, #0x1c] + str r0, [r5, #0x18] +_021E4A6C: + ldr r2, [r5, #0x20] + mov r0, #0x1f + ldr r3, [r2, #0xc] + lsl r2, r4, #5 + add r2, r3, r2 + mov r1, #0x40 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021E4A86 + bl ErrorHandling +_021E4A86: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E49B8 + + thumb_func_start MOD16_021E4A88 +MOD16_021E4A88: ; 0x021E4A88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + bl MOD16_021E2F30 + cmp r0, #0 + beq _021E4AA0 + cmp r0, #1 + beq _021E4AAA + cmp r0, #2 + beq _021E4AB4 + pop {r4, pc} +_021E4AA0: + mov r0, #0x20 + str r0, [r4] + mov r0, #0x80 + str r0, [r4, #4] + pop {r4, pc} +_021E4AAA: + mov r0, #0x80 + str r0, [r4] + mov r0, #0x60 + str r0, [r4, #4] + pop {r4, pc} +_021E4AB4: + mov r0, #0xe0 + str r0, [r4] + mov r0, #0x80 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4A88 + + thumb_func_start MOD16_021E4AC0 +MOD16_021E4AC0: ; 0x021E4AC0 + push {r3, lr} + cmp r0, #0x28 + blt _021E4ACA + cmp r0, #0xd8 + ble _021E4ACE +_021E4ACA: + mov r0, #0x30 + pop {r3, pc} +_021E4ACE: + ldr r1, _021E4B0C ; =0x00007FFF + sub r0, #0x28 + mul r1, r0 + add r0, r1, #0 + mov r1, #0xb0 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _021E4B10 ; =0x020FFA38 + mov r2, #3 + ldrsh r0, [r0, r1] + lsl r2, r2, #0x10 + mov r3, #0 + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r1, r1, #0xc + mov r0, #0x30 + sub r0, r0, r1 + pop {r3, pc} + .align 2, 0 +_021E4B0C: .word 0x00007FFF +_021E4B10: .word 0x020FFA38 + thumb_func_end MOD16_021E4AC0 + + thumb_func_start MOD16_021E4B14 +MOD16_021E4B14: ; 0x021E4B14 + push {r3, r4, r5, lr} + ldr r4, [r0] + ldr r0, [r2, #4] + add r5, r1, #0 + bl MOD16_021E95C8 + cmp r0, #1 + bne _021E4B48 + ldr r0, [r5, #0x24] + cmp r0, #0 + bne _021E4B3A + mov r3, #0x20 + str r3, [sp] + ldr r1, [r5] + ldr r2, [r5, #4] + add r0, r4, #0 + bl MOD16_021D8B04 + pop {r3, r4, r5, pc} +_021E4B3A: + mov r3, #0x20 + str r3, [sp] + ldr r1, [r5] + ldr r2, [r5, #4] + add r0, r4, #0 + bl MOD16_021D8B78 +_021E4B48: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4B14 + + thumb_func_start MOD16_021E4B4C +MOD16_021E4B4C: ; 0x021E4B4C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E4BCC + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E4C08 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E4C58 + str r0, [r5, #0x24] + ldr r0, _021E4B8C ; =MOD16_021E4C5C + str r0, [r5, #8] + ldr r0, _021E4B90 ; =MOD16_021E4C80 + str r0, [r5, #0xc] + ldr r0, _021E4B94 ; =MOD16_021E4CD0 + str r0, [r5, #0x10] + ldr r0, _021E4B98 ; =MOD16_021E4CDC + str r0, [r5, #0x14] + ldr r0, _021E4B9C ; =MOD16_021E4DBC + str r0, [r5, #0x18] + ldr r0, _021E4BA0 ; =MOD16_021E4DC0 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E4B8C: .word MOD16_021E4C5C +_021E4B90: .word MOD16_021E4C80 +_021E4B94: .word MOD16_021E4CD0 +_021E4B98: .word MOD16_021E4CDC +_021E4B9C: .word MOD16_021E4DBC +_021E4BA0: .word MOD16_021E4DC0 + thumb_func_end MOD16_021E4B4C + + thumb_func_start MOD16_021E4BA4 +MOD16_021E4BA4: ; 0x021E4BA4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E4C30 + ldr r0, [r4, #4] + bl MOD16_021E4C44 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4BA4 + + thumb_func_start MOD16_021E4BB8 +MOD16_021E4BB8: ; 0x021E4BB8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4BB8 + + thumb_func_start MOD16_021E4BBC +MOD16_021E4BBC: ; 0x021E4BBC + mov r2, #1 + cmp r1, #1 + bne _021E4BC6 + mov r1, #0 + add r2, r1, #0 +_021E4BC6: + str r1, [r0, #0x18] + add r0, r2, #0 + bx lr + thumb_func_end MOD16_021E4BBC + + thumb_func_start MOD16_021E4BCC +MOD16_021E4BCC: ; 0x021E4BCC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + bne _021E4BDE + bl ErrorHandling +_021E4BDE: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4BCC + + thumb_func_start MOD16_021E4C08 +MOD16_021E4C08: ; 0x021E4C08 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E4C1A + bl ErrorHandling +_021E4C1A: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E4C08 + + thumb_func_start MOD16_021E4C30 +MOD16_021E4C30: ; 0x021E4C30 + push {r4, lr} + add r4, r0, #0 + bne _021E4C3A + bl ErrorHandling +_021E4C3A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4C30 + + thumb_func_start MOD16_021E4C44 +MOD16_021E4C44: ; 0x021E4C44 + push {r4, lr} + add r4, r0, #0 + bne _021E4C4E + bl ErrorHandling +_021E4C4E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E4C44 + + thumb_func_start MOD16_021E4C58 +MOD16_021E4C58: ; 0x021E4C58 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4C58 + + thumb_func_start MOD16_021E4C5C +MOD16_021E4C5C: ; 0x021E4C5C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9A60 + ldr r0, [r4, #4] + bl MOD16_021D9D04 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9A78 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021E4C5C + + thumb_func_start MOD16_021E4C80 +MOD16_021E4C80: ; 0x021E4C80 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + cmp r0, #1 + bne _021E4C90 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4C90: + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _021E4C9A + mov r0, #0 + pop {r3, r4, r5, pc} +_021E4C9A: + ldr r0, [r5] + cmp r0, #0 + bne _021E4CC8 + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _021E4CC2 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r2, _021E4CCC ; =0x000001FF + lsl r1, r1, #0x10 + mov r0, #0xe + lsr r1, r1, #0x10 + add r3, r2, #0 + str r2, [sp] + bl FUN_020056AC + mov r0, #0 + str r0, [r4, #0x1c] +_021E4CC2: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021E4CC8: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E4CCC: .word 0x000001FF + thumb_func_end MOD16_021E4C80 + + thumb_func_start MOD16_021E4CD0 +MOD16_021E4CD0: ; 0x021E4CD0 + push {r3, lr} + mov r0, #0 + bl FUN_02005614 + mov r0, #1 + pop {r3, pc} + thumb_func_end MOD16_021E4CD0 + + thumb_func_start MOD16_021E4CDC +MOD16_021E4CDC: ; 0x021E4CDC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021E4DB2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E4CF8: ; jump table + .short _021E4D00 - _021E4CF8 - 2 ; case 0 + .short _021E4D1A - _021E4CF8 - 2 ; case 1 + .short _021E4D64 - _021E4CF8 - 2 ; case 2 + .short _021E4DA8 - _021E4CF8 - 2 ; case 3 +_021E4D00: + ldr r0, [r4, #4] + mov r1, #0x74 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x74 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4DB2 +_021E4D1A: + ldr r3, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E4E7C + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E4D34 + cmp r0, #1 + beq _021E4D42 + cmp r0, #2 + beq _021E4D50 + b _021E4D5C +_021E4D34: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E5908 + b _021E4D5C +_021E4D42: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E5830 + b _021E4D5C +_021E4D50: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E5A04 +_021E4D5C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4DB2 +_021E4D64: + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E4D74 + cmp r0, #1 + beq _021E4D82 + cmp r0, #2 + beq _021E4D90 + b _021E4D9C +_021E4D74: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E598C + add r1, r0, #0 + b _021E4D9C +_021E4D82: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E58AC + add r1, r0, #0 + b _021E4D9C +_021E4D90: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E5A8C + add r1, r0, #0 +_021E4D9C: + cmp r1, #0 + beq _021E4DB2 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4DB2 +_021E4DA8: + ldr r0, _021E4DB8 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E4DB2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E4DB8: .word 0x04000050 + thumb_func_end MOD16_021E4CDC + + thumb_func_start MOD16_021E4DBC +MOD16_021E4DBC: ; 0x021E4DBC + mov r0, #0 + bx lr + thumb_func_end MOD16_021E4DBC + + thumb_func_start MOD16_021E4DC0 +MOD16_021E4DC0: ; 0x021E4DC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r5, [r4] + add r3, r0, #0 + add r1, r2, #0 + ldr r0, [r4, #8] + cmp r5, #4 + bhi _021E4E76 + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021E4DDC: ; jump table + .short _021E4DE6 - _021E4DDC - 2 ; case 0 + .short _021E4E1A - _021E4DDC - 2 ; case 1 + .short _021E4E58 - _021E4DDC - 2 ; case 2 + .short _021E4E66 - _021E4DDC - 2 ; case 3 + .short _021E4E72 - _021E4DDC - 2 ; case 4 +_021E4DE6: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E4DF6 + cmp r1, #1 + beq _021E4E00 + cmp r1, #2 + beq _021E4E0A + b _021E4E12 +_021E4DF6: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5908 + b _021E4E12 +_021E4E00: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5830 + b _021E4E12 +_021E4E0A: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5A04 +_021E4E12: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E1A: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E4E2A + cmp r1, #1 + beq _021E4E36 + cmp r1, #2 + beq _021E4E42 + b _021E4E4C +_021E4E2A: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E598C + add r2, r0, #0 + b _021E4E4C +_021E4E36: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E58AC + add r2, r0, #0 + b _021E4E4C +_021E4E42: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E5A8C + add r2, r0, #0 +_021E4E4C: + cmp r2, #0 + beq _021E4E76 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E58: + add r1, r3, #0 + bl MOD16_021E4EE4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E66: + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E4E76 +_021E4E72: + mov r0, #1 + pop {r3, r4, r5, pc} +_021E4E76: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4DC0 + + thumb_func_start MOD16_021E4E7C +MOD16_021E4E7C: ; 0x021E4E7C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E53C4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5410 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021E5464 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E56D0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E4F1C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E5030 + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + bne _021E4EE2 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E51FC + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E5554 +_021E4EE2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E4E7C + + thumb_func_start MOD16_021E4EE4 +MOD16_021E4EE4: ; 0x021E4EE4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl MOD16_021E5818 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5224 + add r0, r5, #0 + bl MOD16_021E56B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5510 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E4EE4 + + thumb_func_start MOD16_021E4F1C +MOD16_021E4F1C: ; 0x021E4F1C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x33 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r1, #3 + str r1, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x34 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r6, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x36 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E4F1C + + thumb_func_start MOD16_021E5030 +MOD16_021E5030: ; 0x021E5030 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r7, r2, #0 + bl MOD16_021D9DE8 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E504C + mov r6, #0 +_021E504C: + ldr r0, _021E5060 ; =0x00020100 + add r1, r6, #0 + str r0, [sp] + ldr r0, [r5] + ldr r3, [r4, #0x18] + add r0, r0, #4 + add r2, r7, #0 + bl MOD16_021E5064 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5060: .word 0x00020100 + thumb_func_end MOD16_021E5030 + + thumb_func_start MOD16_021E5064 +MOD16_021E5064: ; 0x021E5064 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r2, #0 + add r5, r0, #0 + str r1, [sp, #0x10] + mov r0, #0x40 + add r1, r6, #0 + str r3, [sp, #0x14] + ldr r4, [sp, #0x30] + bl FUN_020219F4 + add r7, r0, #0 + ldr r2, _021E5100 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #9 + add r2, r7, #0 + str r0, [sp, #0x18] + bl FUN_0200A8E0 + mov r0, #0x58 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + add r0, r5, #0 + add r2, r7, #0 + mov r3, #0x98 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + mov r1, #0xa + add r2, r7, #0 + bl FUN_0200A8E0 + mov r0, #0x68 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r4, [sp, #8] + add r0, r5, #0 + add r2, r7, #0 + mov r3, #0x98 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r6, #0 + add r3, r4, #0 + bl MOD16_021E5104 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r6, #0 + add r3, r4, #0 + bl MOD16_021E5158 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r5, #0 + add r1, r6, #0 + str r4, [sp] + bl MOD16_021E51AC + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E5100: .word 0x00000266 + thumb_func_end MOD16_021E5064 + + thumb_func_start MOD16_021E5104 +MOD16_021E5104: ; 0x021E5104 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0x40 + add r6, r1, #0 + str r2, [sp, #0x10] + add r5, r3, #0 + bl FUN_020219F4 + mov r2, #0x9b + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + add r3, r6, #0 + bl FUN_0200A86C + ldr r1, [sp, #0x10] + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x58 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r5, [sp, #8] + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0xb8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5104 + + thumb_func_start MOD16_021E5158 +MOD16_021E5158: ; 0x021E5158 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0x40 + add r6, r1, #0 + str r2, [sp, #0x10] + add r5, r3, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021E51A8 ; =0x0000026B + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + ldr r1, [sp, #0x10] + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0x68 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r5, [sp, #8] + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0xb8 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E51A8: .word 0x0000026B + thumb_func_end MOD16_021E5158 + + thumb_func_start MOD16_021E51AC +MOD16_021E51AC: ; 0x021E51AC + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r2, #0 + add r2, r3, #0 + mov r1, #2 + add r3, r4, #0 + bl MOD16_021DBC48 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002F08 + cmp r0, #0xf0 + bhs _021E51D8 + lsr r1, r0, #1 + mov r0, #0x80 + sub r3, r0, r1 + b _021E51DA +_021E51D8: + mov r3, #8 +_021E51DA: + mov r0, #0x88 + str r0, [sp] + mov r1, #0 + ldr r0, [sp, #0x20] + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r2, r4, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E51AC + + thumb_func_start MOD16_021E51FC +MOD16_021E51FC: ; 0x021E51FC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r2, #4] + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021D9DE8 + add r3, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E5238 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E533C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E51FC + + thumb_func_start MOD16_021E5224 +MOD16_021E5224: ; 0x021E5224 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E53B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E52F4 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5224 + + thumb_func_start MOD16_021E5238 +MOD16_021E5238: ; 0x021E5238 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r3, [sp, #0x10] + add r5, r0, #0 + add r6, r2, #0 + ldr r4, [r1] + bl MOD16_021D8520 + add r7, r0, #0 + ldr r0, [sp, #0x10] + bl MOD16_021D8524 + str r0, [sp, #0x14] + bl MOD16_021D8528 + str r0, [sp, #0x18] + bl MOD16_021D852C + str r0, [sp, #0x1c] + bl MOD16_021D8530 + str r0, [sp, #0x20] + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #5 + str r6, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl FUN_02008F34 + str r0, [r5, #0x24] + bl FUN_02009B04 + ldr r0, [r5, #0x24] + bl FUN_02009474 + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r6, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [sp, #0x18] + add r1, r7, #0 + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #0x28] + bl FUN_02009D68 + ldr r0, [r5, #0x28] + bl FUN_02009474 + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [sp, #0x1c] + add r1, r7, #0 + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x2c] + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r6, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r2, [sp, #0x20] + add r1, r7, #0 + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0x30] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5238 + + thumb_func_start MOD16_021E52F4 +MOD16_021E52F4: ; 0x021E52F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + ldr r4, [r1] + cmp r0, #0 + beq _021E533A + bl FUN_02009C0C + ldr r0, [r5, #0x28] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x28] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 +_021E533A: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E52F4 + + thumb_func_start MOD16_021E533C +MOD16_021E533C: ; 0x021E533C + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + mov r1, #0xfa + add r5, r0, #0 + lsl r1, r1, #4 + mov r0, #0 + add r6, r2, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r3, [r4, r0] + str r3, [sp, #0x14] + add r3, r0, #4 + ldr r3, [r4, r3] + str r3, [sp, #0x18] + add r3, r0, #0 + add r3, #8 + ldr r3, [r4, r3] + add r0, #0xc + str r3, [sp, #0x1c] + ldr r0, [r4, r0] + add r3, r1, #0 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + mov r0, #0x1e + lsl r0, r0, #0xe + str r0, [sp, #0x34] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + str r0, [r5] + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E533C + + thumb_func_start MOD16_021E53B4 +MOD16_021E53B4: ; 0x021E53B4 + push {r3, lr} + ldr r0, [r0] + cmp r0, #0 + beq _021E53C0 + bl FUN_0201FFC8 +_021E53C0: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E53B4 + + thumb_func_start MOD16_021E53C4 +MOD16_021E53C4: ; 0x021E53C4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r2, #0 + bl MOD16_021D9D88 + add r3, r0, #0 + mov r0, #0x2b + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + add r2, r6, #0 + bl MOD16_021D7E9C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D891C + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E53C4 + + thumb_func_start MOD16_021E53F8 +MOD16_021E53F8: ; 0x021E53F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D8950 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D88F0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E53F8 + + thumb_func_start MOD16_021E5410 +MOD16_021E5410: ; 0x021E5410 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r0, #0x48 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E5410 + + thumb_func_start MOD16_021E5448 +MOD16_021E5448: ; 0x021E5448 + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5448 + + thumb_func_start MOD16_021E5464 +MOD16_021E5464: ; 0x021E5464 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E5500 ; =0x00000FFA + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5a + bl FUN_020091E0 + str r0, [r5, #0x14] + bl FUN_02009B04 + ldr r0, [r5, #0x14] + bl FUN_02009474 + ldr r0, _021E5504 ; =0x00000FAD + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xd + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x18] + bl FUN_02009D68 + ldr r0, [r5, #0x18] + bl FUN_02009474 + ldr r0, _021E5508 ; =0x00000FF8 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x58 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x1c] + ldr r0, _021E550C ; =0x00000FF9 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x59 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x20] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5500: .word 0x00000FFA +_021E5504: .word 0x00000FAD +_021E5508: .word 0x00000FF8 +_021E550C: .word 0x00000FF9 + thumb_func_end MOD16_021E5464 + + thumb_func_start MOD16_021E5510 +MOD16_021E5510: ; 0x021E5510 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x18] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5510 + + thumb_func_start MOD16_021E5554 +MOD16_021E5554: ; 0x021E5554 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + str r3, [sp, #0x2c] + ldr r4, [r1] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r6, #4] + add r1, r7, #0 + bl MOD16_021D9964 + str r0, [sp, #0x30] + ldr r1, [sp, #0x30] + add r0, r7, #0 + mov r2, #6 + bl FUN_02068654 + add r6, r0, #0 + ldr r1, [sp, #0x30] + add r0, r7, #0 + mov r2, #7 + bl FUN_02068654 + add r7, r0, #0 + add r0, r6, #0 + bl MOD16_021E563C + add r6, r0, #0 + add r0, r7, #0 + bl MOD16_021E563C + ldr r3, _021E5638 ; =0x00000FF9 + add r7, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x54 + sub r2, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x34] + add r0, sp, #0x54 + str r0, [sp, #0x38] + mov r0, #0x20 + str r0, [sp, #0x48] + mov r0, #1 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x50] + mov r0, #0xaa + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FF84 + add r1, r6, #0 + str r0, [r5, #4] + bl FUN_02020130 + cmp r6, r7 + beq _021E562E + mov r0, #0x37 + lsl r0, r0, #0xe + str r0, [sp, #0x3c] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x40] + add r0, sp, #0x34 + bl FUN_0201FF84 + add r1, r7, #0 + str r0, [r5, #8] + bl FUN_02020130 + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} +_021E562E: + mov r0, #0 + str r0, [r5, #8] + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5638: .word 0x00000FF9 + thumb_func_end MOD16_021E5554 + + thumb_func_start MOD16_021E563C +MOD16_021E563C: ; 0x021E563C + cmp r0, #0x11 + bhi _021E56B2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E564C: ; jump table + .short _021E5670 - _021E564C - 2 ; case 0 + .short _021E5674 - _021E564C - 2 ; case 1 + .short _021E5678 - _021E564C - 2 ; case 2 + .short _021E567C - _021E564C - 2 ; case 3 + .short _021E5680 - _021E564C - 2 ; case 4 + .short _021E5684 - _021E564C - 2 ; case 5 + .short _021E5688 - _021E564C - 2 ; case 6 + .short _021E568C - _021E564C - 2 ; case 7 + .short _021E5690 - _021E564C - 2 ; case 8 + .short _021E568C - _021E564C - 2 ; case 9 + .short _021E5694 - _021E564C - 2 ; case 10 + .short _021E5698 - _021E564C - 2 ; case 11 + .short _021E569C - _021E564C - 2 ; case 12 + .short _021E56A0 - _021E564C - 2 ; case 13 + .short _021E56A4 - _021E564C - 2 ; case 14 + .short _021E56A8 - _021E564C - 2 ; case 15 + .short _021E56AC - _021E564C - 2 ; case 16 + .short _021E56B0 - _021E564C - 2 ; case 17 +_021E5670: + mov r0, #0 + bx lr +_021E5674: + mov r0, #6 + bx lr +_021E5678: + mov r0, #0xe + bx lr +_021E567C: + mov r0, #0xa + bx lr +_021E5680: + mov r0, #8 + bx lr +_021E5684: + mov r0, #5 + bx lr +_021E5688: + mov r0, #0xb + bx lr +_021E568C: + mov r0, #7 + bx lr +_021E5690: + mov r0, #9 + bx lr +_021E5694: + mov r0, #1 + bx lr +_021E5698: + mov r0, #3 + bx lr +_021E569C: + mov r0, #2 + bx lr +_021E56A0: + mov r0, #4 + bx lr +_021E56A4: + mov r0, #0xf + bx lr +_021E56A8: + mov r0, #0xd + bx lr +_021E56AC: + mov r0, #0x10 + bx lr +_021E56B0: + mov r0, #0xc +_021E56B2: + bx lr + thumb_func_end MOD16_021E563C + + thumb_func_start MOD16_021E56B4 +MOD16_021E56B4: ; 0x021E56B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E56C2 + bl FUN_0201FFC8 +_021E56C2: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E56CC + bl FUN_0201FFC8 +_021E56CC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E56B4 + + thumb_func_start MOD16_021E56D0 +MOD16_021E56D0: ; 0x021E56D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xa0 + add r6, r0, #0 + add r0, r2, #0 + add r5, r1, #0 + ldr r0, [r0, #4] + str r2, [sp, #0x2c] + add r7, r3, #0 + ldr r4, [r5] + bl MOD16_021D9DE8 + ldr r3, _021E57C4 ; =0x00000FF9 + str r0, [sp, #0x30] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x7c + sub r2, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x5c] + add r0, sp, #0x7c + str r0, [sp, #0x60] + mov r0, #0x20 + str r0, [sp, #0x70] + mov r0, #1 + str r0, [sp, #0x74] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp, #0x64] + mov r0, #0xd + lsl r0, r0, #0xe + str r0, [sp, #0x68] + add r0, sp, #0x5c + str r7, [sp, #0x78] + bl FUN_0201FF84 + mov r1, #0x11 + str r0, [r6, #0xc] + bl FUN_02020130 + ldr r0, [sp, #0x2c] + ldr r0, [r0, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E5768 + mov r0, #0 + str r0, [sp, #0x30] +_021E5768: + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, [sp, #0x30] + add r2, r7, #0 + bl MOD16_021E57C8 + add r4, r0, #0 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88D4 + mov r1, #0x15 + ldr r2, [r5] + lsl r1, r1, #4 + ldr r1, [r2, r1] + str r1, [sp, #0x34] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x3c] + ldr r0, [r6, #0xc] + str r0, [sp, #0x40] + mov r0, #0x4d + mvn r0, r0 + str r0, [sp, #0x44] + add r0, #0x46 + str r0, [sp, #0x48] + mov r0, #0 + str r0, [sp, #0x4c] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #1 + str r0, [sp, #0x54] + str r7, [sp, #0x58] + str r4, [sp, #0x38] + add r0, sp, #0x34 + bl MOD16_021DB2BC + str r0, [r6, #0x10] + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0xa0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E57C4: .word 0x00000FF9 + thumb_func_end MOD16_021E56D0 + + thumb_func_start MOD16_021E57C8 +MOD16_021E57C8: ; 0x021E57C8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0x12 + mov r2, #2 + add r7, r0, #0 + bl MOD16_021DB388 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #2 + add r2, r6, #0 + bl MOD16_021DBC08 + add r5, r0, #0 + mov r0, #2 + add r1, r5, #0 + mov r2, #0 + bl FUN_02002E14 + cmp r0, #0x88 + bhs _021E57FC + mov r1, #0x88 + sub r0, r1, r0 + lsr r3, r0, #1 + b _021E57FE +_021E57FC: + mov r3, #0 +_021E57FE: + mov r0, #0 + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD16_021DB42C + add r0, r5, #0 + bl MOD16_021DBBAC + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E57C8 + + thumb_func_start MOD16_021E5818 +MOD16_021E5818: ; 0x021E5818 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + bl MOD16_021DB338 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5818 + + thumb_func_start MOD16_021E5830 +MOD16_021E5830: ; 0x021E5830 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + mov r1, #1 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021D88F0 + add r0, r7, #0 + bl MOD16_021E5B08 + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E58A2 + cmp r6, #0 + beq _021E587E + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E58A2 +_021E587E: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E58A2: + add r0, r5, #0 + bl MOD16_021E5B70 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5830 + + thumb_func_start MOD16_021E58AC +MOD16_021E58AC: ; 0x021E58AC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r2, #0x10] + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E58CC + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E58D6 +_021E58CC: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E58D6: + add r4, r0, #0 + cmp r4, #1 + bne _021E58FE + cmp r6, #1 + bne _021E58F0 + add r0, r7, #0 + bl MOD16_021E5B3C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E5904 +_021E58F0: + add r0, r5, #0 + bl MOD16_021E5448 + add r0, r5, #0 + bl MOD16_021E53F8 + b _021E5904 +_021E58FE: + add r0, r5, #0 + bl MOD16_021E5B70 +_021E5904: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E58AC + + thumb_func_start MOD16_021E5908 +MOD16_021E5908: ; 0x021E5908 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E5B08 + cmp r6, #0 + bne _021E592E + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #4 + bl MOD16_021E5B80 + add r0, r7, #0 + bl MOD16_021E5BB8 +_021E592E: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E5988 + cmp r6, #0 + beq _021E5964 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r2, r1, #0 + sub r2, #0x14 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5964: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 +_021E5988: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5908 + + thumb_func_start MOD16_021E598C +MOD16_021E598C: ; 0x021E598C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021E59AC + bl MOD16_021E5B9C + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E5BD4 + str r0, [sp, #4] + b _021E59B2 +_021E59AC: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] +_021E59B2: + ldr r0, [r6, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021E59CC + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #8] + b _021E59D8 +_021E59CC: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #8] +_021E59D8: + mov r1, #0 + add r2, sp, #0 +_021E59DC: + ldr r0, [r2] + cmp r0, #0 + beq _021E59EA + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #3 + blt _021E59DC +_021E59EA: + cmp r1, #3 + bne _021E59FE + cmp r7, #1 + bne _021E59F8 + add r0, r5, #0 + bl MOD16_021E5B3C +_021E59F8: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E59FE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E598C + + thumb_func_start MOD16_021E5A04 +MOD16_021E5A04: ; 0x021E5A04 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E5B08 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88F0 + cmp r6, #0 + bne _021E5A2C + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #1 + bl MOD16_021E5B80 +_021E5A2C: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E5A86 + cmp r6, #0 + beq _021E5A62 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E5A62: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E5A86: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5A04 + + thumb_func_start MOD16_021E5A8C +MOD16_021E5A8C: ; 0x021E5A8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bne _021E5AA2 + bl MOD16_021E5B9C + str r0, [sp] + b _021E5AA6 +_021E5AA2: + mov r0, #1 + str r0, [sp] +_021E5AA6: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E5AC0 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021E5ACC +_021E5AC0: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021E5ACC: + mov r1, #0 + add r2, sp, #0 +_021E5AD0: + ldr r0, [r2] + cmp r0, #0 + beq _021E5ADE + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021E5AD0 +_021E5ADE: + cmp r1, #2 + bne _021E5B02 + cmp r6, #1 + bne _021E5AF6 + add r0, r7, #0 + bl MOD16_021E5B3C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E5AFC +_021E5AF6: + add r0, r5, #0 + bl MOD16_021E53F8 +_021E5AFC: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5B02: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E5A8C + + thumb_func_start MOD16_021E5B08 +MOD16_021E5B08: ; 0x021E5B08 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + add r5, r7, #0 + mov r6, #1 +_021E5B12: + ldr r0, [r5] + cmp r0, #0 + beq _021E5B1E + add r1, r6, #0 + bl FUN_02020398 +_021E5B1E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E5B12 + ldr r0, [r7, #0xc] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r7, #0x10] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5B08 + + thumb_func_start MOD16_021E5B3C +MOD16_021E5B3C: ; 0x021E5B3C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + add r5, r7, #0 + add r6, r4, #0 +_021E5B46: + ldr r0, [r5] + cmp r0, #0 + beq _021E5B52 + add r1, r6, #0 + bl FUN_02020398 +_021E5B52: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _021E5B46 + ldr r0, [r7, #0xc] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r7, #0x10] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5B3C + + thumb_func_start MOD16_021E5B70 +MOD16_021E5B70: ; 0x021E5B70 + mov r1, #0x5b + ldr r0, [r0] + lsl r1, r1, #2 + ldr r3, _021E5B7C ; =MOD16_021D8A8C + add r1, r0, r1 + bx r3 + .align 2, 0 +_021E5B7C: .word MOD16_021D8A8C + thumb_func_end MOD16_021E5B70 + + thumb_func_start MOD16_021E5B80 +MOD16_021E5B80: ; 0x021E5B80 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + str r2, [sp] + str r3, [sp, #4] + add r0, #0x34 + mov r1, #0x30 + add r2, r4, #0 + mov r3, #0x48 + bl MOD16_021D8BD8 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5B80 + + thumb_func_start MOD16_021E5B9C +MOD16_021E5B9C: ; 0x021E5B9C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x34 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x34] + ldr r2, [r5, #0x38] + bl MOD16_021D86F4 + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E5B9C + + thumb_func_start MOD16_021E5BB8 +MOD16_021E5BB8: ; 0x021E5BB8 + push {r3, lr} + sub sp, #8 + mov r1, #0x52 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + add r0, #0x54 + mov r1, #0xac + mov r2, #0xaa + mov r3, #0x20 + bl MOD16_021D8BD8 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD16_021E5BB8 + + thumb_func_start MOD16_021E5BD4 +MOD16_021E5BD4: ; 0x021E5BD4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x54 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x54] + ldr r2, [r5, #0x58] + bl MOD16_021D7F6C + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E5BD4 + + thumb_func_start MOD16_021E5BF0 +MOD16_021E5BF0: ; 0x021E5BF0 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E5C88 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E5CC8 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E5D28 + str r0, [r5, #0x24] + ldr r0, _021E5C30 ; =MOD16_021E5D44 + str r0, [r5, #8] + ldr r0, _021E5C34 ; =MOD16_021E5D6C + str r0, [r5, #0xc] + ldr r0, _021E5C38 ; =MOD16_021E5D7C + str r0, [r5, #0x10] + ldr r0, _021E5C3C ; =MOD16_021E5D80 + str r0, [r5, #0x14] + ldr r0, _021E5C40 ; =MOD16_021E5E14 + str r0, [r5, #0x18] + ldr r0, _021E5C44 ; =MOD16_021E5ED4 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5C30: .word MOD16_021E5D44 +_021E5C34: .word MOD16_021E5D6C +_021E5C38: .word MOD16_021E5D7C +_021E5C3C: .word MOD16_021E5D80 +_021E5C40: .word MOD16_021E5E14 +_021E5C44: .word MOD16_021E5ED4 + thumb_func_end MOD16_021E5BF0 + + thumb_func_start MOD16_021E5C48 +MOD16_021E5C48: ; 0x021E5C48 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E5D00 + ldr r0, [r4, #4] + bl MOD16_021E5D14 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5C48 + + thumb_func_start MOD16_021E5C5C +MOD16_021E5C5C: ; 0x021E5C5C + push {r3, r4, r5, lr} + ldr r4, [r0] + ldr r0, [r0, #4] + add r2, r1, #0 + ldr r0, [r0, #4] + cmp r0, #1 + bne _021E5C6E + mov r0, #0 + pop {r3, r4, r5, pc} +_021E5C6E: + ldr r5, [r4, #0x14] + ldr r0, [r4, #0xc] + ldr r3, [r4, #0x10] + add r1, r5, #0 + bl MOD16_021E5D2C + str r0, [r4, #0x14] + cmp r5, r0 + beq _021E5C84 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E5C84: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5C5C + + thumb_func_start MOD16_021E5C88 +MOD16_021E5C88: ; 0x021E5C88 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021E5C9A + bl ErrorHandling +_021E5C9A: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021E5CA0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E5CA0 + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5C88 + + thumb_func_start MOD16_021E5CC8 +MOD16_021E5CC8: ; 0x021E5CC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021E5CDA + bl ErrorHandling +_021E5CDA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E5CC8 + + thumb_func_start MOD16_021E5D00 +MOD16_021E5D00: ; 0x021E5D00 + push {r4, lr} + add r4, r0, #0 + bne _021E5D0A + bl ErrorHandling +_021E5D0A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5D00 + + thumb_func_start MOD16_021E5D14 +MOD16_021E5D14: ; 0x021E5D14 + push {r4, lr} + add r4, r0, #0 + bne _021E5D1E + bl ErrorHandling +_021E5D1E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5D14 + + thumb_func_start MOD16_021E5D28 +MOD16_021E5D28: ; 0x021E5D28 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E5D28 + + thumb_func_start MOD16_021E5D2C +MOD16_021E5D2C: ; 0x021E5D2C + cmp r2, #0 + ble _021E5D3A + add r2, r1, r2 + cmp r2, r3 + blt _021E5D40 + mov r2, #0 + b _021E5D40 +_021E5D3A: + add r0, r1, r2 + bpl _021E5D40 + sub r2, r3, #1 +_021E5D40: + add r0, r2, #0 + bx lr + thumb_func_end MOD16_021E5D2C + + thumb_func_start MOD16_021E5D44 +MOD16_021E5D44: ; 0x021E5D44 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r5, r0, #0 + add r1, r4, #0 + bl MOD16_021E6648 + str r0, [r4, #0xc] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E6690 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5D44 + + thumb_func_start MOD16_021E5D6C +MOD16_021E5D6C: ; 0x021E5D6C + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021E5D76 + mov r0, #1 + bx lr +_021E5D76: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E5D6C + + thumb_func_start MOD16_021E5D7C +MOD16_021E5D7C: ; 0x021E5D7C + mov r0, #1 + bx lr + thumb_func_end MOD16_021E5D7C + + thumb_func_start MOD16_021E5D80 +MOD16_021E5D80: ; 0x021E5D80 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E5E0A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E5D9C: ; jump table + .short _021E5DA4 - _021E5D9C - 2 ; case 0 + .short _021E5DCC - _021E5D9C - 2 ; case 1 + .short _021E5DEA - _021E5D9C - 2 ; case 2 + .short _021E5E00 - _021E5D9C - 2 ; case 3 +_021E5DA4: + ldr r0, [r4, #4] + mov r1, #0xd0 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0xd0 + bl Call_FillMemWithValue + ldr r0, [r4, #8] + ldr r1, [r7, #0xc] + add r0, #0xc8 + str r1, [r0] + mov r0, #0 + str r0, [r5, #4] + str r0, [r5, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5E0A +_021E5DCC: + ldr r3, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E5F40 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E63B4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5E0A +_021E5DEA: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E6424 + cmp r0, #0 + beq _021E5E0A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5E0A +_021E5E00: + ldr r0, _021E5E10 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E5E0A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E5E10: .word 0x04000050 + thumb_func_end MOD16_021E5D80 + + thumb_func_start MOD16_021E5E14 +MOD16_021E5E14: ; 0x021E5E14 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #0 + beq _021E5E30 + cmp r0, #1 + beq _021E5E7C + cmp r0, #2 + beq _021E5E94 + b _021E5EC0 +_021E5E30: + add r0, r6, #0 + add r0, #0xcc + ldr r1, [r7, #0x14] + ldr r0, [r0] + cmp r1, r0 + beq _021E5EC4 + add r0, r6, #0 + add r0, #0xcc + str r1, [r0] + add r0, r6, #0 + add r0, #0xb8 + ldr r0, [r0] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r6, #0 + add r1, r2, r1 + add r0, #0xb8 + str r1, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E6510 + add r0, r6, #0 + bl MOD16_021E6E24 + mov r0, #1 + str r0, [r5, #4] + ldr r0, _021E5ED0 ; =0x0000068B + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5EC4 +_021E5E7C: + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E6534 + cmp r0, #1 + bne _021E5EC4 + mov r0, #1 + str r0, [r5, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5EC4 +_021E5E94: + ldr r0, [r5, #8] + cmp r0, #1 + bne _021E5EC4 + ldr r0, [r7, #0xc] + add r1, r5, #0 + str r0, [sp] + ldr r0, [r7, #0x14] + str r0, [sp, #4] + ldr r3, [r4, #4] + add r0, r6, #0 + bl MOD16_021E6BA4 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021E6070 + mov r0, #0 + str r0, [r5, #8] + str r0, [r5, #4] + str r0, [r4] + b _021E5EC4 +_021E5EC0: + bl ErrorHandling +_021E5EC4: + add r0, r6, #0 + bl MOD16_021E6E44 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E5ED0: .word 0x0000068B + thumb_func_end MOD16_021E5E14 + + thumb_func_start MOD16_021E5ED4 +MOD16_021E5ED4: ; 0x021E5ED4 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021E5F3A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E5EEE: ; jump table + .short _021E5EF8 - _021E5EEE - 2 ; case 0 + .short _021E5F08 - _021E5EEE - 2 ; case 1 + .short _021E5F1C - _021E5EEE - 2 ; case 2 + .short _021E5F2A - _021E5EEE - 2 ; case 3 + .short _021E5F36 - _021E5EEE - 2 ; case 4 +_021E5EF8: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E63B4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F08: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E6424 + cmp r0, #0 + beq _021E5F3A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F1C: + add r1, r3, #0 + bl MOD16_021E5F88 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F2A: + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E5F3A +_021E5F36: + mov r0, #1 + pop {r4, pc} +_021E5F3A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E5ED4 + + thumb_func_start MOD16_021E5F40 +MOD16_021E5F40: ; 0x021E5F40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r6, r3, #0 + add r4, r2, #0 + bl MOD16_021E600C + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021E6198 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E5FA4 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E6288 + ldr r0, [r4, #0xc] + add r1, r5, #0 + str r0, [sp] + ldr r0, [r4, #0x14] + add r2, r4, #0 + str r0, [sp, #4] + add r0, r7, #0 + add r3, r6, #0 + bl MOD16_021E6B30 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E5F40 + + thumb_func_start MOD16_021E5F88 +MOD16_021E5F88: ; 0x021E5F88 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E6E0C + add r0, r5, #0 + bl MOD16_021E6394 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E6244 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5F88 + + thumb_func_start MOD16_021E5FA4 +MOD16_021E5FA4: ; 0x021E5FA4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E5FA4 + + thumb_func_start MOD16_021E600C +MOD16_021E600C: ; 0x021E600C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + add r5, r1, #0 + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #0xc] + add r1, r5, #0 + str r0, [sp] + ldr r0, [r4, #0x14] + add r2, r4, #0 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r7, #0 + bl MOD16_021E60A8 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + ldr r1, [r4, #0xc] + add r2, r4, #0 + str r1, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021E60A8 + mov r4, #0 + mov r6, #1 +_021E605C: + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021D8810 + add r4, r4, #1 + cmp r4, #4 + blt _021E605C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E600C + + thumb_func_start MOD16_021E6070 +MOD16_021E6070: ; 0x021E6070 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r1, #0 + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + ldr r1, [r4, #0xc] + add r2, r4, #0 + str r1, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD16_021E60A8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6070 + + thumb_func_start MOD16_021E60A8 +MOD16_021E60A8: ; 0x021E60A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, [sp, #0x30] + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r4, [sp, #0x2c] + cmp r5, #2 + ble _021E60C0 + bl ErrorHandling +_021E60C0: + ldr r0, [sp, #0x28] + cmp r0, #9 + bhi _021E6172 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E60D2: ; jump table + .short _021E60E6 - _021E60D2 - 2 ; case 0 + .short _021E60E6 - _021E60D2 - 2 ; case 1 + .short _021E60E6 - _021E60D2 - 2 ; case 2 + .short _021E60E6 - _021E60D2 - 2 ; case 3 + .short _021E6122 - _021E60D2 - 2 ; case 4 + .short _021E6136 - _021E60D2 - 2 ; case 5 + .short _021E60FA - _021E60D2 - 2 ; case 6 + .short _021E610E - _021E60D2 - 2 ; case 7 + .short _021E614A - _021E60D2 - 2 ; case 8 + .short _021E615E - _021E60D2 - 2 ; case 9 +_021E60E6: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6758 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E60FA: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E67F0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E610E: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E687C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E6122: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6908 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E6136: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6994 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E614A: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E615E: + ldr r2, [sp, #8] + str r4, [sp] + ldr r3, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + str r5, [sp, #4] + bl MOD16_021E6AAC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E6172: + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E60A8 + + thumb_func_start MOD16_021E617C +MOD16_021E617C: ; 0x021E617C + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E6184: + ldr r0, [r5] + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021D8810 + add r4, r4, #1 + cmp r4, #4 + blt _021E6184 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E617C + + thumb_func_start MOD16_021E6198 +MOD16_021E6198: ; 0x021E6198 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E6234 ; =0x0000372A + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x7a + bl FUN_020091E0 + str r0, [r5, #0x10] + bl FUN_02009B04 + ldr r0, [r5, #0x10] + bl FUN_02009474 + ldr r0, _021E6238 ; =0x000036C6 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x16 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x14] + bl FUN_02009D68 + ldr r0, [r5, #0x14] + bl FUN_02009474 + ldr r0, _021E623C ; =0x0000372B + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x7b + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x18] + ldr r0, _021E6240 ; =0x00003729 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x79 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x1c] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6234: .word 0x0000372A +_021E6238: .word 0x000036C6 +_021E623C: .word 0x0000372B +_021E6240: .word 0x00003729 + thumb_func_end MOD16_021E6198 + + thumb_func_start MOD16_021E6244 +MOD16_021E6244: ; 0x021E6244 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x14] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E6244 + + thumb_func_start MOD16_021E6288 +MOD16_021E6288: ; 0x021E6288 + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + add r5, r3, #0 + ldr r4, [r1] + ldr r3, _021E6390 ; =0x00003729 + add r6, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + str r2, [sp, #0x2c] + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x58 + sub r2, #0x63 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r4, #0 + str r0, [sp, #0x38] + add r0, sp, #0x58 + str r0, [sp, #0x3c] + mov r0, #0x20 + str r0, [sp, #0x4c] + mov r0, #1 + str r5, [sp, #0x54] + str r0, [sp, #0x50] + str r4, [sp, #0x40] + str r4, [sp, #0x44] + add r5, r6, #0 + mov r7, #0x1f +_021E62F6: + add r0, r4, #0 + add r1, sp, #0x34 + add r2, sp, #0x30 + bl MOD16_021E6D54 + ldr r0, [sp, #0x34] + lsl r0, r0, #0xc + str r0, [sp, #0x40] + ldr r0, [sp, #0x30] + add r0, #8 + lsl r0, r0, #0xc + str r0, [sp, #0x44] + add r0, sp, #0x38 + bl FUN_0201FF84 + str r0, [r5] + lsr r1, r4, #0x1f + lsl r0, r4, #0x1f + sub r0, r0, r1 + ror r0, r7 + add r0, r1, r0 + ldr r0, [r5] + bne _021E632C + mov r1, #0 + bl FUN_02020130 + b _021E6332 +_021E632C: + mov r1, #2 + bl FUN_02020130 +_021E6332: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021E62F6 + mov r0, #0x3e + lsl r0, r0, #0xe + str r0, [sp, #0x40] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x44] + mov r0, #0 + str r0, [sp, #0x4c] + add r0, sp, #0x38 + bl FUN_0201FF84 + add r1, r6, #0 + add r1, #0xbc + str r0, [r1] + add r0, r6, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_02020130 + add r0, r6, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_020200BC + add r0, r6, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0 + bl FUN_02020238 + ldr r0, [sp, #0x2c] + ldr r0, [r0, #0x10] + cmp r0, #1 + bgt _021E638C + add r6, #0xbc + ldr r0, [r6] + mov r1, #0 + bl FUN_020200A0 +_021E638C: + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E6390: .word 0x00003729 + thumb_func_end MOD16_021E6288 + + thumb_func_start MOD16_021E6394 +MOD16_021E6394: ; 0x021E6394 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021E639C: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021E639C + add r6, #0xbc + ldr r0, [r6] + bl FUN_0201FFC8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E6394 + + thumb_func_start MOD16_021E63B4 +MOD16_021E63B4: ; 0x021E63B4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E6474 + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E641A + cmp r6, #0 + beq _021E63F6 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E641A +_021E63F6: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E641A: + add r0, r5, #0 + bl MOD16_021E64F4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E63B4 + + thumb_func_start MOD16_021E6424 +MOD16_021E6424: ; 0x021E6424 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E6444 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E644E +_021E6444: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E644E: + add r4, r0, #0 + cmp r4, #1 + bne _021E6468 + cmp r6, #1 + bne _021E6460 + add r0, r7, #0 + bl MOD16_021E64B4 + b _021E646E +_021E6460: + add r0, r5, #0 + bl MOD16_021E617C + b _021E646E +_021E6468: + add r0, r5, #0 + bl MOD16_021E64F4 +_021E646E: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6424 + + thumb_func_start MOD16_021E6474 +MOD16_021E6474: ; 0x021E6474 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + mov r7, #1 +_021E647E: + ldr r0, [r4] + add r1, r7, #0 + bl FUN_02020398 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _021E647E + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_02020398 + mov r4, #0 + mov r6, #1 +_021E649E: + ldr r0, [r5, #0x20] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E649E + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6474 + + thumb_func_start MOD16_021E64B4 +MOD16_021E64B4: ; 0x021E64B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_021E64BE: + ldr r0, [r4] + add r1, r7, #0 + bl FUN_02020398 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _021E64BE + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0 + bl FUN_02020398 + mov r4, #0 + add r6, r4, #0 +_021E64DE: + ldr r0, [r5, #0x20] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E64DE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E64B4 + + thumb_func_start MOD16_021E64F4 +MOD16_021E64F4: ; 0x021E64F4 + push {r4, r5, r6, lr} + mov r6, #0x5b + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_021E64FE: + ldr r0, [r5] + add r2, r4, #0 + add r1, r0, r6 + bl MOD16_021D8AAC + add r4, r4, #1 + cmp r4, #4 + blt _021E64FE + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E64F4 + + thumb_func_start MOD16_021E6510 +MOD16_021E6510: ; 0x021E6510 + push {r3, r4, r5, r6, r7, lr} + mov r7, #0xff + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + mvn r7, r7 +_021E651C: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + str r4, [sp] + bl MOD16_021E6570 + add r4, r4, #1 + cmp r4, #4 + blt _021E651C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6510 + + thumb_func_start MOD16_021E6534 +MOD16_021E6534: ; 0x021E6534 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + cmp r0, #0 + bne _021E6544 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6544: + mov r4, #0 +_021E6546: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E65D8 + add r4, r4, #1 + add r7, r0, #0 + cmp r4, #4 + blt _021E6546 + mov r4, #0 +_021E655A: + ldr r0, [r5, #0x20] + ldr r0, [r0] + bl FUN_02011938 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E655A + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6534 + + thumb_func_start MOD16_021E6570 +MOD16_021E6570: ; 0x021E6570 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r6, r0, #0 + add r0, #0xb8 + ldr r0, [r0] + add r7, r1, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [sp, #0x38] + cmp r0, #0 + bne _021E658A + add r4, r5, #0 + b _021E6590 +_021E658A: + sub r4, r5, #2 + bpl _021E6590 + add r4, r4, #4 +_021E6590: + add r0, r5, #0 + add r1, sp, #0x14 + add r2, sp, #0x10 + bl MOD16_021E6D54 + ldr r0, [r7] + add r1, sp, #0x1c + add r2, sp, #0x18 + add r3, r4, #0 + bl MOD16_021D87E0 + add r1, r6, #0 + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r0, #0x10 + str r3, [sp] + str r0, [sp, #4] + ldr r4, [sp, #0xc] + add r1, #0x28 + lsl r0, r5, #5 + add r0, r1, r0 + ldr r1, [sp, #8] + add r3, r3, r4 + add r1, r2, r1 + bl MOD16_021D8BD8 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x10] + sub r1, r1, r0 + lsl r0, r5, #2 + add r0, r6, r0 + add r0, #0xa8 + str r1, [r0] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6570 + + thumb_func_start MOD16_021E65D8 +MOD16_021E65D8: ; 0x021E65D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + add r0, #0xb8 + ldr r0, [r0] + add r4, r2, #0 + str r1, [sp] + str r2, [sp, #4] + cmp r0, #0 + beq _021E65F2 + sub r4, r4, #2 + bpl _021E65F2 + add r4, r4, #4 +_021E65F2: + ldr r0, [sp, #4] + add r7, r6, #0 + lsl r5, r0, #5 + add r7, #0x28 + add r0, r7, r5 + bl MOD16_021D8BF4 + str r0, [sp, #8] + add r0, r6, #0 + str r0, [sp, #0xc] + add r0, #0x2c + str r0, [sp, #0xc] + ldr r2, [sp, #0xc] + ldr r0, [sp] + ldr r3, [r2, r5] + ldr r2, [sp, #4] + ldr r0, [r0] + lsl r2, r2, #2 + add r2, r6, r2 + add r2, #0xa8 + ldr r2, [r2] + ldr r1, [r7, r5] + add r2, r3, r2 + add r3, r4, #0 + bl MOD16_021D87BC + ldr r0, [r7, r5] + add r1, sp, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + ldr r0, [r0, r5] + add r0, #8 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + lsl r0, r4, #2 + ldr r0, [r6, r0] + bl FUN_02020044 + ldr r0, [sp, #8] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E65D8 + + thumb_func_start MOD16_021E6648 +MOD16_021E6648: ; 0x021E6648 + push {r3, lr} + mov r3, #0x67 + lsl r3, r3, #2 + cmp r0, r3 + bne _021E6656 + mov r0, #6 + pop {r3, pc} +_021E6656: + add r2, r3, #1 + cmp r0, r2 + bne _021E6660 + mov r0, #7 + pop {r3, pc} +_021E6660: + add r2, r3, #0 + add r2, #0xa + cmp r0, r2 + bne _021E666C + mov r0, #4 + pop {r3, pc} +_021E666C: + add r2, r3, #0 + add r2, #0xb + cmp r0, r2 + bne _021E6678 + mov r0, #5 + pop {r3, pc} +_021E6678: + cmp r0, #0xc9 + bne _021E6680 + mov r0, #8 + pop {r3, pc} +_021E6680: + sub r3, #0x1a + cmp r0, r3 + bne _021E668A + mov r0, #9 + pop {r3, pc} +_021E668A: + bl MOD16_021E66F4 + pop {r3, pc} + thumb_func_end MOD16_021E6648 + + thumb_func_start MOD16_021E6690 +MOD16_021E6690: ; 0x021E6690 + push {r3, lr} + mov r2, #0x67 + add r3, r0, #0 + lsl r2, r2, #2 + cmp r3, r2 + bne _021E66A4 + ldr r0, [r1, #4] + bl MOD16_021D9A18 + pop {r3, pc} +_021E66A4: + add r0, r2, #1 + cmp r3, r0 + bne _021E66B2 + ldr r0, [r1, #4] + bl MOD16_021D9A24 + pop {r3, pc} +_021E66B2: + add r0, r2, #0 + add r0, #0xa + cmp r3, r0 + bne _021E66C2 + ldr r0, [r1, #4] + bl MOD16_021D9A00 + pop {r3, pc} +_021E66C2: + add r0, r2, #0 + add r0, #0xb + cmp r3, r0 + bne _021E66D2 + ldr r0, [r1, #4] + bl MOD16_021D9A0C + pop {r3, pc} +_021E66D2: + cmp r3, #0xc9 + bne _021E66DE + ldr r0, [r1, #4] + bl MOD16_021D99F4 + pop {r3, pc} +_021E66DE: + sub r2, #0x1a + cmp r3, r2 + ldr r0, [r1, #4] + bne _021E66EC + bl MOD16_021D9A48 + pop {r3, pc} +_021E66EC: + add r1, r3, #0 + bl MOD16_021D99DC + pop {r3, pc} + thumb_func_end MOD16_021E6690 + + thumb_func_start MOD16_021E66F4 +MOD16_021E66F4: ; 0x021E66F4 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x12 + add r5, r0, #0 + bl FUN_02068678 + cmp r0, #0 + bne _021E6708 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E6708: + cmp r0, #0xfe + bne _021E6710 + mov r0, #2 + pop {r3, r4, r5, pc} +_021E6710: + cmp r0, #0xff + bne _021E6718 + mov r0, #3 + pop {r3, r4, r5, pc} +_021E6718: + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD16_021D99DC + cmp r0, #1 + bne _021E6754 + ldr r0, [r4, #4] + add r1, r5, #0 + mov r2, #0 + bl MOD16_021D98DC + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021E673C + bl ErrorHandling +_021E673C: + cmp r4, #0 + bne _021E6744 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E6744: + cmp r4, #0xfe + bne _021E674C + mov r0, #2 + pop {r3, r4, r5, pc} +_021E674C: + cmp r4, #0xff + bne _021E6754 + mov r0, #3 + pop {r3, r4, r5, pc} +_021E6754: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E66F4 + + thumb_func_start MOD16_021E6758 +MOD16_021E6758: ; 0x021E6758 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r4, [sp, #0x34] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x18 + add r2, sp, #0x14 + str r3, [sp, #0x10] + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E677E + add r0, r4, #0 + b _021E6784 +_021E677E: + sub r0, r4, #2 + bpl _021E6784 + add r0, r0, #4 +_021E6784: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x10] + str r1, [sp] + ldr r1, [sp, #0x14] + mov r3, #2 + str r1, [sp, #4] + ldr r1, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r6] + ldr r1, [r7, #4] + bl MOD16_021D8070 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E67AA + bl ErrorHandling +_021E67AA: + add r0, r4, #1 + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r1, [r5] + add r0, r4, #1 + cmp r1, #0 + beq _021E67C4 + sub r0, r0, #2 + bpl _021E67C4 + add r0, r0, #4 +_021E67C4: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x10] + str r1, [sp] + ldr r1, [sp, #0x14] + mov r3, #0 + str r1, [sp, #4] + ldr r1, [sp, #0x30] + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r6] + ldr r1, [r7, #4] + bl MOD16_021D8070 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E67EA + bl ErrorHandling +_021E67EA: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6758 + + thumb_func_start MOD16_021E67F0 +MOD16_021E67F0: ; 0x021E67F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E6814 + add r1, r4, #0 + b _021E681A +_021E6814: + sub r1, r4, #2 + bpl _021E681A + add r1, r1, #4 +_021E681A: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81A0 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E683C + bl ErrorHandling +_021E683C: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E6856 + sub r1, r1, #2 + bpl _021E6856 + add r1, r1, #4 +_021E6856: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81A0 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6878 + bl ErrorHandling +_021E6878: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E67F0 + + thumb_func_start MOD16_021E687C +MOD16_021E687C: ; 0x021E687C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E68A0 + add r1, r4, #0 + b _021E68A6 +_021E68A0: + sub r1, r4, #2 + bpl _021E68A6 + add r1, r1, #4 +_021E68A6: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81E4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E68C8 + bl ErrorHandling +_021E68C8: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E68E2 + sub r1, r1, #2 + bpl _021E68E2 + add r1, r1, #4 +_021E68E2: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D81E4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6904 + bl ErrorHandling +_021E6904: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E687C + + thumb_func_start MOD16_021E6908 +MOD16_021E6908: ; 0x021E6908 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E692C + add r1, r4, #0 + b _021E6932 +_021E692C: + sub r1, r4, #2 + bpl _021E6932 + add r1, r1, #4 +_021E6932: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8110 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6954 + bl ErrorHandling +_021E6954: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E696E + sub r1, r1, #2 + bpl _021E696E + add r1, r1, #4 +_021E696E: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8110 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6990 + bl ErrorHandling +_021E6990: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6908 + + thumb_func_start MOD16_021E6994 +MOD16_021E6994: ; 0x021E6994 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E69B8 + add r1, r4, #0 + b _021E69BE +_021E69B8: + sub r1, r4, #2 + bpl _021E69BE + add r1, r1, #4 +_021E69BE: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8158 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E69E0 + bl ErrorHandling +_021E69E0: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E69FA + sub r1, r1, #2 + bpl _021E69FA + add r1, r1, #4 +_021E69FA: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D8158 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6A1C + bl ErrorHandling +_021E6A1C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6994 + + thumb_func_start MOD16_021E6A20 +MOD16_021E6A20: ; 0x021E6A20 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E6A44 + add r1, r4, #0 + b _021E6A4A +_021E6A44: + sub r1, r4, #2 + bpl _021E6A4A + add r1, r1, #4 +_021E6A4A: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D80CC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6A6C + bl ErrorHandling +_021E6A6C: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E6A86 + sub r1, r1, #2 + bpl _021E6A86 + add r1, r1, #4 +_021E6A86: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D80CC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021E6AA8 + bl ErrorHandling +_021E6AA8: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6A20 + + thumb_func_start MOD16_021E6AAC +MOD16_021E6AAC: ; 0x021E6AAC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x2c] + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + add r0, r4, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #0 + bne _021E6AD0 + add r1, r4, #0 + b _021E6AD6 +_021E6AD0: + sub r1, r4, #2 + bpl _021E6AD6 + add r1, r1, #4 +_021E6AD6: + ldr r0, [sp, #0xc] + mov r2, #2 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D822C + cmp r0, #0xf + bne _021E6AF4 + bl ErrorHandling +_021E6AF4: + add r0, r4, #1 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD16_021E6D54 + add r5, #0xb8 + ldr r0, [r5] + add r1, r4, #1 + cmp r0, #0 + beq _021E6B0E + sub r1, r1, #2 + bpl _021E6B0E + add r1, r1, #4 +_021E6B0E: + ldr r0, [sp, #0xc] + mov r2, #0 + str r0, [sp] + ldr r0, [sp, #0x28] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r6] + ldr r1, [r7, #4] + ldr r3, [sp, #0x10] + bl MOD16_021D822C + cmp r0, #0xf + bne _021E6B2C + bl ErrorHandling +_021E6B2C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6AAC + + thumb_func_start MOD16_021E6B30 +MOD16_021E6B30: ; 0x021E6B30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r1, r5, #0 + add r1, #0xb8 + ldr r1, [r1] + add r4, r2, #0 + add r7, r3, #0 + mov r0, #0 + cmp r1, #0 + beq _021E6B4E + sub r0, r0, #2 + bpl _021E6B4E + add r0, r0, #4 +_021E6B4E: + ldr r1, [sp, #0x28] + add r2, r4, #0 + str r1, [sp] + ldr r1, [sp, #0x2c] + add r3, r7, #0 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E6C04 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + ldr r3, [r4, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + add r2, r5, #0 + add r2, #0xb8 + ldr r2, [r2] + mov r1, #2 + cmp r2, #0 + beq _021E6B86 + sub r1, r1, #2 + bpl _021E6B86 + add r1, r1, #4 +_021E6B86: + ldr r2, [sp, #0x28] + add r3, r7, #0 + str r2, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD16_021E6C04 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E6B30 + + thumb_func_start MOD16_021E6BA4 +MOD16_021E6BA4: ; 0x021E6BA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r2, #0 + add r5, r0, #0 + str r1, [sp, #0x10] + str r3, [sp, #0x14] + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x34] + ldr r3, [r6, #0x10] + mov r2, #1 + bl MOD16_021E5D2C + str r0, [sp, #0x18] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + mov r4, #2 + cmp r0, #0 + beq _021E6BD0 + sub r4, r4, #2 + bpl _021E6BD0 + add r4, r4, #4 +_021E6BD0: + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r7, r2, r1 + lsl r0, r7, #2 + add r0, r5, r0 + ldr r0, [r0, #0x20] + bl MOD16_021DB338 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x10] + str r0, [sp] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x14] + str r0, [sp, #4] + str r4, [sp, #8] + add r0, r5, #0 + add r2, r6, #0 + str r7, [sp, #0xc] + bl MOD16_021E6C04 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6BA4 + + thumb_func_start MOD16_021E6C04 +MOD16_021E6C04: ; 0x021E6C04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + ldr r0, [sp, #0x60] + add r6, r1, #0 + lsl r7, r0, #2 + ldr r0, [r4, r7] + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r5, [r6] + cmp r0, #0 + bne _021E6C20 + bl ErrorHandling +_021E6C20: + ldr r1, [sp, #8] + ldr r2, [sp, #0x58] + ldr r3, [sp, #0x5c] + add r0, r6, #0 + bl MOD16_021E6D94 + str r0, [sp, #0x10] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + str r0, [sp, #0x18] + ldr r0, [r4, #0x14] + bl FUN_02009E54 + mov r1, #0x28 + str r1, [sp, #0x2c] + mov r1, #3 + str r1, [sp, #0x30] + mov r1, #0 + ldr r2, [sp, #0xc] + str r1, [sp, #0x34] + mov r1, #1 + str r0, [sp, #0x20] + str r1, [sp, #0x38] + str r2, [sp, #0x3c] + bl FUN_0201E28C + str r0, [sp, #0x14] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0xa + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r2, _021E6CB0 ; =0x00000266 + ldr r3, [sp, #0x10] + add r1, r6, #0 + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0x1c] + str r0, [sp, #0x28] + ldr r0, [r4, r7] + add r4, #0x20 + str r0, [sp, #0x24] + ldr r0, [sp, #0x64] + lsl r5, r0, #2 + add r0, sp, #0x18 + bl MOD16_021DB2BC + str r0, [r4, r5] + ldr r0, [r4, r5] + ldr r1, [sp, #0x14] + ldr r0, [r0] + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6CB0: .word 0x00000266 + thumb_func_end MOD16_021E6C04 + + thumb_func_start MOD16_021E6CB4 +MOD16_021E6CB4: ; 0x021E6CB4 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #4] + add r6, r2, #0 + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r0, [r5, #4] + add r2, r6, #0 + bl MOD16_021D98DC + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _021E6CD8 + bl ErrorHandling +_021E6CD8: + cmp r5, #0 + beq _021E6CE2 + cmp r5, #1 + beq _021E6CE6 + b _021E6CEA +_021E6CE2: + mov r4, #0xd + b _021E6CEE +_021E6CE6: + mov r4, #0xe + b _021E6CEE +_021E6CEA: + bl ErrorHandling +_021E6CEE: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E6CB4 + + thumb_func_start MOD16_021E6CF4 +MOD16_021E6CF4: ; 0x021E6CF4 + mov r0, #0xd + bx lr + thumb_func_end MOD16_021E6CF4 + + thumb_func_start MOD16_021E6CF8 +MOD16_021E6CF8: ; 0x021E6CF8 + mov r0, #0xe + bx lr + thumb_func_end MOD16_021E6CF8 + + thumb_func_start MOD16_021E6CFC +MOD16_021E6CFC: ; 0x021E6CFC + mov r0, #0x15 + bx lr + thumb_func_end MOD16_021E6CFC + + thumb_func_start MOD16_021E6D00 +MOD16_021E6D00: ; 0x021E6D00 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D9934 + add r0, #0x11 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D00 + + thumb_func_start MOD16_021E6D10 +MOD16_021E6D10: ; 0x021E6D10 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D994C + add r0, #0x11 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D10 + + thumb_func_start MOD16_021E6D20 +MOD16_021E6D20: ; 0x021E6D20 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D9904 + add r0, #0xf + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D20 + + thumb_func_start MOD16_021E6D30 +MOD16_021E6D30: ; 0x021E6D30 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D991C + add r0, #0xf + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D30 + + thumb_func_start MOD16_021E6D40 +MOD16_021E6D40: ; 0x021E6D40 + mov r0, #0x14 + bx lr + thumb_func_end MOD16_021E6D40 + + thumb_func_start MOD16_021E6D44 +MOD16_021E6D44: ; 0x021E6D44 + push {r3, lr} + ldr r0, [r1, #4] + add r1, r2, #0 + bl MOD16_021D9A3C + add r0, #0x6e + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D44 + + thumb_func_start MOD16_021E6D54 +MOD16_021E6D54: ; 0x021E6D54 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r6, r1, #0 + add r7, r2, #0 + add r5, r4, #0 + cmp r0, #3 + bhi _021E6D8A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E6D6E: ; jump table + .short _021E6D78 - _021E6D6E - 2 ; case 0 + .short _021E6D76 - _021E6D6E - 2 ; case 1 + .short _021E6D80 - _021E6D6E - 2 ; case 2 + .short _021E6D7E - _021E6D6E - 2 ; case 3 +_021E6D76: + mov r4, #0x70 +_021E6D78: + add r4, #0x48 + mov r5, #0x58 + b _021E6D8E +_021E6D7E: + mov r4, #0x70 +_021E6D80: + mov r0, #0x52 + lsl r0, r0, #2 + add r4, r4, r0 + mov r5, #0x58 + b _021E6D8E +_021E6D8A: + bl ErrorHandling +_021E6D8E: + str r4, [r6] + str r5, [r7] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E6D54 + + thumb_func_start MOD16_021E6D94 +MOD16_021E6D94: ; 0x021E6D94 + push {r3, lr} + cmp r2, #9 + bhi _021E6E08 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021E6DA6: ; jump table + .short _021E6DBA - _021E6DA6 - 2 ; case 0 + .short _021E6DC2 - _021E6DA6 - 2 ; case 1 + .short _021E6DCA - _021E6DA6 - 2 ; case 2 + .short _021E6DD2 - _021E6DA6 - 2 ; case 3 + .short _021E6DEA - _021E6DA6 - 2 ; case 4 + .short _021E6DF2 - _021E6DA6 - 2 ; case 5 + .short _021E6DDA - _021E6DA6 - 2 ; case 6 + .short _021E6DE2 - _021E6DA6 - 2 ; case 7 + .short _021E6DFA - _021E6DA6 - 2 ; case 8 + .short _021E6E02 - _021E6DA6 - 2 ; case 9 +_021E6DBA: + add r2, r3, #0 + bl MOD16_021E6CB4 + pop {r3, pc} +_021E6DC2: + add r2, r3, #0 + bl MOD16_021E6CF4 + pop {r3, pc} +_021E6DCA: + add r2, r3, #0 + bl MOD16_021E6CF8 + pop {r3, pc} +_021E6DD2: + add r2, r3, #0 + bl MOD16_021E6CFC + pop {r3, pc} +_021E6DDA: + add r2, r3, #0 + bl MOD16_021E6D00 + pop {r3, pc} +_021E6DE2: + add r2, r3, #0 + bl MOD16_021E6D10 + pop {r3, pc} +_021E6DEA: + add r2, r3, #0 + bl MOD16_021E6D20 + pop {r3, pc} +_021E6DF2: + add r2, r3, #0 + bl MOD16_021E6D30 + pop {r3, pc} +_021E6DFA: + add r2, r3, #0 + bl MOD16_021E6D40 + pop {r3, pc} +_021E6E02: + add r2, r3, #0 + bl MOD16_021E6D44 +_021E6E08: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021E6D94 + + thumb_func_start MOD16_021E6E0C +MOD16_021E6E0C: ; 0x021E6E0C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E6E12: + ldr r0, [r5, #0x20] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021E6E12 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E6E0C + + thumb_func_start MOD16_021E6E24 +MOD16_021E6E24: ; 0x021E6E24 + push {r4, lr} + add r4, r0, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #0x18 + add r0, #0xc0 + str r1, [r0] + mov r0, #1 + add r4, #0xc4 + str r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6E24 + + thumb_func_start MOD16_021E6E44 +MOD16_021E6E44: ; 0x021E6E44 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc4 + ldr r0, [r0] + cmp r0, #0 + beq _021E6E7A + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xc0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + cmp r0, #0 + bgt _021E6E7A + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0 + add r4, #0xc4 + str r0, [r4] +_021E6E7A: + pop {r4, pc} + thumb_func_end MOD16_021E6E44 + + thumb_func_start MOD16_021E6E7C +MOD16_021E6E7C: ; 0x021E6E7C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021E6F18 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E6F54 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021E6FA4 + str r0, [r5, #0x24] + ldr r0, _021E6EBC ; =MOD16_021E6FA8 + str r0, [r5, #8] + ldr r0, _021E6EC0 ; =MOD16_021E6FAC + str r0, [r5, #0xc] + ldr r0, _021E6EC4 ; =MOD16_021E6FBC + str r0, [r5, #0x10] + ldr r0, _021E6EC8 ; =MOD16_021E6FC0 + str r0, [r5, #0x14] + ldr r0, _021E6ECC ; =MOD16_021E70A0 + str r0, [r5, #0x18] + ldr r0, _021E6ED0 ; =MOD16_021E70A4 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E6EBC: .word MOD16_021E6FA8 +_021E6EC0: .word MOD16_021E6FAC +_021E6EC4: .word MOD16_021E6FBC +_021E6EC8: .word MOD16_021E6FC0 +_021E6ECC: .word MOD16_021E70A0 +_021E6ED0: .word MOD16_021E70A4 + thumb_func_end MOD16_021E6E7C + + thumb_func_start MOD16_021E6ED4 +MOD16_021E6ED4: ; 0x021E6ED4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E6F7C + ldr r0, [r4, #4] + bl MOD16_021E6F90 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6ED4 + + thumb_func_start MOD16_021E6EE8 +MOD16_021E6EE8: ; 0x021E6EE8 + ldr r0, [r0] + str r1, [r0, #8] + str r2, [r0, #0xc] + bx lr + thumb_func_end MOD16_021E6EE8 + + thumb_func_start MOD16_021E6EF0 +MOD16_021E6EF0: ; 0x021E6EF0 + ldr r0, [r0] + str r1, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E6EF0 + + thumb_func_start MOD16_021E6EF8 +MOD16_021E6EF8: ; 0x021E6EF8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E6EF8 + + thumb_func_start MOD16_021E6EFC +MOD16_021E6EFC: ; 0x021E6EFC + ldr r2, [r0] + mov r0, #1 + cmp r1, #1 + bne _021E6F08 + mov r1, #0 + add r0, r1, #0 +_021E6F08: + str r1, [r2, #0x1c] + bx lr + thumb_func_end MOD16_021E6EFC + + thumb_func_start MOD16_021E6F0C +MOD16_021E6F0C: ; 0x021E6F0C + ldr r2, [r0] + mov r0, #0 + str r1, [r2, #0x18] + str r0, [r2, #0x1c] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E6F0C + + thumb_func_start MOD16_021E6F18 +MOD16_021E6F18: ; 0x021E6F18 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + bne _021E6F2A + bl ErrorHandling +_021E6F2A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E6F18 + + thumb_func_start MOD16_021E6F54 +MOD16_021E6F54: ; 0x021E6F54 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E6F66 + bl ErrorHandling +_021E6F66: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E6F54 + + thumb_func_start MOD16_021E6F7C +MOD16_021E6F7C: ; 0x021E6F7C + push {r4, lr} + add r4, r0, #0 + bne _021E6F86 + bl ErrorHandling +_021E6F86: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6F7C + + thumb_func_start MOD16_021E6F90 +MOD16_021E6F90: ; 0x021E6F90 + push {r4, lr} + add r4, r0, #0 + bne _021E6F9A + bl ErrorHandling +_021E6F9A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E6F90 + + thumb_func_start MOD16_021E6FA4 +MOD16_021E6FA4: ; 0x021E6FA4 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E6FA4 + + thumb_func_start MOD16_021E6FA8 +MOD16_021E6FA8: ; 0x021E6FA8 + mov r0, #1 + bx lr + thumb_func_end MOD16_021E6FA8 + + thumb_func_start MOD16_021E6FAC +MOD16_021E6FAC: ; 0x021E6FAC + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021E6FB6 + mov r0, #1 + bx lr +_021E6FB6: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E6FAC + + thumb_func_start MOD16_021E6FBC +MOD16_021E6FBC: ; 0x021E6FBC + mov r0, #1 + bx lr + thumb_func_end MOD16_021E6FBC + + thumb_func_start MOD16_021E6FC0 +MOD16_021E6FC0: ; 0x021E6FC0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021E7096 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E6FDC: ; jump table + .short _021E6FE4 - _021E6FDC - 2 ; case 0 + .short _021E6FFE - _021E6FDC - 2 ; case 1 + .short _021E7048 - _021E6FDC - 2 ; case 2 + .short _021E708C - _021E6FDC - 2 ; case 3 +_021E6FE4: + ldr r0, [r4, #4] + mov r1, #0x58 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x58 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7096 +_021E6FFE: + ldr r3, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E7160 + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E7018 + cmp r0, #1 + beq _021E7026 + cmp r0, #2 + beq _021E7034 + b _021E7040 +_021E7018: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E77C0 + b _021E7040 +_021E7026: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E76E8 + b _021E7040 +_021E7034: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021E78BC +_021E7040: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7096 +_021E7048: + ldr r0, [r7, #0x14] + cmp r0, #0 + beq _021E7058 + cmp r0, #1 + beq _021E7066 + cmp r0, #2 + beq _021E7074 + b _021E7080 +_021E7058: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E7844 + add r1, r0, #0 + b _021E7080 +_021E7066: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E7764 + add r1, r0, #0 + b _021E7080 +_021E7074: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021E7944 + add r1, r0, #0 +_021E7080: + cmp r1, #0 + beq _021E7096 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7096 +_021E708C: + ldr r0, _021E709C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E7096: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E709C: .word 0x04000050 + thumb_func_end MOD16_021E6FC0 + + thumb_func_start MOD16_021E70A0 +MOD16_021E70A0: ; 0x021E70A0 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E70A0 + + thumb_func_start MOD16_021E70A4 +MOD16_021E70A4: ; 0x021E70A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r5, [r4] + add r3, r0, #0 + add r1, r2, #0 + ldr r0, [r4, #8] + cmp r5, #4 + bhi _021E715A + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_021E70C0: ; jump table + .short _021E70CA - _021E70C0 - 2 ; case 0 + .short _021E70FE - _021E70C0 - 2 ; case 1 + .short _021E713C - _021E70C0 - 2 ; case 2 + .short _021E714A - _021E70C0 - 2 ; case 3 + .short _021E7156 - _021E70C0 - 2 ; case 4 +_021E70CA: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E70DA + cmp r1, #1 + beq _021E70E4 + cmp r1, #2 + beq _021E70EE + b _021E70F6 +_021E70DA: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E77C0 + b _021E70F6 +_021E70E4: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E76E8 + b _021E70F6 +_021E70EE: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E78BC +_021E70F6: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E70FE: + ldr r1, [r1, #0x14] + cmp r1, #0 + beq _021E710E + cmp r1, #1 + beq _021E711A + cmp r1, #2 + beq _021E7126 + b _021E7130 +_021E710E: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E7844 + add r2, r0, #0 + b _021E7130 +_021E711A: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E7764 + add r2, r0, #0 + b _021E7130 +_021E7126: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021E7944 + add r2, r0, #0 +_021E7130: + cmp r2, #0 + beq _021E715A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E713C: + add r1, r3, #0 + bl MOD16_021E71A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E714A: + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E715A +_021E7156: + mov r0, #1 + pop {r3, r4, r5, pc} +_021E715A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E70A4 + + thumb_func_start MOD16_021E7160 +MOD16_021E7160: ; 0x021E7160 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E73F0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E743C + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021E7490 + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD16_021E7580 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021E71D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E72E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7160 + + thumb_func_start MOD16_021E71A8 +MOD16_021E71A8: ; 0x021E71A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl MOD16_021E76D0 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E753C + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E71A8 + + thumb_func_start MOD16_021E71D0 +MOD16_021E71D0: ; 0x021E71D0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x33 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r1, #3 + str r1, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x37 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r6, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x38 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xe + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E71D0 + + thumb_func_start MOD16_021E72E4 +MOD16_021E72E4: ; 0x021E72E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #0x10] + mov r0, #0x40 + add r1, r2, #0 + bl FUN_020219F4 + str r0, [sp, #0x18] + ldr r2, _021E7394 ; =0x00000266 + ldr r3, [sp, #0x10] + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E731E + mov r7, #0 + bl ErrorHandling +_021E731E: + ldr r0, [r4, #0x18] + bl MOD16_021E7A70 + add r1, r0, #0 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x18] + bl FUN_0200A8E0 + mov r0, #0 + ldr r1, [sp, #0x18] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x48 + str r0, [sp] + mov r1, #0 + lsr r6, r3, #0x1f + add r6, r3, r6 + ldr r0, _021E7398 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + ldr r2, [sp, #0x18] + asr r6, r6, #1 + mov r3, #0xb8 + add r0, r0, #4 + sub r3, r3, r6 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_0200A8B8 + ldr r0, [r4, #0x1c] + ldr r1, [sp, #0x10] + str r0, [sp] + ldr r3, [r4, #0x18] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E739C + ldr r1, [sp, #0x10] + ldr r3, [r4, #0x18] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E7AB4 + ldr r1, [sp, #0x10] + ldr r3, [r4, #0x18] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E7AF0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021E7394: .word 0x00000266 +_021E7398: .word 0x00020100 + thumb_func_end MOD16_021E72E4 + + thumb_func_start MOD16_021E739C +MOD16_021E739C: ; 0x021E739C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + add r0, r2, #0 + add r1, r3, #0 + ldr r2, [sp, #0x20] + add r3, r4, #0 + bl MOD16_021DBC48 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002F08 + cmp r0, #0xf0 + bhs _021E73C8 + lsr r1, r0, #1 + mov r0, #0x80 + sub r3, r0, r1 + b _021E73CA +_021E73C8: + mov r3, #8 +_021E73CA: + mov r0, #0x88 + str r0, [sp] + mov r1, #0 + ldr r0, _021E73EC ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E73EC: .word 0x00020100 + thumb_func_end MOD16_021E739C + + thumb_func_start MOD16_021E73F0 +MOD16_021E73F0: ; 0x021E73F0 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + add r6, r2, #0 + bl MOD16_021D9D88 + add r3, r0, #0 + mov r0, #0x2b + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + add r2, r6, #0 + bl MOD16_021D7E9C + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D891C + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E73F0 + + thumb_func_start MOD16_021E7424 +MOD16_021E7424: ; 0x021E7424 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D8950 + ldr r0, [r4] + mov r1, #0 + bl MOD16_021D88F0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7424 + + thumb_func_start MOD16_021E743C +MOD16_021E743C: ; 0x021E743C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r0, #0x48 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E743C + + thumb_func_start MOD16_021E7474 +MOD16_021E7474: ; 0x021E7474 + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7474 + + thumb_func_start MOD16_021E7490 +MOD16_021E7490: ; 0x021E7490 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E752C ; =0x00000FFA + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5a + bl FUN_020091E0 + str r0, [r5, #8] + bl FUN_02009B04 + ldr r0, [r5, #8] + bl FUN_02009474 + ldr r0, _021E7530 ; =0x00000FAD + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xd + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0xc] + bl FUN_02009D68 + ldr r0, [r5, #0xc] + bl FUN_02009474 + ldr r0, _021E7534 ; =0x00000FF8 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x58 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x10] + ldr r0, _021E7538 ; =0x00000FF9 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x59 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x14] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E752C: .word 0x00000FFA +_021E7530: .word 0x00000FAD +_021E7534: .word 0x00000FF8 +_021E7538: .word 0x00000FF9 + thumb_func_end MOD16_021E7490 + + thumb_func_start MOD16_021E753C +MOD16_021E753C: ; 0x021E753C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0xc] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #8] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0xc] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E753C + + thumb_func_start MOD16_021E7580 +MOD16_021E7580: ; 0x021E7580 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xa0 + add r6, r0, #0 + add r0, r2, #0 + add r5, r1, #0 + ldr r0, [r0, #4] + str r2, [sp, #0x2c] + add r7, r3, #0 + ldr r4, [r5] + bl MOD16_021D9DE8 + ldr r3, _021E7670 ; =0x00000FF9 + str r0, [sp, #0x30] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x7c + sub r2, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x5c] + add r0, sp, #0x7c + str r0, [sp, #0x60] + mov r0, #0x20 + str r0, [sp, #0x70] + mov r0, #1 + str r0, [sp, #0x74] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp, #0x64] + mov r0, #0xd + lsl r0, r0, #0xe + str r0, [sp, #0x68] + add r0, sp, #0x5c + str r7, [sp, #0x78] + bl FUN_0201FF84 + mov r1, #0x11 + str r0, [r6] + bl FUN_02020130 + ldr r0, [sp, #0x2c] + ldr r0, [r0, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + beq _021E7618 + mov r0, #0 + str r0, [sp, #0x30] +_021E7618: + ldr r1, [sp, #0x30] + add r0, r5, #0 + add r2, r7, #0 + bl MOD16_021E7674 + add r4, r0, #0 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88D4 + mov r1, #0x15 + ldr r2, [r5] + lsl r1, r1, #4 + ldr r1, [r2, r1] + str r1, [sp, #0x34] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x3c] + ldr r0, [r6] + str r0, [sp, #0x40] + mov r0, #0x4d + mvn r0, r0 + str r0, [sp, #0x44] + add r0, #0x46 + str r0, [sp, #0x48] + mov r0, #0 + str r0, [sp, #0x4c] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #1 + str r0, [sp, #0x54] + str r7, [sp, #0x58] + str r4, [sp, #0x38] + add r0, sp, #0x34 + bl MOD16_021DB2BC + str r0, [r6, #4] + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0xa0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7670: .word 0x00000FF9 + thumb_func_end MOD16_021E7580 + + thumb_func_start MOD16_021E7674 +MOD16_021E7674: ; 0x021E7674 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r7, r2, #0 + mov r1, #0x12 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #2 + add r2, r7, #0 + bl MOD16_021DBC08 + add r6, r0, #0 + mov r0, #2 + add r1, r6, #0 + mov r2, #0 + bl FUN_02002E14 + cmp r0, #0x88 + bhs _021E76B0 + mov r1, #0x88 + sub r0, r1, r0 + lsr r3, r0, #1 + b _021E76B2 +_021E76B0: + mov r3, #0 +_021E76B2: + mov r0, #0 + str r0, [sp] + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021DB42C + add r0, r6, #0 + bl MOD16_021DBBAC + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7674 + + thumb_func_start MOD16_021E76D0 +MOD16_021E76D0: ; 0x021E76D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #4] + bl MOD16_021DB338 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E76D0 + + thumb_func_start MOD16_021E76E8 +MOD16_021E76E8: ; 0x021E76E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + mov r1, #1 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021D88F0 + add r0, r7, #0 + bl MOD16_021E79C0 + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E775A + cmp r6, #0 + beq _021E7736 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + b _021E775A +_021E7736: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E775A: + add r0, r5, #0 + bl MOD16_021E79F0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E76E8 + + thumb_func_start MOD16_021E7764 +MOD16_021E7764: ; 0x021E7764 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r2, #0x10] + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E7784 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E778E +_021E7784: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021E778E: + add r4, r0, #0 + cmp r4, #1 + bne _021E77B6 + cmp r6, #1 + bne _021E77A8 + add r0, r7, #0 + bl MOD16_021E79D8 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E77BC +_021E77A8: + add r0, r5, #0 + bl MOD16_021E7474 + add r0, r5, #0 + bl MOD16_021E7424 + b _021E77BC +_021E77B6: + add r0, r5, #0 + bl MOD16_021E79F0 +_021E77BC: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7764 + + thumb_func_start MOD16_021E77C0 +MOD16_021E77C0: ; 0x021E77C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E79C0 + cmp r6, #0 + bne _021E77E6 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #4 + bl MOD16_021E7A00 + add r0, r7, #0 + bl MOD16_021E7A38 +_021E77E6: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E7840 + cmp r6, #0 + beq _021E781C + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E781C: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E7840: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E77C0 + + thumb_func_start MOD16_021E7844 +MOD16_021E7844: ; 0x021E7844 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021E7864 + bl MOD16_021E7A1C + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E7A54 + str r0, [sp, #4] + b _021E786A +_021E7864: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] +_021E786A: + ldr r0, [r6, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021E7884 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #8] + b _021E7890 +_021E7884: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #8] +_021E7890: + mov r1, #0 + add r2, sp, #0 +_021E7894: + ldr r0, [r2] + cmp r0, #0 + beq _021E78A2 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #3 + blt _021E7894 +_021E78A2: + cmp r1, #3 + bne _021E78B6 + cmp r7, #1 + bne _021E78B0 + add r0, r5, #0 + bl MOD16_021E79D8 +_021E78B0: + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E78B6: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7844 + + thumb_func_start MOD16_021E78BC +MOD16_021E78BC: ; 0x021E78BC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r7, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD16_021E79C0 + ldr r0, [r5] + mov r1, #1 + bl MOD16_021D88F0 + cmp r6, #0 + bne _021E78E4 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r7, #0 + mov r3, #1 + bl MOD16_021E7A00 +_021E78E4: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021E793E + cmp r6, #0 + beq _021E791A + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021E791A: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E793E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E78BC + + thumb_func_start MOD16_021E7944 +MOD16_021E7944: ; 0x021E7944 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bne _021E795A + bl MOD16_021E7A1C + str r0, [sp] + b _021E795E +_021E795A: + mov r0, #1 + str r0, [sp] +_021E795E: + ldr r0, [r4, #0x10] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021E7978 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021E7984 +_021E7978: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021E7984: + mov r1, #0 + add r2, sp, #0 +_021E7988: + ldr r0, [r2] + cmp r0, #0 + beq _021E7996 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021E7988 +_021E7996: + cmp r1, #2 + bne _021E79BA + cmp r6, #1 + bne _021E79AE + add r0, r7, #0 + bl MOD16_021E79D8 + ldr r0, [r5] + mov r1, #0 + bl MOD16_021D88F0 + b _021E79B4 +_021E79AE: + add r0, r5, #0 + bl MOD16_021E7424 +_021E79B4: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E79BA: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E7944 + + thumb_func_start MOD16_021E79C0 +MOD16_021E79C0: ; 0x021E79C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021E79C0 + + thumb_func_start MOD16_021E79D8 +MOD16_021E79D8: ; 0x021E79D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021E79D8 + + thumb_func_start MOD16_021E79F0 +MOD16_021E79F0: ; 0x021E79F0 + mov r1, #0x5b + ldr r0, [r0] + lsl r1, r1, #2 + ldr r3, _021E79FC ; =MOD16_021D8A8C + add r1, r0, r1 + bx r3 + .align 2, 0 +_021E79FC: .word MOD16_021D8A8C + thumb_func_end MOD16_021E79F0 + + thumb_func_start MOD16_021E7A00 +MOD16_021E7A00: ; 0x021E7A00 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + str r2, [sp] + str r3, [sp, #4] + add r0, #0x18 + mov r1, #0x30 + add r2, r4, #0 + mov r3, #0x48 + bl MOD16_021D8BD8 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7A00 + + thumb_func_start MOD16_021E7A1C +MOD16_021E7A1C: ; 0x021E7A1C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x18 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + bl MOD16_021D86F4 + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E7A1C + + thumb_func_start MOD16_021E7A38 +MOD16_021E7A38: ; 0x021E7A38 + push {r3, lr} + sub sp, #8 + mov r1, #0x52 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + add r0, #0x38 + mov r1, #0xac + mov r2, #0xaa + mov r3, #0x20 + bl MOD16_021D8BD8 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD16_021E7A38 + + thumb_func_start MOD16_021E7A54 +MOD16_021E7A54: ; 0x021E7A54 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x38 + bl MOD16_021D8BF4 + add r6, r0, #0 + ldr r0, [r4] + ldr r1, [r5, #0x38] + ldr r2, [r5, #0x3c] + bl MOD16_021D7F6C + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E7A54 + + thumb_func_start MOD16_021E7A70 +MOD16_021E7A70: ; 0x021E7A70 + push {r4, lr} + cmp r0, #7 + bhi _021E7AAA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7A82: ; jump table + .short _021E7AAA - _021E7A82 - 2 ; case 0 + .short _021E7A92 - _021E7A82 - 2 ; case 1 + .short _021E7A96 - _021E7A82 - 2 ; case 2 + .short _021E7A9A - _021E7A82 - 2 ; case 3 + .short _021E7A9E - _021E7A82 - 2 ; case 4 + .short _021E7AA2 - _021E7A82 - 2 ; case 5 + .short _021E7AAA - _021E7A82 - 2 ; case 6 + .short _021E7AA6 - _021E7A82 - 2 ; case 7 +_021E7A92: + mov r4, #0x72 + b _021E7AAE +_021E7A96: + mov r4, #0x16 + b _021E7AAE +_021E7A9A: + mov r4, #0x17 + b _021E7AAE +_021E7A9E: + mov r4, #0x19 + b _021E7AAE +_021E7AA2: + mov r4, #0x18 + b _021E7AAE +_021E7AA6: + mov r4, #0x1a + b _021E7AAE +_021E7AAA: + bl ErrorHandling +_021E7AAE: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7A70 + + thumb_func_start MOD16_021E7AB4 +MOD16_021E7AB4: ; 0x021E7AB4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r2, #0 + add r1, r3, #0 + add r2, r4, #0 + bl MOD16_021DBBC8 + add r4, r0, #0 + mov r0, #0x60 + str r0, [sp] + mov r1, #0 + ldr r0, _021E7AEC ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x80 + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E7AEC: .word 0x00020100 + thumb_func_end MOD16_021E7AB4 + + thumb_func_start MOD16_021E7AF0 +MOD16_021E7AF0: ; 0x021E7AF0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + add r0, r2, #0 + add r1, r3, #0 + add r2, r4, #0 + bl MOD16_021DBC08 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xf2 + sub r3, r1, r0 + mov r0, #0x70 + str r0, [sp] + mov r1, #0 + ldr r0, _021E7B34 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl MOD16_021DBBAC + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021E7B34: .word 0x00020100 + thumb_func_end MOD16_021E7AF0 + + thumb_func_start MOD16_021E7B38 +MOD16_021E7B38: ; 0x021E7B38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E7BB0 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E7C10 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E7C38 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E7CE0 + str r0, [r5, #0x24] + ldr r0, _021E7B80 ; =MOD16_021E7CE4 + str r0, [r5, #8] + ldr r0, _021E7B84 ; =MOD16_021E7D28 + str r0, [r5, #0xc] + ldr r0, _021E7B88 ; =MOD16_021E7D68 + str r0, [r5, #0x10] + ldr r0, _021E7B8C ; =MOD16_021E7D7C + str r0, [r5, #0x14] + ldr r0, _021E7B90 ; =MOD16_021E7E10 + str r0, [r5, #0x18] + ldr r0, _021E7B94 ; =MOD16_021E7ECC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E7B80: .word MOD16_021E7CE4 +_021E7B84: .word MOD16_021E7D28 +_021E7B88: .word MOD16_021E7D68 +_021E7B8C: .word MOD16_021E7D7C +_021E7B90: .word MOD16_021E7E10 +_021E7B94: .word MOD16_021E7ECC + thumb_func_end MOD16_021E7B38 + + thumb_func_start MOD16_021E7B98 +MOD16_021E7B98: ; 0x021E7B98 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E7C90 + ldr r0, [r4] + bl MOD16_021E7CA4 + ldr r0, [r4, #0x20] + bl MOD16_021E7CB8 + pop {r4, pc} + thumb_func_end MOD16_021E7B98 + + thumb_func_start MOD16_021E7BB0 +MOD16_021E7BB0: ; 0x021E7BB0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021E7BC2 + bl ErrorHandling +_021E7BC2: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021E7BC8: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E7BC8 + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #0x14] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B5C + ldr r0, [r0] + mov r1, #3 + str r0, [r4, #8] + add r0, r5, #0 + bl MOD16_021D7B5C + str r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #4 + bl MOD16_021D7B5C + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E7BB0 + + thumb_func_start MOD16_021E7C10 +MOD16_021E7C10: ; 0x021E7C10 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E7C22 + bl ErrorHandling +_021E7C22: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E7C10 + + thumb_func_start MOD16_021E7C38 +MOD16_021E7C38: ; 0x021E7C38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021E7CE0 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021E7C58 + bl ErrorHandling +_021E7C58: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DB0B0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DB1D0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x28 + add r2, r6, #0 + mov r3, #4 + bl MOD16_021DB114 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7C38 + + thumb_func_start MOD16_021E7C90 +MOD16_021E7C90: ; 0x021E7C90 + push {r4, lr} + add r4, r0, #0 + bne _021E7C9A + bl ErrorHandling +_021E7C9A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7C90 + + thumb_func_start MOD16_021E7CA4 +MOD16_021E7CA4: ; 0x021E7CA4 + push {r4, lr} + add r4, r0, #0 + bne _021E7CAE + bl ErrorHandling +_021E7CAE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E7CA4 + + thumb_func_start MOD16_021E7CB8 +MOD16_021E7CB8: ; 0x021E7CB8 + push {r4, lr} + add r4, r0, #0 + bne _021E7CC2 + bl ErrorHandling +_021E7CC2: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x28 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021E7CB8 + + thumb_func_start MOD16_021E7CE0 +MOD16_021E7CE0: ; 0x021E7CE0 + mov r0, #3 + bx lr + thumb_func_end MOD16_021E7CE0 + + thumb_func_start MOD16_021E7CE4 +MOD16_021E7CE4: ; 0x021E7CE4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x3c + bl FUN_02016998 + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl Call_FillMemWithValue + mov r1, #0 + add r2, r4, #0 + mov r0, #4 +_021E7D02: + add r1, r1, #1 + str r0, [r2, #0x14] + add r2, r2, #4 + cmp r1, #8 + blt _021E7D02 + mov r0, #0 + str r0, [r4, #0x10] + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E7F54 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E8B7C + str r4, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E7CE4 + + thumb_func_start MOD16_021E7D28 +MOD16_021E7D28: ; 0x021E7D28 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021E7D38 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E7D38: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021E7D42 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E7D42: + ldr r0, [r5, #0x14] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021E7D62 + add r0, r4, #0 + bl MOD16_021E8ABC + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E8014 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E8A78 +_021E7D62: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E7D28 + + thumb_func_start MOD16_021E7D68 +MOD16_021E7D68: ; 0x021E7D68 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021E8088 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021E7D68 + + thumb_func_start MOD16_021E7D7C +MOD16_021E7D7C: ; 0x021E7D7C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + str r2, [sp] + ldr r7, [r3, #8] + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021E7E0A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7D9A: ; jump table + .short _021E7DA2 - _021E7D9A - 2 ; case 0 + .short _021E7DBC - _021E7D9A - 2 ; case 1 + .short _021E7DE2 - _021E7D9A - 2 ; case 2 + .short _021E7DF8 - _021E7D9A - 2 ; case 3 +_021E7DA2: + ldr r0, [r4, #4] + mov r1, #0xc4 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0xc4 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7E0A +_021E7DBC: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E8228 + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021E8AE4 + ldr r2, [sp] + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E880C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7E0A +_021E7DE2: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E8878 + cmp r0, #0 + beq _021E7E0A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7E0A +_021E7DF8: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E7E0A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7D7C + + thumb_func_start MOD16_021E7E10 +MOD16_021E7E10: ; 0x021E7E10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp, #0x1c] + add r0, r1, #0 + ldr r7, [r0, #8] + ldr r6, [r3, #8] + add r0, r7, #0 + add r0, #0xc0 + str r1, [sp, #0x20] + ldr r1, [r0] + ldr r0, [r6, #0x38] + cmp r1, r0 + beq _021E7E3A + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021E8AE4 + add r0, r7, #0 + ldr r1, [r6, #0x38] + add r0, #0xc0 + str r1, [r0] +_021E7E3A: + mov r0, #0 + str r0, [sp, #0x2c] + add r0, r7, #0 + str r0, [sp, #0x28] + add r0, #0xa0 + str r0, [sp, #0x28] + add r0, r7, #0 + str r0, [sp, #0x24] + add r0, #0x80 + str r0, [sp, #0x24] + add r4, r6, #0 + add r5, r7, #0 +_021E7E52: + ldr r0, [sp, #0x2c] + cmp r0, #0 + bne _021E7E5C + mov r1, #4 + b _021E7E5E +_021E7E5C: + mov r1, #5 +_021E7E5E: + mov r0, #5 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #0x24] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x20] + ldr r0, [r0, #4] + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r1, [r5] + ldr r2, [r5, #0x20] + ldr r3, [r4, #0x14] + bl MOD16_021E88B4 + ldr r0, [r5, #0x50] + ldr r1, [r4, #0x14] + bl MOD16_021D7B98 + ldr r0, [sp, #0x28] + add r4, r4, #4 + add r0, r0, #4 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + add r5, r5, #4 + add r0, r0, #4 + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #1 + ble _021E7E52 + mov r4, #2 + add r6, #8 + add r7, #8 +_021E7EB0: + ldr r0, [r7] + ldr r1, [r6, #0x14] + add r2, r4, #0 + bl MOD16_021E8BB8 + add r4, r4, #1 + add r6, r6, #4 + add r7, r7, #4 + cmp r4, #8 + blt _021E7EB0 + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7E10 + + thumb_func_start MOD16_021E7ECC +MOD16_021E7ECC: ; 0x021E7ECC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #4 + bhi _021E7F4E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7EE8: ; jump table + .short _021E7EF2 - _021E7EE8 - 2 ; case 0 + .short _021E7F14 - _021E7EE8 - 2 ; case 1 + .short _021E7F2A - _021E7EE8 - 2 ; case 2 + .short _021E7F3C - _021E7EE8 - 2 ; case 3 + .short _021E7F4A - _021E7EE8 - 2 ; case 4 +_021E7EF2: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021E880C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F14: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021E8878 + cmp r0, #0 + beq _021E7F4E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F2A: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021E8258 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F3C: + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7F4E +_021E7F4A: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E7F4E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E7ECC + + thumb_func_start MOD16_021E7F54 +MOD16_021E7F54: ; 0x021E7F54 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x20 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x70 + mov r2, #0x98 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x38 + add r0, r0, #4 + mov r2, #0x60 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0x30 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #8 + mov r2, #0xc0 + mov r3, #8 + bl MOD16_021D7C98 + mov r0, #0x58 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0xc + mov r2, #0xc0 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x10 + mov r2, #0xc0 + mov r3, #0x58 + bl MOD16_021D7C98 + mov r0, #0xa8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x14 + mov r2, #0xc0 + mov r3, #0x80 + bl MOD16_021D7C98 + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x18 + mov r2, #0xc0 + mov r3, #0xa8 + bl MOD16_021D7C98 + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0xa0 + add r0, #0x1c + mov r2, #0xc0 + mov r3, #0xd0 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021E8010 ; =MOD16_021E80A0 + mov r1, #8 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E8010: .word MOD16_021E80A0 + thumb_func_end MOD16_021E7F54 + + thumb_func_start MOD16_021E8014 +MOD16_021E8014: ; 0x021E8014 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #3 +_021E801E: + add r1, r1, #1 + str r0, [r2, #0x14] + add r2, r2, #4 + cmp r1, #8 + blt _021E801E + ldr r0, [r4] + bl FUN_02022144 + ldr r0, [r4, #0x10] + cmp r0, #5 + bhi _021E806E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8040: ; jump table + .short _021E804C - _021E8040 - 2 ; case 0 + .short _021E8052 - _021E8040 - 2 ; case 1 + .short _021E8058 - _021E8040 - 2 ; case 2 + .short _021E805E - _021E8040 - 2 ; case 3 + .short _021E8064 - _021E8040 - 2 ; case 4 + .short _021E806A - _021E8040 - 2 ; case 5 +_021E804C: + mov r0, #1 + str r0, [r4, #0x1c] + b _021E806E +_021E8052: + mov r0, #1 + str r0, [r4, #0x20] + b _021E806E +_021E8058: + mov r0, #1 + str r0, [r4, #0x24] + b _021E806E +_021E805E: + mov r0, #1 + str r0, [r4, #0x28] + b _021E806E +_021E8064: + mov r0, #1 + str r0, [r4, #0x2c] + b _021E806E +_021E806A: + mov r0, #1 + str r0, [r4, #0x30] +_021E806E: + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021E807A + cmp r0, #1 + beq _021E8080 + pop {r4, pc} +_021E807A: + mov r0, #2 + str r0, [r4, #0x14] + pop {r4, pc} +_021E8080: + mov r0, #2 + str r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8014 + + thumb_func_start MOD16_021E8088 +MOD16_021E8088: ; 0x021E8088 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8088 + + thumb_func_start MOD16_021E80A0 +MOD16_021E80A0: ; 0x021E80A0 + push {r3, r4, r5, lr} + ldr r4, [r2, #4] + ldr r5, [r2] + lsl r2, r0, #2 + add r2, r4, r2 + str r1, [r2, #0x14] + cmp r1, #2 + bne _021E811A + cmp r0, #7 + bhi _021E811A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E80C0: ; jump table + .short _021E80D0 - _021E80C0 - 2 ; case 0 + .short _021E80D6 - _021E80C0 - 2 ; case 1 + .short _021E80DC - _021E80C0 - 2 ; case 2 + .short _021E8112 - _021E80C0 - 2 ; case 3 + .short _021E814A - _021E80C0 - 2 ; case 4 + .short _021E8180 - _021E80C0 - 2 ; case 5 + .short _021E81B6 - _021E80C0 - 2 ; case 6 + .short _021E81EC - _021E80C0 - 2 ; case 7 +_021E80D0: + mov r0, #0 + str r0, [r4, #0x34] + pop {r3, r4, r5, pc} +_021E80D6: + mov r0, #1 + str r0, [r4, #0x34] + pop {r3, r4, r5, pc} +_021E80DC: + ldr r0, [r4, #0x38] + mov r1, #1 + tst r0, r1 + beq _021E811A + ldr r0, [r4, #0x10] + cmp r0, #0 + ldr r0, [r5, #8] + bne _021E80F2 + bl MOD16_021E4BB8 + b _021E80FA +_021E80F2: + mov r1, #0 + bl MOD16_021E4BBC + mov r0, #1 +_021E80FA: + cmp r0, #0 + beq _021E811A + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E8112: + ldr r1, [r4, #0x38] + mov r0, #2 + tst r0, r1 + bne _021E811C +_021E811A: + b _021E8220 +_021E811C: + ldr r0, [r4, #0x10] + cmp r0, #1 + ldr r0, [r5, #0x10] + bne _021E812A + bl MOD16_021E6EF8 + b _021E8132 +_021E812A: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E8132: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E814A: + ldr r1, [r4, #0x38] + mov r0, #4 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #2 + ldr r0, [r5, #0x10] + bne _021E8160 + bl MOD16_021E6EF8 + b _021E8168 +_021E8160: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E8168: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #2 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E8180: + ldr r1, [r4, #0x38] + mov r0, #8 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #3 + ldr r0, [r5, #0x10] + bne _021E8196 + bl MOD16_021E6EF8 + b _021E819E +_021E8196: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E819E: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #3 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E81B6: + ldr r1, [r4, #0x38] + mov r0, #0x10 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #4 + ldr r0, [r5, #0x10] + bne _021E81CC + bl MOD16_021E6EF8 + b _021E81D4 +_021E81CC: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E81D4: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #4 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_021E81EC: + ldr r1, [r4, #0x38] + mov r0, #0x20 + tst r0, r1 + beq _021E8220 + ldr r0, [r4, #0x10] + cmp r0, #5 + ldr r0, [r5, #0x10] + bne _021E8202 + bl MOD16_021E6EF8 + b _021E820A +_021E8202: + mov r1, #0 + bl MOD16_021E6EFC + mov r0, #1 +_021E820A: + cmp r0, #0 + beq _021E8220 + ldr r2, [r4, #0x10] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #5 + bl MOD16_021E89D4 + ldr r0, _021E8224 ; =0x0000068B + bl FUN_020054C8 +_021E8220: + pop {r3, r4, r5, pc} + nop +_021E8224: .word 0x0000068B + thumb_func_end MOD16_021E80A0 + + thumb_func_start MOD16_021E8228 +MOD16_021E8228: ; 0x021E8228 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021E82B8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E8394 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E84DC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021E868C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E8228 + + thumb_func_start MOD16_021E8258 +MOD16_021E8258: ; 0x021E8258 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + add r6, r2, #0 + str r0, [sp] + add r4, r1, #0 + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0x80 + bl MOD16_021D8CFC + mov r0, #0x20 + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0xa0 + bl MOD16_021D8CFC + add r0, r5, #0 + bl MOD16_021E866C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8780 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8480 + mov r4, #0 +_021E829E: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #0 + beq _021E82AC + bl FUN_02016A18 +_021E82AC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E829E + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E8258 + + thumb_func_start MOD16_021E82B8 +MOD16_021E82B8: ; 0x021E82B8 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3e + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3c + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r6, r0, #0 + mov r1, #6 + ldr r2, [sp, #0x10] + mov r0, #0xe + str r0, [sp] + ldrh r0, [r2] + add r3, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3f + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + add r4, r0, #0 + mov r1, #6 + ldr r2, [sp, #0x10] + mov r0, #7 + str r0, [sp] + ldrh r0, [r2] + add r3, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E82B8 + + thumb_func_start MOD16_021E8394 +MOD16_021E8394: ; 0x021E8394 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E8468 ; =0x000013EE + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x66 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x40] + bl FUN_02009B04 + ldr r0, [r5, #0x40] + bl FUN_02009474 + ldr r0, _021E846C ; =0x000013EC + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x64 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x48] + ldr r0, _021E8470 ; =0x000013ED + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x65 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x4c] + ldr r0, _021E8474 ; =0x000013EB + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x63 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x70] + bl FUN_02009B04 + ldr r0, [r5, #0x70] + bl FUN_02009474 + ldr r0, _021E8478 ; =0x000013E9 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x61 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x78] + ldr r0, _021E847C ; =0x000013EA + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x62 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x7c] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021E8468: .word 0x000013EE +_021E846C: .word 0x000013EC +_021E8470: .word 0x000013ED +_021E8474: .word 0x000013EB +_021E8478: .word 0x000013E9 +_021E847C: .word 0x000013EA + thumb_func_end MOD16_021E8394 + + thumb_func_start MOD16_021E8480 +MOD16_021E8480: ; 0x021E8480 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x40] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x40] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x48] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x4c] + bl FUN_02009490 + ldr r0, [r5, #0x70] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x70] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x78] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x7c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E8480 + + thumb_func_start MOD16_021E84DC +MOD16_021E84DC: ; 0x021E84DC + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + ldr r4, [r1] + ldr r3, _021E8658 ; =0x000013ED + add r7, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r5, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021E865C ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x50 + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x21 + str r0, [sp, #0x30] + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r0, #0x1f + str r0, [sp, #0x44] + mov r0, #2 + str r0, [sp, #0x48] + lsl r0, r0, #0x12 + str r0, [sp, #0x38] + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + str r5, [sp, #0x4c] + bl FUN_0201FF84 + mov r1, #0 + str r0, [r7] + bl FUN_02020130 + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #0x38] + mov r1, #0x13 + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + mov r1, #0 + str r0, [r7, #4] + bl FUN_02020130 + ldr r3, _021E8660 ; =0x000013EA + mov r0, #0 + mov r2, #5 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #2 + lsl r2, r2, #6 + str r1, [sp, #0x10] + ldr r1, [r4, r2] + str r1, [sp, #0x14] + add r1, r2, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r2, #0 + add r1, #8 + ldr r1, [r4, r1] + add r2, #0xc + str r1, [sp, #0x1c] + ldr r1, [r4, r2] + ldr r2, _021E865C ; =0x0000083F + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x50 + sub r3, r3, #1 + bl FUN_02008AA4 + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r1, #0xb + mov r0, #3 + lsl r1, r1, #0x10 + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + mov r0, #0 + ldr r4, _021E8664 ; =0x021FF5DC + ldr r5, _021E8668 ; =0x021FF5F4 + str r0, [sp, #0x2c] + add r6, r7, #0 +_021E85DA: + ldr r0, [r4] + str r0, [sp, #0x38] + add r0, sp, #0x30 + bl FUN_0201FF84 + str r0, [r6, #8] + ldr r1, [r5] + bl FUN_02020130 + ldr r0, [sp, #0x2c] + add r4, r4, #4 + add r0, r0, #1 + add r6, r6, #4 + add r5, r5, #4 + str r0, [sp, #0x2c] + cmp r0, #6 + blt _021E85DA + mov r0, #0x1e + str r0, [sp, #0x44] + mov r0, #0xa + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + mov r1, #0x86 + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + mov r1, #0xd + str r0, [r7, #0x50] + bl FUN_02020130 + mov r0, #6 + lsl r0, r0, #0x10 + mov r1, #0x4e + str r0, [sp, #0x38] + lsl r1, r1, #0xc + lsl r0, r0, #1 + str r1, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + mov r1, #0xc + str r0, [r7, #0x54] + bl FUN_02020130 + mov r1, #2 + add r7, #8 + mov r0, #0 +_021E8648: + add r1, r1, #1 + str r0, [r7, #0x50] + add r7, r7, #4 + cmp r1, #8 + blt _021E8648 + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + nop +_021E8658: .word 0x000013ED +_021E865C: .word 0x0000083F +_021E8660: .word 0x000013EA +_021E8664: .word 0x021FF5DC +_021E8668: .word 0x021FF5F4 + thumb_func_end MOD16_021E84DC + + thumb_func_start MOD16_021E866C +MOD16_021E866C: ; 0x021E866C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E8672: + ldr r0, [r5] + bl FUN_0201FFC8 + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _021E8682 + bl FUN_0201FFC8 +_021E8682: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E8672 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E866C + + thumb_func_start MOD16_021E868C +MOD16_021E868C: ; 0x021E868C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021E86A0 + bl ErrorHandling +_021E86A0: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021E8778 ; =0x0000083F + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r1, #5 + mvn r1, r1 + str r1, [sp, #0x1c] + mov r1, #2 + mov r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #4 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021E877C ; =0x00000266 + add r1, r6, #0 + mov r3, #0x21 + bl MOD16_021DB3C8 + str r6, [sp, #0xc] + ldr r0, [r5] + str r0, [sp, #0x14] + mov r0, #0x1f + mvn r0, r0 + str r0, [sp, #0x18] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x20] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #4 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021E877C ; =0x00000266 + add r1, r6, #0 + mov r3, #0x22 + bl MOD16_021DB3C8 + mov r1, #0x20 + sub r0, r1, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5, #4] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x24] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r1, #2 + add r5, #8 + mov r0, #0 +_021E876A: + add r1, r1, #1 + str r0, [r5, #0x20] + add r5, r5, #4 + cmp r1, #8 + blt _021E876A + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E8778: .word 0x0000083F +_021E877C: .word 0x00000266 + thumb_func_end MOD16_021E868C + + thumb_func_start MOD16_021E8780 +MOD16_021E8780: ; 0x021E8780 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E8786: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021E8790 + bl MOD16_021DB338 +_021E8790: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E8786 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8780 + + thumb_func_start MOD16_021E879C +MOD16_021E879C: ; 0x021E879C + push {r3, r4, r5, r6, r7, lr} + mov r7, #1 + add r5, r0, #0 + mov r4, #0 + add r6, r7, #0 +_021E87A6: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021E87BC + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011AF0 +_021E87BC: + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _021E87C8 + mov r1, #1 + bl FUN_02020398 +_021E87C8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E87A6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E879C + + thumb_func_start MOD16_021E87D4 +MOD16_021E87D4: ; 0x021E87D4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r7, r4, #0 + add r6, r4, #0 +_021E87DE: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _021E87F4 + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011AF0 +_021E87F4: + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _021E8800 + mov r1, #0 + bl FUN_02020398 +_021E8800: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E87DE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E87D4 + + thumb_func_start MOD16_021E880C +MOD16_021E880C: ; 0x021E880C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021E879C + ldr r0, [r4, #0x14] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E8874 + cmp r6, #0 + beq _021E8850 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E8850: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021E8874: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E880C + + thumb_func_start MOD16_021E8878 +MOD16_021E8878: ; 0x021E8878 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #0x14] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021E8898 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021E889E +_021E8898: + mov r0, #2 + bl FUN_0200A344 +_021E889E: + cmp r0, #0 + beq _021E88B0 + cmp r4, #0 + beq _021E88AC + add r0, r6, #0 + bl MOD16_021E87D4 +_021E88AC: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E88B0: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E8878 + + thumb_func_start MOD16_021E88B4 +MOD16_021E88B4: ; 0x021E88B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + str r2, [sp, #0xc] + ldr r4, [sp, #0x30] + ldr r6, [sp, #0x40] + mov r5, #0 + bl MOD16_021D7B98 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #8] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + bl MOD16_021E8960 + ldr r0, [sp, #8] + bl FUN_0202022C + cmp r0, #3 + bhi _021E8926 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E88F2: ; jump table + .short _021E88FA - _021E88F2 - 2 ; case 0 + .short _021E88FA - _021E88F2 - 2 ; case 1 + .short _021E890A - _021E88F2 - 2 ; case 2 + .short _021E8918 - _021E88F2 - 2 ; case 3 +_021E88FA: + ldr r0, [r4] + cmp r0, #0 + beq _021E8926 + mov r0, #0 + mov r5, #1 + mov r7, #9 + str r0, [r4] + b _021E8926 +_021E890A: + ldr r0, [r4] + cmp r0, #1 + beq _021E8926 + mov r5, #1 + mov r7, #0xa + str r5, [r4] + b _021E8926 +_021E8918: + ldr r0, [r4] + cmp r0, #2 + beq _021E8926 + mov r0, #2 + mov r5, #1 + mov r7, #8 + str r0, [r4] +_021E8926: + cmp r5, #0 + beq _021E895C + ldr r0, [r6] + cmp r0, #0 + beq _021E8934 + bl FUN_02016A18 +_021E8934: + ldr r0, [sp, #4] + ldr r3, [sp, #0x34] + ldr r0, [r0] + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD16_021D8D70 + str r0, [r6] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x2c] + ldr r2, [r2, #0xc] + mov r0, #0x1f + lsl r1, r1, #5 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021E895C + bl ErrorHandling +_021E895C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E88B4 + + thumb_func_start MOD16_021E8960 +MOD16_021E8960: ; 0x021E8960 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D7C70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021E8960 + + thumb_func_start MOD16_021E8970 +MOD16_021E8970: ; 0x021E8970 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r4, #8] + mov r6, #1 + str r6, [r1, #0x1c] + ldr r3, [r4] + add r5, r2, #0 + ldr r2, [r3] + mov r1, #4 + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + mov r1, #2 + ldr r0, [r4, #8] + cmp r5, #5 + str r1, [r0, #0x14] + bhi _021E89D0 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E89A0: ; jump table + .short _021E89AC - _021E89A0 - 2 ; case 0 + .short _021E89BE - _021E89A0 - 2 ; case 1 + .short _021E89BE - _021E89A0 - 2 ; case 2 + .short _021E89BE - _021E89A0 - 2 ; case 3 + .short _021E89BE - _021E89A0 - 2 ; case 4 + .short _021E89BE - _021E89A0 - 2 ; case 5 +_021E89AC: + ldr r0, [r4, #8] + mov r1, #0x30 + str r1, [r0, #8] + ldr r0, [r4, #8] + mov r1, #0x48 + str r1, [r0, #0xc] + ldr r0, [r4, #8] + str r6, [r0, #0x14] + pop {r4, r5, r6, pc} +_021E89BE: + ldr r0, [r4, #0x10] + mov r1, #0x30 + mov r2, #0x48 + bl MOD16_021E6EE8 + ldr r0, [r4, #0x10] + add r1, r6, #0 + bl MOD16_021E6EF0 +_021E89D0: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E8970 + + thumb_func_start MOD16_021E89D4 +MOD16_021E89D4: ; 0x021E89D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r3, #0 + add r4, r1, #0 + str r2, [sp] + cmp r5, #5 + bhi _021E8A36 + add r1, r5, r5 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E89EC: ; jump table + .short _021E89F8 - _021E89EC - 2 ; case 0 + .short _021E8A12 - _021E89EC - 2 ; case 1 + .short _021E8A12 - _021E89EC - 2 ; case 2 + .short _021E8A12 - _021E89EC - 2 ; case 3 + .short _021E8A12 - _021E89EC - 2 ; case 4 + .short _021E8A12 - _021E89EC - 2 ; case 5 +_021E89F8: + ldr r3, [r4] + mov r1, #4 + ldr r2, [r3] + mov r7, #0x30 + orr r1, r2 + str r1, [r3] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r4, #8] + mov r1, #2 + mov r6, #0x48 + str r1, [r0, #0x14] + b _021E8A36 +_021E8A12: + ldr r2, [r4] + mov r1, #2 + ldr r3, [r2] + mov r7, #0x30 + orr r3, r1 + str r3, [r2] + str r5, [r0, #0x10] + ldr r0, [r4, #0x10] + mov r6, #0x48 + bl MOD16_021E6EF0 + sub r0, r5, #1 + bl MOD16_021DBBB4 + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl MOD16_021E6F0C +_021E8A36: + ldr r0, [sp] + cmp r0, #5 + bhi _021E8A76 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8A48: ; jump table + .short _021E8A54 - _021E8A48 - 2 ; case 0 + .short _021E8A64 - _021E8A48 - 2 ; case 1 + .short _021E8A64 - _021E8A48 - 2 ; case 2 + .short _021E8A64 - _021E8A48 - 2 ; case 3 + .short _021E8A64 - _021E8A48 - 2 ; case 4 + .short _021E8A64 - _021E8A48 - 2 ; case 5 +_021E8A54: + ldr r0, [r4, #8] + mov r1, #2 + str r7, [r0, #8] + ldr r0, [r4, #8] + str r6, [r0, #0xc] + ldr r0, [r4, #8] + str r1, [r0, #0x14] + pop {r3, r4, r5, r6, r7, pc} +_021E8A64: + ldr r0, [r4, #0x10] + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021E6EE8 + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD16_021E6EF0 +_021E8A76: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E89D4 + + thumb_func_start MOD16_021E8A78 +MOD16_021E8A78: ; 0x021E8A78 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x34] + add r4, r1, #0 + cmp r0, #8 + beq _021E8AB6 + cmp r0, #1 + ldr r0, [r4, #4] + bne _021E8A94 + mov r1, #0 + mvn r1, r1 + bl MOD16_021D9D48 + b _021E8A9A +_021E8A94: + mov r1, #1 + bl MOD16_021D9D48 +_021E8A9A: + cmp r0, #1 + bne _021E8AB6 + ldr r2, [r5, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8970 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E8B7C + ldr r0, _021E8AB8 ; =0x0000068B + bl FUN_020054C8 +_021E8AB6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021E8AB8: .word 0x0000068B + thumb_func_end MOD16_021E8A78 + + thumb_func_start MOD16_021E8ABC +MOD16_021E8ABC: ; 0x021E8ABC + ldr r1, _021E8AE0 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x40 + tst r1, r2 + beq _021E8ACC + mov r1, #1 + str r1, [r0, #0x34] + bx lr +_021E8ACC: + mov r1, #0x80 + tst r1, r2 + beq _021E8AD8 + mov r1, #0 + str r1, [r0, #0x34] + bx lr +_021E8AD8: + mov r1, #8 + str r1, [r0, #0x34] + bx lr + nop +_021E8AE0: .word 0x021C48B8 + thumb_func_end MOD16_021E8ABC + + thumb_func_start MOD16_021E8AE4 +MOD16_021E8AE4: ; 0x021E8AE4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #1 + tst r0, r1 + ldr r0, [r5, #8] + bne _021E8AFC + mov r1, #0 + bl FUN_020200A0 + b _021E8B00 +_021E8AFC: + bl FUN_020200A0 +_021E8B00: + ldr r1, [r4, #0x38] + mov r0, #2 + tst r0, r1 + ldr r0, [r5, #0xc] + bne _021E8B12 + mov r1, #0 + bl FUN_020200A0 + b _021E8B18 +_021E8B12: + mov r1, #1 + bl FUN_020200A0 +_021E8B18: + ldr r1, [r4, #0x38] + mov r0, #4 + tst r0, r1 + ldr r0, [r5, #0x10] + bne _021E8B2A + mov r1, #0 + bl FUN_020200A0 + b _021E8B30 +_021E8B2A: + mov r1, #1 + bl FUN_020200A0 +_021E8B30: + ldr r1, [r4, #0x38] + mov r0, #8 + tst r0, r1 + ldr r0, [r5, #0x14] + bne _021E8B42 + mov r1, #0 + bl FUN_020200A0 + b _021E8B48 +_021E8B42: + mov r1, #1 + bl FUN_020200A0 +_021E8B48: + ldr r1, [r4, #0x38] + mov r0, #0x10 + tst r0, r1 + ldr r0, [r5, #0x18] + bne _021E8B5A + mov r1, #0 + bl FUN_020200A0 + b _021E8B60 +_021E8B5A: + mov r1, #1 + bl FUN_020200A0 +_021E8B60: + ldr r1, [r4, #0x38] + mov r0, #0x20 + tst r0, r1 + ldr r0, [r5, #0x1c] + bne _021E8B72 + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_021E8B72: + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8AE4 + + thumb_func_start MOD16_021E8B7C +MOD16_021E8B7C: ; 0x021E8B7C + push {r3, r4, r5, r6, r7, lr} + mov r5, #0 + add r4, r0, #0 + add r6, r1, #0 + str r5, [r0, #0x38] + add r4, #0x38 + mov r7, #1 +_021E8B8A: + add r0, r5, #0 + bl MOD16_021DBBB4 + add r1, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9F58 + cmp r0, #0 + beq _021E8BB0 + ldr r1, [r4] + mov r0, #1 + add r2, r1, #0 + orr r2, r0 + add r0, r5, #1 + add r1, r7, #0 + lsl r1, r0 + add r0, r2, #0 + orr r0, r1 + str r0, [r4] +_021E8BB0: + add r5, r5, #1 + cmp r5, #6 + blt _021E8B8A + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E8B7C + + thumb_func_start MOD16_021E8BB8 +MOD16_021E8BB8: ; 0x021E8BB8 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + cmp r4, #2 + blt _021E8BC8 + cmp r4, #8 + blt _021E8BCC +_021E8BC8: + bl ErrorHandling +_021E8BCC: + sub r0, r4, #2 + lsl r1, r0, #2 + ldr r0, _021E8BEC ; =0x021FF5F4 + cmp r6, #1 + ldr r1, [r0, r1] + bne _021E8BE2 + add r0, r5, #0 + add r1, r1, #1 + bl FUN_02020130 + pop {r4, r5, r6, pc} +_021E8BE2: + add r0, r5, #0 + bl FUN_02020130 + pop {r4, r5, r6, pc} + nop +_021E8BEC: .word 0x021FF5F4 + thumb_func_end MOD16_021E8BB8 + + thumb_func_start MOD16_021E8BF0 +MOD16_021E8BF0: ; 0x021E8BF0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E8C70 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E8CF4 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E8D1C + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E8E34 + str r0, [r5, #0x24] + ldr r0, _021E8C38 ; =MOD16_021E8E38 + str r0, [r5, #8] + ldr r0, _021E8C3C ; =MOD16_021E8E40 + str r0, [r5, #0xc] + ldr r0, _021E8C40 ; =MOD16_021E8E70 + str r0, [r5, #0x10] + ldr r0, _021E8C44 ; =MOD16_021E8E78 + str r0, [r5, #0x14] + ldr r0, _021E8C48 ; =MOD16_021E8F24 + str r0, [r5, #0x18] + ldr r0, _021E8C4C ; =MOD16_021E8F4C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E8C38: .word MOD16_021E8E38 +_021E8C3C: .word MOD16_021E8E40 +_021E8C40: .word MOD16_021E8E70 +_021E8C44: .word MOD16_021E8E78 +_021E8C48: .word MOD16_021E8F24 +_021E8C4C: .word MOD16_021E8F4C + thumb_func_end MOD16_021E8BF0 + + thumb_func_start MOD16_021E8C50 +MOD16_021E8C50: ; 0x021E8C50 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E8DBC + ldr r0, [r4, #4] + bl MOD16_021E8DD0 + ldr r0, [r4, #0x20] + bl MOD16_021E8DE4 + pop {r4, pc} + thumb_func_end MOD16_021E8C50 + + thumb_func_start MOD16_021E8C68 +MOD16_021E8C68: ; 0x021E8C68 + ldr r0, [r0] + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E8C68 + + thumb_func_start MOD16_021E8C70 +MOD16_021E8C70: ; 0x021E8C70 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x34 + bl FUN_02016998 + add r4, r0, #0 + bne _021E8C82 + bl ErrorHandling +_021E8C82: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x34 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7B00 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #2 + bl MOD16_021D7B5C + ldr r0, [r0] + mov r1, #3 + str r0, [r4, #0x10] + add r0, r5, #0 + bl MOD16_021D7B5C + str r0, [r4, #0x14] + add r0, r5, #0 + mov r1, #4 + bl MOD16_021D7B5C + str r0, [r4, #0x18] + add r0, r5, #0 + mov r1, #6 + bl MOD16_021D7B5C + str r0, [r4, #0x1c] + add r0, r5, #0 + mov r1, #7 + bl MOD16_021D7B5C + str r0, [r4, #0x20] + add r0, r5, #0 + mov r1, #6 + bl MOD16_021D7B7C + str r0, [r4, #0x24] + add r0, r5, #0 + mov r1, #0 + bl MOD16_021D7B5C + ldr r0, [r0] + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E8C70 + + thumb_func_start MOD16_021E8CF4 +MOD16_021E8CF4: ; 0x021E8CF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E8D06 + bl ErrorHandling +_021E8D06: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E8CF4 + + thumb_func_start MOD16_021E8D1C +MOD16_021E8D1C: ; 0x021E8D1C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021E8E34 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021E8D3C + bl ErrorHandling +_021E8D3C: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DAE0C + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r6, #0 + mov r3, #4 + bl MOD16_021DB0B0 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x28 + add r2, r6, #0 + mov r3, #8 + bl MOD16_021DAED4 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3c + add r2, r6, #0 + mov r3, #0x10 + bl MOD16_021DAF38 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x50 + add r2, r6, #0 + mov r3, #0x20 + bl MOD16_021DAF9C + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x64 + add r2, r6, #0 + mov r3, #0x40 + bl MOD16_021DB000 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x78 + add r2, r6, #0 + mov r3, #0x80 + bl MOD16_021DB058 + add r1, r4, #0 + mov r3, #1 + add r0, r5, #0 + add r1, #0x8c + add r2, r6, #0 + lsl r3, r3, #8 + bl MOD16_021DB16C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021E8D1C + + thumb_func_start MOD16_021E8DBC +MOD16_021E8DBC: ; 0x021E8DBC + push {r4, lr} + add r4, r0, #0 + bne _021E8DC6 + bl ErrorHandling +_021E8DC6: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8DBC + + thumb_func_start MOD16_021E8DD0 +MOD16_021E8DD0: ; 0x021E8DD0 + push {r4, lr} + add r4, r0, #0 + bne _021E8DDA + bl ErrorHandling +_021E8DDA: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8DD0 + + thumb_func_start MOD16_021E8DE4 +MOD16_021E8DE4: ; 0x021E8DE4 + push {r4, lr} + add r4, r0, #0 + bne _021E8DEE + bl ErrorHandling +_021E8DEE: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x28 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x3c + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x50 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x64 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x78 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x8c + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021E8DE4 + + thumb_func_start MOD16_021E8E34 +MOD16_021E8E34: ; 0x021E8E34 + mov r0, #8 + bx lr + thumb_func_end MOD16_021E8E34 + + thumb_func_start MOD16_021E8E38 +MOD16_021E8E38: ; 0x021E8E38 + ldr r1, [r1, #0x10] + mov r0, #1 + str r0, [r1, #0x1c] + bx lr + thumb_func_end MOD16_021E8E38 + + thumb_func_start MOD16_021E8E40 +MOD16_021E8E40: ; 0x021E8E40 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E8E4E + mov r0, #1 + pop {r4, pc} +_021E8E4E: + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _021E8E58 + mov r0, #0 + pop {r4, pc} +_021E8E58: + ldr r0, [r4] + cmp r0, #0 + bne _021E8E6A + add r0, r1, #0 + bl MOD16_021E9534 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E8E6A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E8E40 + + thumb_func_start MOD16_021E8E70 +MOD16_021E8E70: ; 0x021E8E70 + mov r0, #0 + str r0, [r1, #8] + mov r0, #1 + bx lr + thumb_func_end MOD16_021E8E70 + + thumb_func_start MOD16_021E8E78 +MOD16_021E8E78: ; 0x021E8E78 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r1, #3 + bhi _021E8F1A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8E96: ; jump table + .short _021E8E9E - _021E8E96 - 2 ; case 0 + .short _021E8EBE - _021E8E96 - 2 ; case 1 + .short _021E8EF6 - _021E8E96 - 2 ; case 2 + .short _021E8F0E - _021E8E96 - 2 ; case 3 +_021E8E9E: + ldr r0, [r4, #4] + mov r1, #0x28 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x28 + bl Call_FillMemWithValue + ldr r1, [r7, #8] + ldr r0, [r4, #8] + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E8F1E +_021E8EBE: + ldr r3, [r4, #4] + add r1, r6, #0 + bl MOD16_021E9294 + add r0, r6, #0 + bl MOD16_021E9DE0 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2f + str r0, [sp, #8] + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r2, r1, #0 + sub r2, #0x14 + bl MOD16_021D8988 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E8F1E +_021E8EF6: + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + cmp r0, #0 + beq _021E8F1E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E8F1E +_021E8F0E: + add r0, r6, #0 + bl MOD16_021E9DFC + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E8F1A: + bl ErrorHandling +_021E8F1E: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E8E78 + + thumb_func_start MOD16_021E8F24 +MOD16_021E8F24: ; 0x021E8F24 + push {r3, r4, r5, lr} + ldr r4, [r1, #8] + add r5, r2, #0 + ldr r1, [r5, #8] + ldr r0, [r4] + cmp r0, r1 + beq _021E8F46 + add r0, r4, #0 + bl MOD16_021E9530 + ldr r1, [r5, #8] + ldr r2, [r4] + add r0, r4, #0 + bl MOD16_021EA1B4 + ldr r0, [r5, #8] + str r0, [r4] +_021E8F46: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8F24 + + thumb_func_start MOD16_021E8F4C +MOD16_021E8F4C: ; 0x021E8F4C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + ldr r3, [r4] + add r5, r0, #0 + ldr r1, [r4, #8] + cmp r3, #4 + bhi _021E9008 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021E8F68: ; jump table + .short _021E8F72 - _021E8F68 - 2 ; case 0 + .short _021E8FCC - _021E8F68 - 2 ; case 1 + .short _021E8FE4 - _021E8F68 - 2 ; case 2 + .short _021E8FF0 - _021E8F68 - 2 ; case 3 + .short _021E9002 - _021E8F68 - 2 ; case 4 +_021E8F72: + ldr r0, [r2, #0x2c] + cmp r0, #0 + beq _021E8FA2 + add r0, r1, #0 + bl MOD16_021E9DE0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2f + str r0, [sp, #8] + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 + b _021E8FC4 +_021E8FA2: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x3f + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #4 + add r3, r1, #0 + sub r3, #0x14 + bl MOD16_021D8988 +_021E8FC4: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E8FCC: + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + cmp r0, #0 + beq _021E900C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E8FE4: + bl MOD16_021E92D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E8FF0: + add r0, r1, #0 + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E900C +_021E9002: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_021E9008: + bl ErrorHandling +_021E900C: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E8F4C + + thumb_func_start MOD16_021E9014 +MOD16_021E9014: ; 0x021E9014 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021E9024 + mov r0, #1 + str r0, [r4, #0x30] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E9014 + + thumb_func_start MOD16_021E9024 +MOD16_021E9024: ; 0x021E9024 + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + mov r1, #0 + str r1, [r4, #0x28] + ldr r0, [r4, #0x10] + str r1, [r0, #0x14] + ldr r0, [r4, #0x18] + bl MOD16_021E6EF0 + ldr r0, [r4, #8] + cmp r0, #4 + bhi _021E90D2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9052: ; jump table + .short _021E905C - _021E9052 - 2 ; case 0 + .short _021E9078 - _021E9052 - 2 ; case 1 + .short _021E909C - _021E9052 - 2 ; case 2 + .short _021E90C0 - _021E9052 - 2 ; case 3 + .short _021E90CA - _021E9052 - 2 ; case 4 +_021E905C: + ldr r0, [r4, #0x10] + mov r1, #0x38 + str r1, [r0, #8] + ldr r0, [r4, #0x10] + mov r2, #0x50 + str r2, [r0, #0xc] + ldr r0, [r4, #0x18] + bl MOD16_021E6EE8 + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E9078: + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD16_021E2F54 + ldr r0, [r4, #0x1c] + mov r1, #4 + bl MOD16_021E2F5C + ldr r0, [r4, #0x1c] + mov r1, #0x38 + mov r2, #0x50 + bl MOD16_021E2F4C + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E909C: + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD16_021EA264 + ldr r0, [r4, #0x20] + mov r1, #4 + bl MOD16_021EA26C + ldr r0, [r4, #0x20] + mov r1, #0x38 + mov r2, #0x50 + bl MOD16_021EA25C + ldr r0, [r4, #0xc] + mov r1, #1 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E90C0: + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] + pop {r4, pc} +_021E90CA: + ldr r0, [r4, #0xc] + mov r1, #0 + str r1, [r0, #0x14] + str r1, [r4, #0x2c] +_021E90D2: + pop {r4, pc} + thumb_func_end MOD16_021E9024 + + thumb_func_start MOD16_021E90D4 +MOD16_021E90D4: ; 0x021E90D4 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E90D4 + + thumb_func_start MOD16_021E90D8 +MOD16_021E90D8: ; 0x021E90D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #1 + add r7, r1, #0 + str r2, [sp] + str r0, [sp, #4] + cmp r7, #4 + bhi _021E91D6 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E90F6: ; jump table + .short _021E9100 - _021E90F6 - 2 ; case 0 + .short _021E9128 - _021E90F6 - 2 ; case 1 + .short _021E915E - _021E90F6 - 2 ; case 2 + .short _021E9194 - _021E90F6 - 2 ; case 3 + .short _021E91B4 - _021E90F6 - 2 ; case 4 +_021E9100: + add r0, r2, #0 + bl MOD16_021E90D4 + cmp r0, #0 + beq _021E910E + mov r1, #2 + b _021E9110 +_021E910E: + mov r1, #1 +_021E9110: + ldr r0, [r4, #0x10] + mov r6, #0x30 + str r1, [r0, #0x14] + ldr r2, [r4] + mov r0, #4 + ldr r1, [r2] + mov r5, #0x48 + orr r0, r1 + str r0, [r2] + mov r0, #0 + str r0, [r4, #8] + b _021E91DA +_021E9128: + add r0, r2, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x1c] + beq _021E9144 + mov r1, #1 + bl MOD16_021E2F54 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD16_021E2F5C + b _021E914A +_021E9144: + mov r1, #0 + bl MOD16_021E2F54 +_021E914A: + ldr r2, [r4] + mov r0, #8 + ldr r1, [r2] + mov r6, #0x28 + orr r0, r1 + str r0, [r2] + mov r0, #1 + str r0, [r4, #8] + mov r5, #0x78 + b _021E91DA +_021E915E: + add r0, r2, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x20] + beq _021E917A + mov r1, #1 + bl MOD16_021EA264 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD16_021EA26C + b _021E9180 +_021E917A: + mov r1, #0 + bl MOD16_021EA264 +_021E9180: + ldr r2, [r4] + mov r0, #0x10 + ldr r1, [r2] + mov r6, #0x30 + orr r0, r1 + str r0, [r2] + mov r0, #2 + str r0, [r4, #8] + mov r5, #0x40 + b _021E91DA +_021E9194: + ldr r0, [r4, #4] + bl MOD16_021D9DF8 + cmp r0, #2 + bne _021E91AE + ldr r2, [r4] + mov r0, #0x20 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + mov r0, #3 + str r0, [r4, #8] + b _021E91DA +_021E91AE: + mov r0, #0 + str r0, [sp, #4] + b _021E91DA +_021E91B4: + ldr r0, [r4, #4] + bl MOD16_021D9F80 + cmp r0, #1 + bne _021E91D0 + ldr r2, [r4] + mov r0, #1 + ldr r1, [r2] + lsl r0, r0, #8 + orr r0, r1 + str r0, [r2] + mov r0, #4 + str r0, [r4, #8] + b _021E91DA +_021E91D0: + mov r0, #0 + str r0, [sp, #4] + b _021E91DA +_021E91D6: + bl ErrorHandling +_021E91DA: + ldr r0, [sp] + cmp r0, #4 + bhi _021E928A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E91EC: ; jump table + .short _021E91F6 - _021E91EC - 2 ; case 0 + .short _021E922E - _021E91EC - 2 ; case 1 + .short _021E925C - _021E91EC - 2 ; case 2 + .short _021E928E - _021E91EC - 2 ; case 3 + .short _021E928E - _021E91EC - 2 ; case 4 +_021E91F6: + add r0, r7, #0 + bl MOD16_021E90D4 + cmp r0, #0 + beq _021E920E + ldr r0, [r4, #0x10] + mov r1, #2 + str r1, [r0, #0x14] + ldr r0, [r4, #0x18] + bl MOD16_021E6EF0 + b _021E921A +_021E920E: + ldr r0, [r4, #0x10] + mov r1, #1 + str r1, [r0, #0x14] + ldr r0, [r4, #0x18] + bl MOD16_021E6EF0 +_021E921A: + ldr r0, [r4, #0x10] + add r1, r6, #0 + str r6, [r0, #8] + ldr r0, [r4, #0x10] + add r2, r5, #0 + str r5, [r0, #0xc] + ldr r0, [r4, #0x18] + bl MOD16_021E6EE8 + b _021E928E +_021E922E: + add r0, r7, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x1c] + beq _021E924A + mov r1, #1 + bl MOD16_021E2F54 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD16_021E2F5C + b _021E9250 +_021E924A: + mov r1, #0 + bl MOD16_021E2F54 +_021E9250: + ldr r0, [r4, #0x1c] + add r1, r6, #0 + add r2, r5, #0 + bl MOD16_021E2F4C + b _021E928E +_021E925C: + add r0, r7, #0 + bl MOD16_021E90D4 + cmp r0, #0 + ldr r0, [r4, #0x20] + beq _021E9278 + mov r1, #1 + bl MOD16_021EA264 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD16_021EA26C + b _021E927E +_021E9278: + mov r1, #0 + bl MOD16_021EA264 +_021E927E: + ldr r0, [r4, #0x20] + add r1, r6, #0 + add r2, r5, #0 + bl MOD16_021EA25C + b _021E928E +_021E928A: + bl ErrorHandling +_021E928E: + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E90D8 + + thumb_func_start MOD16_021E9294 +MOD16_021E9294: ; 0x021E9294 + push {r4, r5, r6, lr} + add r4, r3, #0 + add r5, r1, #0 + add r1, r2, #0 + add r6, r0, #0 + add r2, r4, #0 + bl MOD16_021E92F8 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021E938C + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021E947C + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021E9484 + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + bl MOD16_021EA1B4 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E9294 + + thumb_func_start MOD16_021E92D0 +MOD16_021E92D0: ; 0x021E92D0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021E9480 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E9438 + add r0, r4, #0 + bl MOD16_021E9518 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E92D0 + + thumb_func_start MOD16_021E92F8 +MOD16_021E92F8: ; 0x021E92F8 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + mov r2, #0 + str r2, [sp] + add r5, r0, #0 + str r4, [sp, #4] + add r6, r1, #0 + ldr r0, [r5] + mov r1, #6 + add r3, r2, #0 + bl MOD16_021D8CFC + ldr r0, [r6, #4] + bl MOD16_021D9D04 + cmp r0, #1 + bne _021E932E + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + mov r2, #0 + ldr r0, [r5] + mov r1, #0x18 + add r3, r2, #0 + bl MOD16_021D8CFC +_021E932E: + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #2 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x39 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E92F8 + + thumb_func_start MOD16_021E938C +MOD16_021E938C: ; 0x021E938C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r0] + add r5, r1, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E9428 ; =0x00000827 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x57 + bl FUN_020091E0 + str r0, [r5, #0x18] + bl FUN_02009B04 + ldr r0, [r5, #0x18] + bl FUN_02009474 + ldr r0, _021E942C ; =0x000007DC + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xc + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x1c] + bl FUN_02009D68 + ldr r0, [r5, #0x1c] + bl FUN_02009474 + ldr r0, _021E9430 ; =0x00000825 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x55 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x20] + ldr r0, _021E9434 ; =0x00000826 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x56 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x24] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9428: .word 0x00000827 +_021E942C: .word 0x000007DC +_021E9430: .word 0x00000825 +_021E9434: .word 0x00000826 + thumb_func_end MOD16_021E938C + + thumb_func_start MOD16_021E9438 +MOD16_021E9438: ; 0x021E9438 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r0] + ldr r0, [r5, #0x18] + bl FUN_02009C0C + ldr r0, [r5, #0x1c] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9438 + + thumb_func_start MOD16_021E947C +MOD16_021E947C: ; 0x021E947C + bx lr + .align 2, 0 + thumb_func_end MOD16_021E947C + + thumb_func_start MOD16_021E9480 +MOD16_021E9480: ; 0x021E9480 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9480 + + thumb_func_start MOD16_021E9484 +MOD16_021E9484: ; 0x021E9484 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r7, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + add r5, r1, #0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x1c] + mov r1, #0 + add r4, r2, #0 + bl FUN_02009E54 + mov r1, #0x10 + str r1, [sp, #0x1c] + mov r1, #0 + str r1, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + str r1, [sp, #0x18] + mov r1, #1 + str r0, [sp, #0x14] + str r1, [sp, #0x2c] + str r4, [sp, #0x30] + bl FUN_0201E28C + str r0, [sp, #8] + mov r6, #0 +_021E94BC: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r7, r0] + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + add r3, r6, #0 + ldr r0, [r7, r0] + ldr r2, _021E9514 ; =0x00000266 + add r1, r4, #0 + add r3, #0x65 + bl MOD16_021DB3C8 + str r4, [sp, #0x10] + add r0, sp, #0xc + bl MOD16_021DB2BC + str r0, [r5, #4] + ldr r0, [r0] + ldr r1, [sp, #8] + bl FUN_02011A60 + ldr r0, [r5, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + add r0, r4, #0 + bl MOD16_021DB3BC + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #5 + blt _021E94BC + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021E9514: .word 0x00000266 + thumb_func_end MOD16_021E9484 + + thumb_func_start MOD16_021E9518 +MOD16_021E9518: ; 0x021E9518 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E951E: + ldr r0, [r5, #4] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E951E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E9518 + + thumb_func_start MOD16_021E9530 +MOD16_021E9530: ; 0x021E9530 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9530 + + thumb_func_start MOD16_021E9534 +MOD16_021E9534: ; 0x021E9534 + mov r1, #1 + str r1, [r0, #0x28] + ldr r0, [r0, #0x10] + str r1, [r0, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9534 + + thumb_func_start MOD16_021E9540 +MOD16_021E9540: ; 0x021E9540 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021E95D0 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E960C + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021E9634 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021E9664 + str r0, [r5, #0x24] + ldr r0, _021E9588 ; =MOD16_021E9668 + str r0, [r5, #8] + ldr r0, _021E958C ; =MOD16_021E96B8 + str r0, [r5, #0xc] + ldr r0, _021E9590 ; =MOD16_021E972C + str r0, [r5, #0x10] + ldr r0, _021E9594 ; =MOD16_021E974C + str r0, [r5, #0x14] + ldr r0, _021E9598 ; =MOD16_021E97DC + str r0, [r5, #0x18] + ldr r0, _021E959C ; =MOD16_021E9810 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021E9588: .word MOD16_021E9668 +_021E958C: .word MOD16_021E96B8 +_021E9590: .word MOD16_021E972C +_021E9594: .word MOD16_021E974C +_021E9598: .word MOD16_021E97DC +_021E959C: .word MOD16_021E9810 + thumb_func_end MOD16_021E9540 + + thumb_func_start MOD16_021E95A0 +MOD16_021E95A0: ; 0x021E95A0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021E9638 + ldr r0, [r4, #4] + bl MOD16_021E964C + ldr r0, [r4, #0x20] + bl MOD16_021E9660 + pop {r4, pc} + thumb_func_end MOD16_021E95A0 + + thumb_func_start MOD16_021E95B8 +MOD16_021E95B8: ; 0x021E95B8 + ldr r0, [r0] + ldr r0, [r0, #0x24] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E95B8 + + thumb_func_start MOD16_021E95C0 +MOD16_021E95C0: ; 0x021E95C0 + ldr r0, [r0] + ldr r0, [r0, #0x28] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E95C0 + + thumb_func_start MOD16_021E95C8 +MOD16_021E95C8: ; 0x021E95C8 + ldr r0, [r0] + ldr r0, [r0, #0x30] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E95C8 + + thumb_func_start MOD16_021E95D0 +MOD16_021E95D0: ; 0x021E95D0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x34 + bl FUN_02016998 + add r4, r0, #0 + bne _021E95E2 + bl ErrorHandling +_021E95E2: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x34 + bl Call_FillMemWithValue + add r0, r5, #0 + bl MOD16_021D7B14 + str r0, [r4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + ldr r0, [r0] + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E95D0 + + thumb_func_start MOD16_021E960C +MOD16_021E960C: ; 0x021E960C + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021E961E + bl ErrorHandling +_021E961E: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E960C + + thumb_func_start MOD16_021E9634 +MOD16_021E9634: ; 0x021E9634 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E9634 + + thumb_func_start MOD16_021E9638 +MOD16_021E9638: ; 0x021E9638 + push {r4, lr} + add r4, r0, #0 + bne _021E9642 + bl ErrorHandling +_021E9642: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E9638 + + thumb_func_start MOD16_021E964C +MOD16_021E964C: ; 0x021E964C + push {r4, lr} + add r4, r0, #0 + bne _021E9656 + bl ErrorHandling +_021E9656: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E964C + + thumb_func_start MOD16_021E9660 +MOD16_021E9660: ; 0x021E9660 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9660 + + thumb_func_start MOD16_021E9664 +MOD16_021E9664: ; 0x021E9664 + mov r0, #0 + bx lr + thumb_func_end MOD16_021E9664 + + thumb_func_start MOD16_021E9668 +MOD16_021E9668: ; 0x021E9668 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x1c + bl FUN_02016998 + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x1c + mov r0, #0 +_021E967E: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021E967E + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021E9894 + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021E9E6C + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021EA08C + mov r1, #0 + mov r0, #4 +_021E96A6: + add r1, r1, #1 + str r0, [r4, #0xc] + add r4, r4, #4 + cmp r1, #6 + blt _021E96A6 + str r6, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021E9668 + + thumb_func_start MOD16_021E96B8 +MOD16_021E96B8: ; 0x021E96B8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021E96CC + mov r0, #0 + str r0, [r5, #0x24] + mov r0, #1 + pop {r3, r4, r5, pc} +_021E96CC: + ldr r1, [r0, #0x10] + cmp r1, #1 + bne _021E96D6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E96D6: + ldr r1, [r0] + cmp r1, #0 + bne _021E96F0 + mov r3, #1 + str r3, [r5, #0x24] + ldr r1, [r5, #4] + mov r2, #0 + str r2, [r1, #0x30] + str r3, [r5, #0x28] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + b _021E9728 +_021E96F0: + mov r0, #1 + str r0, [r5, #0x28] + add r0, r5, #0 + bl MOD16_021E9E2C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EA0EC + add r0, r5, #0 + bl MOD16_021E9930 + ldr r0, [r5, #8] + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021E9720 + ldr r0, [r5, #0x30] + cmp r0, #0 + bne _021E9720 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E9F48 +_021E9720: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021E9940 +_021E9728: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E96B8 + + thumb_func_start MOD16_021E972C +MOD16_021E972C: ; 0x021E972C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #8] + add r0, r5, #0 + bl MOD16_021E99C0 + add r0, r5, #0 + bl MOD16_021EA074 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E972C + + thumb_func_start MOD16_021E974C +MOD16_021E974C: ; 0x021E974C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + add r7, r2, #0 + ldr r6, [r3, #8] + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021E97D8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E976A: ; jump table + .short _021E9774 - _021E976A - 2 ; case 0 + .short _021E978E - _021E976A - 2 ; case 1 + .short _021E979E - _021E976A - 2 ; case 2 + .short _021E97C2 - _021E976A - 2 ; case 3 + .short _021E97D4 - _021E976A - 2 ; case 4 +_021E9774: + ldr r0, [r4, #4] + mov r1, #0x28 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x28 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E978E: + ldr r3, [r4, #4] + add r1, r5, #0 + bl MOD16_021E9B00 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E979E: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021EA120 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E97C2: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E97D8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E97D8 +_021E97D4: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E97D8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E974C + + thumb_func_start MOD16_021E97DC +MOD16_021E97DC: ; 0x021E97DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldr r0, [r3, #8] + add r7, r2, #0 + ldr r5, [r1, #8] + str r0, [sp, #4] + mov r6, #0 + add r4, r7, #0 +_021E97EE: + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021D7B98 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #6 + blt _021E97EE + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r7, #0 + bl MOD16_021EA13C + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E97DC + + thumb_func_start MOD16_021E9810 +MOD16_021E9810: ; 0x021E9810 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021E9890 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E982A: ; jump table + .short _021E9834 - _021E982A - 2 ; case 0 + .short _021E984E - _021E982A - 2 ; case 1 + .short _021E9860 - _021E982A - 2 ; case 2 + .short _021E987C - _021E982A - 2 ; case 3 + .short _021E988C - _021E982A - 2 ; case 4 +_021E9834: + mov r0, #2 + str r0, [sp] + mov r0, #4 + add r1, r0, #0 + sub r1, #0x14 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E984E: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E9890 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E9860: + add r1, r5, #0 + bl MOD16_021E9B3C + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B14 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E987C: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E9890 +_021E988C: + mov r0, #1 + pop {r3, r4, r5, pc} +_021E9890: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9810 + + thumb_func_start MOD16_021E9894 +MOD16_021E9894: ; 0x021E9894 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0x18 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0x30 + str r0, [sp] + mov r1, #8 + ldr r0, [r5, #4] + mov r2, #0x28 + add r3, r1, #0 + bl MOD16_021D7C98 + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #0x14 + mov r2, #0x28 + mov r3, #0xd0 + bl MOD16_021D7C98 + mov r0, #0x58 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, r0, #4 + mov r2, #0x28 + mov r3, #0x30 + bl MOD16_021D7C98 + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #8 + mov r2, #0x28 + mov r3, #0x58 + bl MOD16_021D7C98 + mov r0, #0xa8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #0xc + mov r2, #0x28 + mov r3, #0x80 + bl MOD16_021D7C98 + mov r0, #0xd0 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #8 + add r0, #0x10 + mov r2, #0x28 + mov r3, #0xa8 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021E992C ; =MOD16_021E99D8 + mov r1, #6 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021E992C: .word MOD16_021E99D8 + thumb_func_end MOD16_021E9894 + + thumb_func_start MOD16_021E9930 +MOD16_021E9930: ; 0x021E9930 + mov r2, #0 + mov r1, #3 +_021E9934: + add r2, r2, #1 + str r1, [r0, #0xc] + add r0, r0, #4 + cmp r2, #6 + blt _021E9934 + bx lr + thumb_func_end MOD16_021E9930 + + thumb_func_start MOD16_021E9940 +MOD16_021E9940: ; 0x021E9940 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x2c] + cmp r1, #0 + bne _021E9950 + ldr r0, [r0] + bl FUN_02022144 +_021E9950: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021E9960 + ldr r0, [r4, #0x20] + cmp r0, #2 + beq _021E9960 + mov r0, #1 + str r0, [r4, #0x20] +_021E9960: + ldr r0, [r4, #4] + ldr r0, [r0, #8] + cmp r0, #4 + bhi _021E99BA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9974: ; jump table + .short _021E997E - _021E9974 - 2 ; case 0 + .short _021E998A - _021E9974 - 2 ; case 1 + .short _021E9996 - _021E9974 - 2 ; case 2 + .short _021E99A2 - _021E9974 - 2 ; case 3 + .short _021E99AE - _021E9974 - 2 ; case 4 +_021E997E: + ldr r0, [r4, #0xc] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0xc] + pop {r4, pc} +_021E998A: + ldr r0, [r4, #0x10] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x10] + pop {r4, pc} +_021E9996: + ldr r0, [r4, #0x14] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x14] + pop {r4, pc} +_021E99A2: + ldr r0, [r4, #0x18] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x18] + pop {r4, pc} +_021E99AE: + ldr r0, [r4, #0x1c] + cmp r0, #2 + beq _021E99BE + mov r0, #1 + str r0, [r4, #0x1c] + pop {r4, pc} +_021E99BA: + bl ErrorHandling +_021E99BE: + pop {r4, pc} + thumb_func_end MOD16_021E9940 + + thumb_func_start MOD16_021E99C0 +MOD16_021E99C0: ; 0x021E99C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021E99C0 + + thumb_func_start MOD16_021E99D8 +MOD16_021E99D8: ; 0x021E99D8 + push {r4, r5, r6, lr} + ldr r6, [r2] + ldr r5, [r2, #4] + lsl r2, r0, #2 + add r2, r6, r2 + ldr r4, [r6, #4] + cmp r1, #0 + str r1, [r2, #0xc] + beq _021E99F0 + cmp r1, #2 + beq _021E99F6 + pop {r4, r5, r6, pc} +_021E99F0: + mov r0, #0 + str r0, [r5, #0x10] + pop {r4, r5, r6, pc} +_021E99F6: + cmp r0, #5 + bhi _021E9AF6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9A06: ; jump table + .short _021E9A20 - _021E9A06 - 2 ; case 0 + .short _021E9A3E - _021E9A06 - 2 ; case 1 + .short _021E9A5C - _021E9A06 - 2 ; case 2 + .short _021E9A7A - _021E9A06 - 2 ; case 3 + .short _021E9AB4 - _021E9A06 - 2 ; case 4 + .short _021E9A12 - _021E9A06 - 2 ; case 5 +_021E9A12: + add r0, r4, #0 + bl MOD16_021E9014 + ldr r0, _021E9AF8 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A20: + ldr r2, [r4, #8] + cmp r2, #0 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #0 + bl MOD16_021E9E18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A3E: + ldr r2, [r4, #8] + cmp r2, #1 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021E9E18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A5C: + ldr r2, [r4, #8] + cmp r2, #2 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #2 + bl MOD16_021E9E18 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A7A: + ldr r2, [r4, #8] + cmp r2, #3 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #3 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021E9A9C + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9A9C: + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E9AF6 + ldr r0, [r4, #8] + cmp r0, #2 + beq _021E9AAE + ldr r0, _021E9AF8 ; =0x000005DD + bl FUN_020054C8 +_021E9AAE: + mov r0, #1 + str r0, [r5, #0x10] + pop {r4, r5, r6, pc} +_021E9AB4: + ldr r2, [r4, #8] + cmp r2, #4 + beq _021E9AF6 + add r0, r6, #0 + mov r1, #4 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021E9AD6 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA08C + ldr r0, _021E9AFC ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9AD6: + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021E9AF6 + ldr r0, [r4, #4] + bl MOD16_021D9F80 + cmp r0, #1 + bne _021E9AF2 + ldr r0, [r4, #8] + cmp r0, #2 + beq _021E9AF2 + ldr r0, _021E9AF8 ; =0x000005DD + bl FUN_020054C8 +_021E9AF2: + mov r0, #0 + str r0, [r5, #0x10] +_021E9AF6: + pop {r4, r5, r6, pc} + .align 2, 0 +_021E9AF8: .word 0x000005DD +_021E9AFC: .word 0x0000068B + thumb_func_end MOD16_021E99D8 + + thumb_func_start MOD16_021E9B00 +MOD16_021E9B00: ; 0x021E9B00 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021E9B60 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021E9BFC + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021E9CF0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD16_021E9DD8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EA1D8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021E9B00 + + thumb_func_start MOD16_021E9B3C +MOD16_021E9B3C: ; 0x021E9B3C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021E9DDC + add r0, r5, #0 + bl MOD16_021E9DC0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021E9CAC + ldr r0, [r4] + mov r1, #5 + ldr r0, [r0] + bl FUN_02018744 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9B3C + + thumb_func_start MOD16_021E9B60 +MOD16_021E9B60: ; 0x021E9B60 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + add r4, r2, #0 + ldr r0, [r0, #0x30] + cmp r0, #0 + beq _021E9B9E + mov r3, #0 + str r3, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #6 + mov r2, #4 + bl MOD16_021D8CFC + ldr r0, [r6, #8] + bl MOD16_021D9D04 + cmp r0, #1 + bne _021E9B9E + mov r0, #0x20 + str r0, [sp] + str r4, [sp, #4] + ldr r0, [r5] + mov r1, #0x18 + mov r2, #4 + mov r3, #0 + bl MOD16_021D8CFC +_021E9B9E: + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #5 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x3b + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #5 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #5 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021E9B60 + + thumb_func_start MOD16_021E9BFC +MOD16_021E9BFC: ; 0x021E9BFC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021E9C9C ; =0x00000894 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x60 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x18] + bl FUN_02009B04 + ldr r0, [r5, #0x18] + bl FUN_02009474 + ldr r0, _021E9CA0 ; =0x0000083F + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xb + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x1c] + bl FUN_02009D68 + ldr r0, [r5, #0x1c] + bl FUN_02009474 + ldr r0, _021E9CA4 ; =0x00000892 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5e + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x20] + ldr r0, _021E9CA8 ; =0x00000893 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5f + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x24] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9C9C: .word 0x00000894 +_021E9CA0: .word 0x0000083F +_021E9CA4: .word 0x00000892 +_021E9CA8: .word 0x00000893 + thumb_func_end MOD16_021E9BFC + + thumb_func_start MOD16_021E9CAC +MOD16_021E9CAC: ; 0x021E9CAC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x18] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x1c] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021E9CAC + + thumb_func_start MOD16_021E9CF0 +MOD16_021E9CF0: ; 0x021E9CF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021E9DBC ; =0x00000893 + add r5, r0, #0 + mov r0, #0 + add r6, r2, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #5 + str r2, [sp, #0x10] + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x4c + sub r2, #0x54 + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r7, #7 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x20 + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #0x36 + str r6, [sp, #0x48] + lsl r0, r0, #0xe + mov r6, #0x39 + str r0, [sp, #0x38] + mov r4, #0 + lsl r7, r7, #0xe + lsl r6, r6, #0xe +_021E9D60: + cmp r4, #5 + bhi _021E9DA2 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9D70: ; jump table + .short _021E9D80 - _021E9D70 - 2 ; case 0 + .short _021E9D84 - _021E9D70 - 2 ; case 1 + .short _021E9D8C - _021E9D70 - 2 ; case 2 + .short _021E9D94 - _021E9D70 - 2 ; case 3 + .short _021E9D9C - _021E9D70 - 2 ; case 4 + .short _021E9D7C - _021E9D70 - 2 ; case 5 +_021E9D7C: + str r6, [sp, #0x34] + b _021E9DA2 +_021E9D80: + str r7, [sp, #0x34] + b _021E9DA2 +_021E9D84: + mov r0, #0x11 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + b _021E9DA2 +_021E9D8C: + mov r0, #0x1b + lsl r0, r0, #0xe + str r0, [sp, #0x34] + b _021E9DA2 +_021E9D94: + mov r0, #0x25 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + b _021E9DA2 +_021E9D9C: + mov r0, #0x2f + lsl r0, r0, #0xe + str r0, [sp, #0x34] +_021E9DA2: + add r0, sp, #0x2c + bl FUN_0201FF84 + add r1, r4, #0 + stmia r5!, {r0} + bl FUN_02020130 + add r4, r4, #1 + cmp r4, #6 + blt _021E9D60 + add sp, #0x70 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9DBC: .word 0x00000893 + thumb_func_end MOD16_021E9CF0 + + thumb_func_start MOD16_021E9DC0 +MOD16_021E9DC0: ; 0x021E9DC0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021E9DC6: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021E9DC6 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021E9DC0 + + thumb_func_start MOD16_021E9DD8 +MOD16_021E9DD8: ; 0x021E9DD8 + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9DD8 + + thumb_func_start MOD16_021E9DDC +MOD16_021E9DDC: ; 0x021E9DDC + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9DDC + + thumb_func_start MOD16_021E9DE0 +MOD16_021E9DE0: ; 0x021E9DE0 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r4, #0 + mov r6, #1 +_021E9DE8: + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E9DE8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E9DE0 + + thumb_func_start MOD16_021E9DFC +MOD16_021E9DFC: ; 0x021E9DFC + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021E9E04: + ldr r0, [r5, #4] + add r1, r6, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021E9E04 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E9DFC + + thumb_func_start MOD16_021E9E18 +MOD16_021E9E18: ; 0x021E9E18 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021E90D8 + cmp r0, #1 + bne _021E9E2A + mov r1, #0 + str r1, [r4, #0x28] +_021E9E2A: + pop {r4, pc} + thumb_func_end MOD16_021E9E18 + + thumb_func_start MOD16_021E9E2C +MOD16_021E9E2C: ; 0x021E9E2C + ldr r3, _021E9E30 ; =MOD16_021E9E34 + bx r3 + .align 2, 0 +_021E9E30: .word MOD16_021E9E34 + thumb_func_end MOD16_021E9E2C + + thumb_func_start MOD16_021E9E34 +MOD16_021E9E34: ; 0x021E9E34 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #4] + bl MOD16_021E9E64 + ldr r0, _021E9E5C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _021E9E58 + add r0, r4, #0 + bl MOD16_021E9014 + mov r0, #1 + str r0, [r5, #0x2c] + ldr r0, _021E9E60 ; =0x000005DD + bl FUN_020054C8 +_021E9E58: + pop {r3, r4, r5, pc} + nop +_021E9E5C: .word 0x021C48B8 +_021E9E60: .word 0x000005DD + thumb_func_end MOD16_021E9E34 + + thumb_func_start MOD16_021E9E64 +MOD16_021E9E64: ; 0x021E9E64 + mov r1, #0 + str r1, [r0, #0x2c] + bx lr + .align 2, 0 + thumb_func_end MOD16_021E9E64 + + thumb_func_start MOD16_021E9E6C +MOD16_021E9E6C: ; 0x021E9E6C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #0xa8 + bl FUN_02016998 + str r0, [r5, #0x18] + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0x18 + ldr r0, [r5, #0x18] + mov r1, #0x1c + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x1c + mov r1, #0x44 + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x38 + mov r1, #0x6c + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x54 + mov r1, #0x94 + add r3, r2, #0 + bl MOD16_021DB590 + ldr r0, [r4, #8] + bl MOD16_021D9F80 + cmp r0, #1 + bne _021E9EFA + mov r1, #0 + b _021E9EFC +_021E9EFA: + mov r1, #2 +_021E9EFC: + mov r0, #0x10 + str r0, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x70 + mov r1, #0xbc + add r3, r2, #0 + bl MOD16_021DB590 + mov r0, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r2, #0x18 + add r0, #0x8c + mov r1, #0xe4 + add r3, r2, #0 + bl MOD16_021DB590 + add r0, r6, #0 + bl MOD16_021DB490 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + mov r2, #6 + mov r3, #1 + bl MOD16_021DB4B0 + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021E9E6C + + thumb_func_start MOD16_021E9F48 +MOD16_021E9F48: ; 0x021E9F48 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4, #0x2c] + ldr r5, [r4, #4] + cmp r0, #0 + beq _021E9F58 + b _021EA066 +_021E9F58: + ldr r0, _021EA068 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021E9F6C + ldr r0, [r6, #0x14] + mov r1, #0 + mov r2, #1 + bl MOD16_021DB4CC +_021E9F6C: + ldr r0, _021EA068 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x20 + tst r0, r1 + beq _021E9F80 + mov r1, #0 + ldr r0, [r6, #0x14] + sub r2, r1, #1 + bl MOD16_021DB4CC +_021E9F80: + ldr r0, _021EA068 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021EA066 + ldr r0, [r6, #0x14] + bl MOD16_021DB528 + cmp r0, #5 + bhi _021EA066 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9FA0: ; jump table + .short _021E9FAC - _021E9FA0 - 2 ; case 0 + .short _021E9FC6 - _021E9FA0 - 2 ; case 1 + .short _021E9FE0 - _021E9FA0 - 2 ; case 2 + .short _021E9FFA - _021E9FA0 - 2 ; case 3 + .short _021EA026 - _021E9FA0 - 2 ; case 4 + .short _021EA052 - _021E9FA0 - 2 ; case 5 +_021E9FAC: + ldr r2, [r5, #8] + cmp r2, #0 + beq _021EA066 + add r0, r4, #0 + mov r1, #0 + bl MOD16_021E9E18 + mov r0, #2 + str r0, [r4, #0xc] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9FC6: + ldr r2, [r5, #8] + cmp r2, #1 + beq _021EA066 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021E9E18 + mov r0, #2 + str r0, [r4, #0x10] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9FE0: + ldr r2, [r5, #8] + cmp r2, #2 + beq _021EA066 + add r0, r4, #0 + mov r1, #2 + bl MOD16_021E9E18 + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021E9FFA: + ldr r2, [r5, #8] + cmp r2, #3 + beq _021EA066 + add r0, r4, #0 + mov r1, #3 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021EA018 + mov r0, #2 + str r0, [r4, #0x18] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA018: + ldr r0, [r5, #8] + cmp r0, #2 + beq _021EA066 + ldr r0, _021EA070 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA026: + ldr r2, [r5, #8] + cmp r2, #4 + beq _021EA066 + add r0, r4, #0 + mov r1, #4 + bl MOD16_021E9E18 + cmp r0, #0 + beq _021EA044 + mov r0, #2 + str r0, [r4, #0x1c] + ldr r0, _021EA06C ; =0x0000068B + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA044: + ldr r0, [r5, #8] + cmp r0, #2 + beq _021EA066 + ldr r0, _021EA070 ; =0x000005DD + bl FUN_020054C8 + pop {r4, r5, r6, pc} +_021EA052: + add r0, r5, #0 + bl MOD16_021E9014 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #2 + str r0, [r4, #0x20] + ldr r0, _021EA070 ; =0x000005DD + bl FUN_020054C8 +_021EA066: + pop {r4, r5, r6, pc} + .align 2, 0 +_021EA068: .word 0x021C48B8 +_021EA06C: .word 0x0000068B +_021EA070: .word 0x000005DD + thumb_func_end MOD16_021E9F48 + + thumb_func_start MOD16_021EA074 +MOD16_021EA074: ; 0x021EA074 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + ldr r0, [r4, #0x14] + bl MOD16_021DB4A8 + mov r0, #0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + pop {r4, pc} + thumb_func_end MOD16_021EA074 + + thumb_func_start MOD16_021EA08C +MOD16_021EA08C: ; 0x021EA08C + push {r3, lr} + ldr r3, [r1, #4] + mov r2, #0 + str r2, [r1, #0x30] + ldr r1, [r3, #8] + cmp r1, #4 + bhi _021EA0E8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA0A6: ; jump table + .short _021EA0B0 - _021EA0A6 - 2 ; case 0 + .short _021EA0BA - _021EA0A6 - 2 ; case 1 + .short _021EA0C6 - _021EA0A6 - 2 ; case 2 + .short _021EA0D2 - _021EA0A6 - 2 ; case 3 + .short _021EA0DE - _021EA0A6 - 2 ; case 4 +_021EA0B0: + ldr r0, [r0, #0x14] + mov r1, #4 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0BA: + ldr r0, [r0, #0x14] + mov r1, #4 + mov r2, #1 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0C6: + ldr r0, [r0, #0x14] + mov r1, #4 + mov r2, #2 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0D2: + ldr r0, [r0, #0x14] + mov r1, #4 + mov r2, #3 + bl MOD16_021DB4CC + pop {r3, pc} +_021EA0DE: + mov r1, #4 + ldr r0, [r0, #0x14] + add r2, r1, #0 + bl MOD16_021DB4CC +_021EA0E8: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EA08C + + thumb_func_start MOD16_021EA0EC +MOD16_021EA0EC: ; 0x021EA0EC + ldr r0, [r1, #4] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021EA118 + ldr r0, [r1, #0x30] + cmp r0, #0 + bne _021EA10A + ldr r0, _021EA11C ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #0x80 + tst r0, r2 + beq _021EA118 + mov r0, #1 + str r0, [r1, #0x30] + bx lr +_021EA10A: + ldr r0, _021EA11C ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #0x40 + tst r0, r2 + beq _021EA118 + mov r0, #0 + str r0, [r1, #0x30] +_021EA118: + bx lr + nop +_021EA11C: .word 0x021C48B8 + thumb_func_end MOD16_021EA0EC + + thumb_func_start MOD16_021EA120 +MOD16_021EA120: ; 0x021EA120 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, [r4, #0x14] + ldr r1, [r5] + add r6, r2, #0 + bl MOD16_021D8B48 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EA13C + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA120 + + thumb_func_start MOD16_021EA13C +MOD16_021EA13C: ; 0x021EA13C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #8] + add r4, r1, #0 + bl MOD16_021D9FB8 + cmp r0, #1 + bne _021EA172 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021EA18C + ldr r1, [r6, #0x30] + cmp r1, #0 + bne _021EA17A + cmp r0, #0 + beq _021EA168 + ldr r0, [r4, #0x14] + ldr r1, [r5] + bl MOD16_021D8B48 +_021EA168: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EA17C + pop {r4, r5, r6, pc} +_021EA172: + add r0, r5, #0 + mov r1, #0 + bl MOD16_021EA18C +_021EA17A: + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA13C + + thumb_func_start MOD16_021EA17C +MOD16_021EA17C: ; 0x021EA17C + ldr r3, _021EA188 ; =MOD16_021D8AD4 + add r2, r0, #0 + ldr r0, [r1, #0x14] + ldr r1, [r2] + bx r3 + nop +_021EA188: .word MOD16_021D8AD4 + thumb_func_end MOD16_021EA17C + + thumb_func_start MOD16_021EA18C +MOD16_021EA18C: ; 0x021EA18C + push {r3, r4, r5, lr} + ldr r4, [r0] + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r5, r1, #0 + bl MOD16_021D8B30 + cmp r5, r0 + beq _021EA1B0 + mov r0, #0x79 + lsl r0, r0, #2 + add r0, r4, r0 + add r1, r5, #0 + bl MOD16_021D8B14 + mov r0, #1 + pop {r3, r4, r5, pc} +_021EA1B0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA18C + + thumb_func_start MOD16_021EA1B4 +MOD16_021EA1B4: ; 0x021EA1B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r2, #2 + add r0, r5, r0 + ldr r0, [r0, #4] + add r4, r1, #0 + ldr r0, [r0] + mov r1, #0 + bl FUN_020119D0 + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA1B4 + + thumb_func_start MOD16_021EA1D8 +MOD16_021EA1D8: ; 0x021EA1D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #8] + bl MOD16_021D9F80 + cmp r0, #0 + bne _021EA1EE + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_020200A0 +_021EA1EE: + pop {r4, pc} + thumb_func_end MOD16_021EA1D8 + + thumb_func_start MOD16_021EA1F0 +MOD16_021EA1F0: ; 0x021EA1F0 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021EA274 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021EA2BC + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021EA310 + str r0, [r5, #0x24] + ldr r0, _021EA230 ; =MOD16_021EA314 + str r0, [r5, #8] + ldr r0, _021EA234 ; =MOD16_021EA35C + str r0, [r5, #0xc] + ldr r0, _021EA238 ; =MOD16_021EA388 + str r0, [r5, #0x10] + ldr r0, _021EA23C ; =MOD16_021EA39C + str r0, [r5, #0x14] + ldr r0, _021EA240 ; =MOD16_021EA45C + str r0, [r5, #0x18] + ldr r0, _021EA244 ; =MOD16_021EA47C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EA230: .word MOD16_021EA314 +_021EA234: .word MOD16_021EA35C +_021EA238: .word MOD16_021EA388 +_021EA23C: .word MOD16_021EA39C +_021EA240: .word MOD16_021EA45C +_021EA244: .word MOD16_021EA47C + thumb_func_end MOD16_021EA1F0 + + thumb_func_start MOD16_021EA248 +MOD16_021EA248: ; 0x021EA248 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EA2E8 + ldr r0, [r4, #4] + bl MOD16_021EA2FC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA248 + + thumb_func_start MOD16_021EA25C +MOD16_021EA25C: ; 0x021EA25C + ldr r0, [r0, #4] + str r1, [r0, #4] + str r2, [r0, #8] + bx lr + thumb_func_end MOD16_021EA25C + + thumb_func_start MOD16_021EA264 +MOD16_021EA264: ; 0x021EA264 + ldr r0, [r0, #4] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EA264 + + thumb_func_start MOD16_021EA26C +MOD16_021EA26C: ; 0x021EA26C + ldr r0, [r0, #4] + str r1, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EA26C + + thumb_func_start MOD16_021EA274 +MOD16_021EA274: ; 0x021EA274 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021EA286 + bl ErrorHandling +_021EA286: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021EA28C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EA28C + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B7C + str r0, [r4, #0xc] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA274 + + thumb_func_start MOD16_021EA2BC +MOD16_021EA2BC: ; 0x021EA2BC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + bne _021EA2CE + bl ErrorHandling +_021EA2CE: + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021EA2D4: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EA2D4 + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA2BC + + thumb_func_start MOD16_021EA2E8 +MOD16_021EA2E8: ; 0x021EA2E8 + push {r4, lr} + add r4, r0, #0 + bne _021EA2F2 + bl ErrorHandling +_021EA2F2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA2E8 + + thumb_func_start MOD16_021EA2FC +MOD16_021EA2FC: ; 0x021EA2FC + push {r4, lr} + add r4, r0, #0 + bne _021EA306 + bl ErrorHandling +_021EA306: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA2FC + + thumb_func_start MOD16_021EA310 +MOD16_021EA310: ; 0x021EA310 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EA310 + + thumb_func_start MOD16_021EA314 +MOD16_021EA314: ; 0x021EA314 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r5, #4] + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bne _021EA332 + bl ErrorHandling +_021EA332: + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021EA338: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EA338 + str r4, [r5, #8] + add r0, r7, #0 + bl FUN_02004E98 + str r0, [r4] + bl FUN_02004E8C + str r0, [r4, #8] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EAA8C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA314 + + thumb_func_start MOD16_021EA35C +MOD16_021EA35C: ; 0x021EA35C + push {r3, r4, r5, lr} + ldr r2, [r0, #0xc] + add r5, r1, #0 + ldr r4, [r0, #8] + cmp r2, #1 + bne _021EA36C + mov r0, #1 + pop {r3, r4, r5, pc} +_021EA36C: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021EA376 + mov r0, #0 + pop {r3, r4, r5, pc} +_021EA376: + add r0, r4, #0 + bl MOD16_021EAA8C + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EAE5C + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA35C + + thumb_func_start MOD16_021EA388 +MOD16_021EA388: ; 0x021EA388 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EA388 + + thumb_func_start MOD16_021EA39C +MOD16_021EA39C: ; 0x021EA39C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r3, [r3, #8] + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021EA458 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EA3BA: ; jump table + .short _021EA3C2 - _021EA3BA - 2 ; case 0 + .short _021EA3E0 - _021EA3BA - 2 ; case 1 + .short _021EA41C - _021EA3BA - 2 ; case 2 + .short _021EA454 - _021EA3BA - 2 ; case 3 +_021EA3C2: + mov r1, #0x33 + ldr r0, [r4, #4] + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x33 + str r0, [r4, #8] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA458 +_021EA3E0: + ldr r0, [r4, #4] + add r1, r5, #0 + str r0, [sp] + add r0, r6, #0 + bl MOD16_021EA784 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021EA400 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EA5BC + b _021EA40C +_021EA400: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EA680 +_021EA40C: + mov r0, #0 + mov r1, #3 + bl FUN_020053CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA458 +_021EA41C: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021EA42E + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EA634 + b _021EA438 +_021EA42E: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EA70C +_021EA438: + cmp r0, #1 + bne _021EA458 + bl FUN_02005404 + cmp r0, #0 + bne _021EA458 + mov r0, #1 + add r1, r0, #0 + bl FUN_020047C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA458 +_021EA454: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EA458: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA39C + + thumb_func_start MOD16_021EA45C +MOD16_021EA45C: ; 0x021EA45C + push {r3, r4, r5, lr} + ldr r4, [r3, #8] + ldr r5, [r1, #8] + add r2, r0, #0 + add r1, r2, #0 + add r0, r5, #0 + add r2, r4, #0 + bl MOD16_021EAC1C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EAD04 + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EA45C + + thumb_func_start MOD16_021EA47C +MOD16_021EA47C: ; 0x021EA47C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021EA518 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA496: ; jump table + .short _021EA4A0 - _021EA496 - 2 ; case 0 + .short _021EA4D2 - _021EA496 - 2 ; case 1 + .short _021EA4F6 - _021EA496 - 2 ; case 2 + .short _021EA504 - _021EA496 - 2 ; case 3 + .short _021EA514 - _021EA496 - 2 ; case 4 +_021EA4A0: + ldr r1, [r3, #0xc] + cmp r1, #0 + bne _021EA4B0 + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA5BC + b _021EA4B8 +_021EA4B0: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA680 +_021EA4B8: + mov r0, #1 + mov r1, #0 + bl FUN_020047C8 + mov r0, #0x7f + mov r1, #3 + mov r2, #0 + bl FUN_0200538C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA4D2: + ldr r1, [r3, #0xc] + cmp r1, #0 + bne _021EA4E2 + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA634 + b _021EA4EA +_021EA4E2: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EA70C +_021EA4EA: + cmp r0, #0 + beq _021EA518 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA4F6: + add r1, r3, #0 + bl MOD16_021EA7D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA504: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EA518 +_021EA514: + mov r0, #1 + pop {r4, pc} +_021EA518: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021EA47C + + thumb_func_start MOD16_021EA51C +MOD16_021EA51C: ; 0x021EA51C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r2, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA51C + + thumb_func_start MOD16_021EA554 +MOD16_021EA554: ; 0x021EA554 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + mov r6, #1 +_021EA55E: + mov r4, #0 + add r5, r7, #0 +_021EA562: + ldr r0, [r5, #0x20] + add r1, r6, #0 + bl FUN_02020398 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EA562 + ldr r0, [r7, #0x68] + mov r1, #1 + bl FUN_02020398 + ldr r0, [sp] + add r7, #0x54 + add r0, r0, #1 + str r0, [sp] + cmp r0, #9 + blt _021EA55E + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA554 + + thumb_func_start MOD16_021EA588 +MOD16_021EA588: ; 0x021EA588 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0 + str r0, [sp] + add r6, r0, #0 +_021EA592: + mov r4, #0 + add r5, r7, #0 +_021EA596: + ldr r0, [r5, #0x20] + add r1, r6, #0 + bl FUN_02020398 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EA596 + ldr r0, [r7, #0x68] + mov r1, #0 + bl FUN_02020398 + ldr r0, [sp] + add r7, #0x54 + add r0, r0, #1 + str r0, [sp] + cmp r0, #9 + blt _021EA592 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA588 + + thumb_func_start MOD16_021EA5BC +MOD16_021EA5BC: ; 0x021EA5BC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EA554 + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021EA622 + cmp r6, #0 + beq _021EA5FE + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #3 + add r2, r1, #0 + sub r2, #0x13 + bl MOD16_021D8988 + b _021EA622 +_021EA5FE: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #3 + add r3, r1, #0 + sub r3, #0x13 + bl MOD16_021D8988 +_021EA622: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EA5BC + + thumb_func_start MOD16_021EA634 +MOD16_021EA634: ; 0x021EA634 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021EA654 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EA65E +_021EA654: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021EA65E: + cmp r0, #0 + beq _021EA670 + cmp r4, #0 + beq _021EA66C + add r0, r6, #0 + bl MOD16_021EA588 +_021EA66C: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EA670: + mov r1, #0x5b + ldr r0, [r5] + lsl r1, r1, #2 + add r1, r0, r1 + bl MOD16_021D8A8C + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EA634 + + thumb_func_start MOD16_021EA680 +MOD16_021EA680: ; 0x021EA680 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + add r4, r3, #0 + bl MOD16_021EA554 + cmp r4, #0 + bne _021EA6A8 + ldr r0, [r5, #8] + mov r1, #0x30 + str r0, [sp] + ldr r0, [r5, #0x10] + mov r3, #0x40 + str r0, [sp, #4] + ldr r2, [r5, #4] + add r0, r7, #0 + bl MOD16_021D8BD8 +_021EA6A8: + ldr r0, [r6, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021EA706 + cmp r4, #0 + beq _021EA6E0 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r2, #0x2f + str r2, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r2, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EA6E0: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r3, #0x2f + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r5, #0x10] + sub r3, #0x3f + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl MOD16_021D8988 +_021EA706: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EA680 + + thumb_func_start MOD16_021EA70C +MOD16_021EA70C: ; 0x021EA70C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bne _021EA72C + bl MOD16_021D8BF4 + str r0, [sp] + ldr r0, [r4] + ldr r1, [r5] + ldr r2, [r5, #4] + bl MOD16_021D86F4 + b _021EA730 +_021EA72C: + mov r0, #1 + str r0, [sp] +_021EA730: + ldr r0, [r6, #8] + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021EA74A + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + str r0, [sp, #4] + b _021EA756 +_021EA74A: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C + str r0, [sp, #4] +_021EA756: + mov r1, #0 + add r2, sp, #0 +_021EA75A: + ldr r0, [r2] + cmp r0, #0 + beq _021EA768 + add r1, r1, #1 + add r2, r2, #4 + cmp r1, #2 + blt _021EA75A +_021EA768: + cmp r1, #2 + bne _021EA77C + cmp r7, #1 + bne _021EA776 + add r0, r5, #0 + bl MOD16_021EA588 +_021EA776: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EA77C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EA70C + + thumb_func_start MOD16_021EA784 +MOD16_021EA784: ; 0x021EA784 + push {r3, r4, r5, r6, r7, lr} + ldr r6, [sp, #0x18] + add r7, r2, #0 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r6, #0 + bl MOD16_021EA7F0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EA89C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EA9C0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD16_021EAA84 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021EA51C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EACB0 + add r0, r5, #0 + bl MOD16_021EACE8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EA784 + + thumb_func_start MOD16_021EA7D0 +MOD16_021EA7D0: ; 0x021EA7D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EAA88 + add r0, r5, #0 + bl MOD16_021EAA5C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EA964 + add r0, r4, #0 + bl MOD16_021EA858 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA7D0 + + thumb_func_start MOD16_021EA7F0 +MOD16_021EA7F0: ; 0x021EA7F0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x46 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EA7F0 + + thumb_func_start MOD16_021EA858 +MOD16_021EA858: ; 0x021EA858 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4] + mov r2, #0 + ldr r0, [r0] + mov r1, #1 + add r3, r2, #0 + bl FUN_0201AEE4 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + add r0, r0, #4 + add r3, r1, #0 + bl FUN_020196F4 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_0201AB24 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD16_021EA858 + + thumb_func_start MOD16_021EA89C +MOD16_021EA89C: ; 0x021EA89C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EA954 ; =0x00002B6C + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x74 + bl FUN_020091E0 + mov r1, #0xc5 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_02009B04 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009474 + ldr r0, _021EA958 ; =0x00002B0B + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x13 + mov r3, #0 + bl FUN_02009298 + mov r1, #0xc6 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + bl FUN_02009D68 + mov r0, #0xc6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009474 + ldr r0, _021EA95C ; =0x00002B6D + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x75 + mov r3, #1 + bl FUN_02009358 + mov r1, #0xc7 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, _021EA960 ; =0x00002B6B + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x73 + mov r3, #1 + bl FUN_02009358 + mov r1, #0x32 + lsl r1, r1, #4 + str r0, [r5, r1] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EA954: .word 0x00002B6C +_021EA958: .word 0x00002B0B +_021EA95C: .word 0x00002B6D +_021EA960: .word 0x00002B6B + thumb_func_end MOD16_021EA89C + + thumb_func_start MOD16_021EA964 +MOD16_021EA964: ; 0x021EA964 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #0xc6 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r0, #5 + mov r1, #0xc5 + lsl r0, r0, #6 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + mov r0, #0x51 + mov r1, #0xc6 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + mov r0, #0x52 + mov r1, #0xc7 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + mov r0, #0x53 + mov r1, #0x32 + lsl r0, r0, #2 + lsl r1, r1, #4 + ldr r0, [r4, r0] + ldr r1, [r5, r1] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EA964 + + thumb_func_start MOD16_021EA9C0 +MOD16_021EA9C0: ; 0x021EA9C0 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + ldr r4, [r1] + ldr r3, _021EAA58 ; =0x00002B6B + add r7, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #5 + str r1, [sp, #0x10] + lsl r0, r0, #6 + add r5, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x50 + sub r2, #0x60 + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r6, sp, #0x30 + str r0, [sp, #0x30] + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r0, #0x11 + str r0, [sp, #0x44] + mov r0, #1 + str r0, [sp, #0x48] + mov r0, #0 + str r5, [sp, #0x4c] + str r0, [sp, #0x2c] + str r0, [sp, #0x38] + str r0, [sp, #0x3c] +_021EAA2A: + mov r4, #0 + add r5, r7, #0 +_021EAA2E: + add r0, r6, #0 + bl FUN_0201FF84 + str r0, [r5, #0x20] + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EAA2E + add r0, r6, #0 + bl FUN_0201FF84 + str r0, [r7, #0x68] + ldr r0, [sp, #0x2c] + add r7, #0x54 + add r0, r0, #1 + str r0, [sp, #0x2c] + cmp r0, #9 + blt _021EAA2A + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + nop +_021EAA58: .word 0x00002B6B + thumb_func_end MOD16_021EA9C0 + + thumb_func_start MOD16_021EAA5C +MOD16_021EAA5C: ; 0x021EAA5C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0 +_021EAA62: + mov r4, #0 + add r5, r6, #0 +_021EAA66: + ldr r0, [r5, #0x20] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EAA66 + ldr r0, [r6, #0x68] + bl FUN_0201FFC8 + add r7, r7, #1 + add r6, #0x54 + cmp r7, #9 + blt _021EAA62 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAA5C + + thumb_func_start MOD16_021EAA84 +MOD16_021EAA84: ; 0x021EAA84 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAA84 + + thumb_func_start MOD16_021EAA88 +MOD16_021EAA88: ; 0x021EAA88 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAA88 + + thumb_func_start MOD16_021EAA8C +MOD16_021EAA8C: ; 0x021EAA8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl MOD16_021EAF10 + add r2, r0, #0 + ldr r1, [r4] + mov r0, #1 + bl FUN_02004F28 + str r0, [r4, #4] + pop {r4, pc} + thumb_func_end MOD16_021EAA8C + + thumb_func_start MOD16_021EAAA4 +MOD16_021EAAA4: ; 0x021EAAA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r0, [sp, #0x44] + ldr r7, [sp, #0x3c] + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + str r1, [sp, #8] + str r0, [sp, #0x48] + add r0, r2, #0 + str r3, [sp, #0xc] + ldr r5, [sp, #0x40] + bl FUN_02004E80 + str r0, [sp, #0x1c] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r3, [sp, #0x44] + ldr r0, [r0] + sub r3, #0x20 + lsl r2, r5, #0x10 + lsl r3, r3, #0x10 + add r0, r0, #4 + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0xc] + mov r6, #0 + sub r0, r1, r0 + cmp r7, #0 + ble _021EAB48 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x18] + lsl r0, r7, #0xc + add r4, r6, #0 + str r0, [sp, #0x10] +_021EAAFC: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + asr r3, r4, #0x1f + add r2, r4, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _021EAB4C ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [sp, #0x10] + bl FX_Div + asr r1, r0, #0xc + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x1c] + add r1, r1, r0 + ldr r0, [sp, #0x48] + ldr r3, [sp, #0x44] + str r0, [sp] + ldr r0, [sp, #8] + ldrb r1, [r2, r1] + ldr r0, [r0] + add r2, r5, #0 + add r0, r0, #4 + bl MOD16_021EAB50 + mov r0, #1 + lsl r0, r0, #0xc + add r6, r6, #1 + add r5, r5, #1 + add r4, r4, r0 + cmp r6, r7 + blt _021EAAFC +_021EAB48: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EAB4C: .word 0x00000000 + thumb_func_end MOD16_021EAAA4 + + thumb_func_start MOD16_021EAB50 +MOD16_021EAB50: ; 0x021EAB50 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp, #8] + add r6, r2, #0 + add r7, r3, #0 + ldr r4, [sp, #0x20] + cmp r5, #0x7f + bls _021EAB64 + sub r5, #0xff +_021EAB64: + cmp r5, #0 + beq _021EAB8E + lsl r2, r5, #0xc + asr r0, r2, #0x1f + lsr r1, r2, #0xf + lsl r0, r0, #0x11 + orr r0, r1 + mov r1, #2 + lsl r3, r2, #0x11 + mov r2, #0 + lsl r1, r1, #0xa + add r3, r3, r1 + adc r0, r2 + lsl r1, r0, #0x14 + lsr r0, r3, #0xc + orr r0, r1 + mov r1, #0x7f + lsl r1, r1, #0xc + bl FX_Div + asr r5, r0, #0xc +_021EAB8E: + ldr r1, [r4] + add r0, r7, r5 + add r1, r7, r1 + cmp r0, r1 + ble _021EAB9E + add r3, r1, #0 + sub r1, r0, r1 + b _021EABA2 +_021EAB9E: + add r3, r0, #0 + sub r1, r1, r0 +_021EABA2: + mov r0, #1 + str r0, [sp] + add r0, r1, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r2, r6, #0x10 + lsl r3, r3, #0x10 + ldr r0, [sp, #8] + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + str r5, [r4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAB50 + + thumb_func_start MOD16_021EABC4 +MOD16_021EABC4: ; 0x021EABC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r0, [sp, #0x20] + add r5, r1, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r6, r2, #0 + add r4, r3, #0 + str r0, [sp, #0x24] + sub r0, r6, r5 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + ldr r3, [sp, #0x20] + str r0, [sp] + mov r0, #0x40 + str r0, [sp, #4] + ldr r0, [r7] + sub r3, #0x20 + lsl r2, r4, #0x10 + lsl r3, r3, #0x10 + add r0, r0, #4 + mov r1, #0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + cmp r5, r6 + bge _021EAC18 +_021EABFE: + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [r7] + mov r1, #0 + add r0, r0, #4 + add r2, r4, #0 + bl MOD16_021EAB50 + add r5, r5, #1 + add r4, r4, #1 + cmp r5, r6 + blt _021EABFE +_021EAC18: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EABC4 + + thumb_func_start MOD16_021EAC1C +MOD16_021EAC1C: ; 0x021EAC1C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0xc9 + add r5, r0, #0 + lsl r3, r3, #2 + ldr r0, [r5, r3] + add r4, r1, #0 + add r0, r0, #4 + str r0, [r5, r3] + ldr r0, [r5, r3] + add r6, r2, #0 + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r1, r2, r1 + str r1, [r5, r3] + ldr r3, [r5, r3] + sub r3, #8 + bpl _021EAC4A + add r0, #0xe8 + add r3, r3, r0 +_021EAC4A: + mov r0, #0xcb + lsl r0, r0, #2 + ldr r1, [r6, #4] + ldr r7, [r5, r0] + cmp r7, r1 + beq _021EAC76 + str r1, [sp] + mov r1, #4 + str r1, [sp, #4] + str r3, [sp, #8] + mov r1, #0x97 + sub r0, r0, #4 + str r1, [sp, #0xc] + add r0, r5, r0 + str r0, [sp, #0x10] + ldr r2, [r6] + add r0, r5, #0 + add r1, r4, #0 + add r3, r7, #0 + bl MOD16_021EAAA4 + b _021EAC8A +_021EAC76: + mov r1, #0x97 + sub r0, r0, #4 + str r1, [sp] + add r0, r5, r0 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #4 + bl MOD16_021EABC4 +_021EAC8A: + ldr r0, [r4] + mov r3, #0xc9 + lsl r3, r3, #2 + ldr r0, [r0] + ldr r3, [r5, r3] + mov r1, #1 + mov r2, #0 + bl FUN_0201AEE4 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_02019220 + mov r0, #0xcb + ldr r1, [r6, #4] + lsl r0, r0, #2 + str r1, [r5, r0] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAC1C + + thumb_func_start MOD16_021EACB0 +MOD16_021EACB0: ; 0x021EACB0 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + mov r1, #9 + add r0, r0, #4 + bl FUN_0201AB24 + mov r0, #0xca + mov r2, #0x97 + lsl r0, r0, #2 + str r2, [sp] + add r0, r5, r0 + mov r1, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r2, #0x69 + add r3, r1, #0 + bl MOD16_021EABC4 + ldr r0, [r4] + add r0, r0, #4 + bl FUN_020191D0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EACB0 + + thumb_func_start MOD16_021EACE8 +MOD16_021EACE8: ; 0x021EACE8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x20 +_021EACF0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EAD24 + add r4, r4, #1 + add r5, #0x54 + cmp r4, #9 + blt _021EACF0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EACE8 + + thumb_func_start MOD16_021EAD04 +MOD16_021EAD04: ; 0x021EAD04 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + add r5, #0x20 +_021EAD0E: + add r1, r6, r4 + ldrb r1, [r1, #0xc] + add r0, r5, #0 + bl MOD16_021EAD88 + add r4, r4, #1 + add r5, #0x54 + cmp r4, #9 + blt _021EAD0E + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EAD04 + + thumb_func_start MOD16_021EAD24 +MOD16_021EAD24: ; 0x021EAD24 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + lsl r0, r1, #4 + add r0, #0x70 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #6 + lsl r0, r0, #0x10 + mov r6, #2 + ldr r5, [sp] + str r0, [sp, #8] + mov r4, #0 + add r7, sp, #4 + lsl r6, r6, #0xe +_021EAD42: + ldr r0, [r5] + add r1, r7, #0 + bl FUN_02020044 + ldr r0, [r5] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [sp, #8] + mov r1, #1 + sub r0, r0, r6 + str r0, [sp, #8] + ldr r0, [r5] + bl FUN_02020130 + add r4, r4, #1 + add r5, #8 + cmp r4, #9 + blt _021EAD42 + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp] + add r1, sp, #4 + ldr r0, [r0, #0x48] + bl FUN_02020044 + ldr r0, [sp] + mov r1, #0 + ldr r0, [r0, #0x48] + bl FUN_020200A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EAD24 + + thumb_func_start MOD16_021EAD88 +MOD16_021EAD88: ; 0x021EAD88 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r7, r1, #0 + add r6, r0, #0 + str r4, [sp] + cmp r7, #0 + ble _021EADAC + add r5, r6, #0 +_021EAD98: + ldr r0, [r5] + mov r1, #1 + bl FUN_020200A0 + add r4, r4, #1 + lsl r0, r4, #1 + str r0, [r5, #4] + add r5, #8 + cmp r4, r7 + blt _021EAD98 +_021EADAC: + mov r5, #0 + add r4, r6, #0 + add r7, r5, #0 +_021EADB2: + ldr r0, [r4] + bl FUN_02020128 + cmp r0, #0 + beq _021EADD4 + ldr r0, [r4, #4] + sub r0, r0, #1 + cmp r0, #0 + ble _021EADCC + str r0, [r4, #4] + add r0, r5, #1 + str r0, [sp] + b _021EADD4 +_021EADCC: + ldr r0, [r4] + add r1, r7, #0 + bl FUN_020200A0 +_021EADD4: + add r5, r5, #1 + add r4, #8 + cmp r5, #9 + blt _021EADB2 + ldr r1, [r6, #0x4c] + ldr r0, [sp] + cmp r1, r0 + bgt _021EAE04 + ldr r0, [r6, #0x48] + ldr r1, [sp] + bl MOD16_021EAE2C + mov r0, #0x10 + str r0, [r6, #0x50] + ldr r1, [r6, #0x4c] + ldr r0, [sp] + cmp r1, r0 + bge _021EAE00 + ldr r0, [r6, #0x48] + mov r1, #1 + bl FUN_020200A0 +_021EAE00: + ldr r0, [sp] + str r0, [r6, #0x4c] +_021EAE04: + ldr r1, [r6, #0x4c] + cmp r1, #0 + ble _021EAE22 + ldr r0, [r6, #0x50] + cmp r0, #0 + bge _021EAE1C + sub r1, r1, #1 + str r1, [r6, #0x4c] + ldr r0, [r6, #0x48] + bl MOD16_021EAE2C + pop {r3, r4, r5, r6, r7, pc} +_021EAE1C: + sub r0, r0, #1 + str r0, [r6, #0x50] + pop {r3, r4, r5, r6, r7, pc} +_021EAE22: + ldr r0, [r6, #0x48] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAD88 + + thumb_func_start MOD16_021EAE2C +MOD16_021EAE2C: ; 0x021EAE2C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + lsl r0, r4, #3 + neg r0, r0 + add r0, #0x60 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r5, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EAE2C + + thumb_func_start MOD16_021EAE5C +MOD16_021EAE5C: ; 0x021EAE5C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + bl MOD16_021EAF10 + add r4, r0, #0 + add r1, r5, #0 + mov r0, #0 + add r1, #0xc + strb r0, [r5, #0xc] + strb r0, [r1, #1] + strb r0, [r1, #2] + strb r0, [r1, #3] + strb r0, [r1, #4] + strb r0, [r1, #5] + strb r0, [r1, #6] + strb r0, [r1, #7] + strb r0, [r1, #8] + bl FUN_02005670 + cmp r0, #0 + beq _021EAE96 + ldr r0, [r5] + add r5, #0xc + add r1, r5, #0 + mov r2, #9 + add r3, r4, #0 + bl FUN_02004F70 +_021EAE96: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EAE5C + + thumb_func_start MOD16_021EAE98 +MOD16_021EAE98: ; 0x021EAE98 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021EAF18 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EAF58 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EAF80 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021EAFB0 + str r0, [r5, #0x24] + ldr r0, _021EAEE0 ; =MOD16_021EAFB4 + str r0, [r5, #8] + ldr r0, _021EAEE4 ; =MOD16_021EAFF4 + str r0, [r5, #0xc] + ldr r0, _021EAEE8 ; =MOD16_021EB078 + str r0, [r5, #0x10] + ldr r0, _021EAEEC ; =MOD16_021EB08C + str r0, [r5, #0x14] + ldr r0, _021EAEF0 ; =MOD16_021EB114 + str r0, [r5, #0x18] + ldr r0, _021EAEF4 ; =MOD16_021EB16C + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EAEE0: .word MOD16_021EAFB4 +_021EAEE4: .word MOD16_021EAFF4 +_021EAEE8: .word MOD16_021EB078 +_021EAEEC: .word MOD16_021EB08C +_021EAEF0: .word MOD16_021EB114 +_021EAEF4: .word MOD16_021EB16C + thumb_func_end MOD16_021EAE98 + + thumb_func_start MOD16_021EAEF8 +MOD16_021EAEF8: ; 0x021EAEF8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EAF84 + ldr r0, [r4, #4] + bl MOD16_021EAF98 + ldr r0, [r4, #0x20] + bl MOD16_021EAFAC + pop {r4, pc} + thumb_func_end MOD16_021EAEF8 + + thumb_func_start MOD16_021EAF10 +MOD16_021EAF10: ; 0x021EAF10 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAF10 + + thumb_func_start MOD16_021EAF18 +MOD16_021EAF18: ; 0x021EAF18 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021EAF2A + bl ErrorHandling +_021EAF2A: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021EAF30: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EAF30 + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EAF18 + + thumb_func_start MOD16_021EAF58 +MOD16_021EAF58: ; 0x021EAF58 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EAF6A + bl ErrorHandling +_021EAF6A: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EAF58 + + thumb_func_start MOD16_021EAF80 +MOD16_021EAF80: ; 0x021EAF80 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EAF80 + + thumb_func_start MOD16_021EAF84 +MOD16_021EAF84: ; 0x021EAF84 + push {r4, lr} + add r4, r0, #0 + bne _021EAF8E + bl ErrorHandling +_021EAF8E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EAF84 + + thumb_func_start MOD16_021EAF98 +MOD16_021EAF98: ; 0x021EAF98 + push {r4, lr} + add r4, r0, #0 + bne _021EAFA2 + bl ErrorHandling +_021EAFA2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EAF98 + + thumb_func_start MOD16_021EAFAC +MOD16_021EAFAC: ; 0x021EAFAC + bx lr + .align 2, 0 + thumb_func_end MOD16_021EAFAC + + thumb_func_start MOD16_021EAFB0 +MOD16_021EAFB0: ; 0x021EAFB0 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EAFB0 + + thumb_func_start MOD16_021EAFB4 +MOD16_021EAFB4: ; 0x021EAFB4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r0, [r5, #4] + mov r1, #0x70 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x70 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EB31C + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EB3D0 + add r0, r7, #0 + bl FUN_02004E98 + str r0, [r4, #0x6c] + str r4, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EAFB4 + + thumb_func_start MOD16_021EAFF4 +MOD16_021EAFF4: ; 0x021EAFF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021EB010 + add r0, r4, #0 + bl MOD16_021EC000 + add r0, r4, #0 + bl MOD16_021EC010 + mov r0, #1 + pop {r3, r4, r5, pc} +_021EB010: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021EB01A + mov r0, #0 + pop {r3, r4, r5, pc} +_021EB01A: + ldr r0, [r4, #0x3c] + str r0, [r5, #0xc] + ldr r0, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EB074 + bl FUN_02005670 + cmp r0, #0 + bne _021EB03C + ldr r0, [r4, #0x64] + cmp r0, #0 + bne _021EB03C + add r0, r4, #0 + bl MOD16_021EC000 +_021EB03C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EB3D0 + ldr r0, [r5, #8] + bl MOD16_021E95C8 + cmp r0, #0 + beq _021EB060 + ldr r0, [r5, #4] + bl MOD16_021D9FB8 + cmp r0, #0 + beq _021EB060 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EC144 +_021EB060: + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _021EB074 + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021EB074 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EC030 +_021EB074: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EAFF4 + + thumb_func_start MOD16_021EB078 +MOD16_021EB078: ; 0x021EB078 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021EB3F4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021EB078 + + thumb_func_start MOD16_021EB08C +MOD16_021EB08C: ; 0x021EB08C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021EB110 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EB0A8: ; jump table + .short _021EB0B0 - _021EB0A8 - 2 ; case 0 + .short _021EB0CA - _021EB0A8 - 2 ; case 1 + .short _021EB0E8 - _021EB0A8 - 2 ; case 2 + .short _021EB0FE - _021EB0A8 - 2 ; case 3 +_021EB0B0: + ldr r0, [r4, #4] + mov r1, #0x74 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x74 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB110 +_021EB0CA: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021EB6C0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EB270 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB110 +_021EB0E8: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EB2E0 + cmp r0, #0 + beq _021EB110 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB110 +_021EB0FE: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EB110: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EB08C + + thumb_func_start MOD16_021EB114 +MOD16_021EB114: ; 0x021EB114 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r7, r0, #0 + ldr r0, [r6, #8] + ldr r4, [r3, #8] + ldr r5, [r1, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EB168 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBBA0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBBF0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBC18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBD3C + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EBD58 + add r0, r5, #0 + bl MOD16_021EBE38 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EC120 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021EC1B8 +_021EB168: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EB114 + + thumb_func_start MOD16_021EB16C +MOD16_021EB16C: ; 0x021EB16C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r5, [r4, #8] + cmp r0, #4 + bhi _021EB1F4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EB188: ; jump table + .short _021EB192 - _021EB188 - 2 ; case 0 + .short _021EB1BA - _021EB188 - 2 ; case 1 + .short _021EB1D0 - _021EB188 - 2 ; case 2 + .short _021EB1E2 - _021EB188 - 2 ; case 3 + .short _021EB1F0 - _021EB188 - 2 ; case 4 +_021EB192: + mov r0, #0x79 + ldr r1, [r6] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r5, #0 + bl MOD16_021EC0A8 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021EB270 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1BA: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #0 + bl MOD16_021EB2E0 + cmp r0, #0 + beq _021EB1F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1D0: + ldr r2, [r4, #4] + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021EB6FC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1E2: + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EB1F4 +_021EB1F0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EB1F4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EB16C + + thumb_func_start MOD16_021EB1F8 +MOD16_021EB1F8: ; 0x021EB1F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x20] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #0x50] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + ldr r0, [r4, #0x54] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB1F8 + + thumb_func_start MOD16_021EB234 +MOD16_021EB234: ; 0x021EB234 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #0x20] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #0x50] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + ldr r0, [r4, #0x54] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB234 + + thumb_func_start MOD16_021EB270 +MOD16_021EB270: ; 0x021EB270 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EB1F8 + ldr r0, [r4, #8] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EB2DC + cmp r6, #0 + beq _021EB2B6 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #3 + add r2, r1, #0 + sub r2, #0x13 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021EB2B6: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + mov r1, #3 + add r3, r1, #0 + sub r3, #0x13 + bl MOD16_021D8988 +_021EB2DC: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EB270 + + thumb_func_start MOD16_021EB2E0 +MOD16_021EB2E0: ; 0x021EB2E0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EB300 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EB306 +_021EB300: + mov r0, #2 + bl FUN_0200A344 +_021EB306: + cmp r0, #0 + beq _021EB318 + cmp r4, #0 + beq _021EB314 + add r0, r6, #0 + bl MOD16_021EB234 +_021EB314: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EB318: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EB2E0 + + thumb_func_start MOD16_021EB31C +MOD16_021EB31C: ; 0x021EB31C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r4, #0 + mov r1, #0xc + bl FUN_02016998 + str r0, [r5, #4] + add r0, r4, #0 + mov r1, #8 + bl FUN_02016998 + str r0, [r5, #0x10] + mov r0, #0x6a + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x35 + mov r2, #0x51 + mov r3, #0x16 + bl MOD16_021D7C98 + ldr r1, [r5, #4] + mov r0, #0xfe + strb r0, [r1, #4] + ldr r1, [r5, #4] + mov r2, #0x33 + strb r2, [r1, #5] + ldr r1, [r5, #4] + mov r2, #0x9d + strb r2, [r1, #6] + ldr r1, [r5, #4] + mov r2, #0x20 + strb r2, [r1, #7] + ldr r1, [r5, #4] + mov r2, #0x9b + strb r0, [r1, #8] + ldr r0, [r5, #4] + mov r1, #0xb3 + strb r1, [r0, #9] + ldr r0, [r5, #4] + mov r1, #0x7b + strb r1, [r0, #0xa] + ldr r0, [r5, #4] + mov r1, #0x48 + strb r1, [r0, #0xb] + mov r0, #0xcc + str r0, [sp] + ldr r0, [r5, #0x10] + mov r1, #0x6b + mov r3, #0x9c + bl MOD16_021D7C98 + mov r0, #0xf6 + str r0, [sp] + ldr r0, [r5, #0x10] + mov r1, #0x96 + add r0, r0, #4 + mov r2, #0xb6 + mov r3, #0xd6 + bl MOD16_021D7C98 + str r6, [r5, #8] + str r5, [r5, #0xc] + str r4, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021EB3C8 ; =MOD16_021EB41C + mov r1, #3 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + str r4, [sp] + add r3, r5, #0 + ldr r0, [r5, #0x10] + ldr r2, _021EB3CC ; =MOD16_021EB45C + mov r1, #2 + add r3, #8 + bl FUN_020220C4 + str r0, [r5, #0x14] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EB3C8: .word MOD16_021EB41C +_021EB3CC: .word MOD16_021EB45C + thumb_func_end MOD16_021EB31C + + thumb_func_start MOD16_021EB3D0 +MOD16_021EB3D0: ; 0x021EB3D0 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + add r2, r4, #0 + mov r0, #0x64 +_021EB3DA: + add r1, r1, #1 + str r0, [r2, #0x18] + add r2, r2, #4 + cmp r1, #2 + blt _021EB3DA + ldr r0, [r4] + bl FUN_02022144 + ldr r0, [r4, #0x14] + bl FUN_02022144 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB3D0 + + thumb_func_start MOD16_021EB3F4 +MOD16_021EB3F4: ; 0x021EB3F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #0x14] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB3F4 + + thumb_func_start MOD16_021EB41C +MOD16_021EB41C: ; 0x021EB41C + push {r3, lr} + ldr r3, [r2] + ldr r2, [r2, #4] + cmp r1, #3 + bhi _021EB458 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB432: ; jump table + .short _021EB43A - _021EB432 - 2 ; case 0 + .short _021EB44A - _021EB432 - 2 ; case 1 + .short _021EB442 - _021EB432 - 2 ; case 2 + .short _021EB452 - _021EB432 - 2 ; case 3 +_021EB43A: + add r1, r3, #0 + bl MOD16_021EB4F8 + pop {r3, pc} +_021EB442: + add r1, r3, #0 + bl MOD16_021EB568 + pop {r3, pc} +_021EB44A: + add r1, r3, #0 + bl MOD16_021EB648 + pop {r3, pc} +_021EB452: + add r1, r3, #0 + bl MOD16_021EB684 +_021EB458: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EB41C + + thumb_func_start MOD16_021EB45C +MOD16_021EB45C: ; 0x021EB45C + push {r3, r4, r5, r6, r7, lr} + ldr r7, [r2] + add r5, r0, #0 + ldr r0, [r7, #4] + ldr r4, [r2, #4] + add r6, r1, #0 + bl MOD16_021D9DE8 + str r0, [sp] + lsl r0, r5, #2 + add r0, r4, r0 + str r6, [r0, #0x18] + cmp r6, #3 + bhi _021EB4F0 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EB484: ; jump table + .short _021EB48C - _021EB484 - 2 ; case 0 + .short _021EB4F0 - _021EB484 - 2 ; case 1 + .short _021EB492 - _021EB484 - 2 ; case 2 + .short _021EB4F0 - _021EB484 - 2 ; case 3 +_021EB48C: + mov r0, #0 + str r0, [r4, #0x24] + pop {r3, r4, r5, r6, r7, pc} +_021EB492: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021EB4F0 + mov r2, #1 + str r2, [r4, #0x24] + cmp r5, #0 + beq _021EB4A6 + cmp r5, #1 + beq _021EB4DC + pop {r3, r4, r5, r6, r7, pc} +_021EB4A6: + ldr r0, [r4, #0x64] + cmp r0, #1 + ldr r0, [r4, #0x2c] + bne _021EB4C6 + cmp r0, #0 + bne _021EB4BE + ldr r2, [sp] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021EBFD4 + pop {r3, r4, r5, r6, r7, pc} +_021EB4BE: + add r0, r4, #0 + bl MOD16_021EC000 + pop {r3, r4, r5, r6, r7, pc} +_021EB4C6: + cmp r0, #1 + bne _021EB4D0 + mov r0, #0 + bl FUN_02005614 +_021EB4D0: + ldr r2, [sp] + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021EBFD4 + pop {r3, r4, r5, r6, r7, pc} +_021EB4DC: + mov r0, #2 + str r0, [r4, #0x28] + ldr r1, [r4, #0x64] + add r0, r4, #0 + eor r1, r2 + bl MOD16_021EC060 + ldr r0, _021EB4F4 ; =0x000005DD + bl FUN_020054C8 +_021EB4F0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021EB4F4: .word 0x000005DD + thumb_func_end MOD16_021EB45C + + thumb_func_start MOD16_021EB4F8 +MOD16_021EB4F8: ; 0x021EB4F8 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB50A + cmp r0, #1 + beq _021EB522 + cmp r0, #2 + beq _021EB53E + pop {r4, pc} +_021EB50A: + ldr r0, [r4, #0x2c] + cmp r0, #1 + bne _021EB516 + add r0, r4, #0 + bl MOD16_021EC000 +_021EB516: + ldr r0, _021EB564 ; =0x021C48F8 + ldrh r0, [r0, #0x1c] + str r0, [r4, #0x38] + mov r0, #1 + str r0, [r4, #0x30] + pop {r4, pc} +_021EB522: + ldr r0, [r4, #0x2c] + cmp r0, #1 + bne _021EB52E + add r0, r4, #0 + bl MOD16_021EC000 +_021EB52E: + mov r0, #1 + str r0, [r4, #0x4c] + ldr r0, _021EB564 ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x54] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x58] + pop {r4, pc} +_021EB53E: + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021EB55C + ldr r0, [r4, #0x10] + bl FUN_02020A40 + str r0, [r4, #0x20] + ldr r0, [r4, #0x10] + add r0, r0, #4 + bl FUN_02020A40 + ldr r1, [r4, #0x20] + orr r0, r1 + str r0, [r4, #0x20] + pop {r4, pc} +_021EB55C: + mov r0, #1 + str r0, [r4, #0x20] + pop {r4, pc} + nop +_021EB564: .word 0x021C48F8 + thumb_func_end MOD16_021EB4F8 + + thumb_func_start MOD16_021EB568 +MOD16_021EB568: ; 0x021EB568 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB57A + cmp r0, #1 + beq _021EB5BA + cmp r0, #2 + beq _021EB5DE + pop {r4, pc} +_021EB57A: + ldr r0, [r4, #0x30] + cmp r0, #1 + bne _021EB638 + ldr r1, _021EB63C ; =0x021C48F8 + ldr r0, [r4, #0x38] + ldrh r2, [r1, #0x1c] + sub r2, r2, r0 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021EB5A2 + cmp r2, #0xc + blt _021EB638 + mov r0, #1 + str r0, [r4, #0x34] + ldrh r0, [r1, #0x1c] + str r0, [r4, #0x38] + ldr r0, _021EB640 ; =0x000005F7 + bl FUN_020054C8 + pop {r4, pc} +_021EB5A2: + mov r0, #0xb + mvn r0, r0 + cmp r2, r0 + bgt _021EB638 + mov r0, #0 + str r0, [r4, #0x34] + ldrh r0, [r1, #0x1c] + str r0, [r4, #0x38] + ldr r0, _021EB640 ; =0x000005F7 + bl FUN_020054C8 + pop {r4, pc} +_021EB5BA: + ldr r0, [r4, #0x4c] + cmp r0, #1 + bne _021EB638 + add r0, r4, #0 + bl MOD16_021EBC30 + add r0, r4, #0 + bl MOD16_021EBC98 + add r0, r4, #0 + bl MOD16_021EBCC4 + ldr r0, _021EB63C ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + str r1, [r4, #0x54] + ldrh r0, [r0, #0x1e] + str r0, [r4, #0x58] + pop {r4, pc} +_021EB5DE: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021EB638 + ldr r0, [r4, #0x2c] + cmp r0, #0 + bne _021EB5F8 + mov r0, #1 + str r0, [r4, #0x20] + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0C0 + b _021EB632 +_021EB5F8: + ldr r1, _021EB63C ; =0x021C48F8 + ldrh r0, [r1, #0x1e] + cmp r0, #0x83 + bhs _021EB626 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _021EB610 + ldrh r1, [r1, #0x1c] + add r0, r4, #0 + bl MOD16_021EBDD0 + b _021EB618 +_021EB610: + ldrh r1, [r1, #0x1c] + add r0, r4, #0 + bl MOD16_021EBE04 +_021EB618: + mov r0, #0 + str r0, [r4, #0x3c] + add r0, r4, #0 + mov r1, #1 + bl MOD16_021EC0C0 + b _021EB632 +_021EB626: + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0D8 + ldr r0, _021EB644 ; =0xFFFFFA00 + str r0, [r4, #0x3c] +_021EB632: + add r0, r4, #0 + bl MOD16_021EC0E8 +_021EB638: + pop {r4, pc} + nop +_021EB63C: .word 0x021C48F8 +_021EB640: .word 0x000005F7 +_021EB644: .word 0xFFFFFA00 + thumb_func_end MOD16_021EB568 + + thumb_func_start MOD16_021EB648 +MOD16_021EB648: ; 0x021EB648 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB65A + cmp r0, #1 + beq _021EB660 + cmp r0, #2 + beq _021EB66C + pop {r4, pc} +_021EB65A: + mov r0, #0 + str r0, [r4, #0x30] + pop {r4, pc} +_021EB660: + ldr r0, [r4, #0x60] + lsl r0, r0, #2 + str r0, [r4, #0x5c] + mov r0, #0 + str r0, [r4, #0x4c] + pop {r4, pc} +_021EB66C: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021EB680 + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0C0 + add r0, r4, #0 + bl MOD16_021EC0E8 +_021EB680: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB648 + + thumb_func_start MOD16_021EB684 +MOD16_021EB684: ; 0x021EB684 + push {r4, lr} + add r4, r2, #0 + cmp r0, #0 + beq _021EB696 + cmp r0, #1 + beq _021EB69C + cmp r0, #2 + beq _021EB6A8 + pop {r4, pc} +_021EB696: + mov r0, #0 + str r0, [r4, #0x30] + pop {r4, pc} +_021EB69C: + ldr r0, [r4, #0x60] + lsl r0, r0, #2 + str r0, [r4, #0x5c] + mov r0, #0 + str r0, [r4, #0x4c] + pop {r4, pc} +_021EB6A8: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021EB6BC + add r0, r4, #0 + mov r1, #0 + bl MOD16_021EC0C0 + add r0, r4, #0 + bl MOD16_021EC0E8 +_021EB6BC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB684 + + thumb_func_start MOD16_021EB6C0 +MOD16_021EB6C0: ; 0x021EB6C0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EB724 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EB830 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EB920 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBAA4 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EC068 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EB6C0 + + thumb_func_start MOD16_021EB6FC +MOD16_021EB6FC: ; 0x021EB6FC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EBA84 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EBB88 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EB8DC + add r0, r4, #0 + bl MOD16_021EB80C + add r0, r5, #0 + bl MOD16_021EC080 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EB6FC + + thumb_func_start MOD16_021EB724 +MOD16_021EB724: ; 0x021EB724 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x47 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + ldr r0, [r5] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r4, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x23 + mov r3, #7 + bl MOD16_021D8CB4 + str r4, [sp] + ldr r0, [r5] + mov r1, #0x48 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r4, r0, #0 + ldrh r0, [r2] + mov r1, #7 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5] + ldr r0, [r0] + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [r5] + mov r1, #7 + ldr r0, [r0] + bl FUN_0201AC68 + ldr r0, [r5] + mov r2, #0 + add r3, r2, #0 + ldr r0, [r0] + mov r1, #7 + sub r3, #0x30 + bl FUN_020179E0 + ldr r0, [r5] + mov r2, #3 + add r3, r2, #0 + ldr r0, [r0] + mov r1, #7 + sub r3, #0x13 + bl FUN_020179E0 + mov r0, #7 + mov r1, #3 + bl FUN_020178BC + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EB724 + + thumb_func_start MOD16_021EB80C +MOD16_021EB80C: ; 0x021EB80C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + bl FUN_02018744 + mov r0, #7 + mov r1, #1 + bl FUN_020178BC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EB80C + + thumb_func_start MOD16_021EB830 +MOD16_021EB830: ; 0x021EB830 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EB8D0 ; =0x00002781 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x71 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x58] + bl FUN_02009B04 + ldr r0, [r5, #0x58] + bl FUN_02009474 + ldr r0, _021EB8D4 ; =0x00002722 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x12 + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x5c] + bl FUN_02009D68 + ldr r0, [r5, #0x5c] + bl FUN_02009474 + ldr r0, _021EB8D8 ; =0x00002782 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x72 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x60] + mov r0, #0x9e + lsl r0, r0, #6 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x70 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x64] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EB8D0: .word 0x00002781 +_021EB8D4: .word 0x00002722 +_021EB8D8: .word 0x00002782 + thumb_func_end MOD16_021EB830 + + thumb_func_start MOD16_021EB8DC +MOD16_021EB8DC: ; 0x021EB8DC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x58] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x5c] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x58] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x5c] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x60] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x64] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EB8DC + + thumb_func_start MOD16_021EB920 +MOD16_021EB920: ; 0x021EB920 + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + mov r3, #0x9e + add r5, r0, #0 + lsl r3, r3, #6 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + add r2, r3, #0 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r2, #0x5e + add r3, r3, #2 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x43 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + lsl r0, r0, #0x11 + str r0, [sp, #0x34] + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + str r6, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #0x3c] + mov r1, #4 + bl FUN_02020130 + ldr r0, [r5, #0x3c] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r5, #0x3c] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5, #0x3c] + mov r1, #8 + bl FUN_02020208 + mov r0, #0x33 + lsl r0, r0, #0xc + str r0, [sp, #0x34] + mov r1, #0x9d + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5] + mov r1, #1 + bl FUN_020200EC + mov r0, #0x2d + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #0x83 + mov r0, #3 + lsl r1, r1, #0xc + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #4] + mov r1, #3 + bl FUN_02020130 + ldr r0, [r5, #4] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r5, #4] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5, #4] + mov r1, #5 + bl FUN_02020208 + mov r2, #3 + str r2, [r5, #8] + mov r1, #2 + str r1, [r5, #0xc] + str r2, [r5, #0x10] + mov r0, #5 + str r0, [r5, #0x18] + mov r0, #0xe6 + str r1, [r5, #0x1c] + lsl r0, r0, #0xc + mov r1, #0xa6 + str r0, [sp, #0x34] + lsl r1, r1, #0xc + lsl r0, r2, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + str r0, [r5, #0x20] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r5, #0x20] + mov r1, #1 + bl FUN_020200BC + mov r1, #2 + ldr r0, [r5, #0x20] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5, #0x20] + mov r1, #5 + bl FUN_02020208 + mov r1, #6 + str r1, [r5, #0x24] + mov r0, #5 + str r0, [r5, #0x28] + str r1, [r5, #0x2c] + str r0, [r5, #0x34] + mov r0, #2 + str r0, [r5, #0x38] + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EB920 + + thumb_func_start MOD16_021EBA84 +MOD16_021EBA84: ; 0x021EBA84 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + ldr r0, [r4, #0x3c] + bl FUN_0201FFC8 + ldr r0, [r4, #4] + bl FUN_0201FFC8 + ldr r0, [r4, #0x20] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBA84 + + thumb_func_start MOD16_021EBAA4 +MOD16_021EBAA4: ; 0x021EBAA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r4, [r1] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021EBB80 ; =0x00002722 + add r6, r2, #0 + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r2, #0 + mov r1, #0x45 + lsl r1, r1, #2 + str r1, [sp, #0x1c] + mov r1, #2 + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021EBB84 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x29 + bl MOD16_021DB3C8 + lsr r1, r0, #1 + mov r0, #0x40 + sub r0, r0, r1 + str r0, [sp, #0x18] + str r6, [sp, #0xc] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x50] + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021EBB84 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x2a + bl MOD16_021DB3C8 + lsr r1, r0, #1 + mov r0, #0x40 + sub r0, r0, r1 + str r0, [sp, #0x18] + str r6, [sp, #0xc] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0x54] + ldr r0, [r0] + add r1, r7, #0 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + ldr r0, [r5, #0x54] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EBB80: .word 0x00002722 +_021EBB84: .word 0x00000266 + thumb_func_end MOD16_021EBAA4 + + thumb_func_start MOD16_021EBB88 +MOD16_021EBB88: ; 0x021EBB88 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021EBB8E: + ldr r0, [r5, #0x50] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021EBB8E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EBB88 + + thumb_func_start MOD16_021EBBA0 +MOD16_021EBBA0: ; 0x021EBBA0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0x40] + ldr r0, [r4, #0x34] + cmp r1, r0 + beq _021EBBEC + ldr r0, [r5, #0x3c] + bl FUN_0202022C + add r6, r0, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + ldr r0, [r5, #0x3c] + bne _021EBBD4 + mov r1, #4 + bl FUN_02020130 + mov r1, #8 + sub r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r5, #0x3c] + lsr r1, r1, #0x10 + bl FUN_02020208 + b _021EBBE8 +_021EBBD4: + mov r1, #0 + bl FUN_02020130 + mov r1, #8 + sub r1, r1, r6 + lsl r1, r1, #0x10 + ldr r0, [r5, #0x3c] + lsr r1, r1, #0x10 + bl FUN_02020208 +_021EBBE8: + ldr r0, [r4, #0x34] + str r0, [r5, #0x40] +_021EBBEC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EBBA0 + + thumb_func_start MOD16_021EBBF0 +MOD16_021EBBF0: ; 0x021EBBF0 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldr r0, [r2, #0x64] + ldr r3, [r2, #0x18] + cmp r0, #0 + ldr r0, [r4, #4] + bne _021EBC0C + add r4, #8 + add r1, r4, #0 + mov r2, #0 + bl MOD16_021EBEE4 + pop {r4, pc} +_021EBC0C: + add r4, #8 + ldr r2, [r2, #0x2c] + add r1, r4, #0 + bl MOD16_021EBE6C + pop {r4, pc} + thumb_func_end MOD16_021EBBF0 + + thumb_func_start MOD16_021EBC18 +MOD16_021EBC18: ; 0x021EBC18 + push {r3, lr} + add r2, r0, #0 + ldr r0, [r2, #0x20] + add r3, r1, #0 + add r2, #0x24 + add r1, r2, #0 + ldr r2, [r3, #0x64] + ldr r3, [r3, #0x1c] + bl MOD16_021EBE6C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EBC18 + + thumb_func_start MOD16_021EBC30 +MOD16_021EBC30: ; 0x021EBC30 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r3, _021EBC94 ; =0x021C48F8 + ldr r0, [r5, #0x54] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + ldr r1, [r5, #0x58] + sub r0, #0x33 + sub r1, #0x9d + sub r2, #0x33 + sub r3, #0x9d + bl FUN_0201BBD0 + add r6, r0, #0 + bpl _021EBC56 + neg r0, r6 +_021EBC56: + cmp r0, #1 + blt _021EBC90 + ldr r0, [r5, #0x5c] + add r4, r5, #0 + add r4, #0x5c + add r0, r0, r6 + str r0, [r5, #0x5c] + ldr r0, [r4] + bpl _021EBC6E + add r0, #0x58 + str r0, [r4] + b _021EBC76 +_021EBC6E: + mov r1, #0x58 + bl _s32_div_f + str r1, [r4] +_021EBC76: + ldr r0, [r5, #0x5c] + cmp r0, #0x20 + blt _021EBC90 + cmp r0, #0x38 + bgt _021EBC90 + cmp r6, #0 + ble _021EBC8C + mov r0, #0x20 + add sp, #4 + str r0, [r5, #0x5c] + pop {r3, r4, r5, r6, pc} +_021EBC8C: + mov r0, #0x38 + str r0, [r5, #0x5c] +_021EBC90: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021EBC94: .word 0x021C48F8 + thumb_func_end MOD16_021EBC30 + + thumb_func_start MOD16_021EBC98 +MOD16_021EBC98: ; 0x021EBC98 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x5c] + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r1, r0, #2 + ldr r0, [r4, #0x60] + cmp r1, r0 + beq _021EBCBE + ldr r0, _021EBCC0 ; =0x000005F7 + bl FUN_020054C8 + ldr r1, [r4, #0x5c] + asr r0, r1, #1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #2 + str r0, [r4, #0x60] +_021EBCBE: + pop {r4, pc} + .align 2, 0 +_021EBCC0: .word 0x000005F7 + thumb_func_end MOD16_021EBC98 + + thumb_func_start MOD16_021EBCC4 +MOD16_021EBCC4: ; 0x021EBCC4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x5c] + cmp r1, #0 + bne _021EBCD4 + bl MOD16_021EC010 + pop {r4, pc} +_021EBCD4: + ble _021EBD02 + cmp r1, #0x2c + bgt _021EBD02 + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _021EBCE6 + mov r0, #0 + bl FUN_02004CA4 +_021EBCE6: + ldr r0, [r4, #0x50] + cmp r0, #2 + beq _021EBCF4 + bl FUN_02004CB4 + mov r0, #2 + str r0, [r4, #0x50] +_021EBCF4: + ldr r0, [r4, #0x60] + cmp r0, #0 + bne _021EBCFC + mov r0, #1 +_021EBCFC: + bl FUN_02004D04 + pop {r4, pc} +_021EBD02: + ldr r0, [r4, #0x50] + cmp r0, #2 + bne _021EBD0C + bl FUN_02004CFC +_021EBD0C: + ldr r0, [r4, #0x50] + cmp r0, #1 + beq _021EBD1C + mov r0, #0 + bl FUN_02004C80 + mov r0, #1 + str r0, [r4, #0x50] +_021EBD1C: + ldr r0, [r4, #0x5c] + cmp r0, #0 + bne _021EBD26 + mov r0, #0x58 + str r0, [r4, #0x5c] +_021EBD26: + ldr r1, [r4, #0x60] + mov r0, #0x16 + sub r0, r0, r1 + lsl r0, r0, #3 + cmp r0, #0 + ble _021EBD34 + sub r0, r0, #1 +_021EBD34: + mov r1, #0 + bl FUN_02004CAC + pop {r4, pc} + thumb_func_end MOD16_021EBCC4 + + thumb_func_start MOD16_021EBD3C +MOD16_021EBD3C: ; 0x021EBD3C + push {r4, lr} + ldr r1, [r1, #0x5c] + add r4, r0, #0 + mov r0, #0xe + bl FUN_0201BC84 + add r1, r0, #0 + lsl r1, r1, #0x10 + ldr r0, [r4] + lsr r1, r1, #0x10 + bl FUN_02020088 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBD3C + + thumb_func_start MOD16_021EBD58 +MOD16_021EBD58: ; 0x021EBD58 + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, [r2, #0x6c] + add r5, r0, #0 + ldr r2, [r2, #0x3c] + mov r0, #1 + bl FUN_02004F28 + add r6, r0, #0 + bne _021EBD70 + mov r0, #0 + str r0, [r5, #0x48] +_021EBD70: + add r0, r5, #0 + ldr r1, [r5, #0x48] + add r0, #0x4c + sub r1, r6, r1 + lsl r1, r1, #4 + ldrh r0, [r0] + neg r1, r1 + add r1, r0, r1 + add r0, r5, #0 + add r0, #0x4c + strh r1, [r0] + add r0, r5, #0 + add r0, #0x4c + ldrh r1, [r0] + add r0, r5, #0 + add r0, #0x4c + strh r1, [r0] + add r0, r5, #0 + add r0, #0x4c + ldrh r0, [r0] + mov r1, #0xb6 + bl _s32_div_f + add r3, r0, #0 + ldr r0, [r4] + lsl r3, r3, #0x10 + ldr r0, [r0] + mov r1, #7 + mov r2, #0 + lsr r3, r3, #0x10 + bl FUN_0201AF08 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #9 + mov r3, #0x83 + bl FUN_0201AF50 + ldr r0, [r4] + mov r1, #7 + ldr r0, [r0] + mov r2, #0xc + mov r3, #0x63 + bl FUN_0201AF50 + str r6, [r5, #0x48] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EBD58 + + thumb_func_start MOD16_021EBDD0 +MOD16_021EBDD0: ; 0x021EBDD0 + push {r4, lr} + sub r1, #0x6b + add r4, r0, #0 + lsl r0, r1, #0xc + mov r2, #0x7f + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #9 + lsl r1, r1, #0x10 + bl FX_Div + asr r0, r0, #0xc + str r0, [r4, #0x44] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBDD0 + + thumb_func_start MOD16_021EBE04 +MOD16_021EBE04: ; 0x021EBE04 + push {r4, lr} + sub r1, #0xb3 + add r4, r0, #0 + lsl r0, r1, #0xc + mov r2, #0x7f + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0x12 + lsl r1, r1, #0xe + bl FX_Div + asr r0, r0, #0xc + str r0, [r4, #0x40] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EBE04 + + thumb_func_start MOD16_021EBE38 +MOD16_021EBE38: ; 0x021EBE38 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + cmp r0, #0 + ldr r0, [r4, #0x50] + bne _021EBE58 + ldr r0, [r0] + mov r1, #1 + bl FUN_020119D0 + ldr r0, [r4, #0x54] + mov r1, #0 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} +_021EBE58: + ldr r0, [r0] + mov r1, #0 + bl FUN_020119D0 + ldr r0, [r4, #0x54] + mov r1, #1 + ldr r0, [r0] + bl FUN_020119D0 + pop {r4, pc} + thumb_func_end MOD16_021EBE38 + + thumb_func_start MOD16_021EBE6C +MOD16_021EBE6C: ; 0x021EBE6C + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #3 + bne _021EBE7C + mov r4, #1 +_021EBE7C: + add r0, r6, #0 + bl FUN_0202022C + str r0, [sp] + ldr r0, [r5, #0xc] + cmp r0, r7 + beq _021EBE96 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + str r7, [r5, #0xc] +_021EBE96: + cmp r4, #2 + bgt _021EBEAA + cmp r4, #0 + blt _021EBEE0 + beq _021EBEE0 + cmp r4, #1 + beq _021EBECC + cmp r4, #2 + beq _021EBEB0 + pop {r3, r4, r5, r6, r7, pc} +_021EBEAA: + cmp r4, #0x64 + beq _021EBECC + pop {r3, r4, r5, r6, r7, pc} +_021EBEB0: + ldr r1, [r5, #0x14] + ldr r0, [sp] + cmp r0, r1 + ble _021EBEE0 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_02020208 + add r0, r6, #0 + mov r1, #0 + bl FUN_020200D8 + pop {r3, r4, r5, r6, r7, pc} +_021EBECC: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + mov r1, #2 + add r0, r6, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021EBEE0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EBE6C + + thumb_func_start MOD16_021EBEE4 +MOD16_021EBEE4: ; 0x021EBEE4 + push {r3, r4, r5, r6, r7, lr} + add r4, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + cmp r4, #1 + bne _021EBEF4 + mov r4, #3 +_021EBEF4: + add r0, r6, #0 + bl FUN_0202022C + ldr r0, [r5, #0xc] + cmp r0, r7 + beq _021EBF0C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + str r7, [r5, #0xc] +_021EBF0C: + cmp r4, #3 + bgt _021EBF20 + cmp r4, #0 + blt _021EBF7A + beq _021EBF26 + cmp r4, #2 + beq _021EBF50 + cmp r4, #3 + beq _021EBF66 + pop {r3, r4, r5, r6, r7, pc} +_021EBF20: + cmp r4, #0x64 + beq _021EBF66 + pop {r3, r4, r5, r6, r7, pc} +_021EBF26: + cmp r7, #1 + bne _021EBF36 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0 + bl MOD16_021EBF7C + b _021EBF40 +_021EBF36: + add r0, r6, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD16_021EBF7C +_021EBF40: + ldr r1, [r5, #0x14] + add r0, r6, #0 + sub r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + pop {r3, r4, r5, r6, r7, pc} +_021EBF50: + ldr r1, [r5, #0x14] + add r0, r6, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + add r0, r6, #0 + mov r1, #0 + bl FUN_020200D8 + pop {r3, r4, r5, r6, r7, pc} +_021EBF66: + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021EBF7C + mov r1, #2 + add r0, r6, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 +_021EBF7A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EBEE4 + + thumb_func_start MOD16_021EBF7C +MOD16_021EBF7C: ; 0x021EBF7C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r7, r2, #0 + bl FUN_0202022C + add r6, r0, #0 + cmp r7, #1 + ldr r1, [r4, #8] + bne _021EBFB2 + ldr r0, [r4] + cmp r1, r0 + bne _021EBFD2 + ldr r1, [r4, #4] + add r0, r5, #0 + bl FUN_02020130 + ldr r0, [r4, #4] + str r0, [r4, #8] + ldr r1, [r4, #0x10] + add r0, r5, #0 + sub r1, r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + pop {r3, r4, r5, r6, r7, pc} +_021EBFB2: + ldr r0, [r4, #4] + cmp r1, r0 + bne _021EBFD2 + ldr r1, [r4] + add r0, r5, #0 + bl FUN_02020130 + ldr r0, [r4] + str r0, [r4, #8] + ldr r1, [r4, #0x10] + add r0, r5, #0 + sub r1, r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 +_021EBFD2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EBF7C + + thumb_func_start MOD16_021EBFD4 +MOD16_021EBFD4: ; 0x021EBFD4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #1 + lsl r1, r2, #0x10 + str r0, [r4, #0x2c] + ldr r0, _021EBFFC ; =0x000001FF + lsr r1, r1, #0x10 + str r0, [sp] + mov r0, #0xd + mov r2, #0 + mov r3, #0x7f + bl FUN_020056AC + add r0, r4, #0 + bl MOD16_021EC0E8 + add sp, #4 + pop {r3, r4, pc} + nop +_021EBFFC: .word 0x000001FF + thumb_func_end MOD16_021EBFD4 + + thumb_func_start MOD16_021EC000 +MOD16_021EC000: ; 0x021EC000 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + bl FUN_02005614 + mov r0, #0 + str r0, [r4, #0x2c] + pop {r4, pc} + thumb_func_end MOD16_021EC000 + + thumb_func_start MOD16_021EC010 +MOD16_021EC010: ; 0x021EC010 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #1 + bne _021EC020 + mov r0, #0 + bl FUN_02004CA4 +_021EC020: + ldr r0, [r4, #0x50] + cmp r0, #2 + bne _021EC02A + bl FUN_02004CFC +_021EC02A: + mov r0, #0 + str r0, [r4, #0x50] + pop {r4, pc} + thumb_func_end MOD16_021EC010 + + thumb_func_start MOD16_021EC030 +MOD16_021EC030: ; 0x021EC030 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r6, r0, #0 + bl FUN_02005670 + cmp r0, #0 + bne _021EC05C + ldr r0, [r5, #0x68] + sub r0, r0, #1 + str r0, [r5, #0x68] + bne _021EC05C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBFD4 + mov r0, #0xa + str r0, [r5, #0x68] +_021EC05C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EC030 + + thumb_func_start MOD16_021EC060 +MOD16_021EC060: ; 0x021EC060 + str r1, [r0, #0x64] + mov r1, #0xa + str r1, [r0, #0x68] + bx lr + thumb_func_end MOD16_021EC060 + + thumb_func_start MOD16_021EC068 +MOD16_021EC068: ; 0x021EC068 + push {r4, lr} + add r4, r0, #0 + add r3, r2, #0 + ldr r0, [r1] + add r2, r4, #0 + mov r1, #0x14 + add r2, #0x6c + bl MOD16_021D8D70 + str r0, [r4, #0x68] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC068 + + thumb_func_start MOD16_021EC080 +MOD16_021EC080: ; 0x021EC080 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x68] + str r0, [r4, #0x6c] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC080 + + thumb_func_start MOD16_021EC094 +MOD16_021EC094: ; 0x021EC094 + push {r3, lr} + add r2, r0, #0 + ldr r2, [r2, #0x6c] + mov r0, #0x1f + ldr r2, [r2, #0xc] + mov r1, #0xe0 + mov r3, #0x20 + bl FUN_0201C2C8 + pop {r3, pc} + thumb_func_end MOD16_021EC094 + + thumb_func_start MOD16_021EC0A8 +MOD16_021EC0A8: ; 0x021EC0A8 + push {r3, lr} + add r2, r0, #0 + ldr r2, [r2, #0x6c] + mov r0, #0x1f + ldr r2, [r2, #0xc] + mov r1, #0xe0 + add r2, #0x20 + mov r3, #0x20 + bl FUN_0201C2C8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EC0A8 + + thumb_func_start MOD16_021EC0C0 +MOD16_021EC0C0: ; 0x021EC0C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EC0D8 + cmp r4, #0 + bne _021EC0D4 + add r0, r5, #0 + bl MOD16_021EC0DC +_021EC0D4: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC0C0 + + thumb_func_start MOD16_021EC0D8 +MOD16_021EC0D8: ; 0x021EC0D8 + str r1, [r0, #0x48] + bx lr + thumb_func_end MOD16_021EC0D8 + + thumb_func_start MOD16_021EC0DC +MOD16_021EC0DC: ; 0x021EC0DC + mov r1, #0 + str r1, [r0, #0x3c] + str r1, [r0, #0x40] + str r1, [r0, #0x44] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC0DC + + thumb_func_start MOD16_021EC0E8 +MOD16_021EC0E8: ; 0x021EC0E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _021EC108 + ldr r0, [r4, #0x3c] + bl MOD16_021EC1DC + ldr r1, _021EC10C ; =0x0000FFFF + ldr r2, [r4, #0x40] + mov r0, #1 + bl FUN_02004D4C + ldr r0, [r4, #0x44] + bl MOD16_021EC110 +_021EC108: + pop {r4, pc} + nop +_021EC10C: .word 0x0000FFFF + thumb_func_end MOD16_021EC0E8 + + thumb_func_start MOD16_021EC110 +MOD16_021EC110: ; 0x021EC110 + ldr r3, _021EC11C ; =0x02004829 + add r1, r0, #0 + mov r0, #8 + mov r2, #0 + bx r3 + nop +_021EC11C: .word 0x02004829 + thumb_func_end MOD16_021EC110 + + thumb_func_start MOD16_021EC120 +MOD16_021EC120: ; 0x021EC120 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r2, [r4, #0x48] + ldr r1, [r5, #0x70] + cmp r2, r1 + beq _021EC140 + cmp r2, #1 + bne _021EC138 + bl MOD16_021EC094 + b _021EC13C +_021EC138: + bl MOD16_021EC0A8 +_021EC13C: + ldr r0, [r4, #0x48] + str r0, [r5, #0x70] +_021EC140: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC120 + + thumb_func_start MOD16_021EC144 +MOD16_021EC144: ; 0x021EC144 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r6, r0, #0 + ldr r0, _021EC1B4 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + tst r0, r1 + beq _021EC198 + str r1, [r5, #0x28] + mov r0, #0 + str r0, [r5, #0x18] + ldr r1, [r5, #0x64] + cmp r1, #0 + bne _021EC17E + ldr r1, [r5, #0x2c] + cmp r1, #1 + bne _021EC172 + bl FUN_02005614 +_021EC172: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBFD4 + pop {r4, r5, r6, pc} +_021EC17E: + ldr r0, [r5, #0x2c] + cmp r0, #0 + bne _021EC190 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EBFD4 + pop {r4, r5, r6, pc} +_021EC190: + add r0, r5, #0 + bl MOD16_021EC000 + pop {r4, r5, r6, pc} +_021EC198: + ldr r0, [r5, #0x28] + cmp r0, #1 + bne _021EC1A6 + mov r0, #2 + str r0, [r5, #0x28] + str r0, [r5, #0x18] + pop {r4, r5, r6, pc} +_021EC1A6: + cmp r0, #2 + bne _021EC1B0 + mov r0, #0 + str r0, [r5, #0x28] + str r1, [r5, #0x18] +_021EC1B0: + pop {r4, r5, r6, pc} + nop +_021EC1B4: .word 0x021C48B8 + thumb_func_end MOD16_021EC144 + + thumb_func_start MOD16_021EC1B8 +MOD16_021EC1B8: ; 0x021EC1B8 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [r0] + ldr r0, [r1, #8] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021EC1D6 + mov r3, #0x18 + add r0, r4, #0 + mov r1, #0xb4 + mov r2, #0x83 + str r3, [sp] + bl MOD16_021D8B04 +_021EC1D6: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC1B8 + + thumb_func_start MOD16_021EC1DC +MOD16_021EC1DC: ; 0x021EC1DC + push {r4, lr} + add r4, r0, #0 + ldr r1, _021EC1F8 ; =0x0000FFFF + mov r0, #1 + add r2, r4, #0 + bl FUN_02004D20 + add r4, #0x14 + ldr r1, _021EC1F8 ; =0x0000FFFF + mov r0, #8 + add r2, r4, #0 + bl FUN_02004D20 + pop {r4, pc} + .align 2, 0 +_021EC1F8: .word 0x0000FFFF + thumb_func_end MOD16_021EC1DC + + thumb_func_start MOD16_021EC1FC +MOD16_021EC1FC: ; 0x021EC1FC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021EC274 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EC2C0 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EC2E8 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021EC318 + str r0, [r5, #0x24] + ldr r0, _021EC244 ; =MOD16_021EC31C + str r0, [r5, #8] + ldr r0, _021EC248 ; =MOD16_021EC340 + str r0, [r5, #0xc] + ldr r0, _021EC24C ; =MOD16_021EC350 + str r0, [r5, #0x10] + ldr r0, _021EC250 ; =MOD16_021EC364 + str r0, [r5, #0x14] + ldr r0, _021EC254 ; =MOD16_021EC3E8 + str r0, [r5, #0x18] + ldr r0, _021EC258 ; =MOD16_021EC3EC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EC244: .word MOD16_021EC31C +_021EC248: .word MOD16_021EC340 +_021EC24C: .word MOD16_021EC350 +_021EC250: .word MOD16_021EC364 +_021EC254: .word MOD16_021EC3E8 +_021EC258: .word MOD16_021EC3EC + thumb_func_end MOD16_021EC1FC + + thumb_func_start MOD16_021EC25C +MOD16_021EC25C: ; 0x021EC25C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EC2EC + ldr r0, [r4, #4] + bl MOD16_021EC300 + ldr r0, [r4, #0x20] + bl MOD16_021EC314 + pop {r4, pc} + thumb_func_end MOD16_021EC25C + + thumb_func_start MOD16_021EC274 +MOD16_021EC274: ; 0x021EC274 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021EC286 + bl ErrorHandling +_021EC286: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + add r0, r5, #0 + bl MOD16_021D7AD8 + str r0, [r4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC274 + + thumb_func_start MOD16_021EC2C0 +MOD16_021EC2C0: ; 0x021EC2C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EC2D2 + bl ErrorHandling +_021EC2D2: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC2C0 + + thumb_func_start MOD16_021EC2E8 +MOD16_021EC2E8: ; 0x021EC2E8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EC2E8 + + thumb_func_start MOD16_021EC2EC +MOD16_021EC2EC: ; 0x021EC2EC + push {r4, lr} + add r4, r0, #0 + bne _021EC2F6 + bl ErrorHandling +_021EC2F6: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC2EC + + thumb_func_start MOD16_021EC300 +MOD16_021EC300: ; 0x021EC300 + push {r4, lr} + add r4, r0, #0 + bne _021EC30A + bl ErrorHandling +_021EC30A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC300 + + thumb_func_start MOD16_021EC314 +MOD16_021EC314: ; 0x021EC314 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC314 + + thumb_func_start MOD16_021EC318 +MOD16_021EC318: ; 0x021EC318 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EC318 + + thumb_func_start MOD16_021EC31C +MOD16_021EC31C: ; 0x021EC31C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EC330 + bl ErrorHandling +_021EC330: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + str r4, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC31C + + thumb_func_start MOD16_021EC340 +MOD16_021EC340: ; 0x021EC340 + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021EC34A + mov r0, #1 + bx lr +_021EC34A: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC340 + + thumb_func_start MOD16_021EC350 +MOD16_021EC350: ; 0x021EC350 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC350 + + thumb_func_start MOD16_021EC364 +MOD16_021EC364: ; 0x021EC364 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r3, [r3, #8] + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021EC3E2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EC382: ; jump table + .short _021EC38A - _021EC382 - 2 ; case 0 + .short _021EC3A8 - _021EC382 - 2 ; case 1 + .short _021EC3C8 - _021EC382 - 2 ; case 2 + .short _021EC3DE - _021EC382 - 2 ; case 3 +_021EC38A: + ldr r0, [r4, #4] + mov r1, #0x14 + bl FUN_02016998 + str r0, [r4, #8] + mov r2, #0x14 + mov r1, #0 +_021EC398: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021EC398 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC3E2 +_021EC3A8: + ldr r0, [r4, #4] + add r1, r6, #0 + str r0, [sp] + add r0, r5, #0 + bl MOD16_021EC520 + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EC474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC3E2 +_021EC3C8: + add r0, r5, #0 + add r1, r6, #0 + mov r3, #1 + bl MOD16_021EC4E0 + cmp r0, #0 + beq _021EC3E2 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC3E2 +_021EC3DE: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EC3E2: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EC364 + + thumb_func_start MOD16_021EC3E8 +MOD16_021EC3E8: ; 0x021EC3E8 + mov r0, #0 + bx lr + thumb_func_end MOD16_021EC3E8 + + thumb_func_start MOD16_021EC3EC +MOD16_021EC3EC: ; 0x021EC3EC + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021EC456 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EC406: ; jump table + .short _021EC410 - _021EC406 - 2 ; case 0 + .short _021EC420 - _021EC406 - 2 ; case 1 + .short _021EC434 - _021EC406 - 2 ; case 2 + .short _021EC442 - _021EC406 - 2 ; case 3 + .short _021EC452 - _021EC406 - 2 ; case 4 +_021EC410: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EC474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC420: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021EC4E0 + cmp r0, #0 + beq _021EC456 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC434: + add r1, r3, #0 + bl MOD16_021EC574 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC442: + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EC456 +_021EC452: + mov r0, #1 + pop {r4, pc} +_021EC456: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EC3EC + + thumb_func_start MOD16_021EC45C +MOD16_021EC45C: ; 0x021EC45C + ldr r3, _021EC464 ; =0x02020399 + ldr r0, [r0, #0x10] + mov r1, #1 + bx r3 + .align 2, 0 +_021EC464: .word 0x02020399 + thumb_func_end MOD16_021EC45C + + thumb_func_start MOD16_021EC468 +MOD16_021EC468: ; 0x021EC468 + ldr r3, _021EC470 ; =0x02020399 + ldr r0, [r0, #0x10] + mov r1, #0 + bx r3 + .align 2, 0 +_021EC470: .word 0x02020399 + thumb_func_end MOD16_021EC468 + + thumb_func_start MOD16_021EC474 +MOD16_021EC474: ; 0x021EC474 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EC45C + ldr r0, [r4, #8] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021EC4DC + cmp r6, #0 + beq _021EC4B8 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021EC4B8: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2a + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021EC4DC: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EC474 + + thumb_func_start MOD16_021EC4E0 +MOD16_021EC4E0: ; 0x021EC4E0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r5] + beq _021EC500 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EC50A +_021EC500: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021EC50A: + cmp r0, #0 + beq _021EC51C + cmp r4, #0 + beq _021EC518 + add r0, r6, #0 + bl MOD16_021EC468 +_021EC518: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EC51C: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EC4E0 + + thumb_func_start MOD16_021EC520 +MOD16_021EC520: ; 0x021EC520 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EC5A8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EC7E8 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EC898 + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021EC610 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EC700 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EC7E0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021EC9B0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EC520 + + thumb_func_start MOD16_021EC574 +MOD16_021EC574: ; 0x021EC574 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EC7E4 + add r0, r5, #0 + bl MOD16_021EC7D4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EC6BC + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + add r0, r4, #0 + bl MOD16_021ECA2C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC574 + + thumb_func_start MOD16_021EC5A8 +MOD16_021EC5A8: ; 0x021EC5A8 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x4a + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EC5A8 + + thumb_func_start MOD16_021EC610 +MOD16_021EC610: ; 0x021EC610 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EC6AC ; =0x00001BB5 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5d + bl FUN_020091E0 + str r0, [r5] + bl FUN_02009B04 + ldr r0, [r5] + bl FUN_02009474 + ldr r0, _021EC6B0 ; =0x00001B66 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xe + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #4] + bl FUN_02009D68 + ldr r0, [r5, #4] + bl FUN_02009474 + ldr r0, _021EC6B4 ; =0x00001BB3 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5b + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #8] + ldr r0, _021EC6B8 ; =0x00001BB4 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5c + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EC6AC: .word 0x00001BB5 +_021EC6B0: .word 0x00001B66 +_021EC6B4: .word 0x00001BB3 +_021EC6B8: .word 0x00001BB4 + thumb_func_end MOD16_021EC610 + + thumb_func_start MOD16_021EC6BC +MOD16_021EC6BC: ; 0x021EC6BC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #4] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #4] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #8] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0xc] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EC6BC + + thumb_func_start MOD16_021EC700 +MOD16_021EC700: ; 0x021EC700 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6, #4] + add r7, r3, #0 + ldr r4, [r1] + bl MOD16_021D9DE8 + ldr r3, _021EC7CC ; =0x00001BB4 + str r0, [sp, #0x2c] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x50 + sub r2, #0x4e + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x30] + add r0, sp, #0x50 + str r0, [sp, #0x34] + mov r0, #0x1f + str r0, [sp, #0x44] + mov r0, #1 + str r0, [sp, #0x48] + str r7, [sp, #0x4c] + ldr r1, [r6, #4] + ldr r0, _021EC7D0 ; =0x00001748 + ldr r0, [r1, r0] + ldr r1, [sp, #0x2c] + bl FUN_02087B98 + add r4, r0, #0 + ldr r1, [r6, #4] + ldr r0, _021EC7D0 ; =0x00001748 + ldr r0, [r1, r0] + ldr r1, [sp, #0x2c] + bl FUN_02087BD8 + add r7, r0, #0 + mov r0, #0x2a + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, r4, #0 + add r0, #0x58 + lsl r0, r0, #0xc + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FF84 + str r0, [r5, #0x10] + ldr r0, [r6, #4] + bl MOD16_021D9F4C + cmp r0, #0 + ldr r0, [r5, #0x10] + bne _021EC7B2 + mov r1, #5 + bl FUN_02020130 + b _021EC7B8 +_021EC7B2: + mov r1, #6 + bl FUN_02020130 +_021EC7B8: + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl MOD16_021ECA48 + ldr r0, [r5, #0x10] + add r1, r7, #0 + bl MOD16_021ECA74 + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EC7CC: .word 0x00001BB4 +_021EC7D0: .word 0x00001748 + thumb_func_end MOD16_021EC700 + + thumb_func_start MOD16_021EC7D4 +MOD16_021EC7D4: ; 0x021EC7D4 + ldr r3, _021EC7DC ; =0x0201FFC9 + ldr r0, [r0, #0x10] + bx r3 + nop +_021EC7DC: .word 0x0201FFC9 + thumb_func_end MOD16_021EC7D4 + + thumb_func_start MOD16_021EC7E0 +MOD16_021EC7E0: ; 0x021EC7E0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC7E0 + + thumb_func_start MOD16_021EC7E4 +MOD16_021EC7E4: ; 0x021EC7E4 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EC7E4 + + thumb_func_start MOD16_021EC7E8 +MOD16_021EC7E8: ; 0x021EC7E8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021EC890 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0x2b + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0 + mov r3, #1 + add r1, r4, #0 + add r2, r0, #0 + lsl r3, r3, #8 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC894 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #9 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC894 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x20 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #9 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC894 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x98 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021EC890: .word 0x00000266 +_021EC894: .word 0x00020100 + thumb_func_end MOD16_021EC7E8 + + thumb_func_start MOD16_021EC898 +MOD16_021EC898: ; 0x021EC898 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x20 + add r1, r7, #0 + bl FUN_020219F4 + mov r2, #0x9b + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + add r3, r7, #0 + bl FUN_0200A86C + str r0, [sp, #0x10] + ldr r0, [r6, #4] + bl MOD16_021D9DE8 + add r1, r7, #0 + str r0, [sp, #0x14] + bl FUN_0200AA50 + str r0, [sp, #0x18] + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + ldr r2, [sp, #0x18] + add r0, r0, #4 + mov r3, #0x1a + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x6e + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r2, _021EC9AC ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [r6, #4] + bl MOD16_021D9F40 + add r2, r0, #0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + mov r3, #0x92 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [r6, #4] + bl MOD16_021D9F4C + cmp r0, #0 + bne _021EC966 + add r0, r7, #0 + mov r1, #0x5f + add r2, r4, #0 + bl FUN_0200A8E0 + b _021EC970 +_021EC966: + add r0, r7, #0 + mov r1, #0x60 + add r2, r4, #0 + bl FUN_0200A8E0 +_021EC970: + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe6 + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EC9A8 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021EC9A8: .word 0x00020100 +_021EC9AC: .word 0x00000266 + thumb_func_end MOD16_021EC898 + + thumb_func_start MOD16_021EC9B0 +MOD16_021EC9B0: ; 0x021EC9B0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl MOD16_021D8700 + add r6, r0, #0 + ldr r0, [r4, #4] + bl MOD16_021D9DE8 + add r7, r0, #0 + ldr r1, [r4, #4] + ldr r0, _021ECA28 ; =0x00001748 + ldr r0, [r1, r0] + add r1, r7, #0 + bl FUN_02087BB8 + str r0, [sp, #8] + ldr r1, [r4, #4] + ldr r0, _021ECA28 ; =0x00001748 + ldr r0, [r1, r0] + add r1, r7, #0 + bl FUN_02087BF8 + str r0, [sp, #0xc] + mov r0, #0x58 + str r0, [sp] + ldr r0, [sp, #8] + add r2, r7, #0 + add r0, #0x58 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r4, #4] + mov r3, #2 + bl MOD16_021D7FB4 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_02007558 + mov r1, #0xf + mov r3, #0 + add r0, r6, #0 + add r2, r1, #0 + str r3, [sp] + bl FUN_02007E68 + ldr r1, [sp, #8] + add r0, r6, #0 + bl MOD16_021ECA64 + ldr r1, [sp, #0xc] + add r0, r6, #0 + bl MOD16_021ECA98 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ECA28: .word 0x00001748 + thumb_func_end MOD16_021EC9B0 + + thumb_func_start MOD16_021ECA2C +MOD16_021ECA2C: ; 0x021ECA2C + push {r4, lr} + ldr r0, [r0] + bl MOD16_021D8700 + add r4, r0, #0 + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + add r0, r4, #0 + bl FUN_02007EEC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECA2C + + thumb_func_start MOD16_021ECA48 +MOD16_021ECA48: ; 0x021ECA48 + push {lr} + sub sp, #0xc + add r1, #0x58 + mov r2, #0x2a + lsl r1, r1, #0xc + lsl r2, r2, #0xe + str r1, [sp, #4] + add r1, sp, #0 + str r2, [sp] + bl FUN_02020044 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD16_021ECA48 + + thumb_func_start MOD16_021ECA64 +MOD16_021ECA64: ; 0x021ECA64 + ldr r3, _021ECA70 ; =0x02007559 + add r2, r1, #0 + mov r1, #1 + add r2, #0x58 + bx r3 + nop +_021ECA70: .word 0x02007559 + thumb_func_end MOD16_021ECA64 + + thumb_func_start MOD16_021ECA74 +MOD16_021ECA74: ; 0x021ECA74 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #0x14 + lsl r1, r1, #0xc + bl FX_Div + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + mov r2, #2 + bl FUN_02020074 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECA74 + + thumb_func_start MOD16_021ECA98 +MOD16_021ECA98: ; 0x021ECA98 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #0x14 + lsl r1, r1, #0xc + bl FX_Div + asr r2, r0, #0x1f + lsl r3, r2, #0x14 + lsr r1, r0, #0xc + lsl r2, r0, #0x14 + mov r0, #2 + orr r3, r1 + mov r1, #0 + lsl r0, r0, #0xa + add r2, r2, r0 + adc r3, r1 + lsl r0, r3, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + lsl r0, r1, #4 + asr r5, r0, #0x10 + add r0, r4, #0 + mov r1, #0xc + add r2, r5, #0 + bl FUN_02007558 + add r0, r4, #0 + mov r1, #0xd + add r2, r5, #0 + bl FUN_02007558 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ECA98 + + thumb_func_start MOD16_021ECADC +MOD16_021ECADC: ; 0x021ECADC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021ECB54 + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021ECB98 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021ECBC0 + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021ECC50 + str r0, [r5, #0x24] + ldr r0, _021ECB24 ; =MOD16_021ECC54 + str r0, [r5, #8] + ldr r0, _021ECB28 ; =MOD16_021ECCA0 + str r0, [r5, #0xc] + ldr r0, _021ECB2C ; =MOD16_021ECCF4 + str r0, [r5, #0x10] + ldr r0, _021ECB30 ; =MOD16_021ECD08 + str r0, [r5, #0x14] + ldr r0, _021ECB34 ; =MOD16_021ECD90 + str r0, [r5, #0x18] + ldr r0, _021ECB38 ; =MOD16_021ECDC0 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021ECB24: .word MOD16_021ECC54 +_021ECB28: .word MOD16_021ECCA0 +_021ECB2C: .word MOD16_021ECCF4 +_021ECB30: .word MOD16_021ECD08 +_021ECB34: .word MOD16_021ECD90 +_021ECB38: .word MOD16_021ECDC0 + thumb_func_end MOD16_021ECADC + + thumb_func_start MOD16_021ECB3C +MOD16_021ECB3C: ; 0x021ECB3C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021ECC08 + ldr r0, [r4, #4] + bl MOD16_021ECC1C + ldr r0, [r4, #0x20] + bl MOD16_021ECC30 + pop {r4, pc} + thumb_func_end MOD16_021ECB3C + + thumb_func_start MOD16_021ECB54 +MOD16_021ECB54: ; 0x021ECB54 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021ECB66 + bl ErrorHandling +_021ECB66: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021ECB6C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021ECB6C + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #4] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ECB54 + + thumb_func_start MOD16_021ECB98 +MOD16_021ECB98: ; 0x021ECB98 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021ECBAA + bl ErrorHandling +_021ECBAA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021ECB98 + + thumb_func_start MOD16_021ECBC0 +MOD16_021ECBC0: ; 0x021ECBC0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD16_021ECC50 + add r7, r0, #0 + mov r1, #0x14 + mul r7, r1 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021ECBE0 + bl ErrorHandling +_021ECBE0: + add r0, r4, #0 + mov r1, #0 + add r2, r7, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #1 + bl MOD16_021DB000 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x14 + add r2, r6, #0 + mov r3, #2 + bl MOD16_021DB058 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ECBC0 + + thumb_func_start MOD16_021ECC08 +MOD16_021ECC08: ; 0x021ECC08 + push {r4, lr} + add r4, r0, #0 + bne _021ECC12 + bl ErrorHandling +_021ECC12: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECC08 + + thumb_func_start MOD16_021ECC1C +MOD16_021ECC1C: ; 0x021ECC1C + push {r4, lr} + add r4, r0, #0 + bne _021ECC26 + bl ErrorHandling +_021ECC26: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECC1C + + thumb_func_start MOD16_021ECC30 +MOD16_021ECC30: ; 0x021ECC30 + push {r4, lr} + add r4, r0, #0 + bne _021ECC3A + bl ErrorHandling +_021ECC3A: + add r0, r4, #0 + bl MOD16_021DAC7C + add r0, r4, #0 + add r0, #0x14 + bl MOD16_021DAC7C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD16_021ECC30 + + thumb_func_start MOD16_021ECC50 +MOD16_021ECC50: ; 0x021ECC50 + mov r0, #2 + bx lr + thumb_func_end MOD16_021ECC50 + + thumb_func_start MOD16_021ECC54 +MOD16_021ECC54: ; 0x021ECC54 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x18 + mov r0, #0 +_021ECC6A: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021ECC6A + mov r1, #0 + add r2, r6, #0 + mov r0, #4 +_021ECC78: + add r1, r1, #1 + str r0, [r2, #0x10] + add r2, r2, #4 + cmp r1, #2 + blt _021ECC78 + mov r0, #0 + str r0, [r4, #4] + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021ECF40 + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021ECFA4 + str r6, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021ECC54 + + thumb_func_start MOD16_021ECCA0 +MOD16_021ECCA0: ; 0x021ECCA0 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021ECCB0 + mov r0, #1 + pop {r3, r4, r5, pc} +_021ECCB0: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021ECCBA + mov r0, #0 + pop {r3, r4, r5, pc} +_021ECCBA: + ldr r0, [r5, #0xc] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021ECCEE + add r0, r4, #0 + bl MOD16_021ECF94 + ldr r0, [r5, #0xc] + bl MOD16_021E95C8 + cmp r0, #0 + beq _021ECCE6 + ldr r0, [r5, #8] + bl MOD16_021D9FB8 + cmp r0, #0 + beq _021ECCE6 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021ED4C8 +_021ECCE6: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021ECFA4 +_021ECCEE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ECCA0 + + thumb_func_start MOD16_021ECCF4 +MOD16_021ECCF4: ; 0x021ECCF4 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021ECFD4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021ECCF4 + + thumb_func_start MOD16_021ECD08 +MOD16_021ECD08: ; 0x021ECD08 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021ECD8C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ECD24: ; jump table + .short _021ECD2C - _021ECD24 - 2 ; case 0 + .short _021ECD46 - _021ECD24 - 2 ; case 1 + .short _021ECD64 - _021ECD24 - 2 ; case 2 + .short _021ECD7A - _021ECD24 - 2 ; case 3 +_021ECD2C: + ldr r0, [r4, #4] + mov r1, #0x40 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x40 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECD8C +_021ECD46: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021ED044 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021ECE98 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECD8C +_021ECD64: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021ECF04 + cmp r0, #0 + beq _021ECD8C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECD8C +_021ECD7A: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021ECD8C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ECD08 + + thumb_func_start MOD16_021ECD90 +MOD16_021ECD90: ; 0x021ECD90 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r3, #8] + add r4, r2, #0 + str r0, [sp] + add r5, r1, #0 + ldr r0, [r4, #0xc] + ldr r7, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021ECDBC + ldr r2, [sp] + ldr r3, [r5, #4] + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021ED46C + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021ED50C +_021ECDBC: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ECD90 + + thumb_func_start MOD16_021ECDC0 +MOD16_021ECDC0: ; 0x021ECDC0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #4 + bhi _021ECE42 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ECDDC: ; jump table + .short _021ECDE6 - _021ECDDC - 2 ; case 0 + .short _021ECE08 - _021ECDDC - 2 ; case 1 + .short _021ECE1E - _021ECDDC - 2 ; case 2 + .short _021ECE30 - _021ECDDC - 2 ; case 3 + .short _021ECE3E - _021ECDDC - 2 ; case 4 +_021ECDE6: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021ECE98 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE08: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021ECF04 + cmp r0, #0 + beq _021ECE42 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE1E: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021ED074 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE30: + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ECE42 +_021ECE3E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021ECE42: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ECDC0 + + thumb_func_start MOD16_021ECE48 +MOD16_021ECE48: ; 0x021ECE48 + push {r3, r4, r5, r6, r7, lr} + mov r6, #1 + add r5, r0, #0 + mov r4, #0 + add r7, r6, #0 +_021ECE52: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #8] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ECE52 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ECE48 + + thumb_func_start MOD16_021ECE70 +MOD16_021ECE70: ; 0x021ECE70 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 + add r7, r4, #0 +_021ECE7A: + ldr r0, [r5] + add r1, r6, #0 + bl FUN_02020398 + ldr r0, [r5, #8] + add r1, r7, #0 + ldr r0, [r0] + bl FUN_02011AF0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ECE7A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ECE70 + + thumb_func_start MOD16_021ECE98 +MOD16_021ECE98: ; 0x021ECE98 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021ECE48 + ldr r0, [r4, #0xc] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021ECF00 + cmp r6, #0 + beq _021ECEDC + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021ECEDC: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021ECF00: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021ECE98 + + thumb_func_start MOD16_021ECF04 +MOD16_021ECF04: ; 0x021ECF04 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #0xc] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021ECF24 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021ECF2A +_021ECF24: + mov r0, #2 + bl FUN_0200A344 +_021ECF2A: + cmp r0, #0 + beq _021ECF3C + cmp r4, #0 + beq _021ECF38 + add r0, r6, #0 + bl MOD16_021ECE70 +_021ECF38: + mov r0, #1 + pop {r4, r5, r6, pc} +_021ECF3C: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ECF04 + + thumb_func_start MOD16_021ECF40 +MOD16_021ECF40: ; 0x021ECF40 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #8 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0x80 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x40 + mov r2, #0xb0 + mov r3, #8 + bl MOD16_021D7C98 + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x40 + add r0, r0, #4 + mov r2, #0xb0 + mov r3, #0x80 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021ECF90 ; =MOD16_021ECFEC + mov r1, #2 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021ECF90: .word MOD16_021ECFEC + thumb_func_end MOD16_021ECF40 + + thumb_func_start MOD16_021ECF94 +MOD16_021ECF94: ; 0x021ECF94 + mov r2, #0 + mov r1, #3 +_021ECF98: + add r2, r2, #1 + str r1, [r0, #0x10] + add r0, r0, #4 + cmp r2, #2 + blt _021ECF98 + bx lr + thumb_func_end MOD16_021ECF94 + + thumb_func_start MOD16_021ECFA4 +MOD16_021ECFA4: ; 0x021ECFA4 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + bl FUN_02022144 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021ECFBC + cmp r0, #1 + beq _021ECFC8 + pop {r3, r4, r5, pc} +_021ECFBC: + ldr r0, [r4, #0x10] + cmp r0, #2 + beq _021ECFD2 + mov r0, #1 + str r0, [r4, #0x10] + pop {r3, r4, r5, pc} +_021ECFC8: + ldr r0, [r4, #0x14] + cmp r0, #2 + beq _021ECFD2 + mov r0, #1 + str r0, [r4, #0x14] +_021ECFD2: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021ECFA4 + + thumb_func_start MOD16_021ECFD4 +MOD16_021ECFD4: ; 0x021ECFD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ECFD4 + + thumb_func_start MOD16_021ECFEC +MOD16_021ECFEC: ; 0x021ECFEC + push {r4, lr} + ldr r3, [r2, #4] + ldr r4, [r2] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x10] + cmp r1, #2 + bne _021ED03C + cmp r0, #0 + beq _021ED006 + cmp r0, #1 + beq _021ED022 + pop {r4, pc} +_021ED006: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021ED03C + ldr r0, _021ED040 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0 + str r0, [r4, #4] + ldr r2, [r4] + mov r0, #1 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] + pop {r4, pc} +_021ED022: + ldr r0, [r4, #4] + cmp r0, #1 + beq _021ED03C + ldr r0, _021ED040 ; =0x000005DD + bl FUN_020054C8 + mov r0, #1 + str r0, [r4, #4] + ldr r2, [r4] + mov r0, #2 + ldr r1, [r2] + orr r0, r1 + str r0, [r2] +_021ED03C: + pop {r4, pc} + nop +_021ED040: .word 0x000005DD + thumb_func_end MOD16_021ECFEC + + thumb_func_start MOD16_021ED044 +MOD16_021ED044: ; 0x021ED044 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021ED0D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021ED138 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021ED1EC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021ED2B4 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ED044 + + thumb_func_start MOD16_021ED074 +MOD16_021ED074: ; 0x021ED074 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + add r6, r2, #0 + str r0, [sp] + add r4, r1, #0 + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0x80 + bl MOD16_021D8CFC + mov r0, #0x20 + str r0, [sp] + str r6, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0xa0 + bl MOD16_021D8CFC + add r0, r5, #0 + bl MOD16_021ED29C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021ED398 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021ED1B8 + mov r4, #0 +_021ED0BA: + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _021ED0C4 + bl FUN_02016A18 +_021ED0C4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ED0BA + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ED074 + + thumb_func_start MOD16_021ED0D0 +MOD16_021ED0D0: ; 0x021ED0D0 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x3d + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED0D0 + + thumb_func_start MOD16_021ED138 +MOD16_021ED138: ; 0x021ED138 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021ED1AC ; =0x0000238E + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x66 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #0x10] + bl FUN_02009B04 + ldr r0, [r5, #0x10] + bl FUN_02009474 + ldr r0, _021ED1B0 ; =0x0000238C + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x64 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x18] + ldr r0, _021ED1B4 ; =0x0000238D + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x65 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x1c] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021ED1AC: .word 0x0000238E +_021ED1B0: .word 0x0000238C +_021ED1B4: .word 0x0000238D + thumb_func_end MOD16_021ED138 + + thumb_func_start MOD16_021ED1B8 +MOD16_021ED1B8: ; 0x021ED1B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED1B8 + + thumb_func_start MOD16_021ED1EC +MOD16_021ED1EC: ; 0x021ED1EC + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021ED294 ; =0x0000238D + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021ED298 ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x1e + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + mov r0, #0x11 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5] + bl FUN_02020130 + mov r0, #0x2f + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r1, #0x1e + mov r0, #3 + lsl r1, r1, #0xe + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5, #4] + bl FUN_02020130 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021ED294: .word 0x0000238D +_021ED298: .word 0x0000083F + thumb_func_end MOD16_021ED1EC + + thumb_func_start MOD16_021ED29C +MOD16_021ED29C: ; 0x021ED29C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021ED2A2: + ldr r0, [r5] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ED2A2 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED29C + + thumb_func_start MOD16_021ED2B4 +MOD16_021ED2B4: ; 0x021ED2B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021ED2C8 + bl ErrorHandling +_021ED2C8: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021ED390 ; =0x0000083F + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r1, #7 + mvn r1, r1 + str r1, [sp, #0x1c] + mov r1, #2 + mov r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xc + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021ED394 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x2d + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #8] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0xc + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021ED394 ; =0x00000266 + add r1, r6, #0 + mov r3, #0x2e + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5, #4] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #0xc] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021ED390: .word 0x0000083F +_021ED394: .word 0x00000266 + thumb_func_end MOD16_021ED2B4 + + thumb_func_start MOD16_021ED398 +MOD16_021ED398: ; 0x021ED398 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021ED39E: + ldr r0, [r5, #8] + bl MOD16_021DB338 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021ED39E + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED398 + + thumb_func_start MOD16_021ED3B0 +MOD16_021ED3B0: ; 0x021ED3B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + str r2, [sp, #0xc] + ldr r4, [sp, #0x30] + ldr r6, [sp, #0x40] + mov r5, #0 + bl MOD16_021D7B98 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #8] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + bl MOD16_021ED45C + ldr r0, [sp, #8] + bl FUN_0202022C + cmp r0, #3 + bhi _021ED422 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ED3EE: ; jump table + .short _021ED3F6 - _021ED3EE - 2 ; case 0 + .short _021ED3F6 - _021ED3EE - 2 ; case 1 + .short _021ED406 - _021ED3EE - 2 ; case 2 + .short _021ED414 - _021ED3EE - 2 ; case 3 +_021ED3F6: + ldr r0, [r4] + cmp r0, #0 + beq _021ED422 + mov r0, #0 + mov r5, #1 + mov r7, #9 + str r0, [r4] + b _021ED422 +_021ED406: + ldr r0, [r4] + cmp r0, #1 + beq _021ED422 + mov r5, #1 + mov r7, #0xa + str r5, [r4] + b _021ED422 +_021ED414: + ldr r0, [r4] + cmp r0, #2 + beq _021ED422 + mov r0, #2 + mov r5, #1 + mov r7, #8 + str r0, [r4] +_021ED422: + cmp r5, #0 + beq _021ED458 + ldr r0, [r6] + cmp r0, #0 + beq _021ED430 + bl FUN_02016A18 +_021ED430: + ldr r0, [sp, #4] + ldr r3, [sp, #0x34] + ldr r0, [r0] + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD16_021D8D70 + str r0, [r6] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x2c] + ldr r2, [r2, #0xc] + mov r0, #0x1f + lsl r1, r1, #5 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021ED458 + bl ErrorHandling +_021ED458: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ED3B0 + + thumb_func_start MOD16_021ED45C +MOD16_021ED45C: ; 0x021ED45C + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + bl MOD16_021D7C70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021ED45C + + thumb_func_start MOD16_021ED46C +MOD16_021ED46C: ; 0x021ED46C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r6, r5, #0 + add r4, r5, #0 + str r1, [sp, #0x1c] + str r2, [sp, #0x20] + str r3, [sp, #0x24] + mov r7, #0 + add r6, #0x38 + add r4, #0x30 +_021ED482: + cmp r7, #0 + bne _021ED48A + mov r1, #4 + b _021ED48C +_021ED48A: + mov r1, #5 +_021ED48C: + mov r0, #7 + mvn r0, r0 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [sp, #0x24] + str r4, [sp, #8] + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + str r6, [sp, #0x18] + ldr r3, [sp, #0x20] + ldr r0, [sp, #0x1c] + ldr r1, [r5] + ldr r2, [r5, #8] + ldr r3, [r3, #0x10] + bl MOD16_021ED3B0 + ldr r0, [sp, #0x20] + add r7, r7, #1 + add r0, r0, #4 + add r6, r6, #4 + add r4, r4, #4 + add r5, r5, #4 + str r0, [sp, #0x20] + cmp r7, #2 + blt _021ED482 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ED46C + + thumb_func_start MOD16_021ED4C8 +MOD16_021ED4C8: ; 0x021ED4C8 + push {r3, lr} + ldr r2, _021ED504 ; =0x021C48B8 + ldr r3, [r2, #0x48] + mov r2, #1 + tst r3, r2 + beq _021ED500 + ldr r3, [r1, #4] + cmp r3, #1 + bne _021ED4EC + mov r3, #0 + str r3, [r1, #4] + ldr r3, [r1] + ldr r1, [r3] + orr r1, r2 + str r1, [r3] + mov r1, #2 + str r1, [r0, #0x10] + b _021ED4FA +_021ED4EC: + str r2, [r1, #4] + ldr r3, [r1] + mov r1, #2 + ldr r2, [r3] + orr r2, r1 + str r2, [r3] + str r1, [r0, #0x14] +_021ED4FA: + ldr r0, _021ED508 ; =0x000005DD + bl FUN_020054C8 +_021ED500: + pop {r3, pc} + nop +_021ED504: .word 0x021C48B8 +_021ED508: .word 0x000005DD + thumb_func_end MOD16_021ED4C8 + + thumb_func_start MOD16_021ED50C +MOD16_021ED50C: ; 0x021ED50C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021ED544 + ldr r0, [r5, #4] + cmp r0, #0 + bne _021ED534 + mov r0, #0x60 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xbc + mov r2, #0x78 + mov r3, #0x68 + bl MOD16_021ED548 + pop {r3, r4, r5, pc} +_021ED534: + mov r0, #0x60 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x44 + mov r2, #0x78 + mov r3, #0x68 + bl MOD16_021ED548 +_021ED544: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED50C + + thumb_func_start MOD16_021ED548 +MOD16_021ED548: ; 0x021ED548 + push {r3, r4, lr} + sub sp, #4 + thumb_func_end MOD16_021ED548 + + thumb_func_start MOD16_021ED54C +MOD16_021ED54C: ; 0x021ED54C + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r0, [r0] + bl MOD16_021D8B04 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED54C + + thumb_func_start MOD16_021ED55C +MOD16_021ED55C: ; 0x021ED55C + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + bl MOD16_021ED5C8 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MOD16_021ED604 + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #0x20] + bl MOD16_021ED67C + str r0, [r5, #0x24] + ldr r0, _021ED59C ; =MOD16_021ED680 + str r0, [r5, #8] + ldr r0, _021ED5A0 ; =MOD16_021ED6EC + str r0, [r5, #0xc] + ldr r0, _021ED5A4 ; =MOD16_021ED6FC + str r0, [r5, #0x10] + ldr r0, _021ED5A8 ; =MOD16_021ED710 + str r0, [r5, #0x14] + ldr r0, _021ED5AC ; =MOD16_021ED7B4 + str r0, [r5, #0x18] + ldr r0, _021ED5B0 ; =MOD16_021ED874 + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021ED59C: .word MOD16_021ED680 +_021ED5A0: .word MOD16_021ED6EC +_021ED5A4: .word MOD16_021ED6FC +_021ED5A8: .word MOD16_021ED710 +_021ED5AC: .word MOD16_021ED7B4 +_021ED5B0: .word MOD16_021ED874 + thumb_func_end MOD16_021ED55C + + thumb_func_start MOD16_021ED5B4 +MOD16_021ED5B4: ; 0x021ED5B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021ED648 + ldr r0, [r4, #4] + bl MOD16_021ED65C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED5B4 + + thumb_func_start MOD16_021ED5C8 +MOD16_021ED5C8: ; 0x021ED5C8 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + bne _021ED5DA + bl ErrorHandling +_021ED5DA: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4] + add r0, r5, #0 + mov r1, #5 + bl MOD16_021D7B5C + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021ED5C8 + + thumb_func_start MOD16_021ED604 +MOD16_021ED604: ; 0x021ED604 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x20 + add r5, r0, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021ED618 + bl ErrorHandling +_021ED618: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + add r0, r6, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EE090 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EE110 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02013EB0 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021ED604 + + thumb_func_start MOD16_021ED648 +MOD16_021ED648: ; 0x021ED648 + push {r4, lr} + add r4, r0, #0 + bne _021ED652 + bl ErrorHandling +_021ED652: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED648 + + thumb_func_start MOD16_021ED65C +MOD16_021ED65C: ; 0x021ED65C + push {r4, lr} + add r4, r0, #0 + bne _021ED666 + bl ErrorHandling +_021ED666: + add r0, r4, #0 + bl MOD16_021EE0F0 + add r0, r4, #0 + bl MOD16_021EE14C + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED65C + + thumb_func_start MOD16_021ED67C +MOD16_021ED67C: ; 0x021ED67C + mov r0, #0 + bx lr + thumb_func_end MOD16_021ED67C + + thumb_func_start MOD16_021ED680 +MOD16_021ED680: ; 0x021ED680 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #4] + add r5, r1, #0 + mov r1, #8 + bl FUN_02016998 + add r4, r0, #0 + bne _021ED696 + bl ErrorHandling +_021ED696: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + str r4, [r6, #8] + ldr r0, [r5] + bl MOD16_021D9DE8 + add r1, r0, #0 + ldr r2, [r5] + ldr r0, _021ED6E8 ; =0x00001748 + ldr r0, [r2, r0] + bl FUN_02087B78 + add r6, r0, #0 + ldr r0, [r5] + bl MOD16_021D9F4C + cmp r0, #0 + bne _021ED6CC + mov r0, #0x5f + b _021ED6CE +_021ED6CC: + mov r0, #0x55 +_021ED6CE: + lsl r0, r0, #2 + cmp r6, r0 + blt _021ED6DC + sub r0, r6, r0 + str r0, [r4] + mov r0, #1 + b _021ED6E2 +_021ED6DC: + sub r0, r0, r6 + str r0, [r4] + mov r0, #0 +_021ED6E2: + str r0, [r4, #4] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_021ED6E8: .word 0x00001748 + thumb_func_end MOD16_021ED680 + + thumb_func_start MOD16_021ED6EC +MOD16_021ED6EC: ; 0x021ED6EC + ldr r0, [r0, #0xc] + cmp r0, #1 + bne _021ED6F6 + mov r0, #1 + bx lr +_021ED6F6: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021ED6EC + + thumb_func_start MOD16_021ED6FC +MOD16_021ED6FC: ; 0x021ED6FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED6FC + + thumb_func_start MOD16_021ED710 +MOD16_021ED710: ; 0x021ED710 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4] + str r2, [sp, #4] + ldr r6, [r3, #8] + ldr r5, [r4, #8] + cmp r0, #3 + bhi _021ED7A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021ED730: ; jump table + .short _021ED738 - _021ED730 - 2 ; case 0 + .short _021ED75A - _021ED730 - 2 ; case 1 + .short _021ED77C - _021ED730 - 2 ; case 2 + .short _021ED792 - _021ED730 - 2 ; case 3 +_021ED738: + ldr r0, [r4, #4] + mov r1, #0xc4 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0xc4 + bl Call_FillMemWithValue + ldr r0, [r4, #8] + mov r1, #1 + add r0, #0xb8 + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED7A8 +_021ED75A: + ldr r0, [r4, #4] + add r1, r7, #0 + str r0, [sp] + add r0, r5, #0 + add r3, r6, #0 + bl MOD16_021ED9E0 + ldr r2, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD16_021ED8FC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED7A8 +_021ED77C: + add r0, r5, #0 + add r1, r7, #0 + mov r3, #1 + bl MOD16_021ED984 + cmp r0, #0 + beq _021ED7A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED7A8 +_021ED792: + ldr r0, _021ED7B0 ; =0x021FF60C + ldr r2, [r6] + mov r1, #0x11 + bl MOD16_021EE5A8 + str r0, [r5, #0x34] + ldr r0, [r6, #4] + add sp, #8 + str r0, [r5, #0x38] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021ED7A8: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ED7B0: .word 0x021FF60C + thumb_func_end MOD16_021ED710 + + thumb_func_start MOD16_021ED7B4 +MOD16_021ED7B4: ; 0x021ED7B4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r1, #7 + bhi _021ED86C + add r3, r1, r1 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021ED7D0: ; jump table + .short _021ED7E0 - _021ED7D0 - 2 ; case 0 + .short _021ED7FA - _021ED7D0 - 2 ; case 1 + .short _021ED80A - _021ED7D0 - 2 ; case 2 + .short _021ED818 - _021ED7D0 - 2 ; case 3 + .short _021ED830 - _021ED7D0 - 2 ; case 4 + .short _021ED83E - _021ED7D0 - 2 ; case 5 + .short _021ED860 - _021ED7D0 - 2 ; case 6 + .short _021ED86C - _021ED7D0 - 2 ; case 7 +_021ED7E0: + add r1, r0, #0 + mov r2, #1 + add r1, #0xb8 + str r2, [r1] + ldr r0, [r0, #0x34] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021ED7F4 + str r2, [r4] + b _021ED86C +_021ED7F4: + mov r0, #3 + str r0, [r4] + b _021ED86C +_021ED7FA: + add r1, r2, #0 + ldr r2, [r0, #0x38] + bl MOD16_021EE158 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED86C +_021ED80A: + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #1 + bne _021ED86C + add r0, r1, #1 + str r0, [r4] + b _021ED86C +_021ED818: + ldr r3, [r0, #0x34] + ldr r1, [r0, #0x38] + str r1, [sp] + add r1, r2, #0 + ldrh r2, [r3, #8] + ldrh r3, [r3, #0xa] + bl MOD16_021EE358 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED86C +_021ED830: + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #1 + bne _021ED86C + add r0, r1, #1 + str r0, [r4] + b _021ED86C +_021ED83E: + ldr r2, [r0, #0x34] + ldr r1, [r2, #0xc] + cmp r1, #0 + beq _021ED85A + ldr r1, [r2, #0x10] + ldr r2, [r0, #0x38] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + bl MOD16_021EE428 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED86C +_021ED85A: + mov r0, #7 + str r0, [r4] + b _021ED86C +_021ED860: + add r0, #0xb8 + ldr r0, [r0] + cmp r0, #1 + bne _021ED86C + add r0, r1, #1 + str r0, [r4] +_021ED86C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021ED7B4 + + thumb_func_start MOD16_021ED874 +MOD16_021ED874: ; 0x021ED874 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + add r3, r0, #0 + ldr r0, [r4, #8] + cmp r1, #4 + bhi _021ED8F0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021ED88E: ; jump table + .short _021ED898 - _021ED88E - 2 ; case 0 + .short _021ED8A8 - _021ED88E - 2 ; case 1 + .short _021ED8BC - _021ED88E - 2 ; case 2 + .short _021ED8CA - _021ED88E - 2 ; case 3 + .short _021ED8EC - _021ED88E - 2 ; case 4 +_021ED898: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021ED8FC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8A8: + add r1, r3, #0 + mov r3, #0 + bl MOD16_021ED984 + cmp r0, #0 + beq _021ED8F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8BC: + add r1, r3, #0 + bl MOD16_021EDA3C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8CA: + add r1, r0, #0 + add r1, #0xb8 + ldr r1, [r1] + cmp r1, #0 + bne _021ED8DA + ldr r0, [r0, #0x3c] + bl FUN_0200CAB4 +_021ED8DA: + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021ED8F0 +_021ED8EC: + mov r0, #1 + pop {r4, pc} +_021ED8F0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD16_021ED874 + + thumb_func_start MOD16_021ED8F4 +MOD16_021ED8F4: ; 0x021ED8F4 + bx lr + .align 2, 0 + thumb_func_end MOD16_021ED8F4 + + thumb_func_start MOD16_021ED8F8 +MOD16_021ED8F8: ; 0x021ED8F8 + bx lr + .align 2, 0 + thumb_func_end MOD16_021ED8F8 + + thumb_func_start MOD16_021ED8FC +MOD16_021ED8FC: ; 0x021ED8FC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r2, #0 + add r7, r0, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021ED8F4 + ldr r0, [r4, #4] + bl MOD16_021E8C68 + cmp r0, #0 + beq _021ED97E + cmp r6, #0 + beq _021ED95C + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A48 + add r1, r0, #0 + neg r1, r1 + lsl r1, r1, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl MOD16_021EE5D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021ED95C: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2b + str r0, [sp, #8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0x5b + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021ED97E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021ED8FC + + thumb_func_start MOD16_021ED984 +MOD16_021ED984: ; 0x021ED984 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r2, #4] + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021E8C68 + cmp r0, #0 + ldr r1, [r4] + beq _021ED9A4 + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021ED9AE +_021ED9A4: + mov r0, #0x5b + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A7C +_021ED9AE: + cmp r0, #0 + beq _021ED9C0 + cmp r6, #0 + beq _021ED9BC + add r0, r5, #0 + bl MOD16_021ED8F8 +_021ED9BC: + mov r0, #1 + pop {r4, r5, r6, pc} +_021ED9C0: + mov r0, #0x5b + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD16_021D8A48 + add r1, r0, #0 + neg r1, r1 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl MOD16_021EE5D0 + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021ED984 + + thumb_func_start MOD16_021ED9E0 +MOD16_021ED9E0: ; 0x021ED9E0 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EDA7C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EDEC8 + add r0, r5, #0 + add r1, r7, #0 + add r2, r4, #0 + bl MOD16_021EDF78 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EDAE4 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EDD04 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + add r3, r4, #0 + bl MOD16_021EDEC0 + ldr r0, [r5, #0xc] + mov r1, #0 + bl FUN_02013F2C + ldr r0, [r5, #0xc] + mov r1, #1 + bl FUN_02013EB0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021ED9E0 + + thumb_func_start MOD16_021EDA3C +MOD16_021EDA3C: ; 0x021EDA3C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD16_021EDEC4 + add r0, r5, #0 + bl MOD16_021EDE9C + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EDC70 + ldr r0, [r4] + mov r1, #0 + add r0, r0, #4 + bl FUN_02019620 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02018744 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02013EB0 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02013F2C + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EDA3C + + thumb_func_start MOD16_021EDA7C +MOD16_021EDA7C: ; 0x021EDA7C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + add r5, r2, #0 + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x21 + mov r3, #3 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x49 + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #3 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EDA7C + + thumb_func_start MOD16_021EDAE4 +MOD16_021EDAE4: ; 0x021EDAE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r0, r2, #0 + add r7, r1, #0 + ldr r0, [r0] + str r2, [sp, #0x10] + add r4, r3, #0 + ldr r6, [r7] + bl MOD16_021D9DE8 + str r0, [sp, #0x1c] + ldr r0, [r7] + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x1c] + ldr r0, [r0] + bl MOD16_021D9964 + add r2, r0, #0 + ldr r0, [sp, #0x1c] + mov r1, #0 + bl FUN_0206B6D4 + str r0, [sp, #0x20] + bl FUN_0206B888 + str r0, [sp, #0x24] + bl FUN_0206B88C + str r0, [sp, #0x18] + bl FUN_0206B898 + str r0, [sp, #0x14] + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + ldr r2, [sp, #0x20] + mov r1, #0x13 + mov r3, #0 + bl FUN_02008F34 + str r0, [r5, #0x14] + bl FUN_02009B78 + ldr r0, [r5, #0x14] + bl FUN_02009474 + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [sp, #0x24] + mov r1, #0x13 + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #0x18] + bl FUN_02009D68 + cmp r0, #0 + bne _021EDB82 + bl ErrorHandling +_021EDB82: + add r0, r4, #0 + mov r1, #0x60 + bl FUN_02016998 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [sp, #0x18] + mov r1, #0x13 + mov r3, #0 + bl FUN_020090AC + str r0, [r5, #0x1c] + mov r0, #0x7d + lsl r0, r0, #6 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r2, [sp, #0x14] + mov r1, #0x13 + mov r3, #0 + bl FUN_020090AC + str r0, [r5, #0x20] + ldr r0, _021EDC60 ; =0x00001BB5 + mov r3, #1 + str r0, [sp] + str r3, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + add r1, r7, #0 + mov r2, #0x5d + bl FUN_020091E0 + str r0, [r5, #0x24] + bl FUN_02009B04 + ldr r0, [r5, #0x24] + bl FUN_02009474 + ldr r0, _021EDC64 ; =0x00001B66 + add r1, r7, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0x51 + str r4, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0xe + mov r3, #0 + bl FUN_02009298 + str r0, [r5, #0x28] + bl FUN_02009D68 + add r0, r4, #0 + mov r1, #0xa0 + bl FUN_02016998 + add r1, r5, #0 + add r1, #0xc0 + str r0, [r1] + ldr r0, _021EDC68 ; =0x00001BB3 + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5b + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x2c] + ldr r0, _021EDC6C ; =0x00001BB4 + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x5c + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x30] + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EDC60: .word 0x00001BB5 +_021EDC64: .word 0x00001B66 +_021EDC68: .word 0x00001BB3 +_021EDC6C: .word 0x00001BB4 + thumb_func_end MOD16_021EDAE4 + + thumb_func_start MOD16_021EDC70 +MOD16_021EDC70: ; 0x021EDC70 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + ldr r4, [r1] + bl FUN_02009C0C + ldr r0, [r5, #0x18] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x18] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x1c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x20] + bl FUN_02009490 + ldr r0, [r5, #0x24] + bl FUN_02009C0C + ldr r0, [r5, #0x28] + bl FUN_02009E04 + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #0x24] + bl FUN_02009490 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x28] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x2c] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x30] + bl FUN_02009490 + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02016A18 + add r5, #0xc0 + ldr r0, [r5] + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EDC70 + + thumb_func_start MOD16_021EDD04 +MOD16_021EDD04: ; 0x021EDD04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x80 + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6] + add r7, r3, #0 + ldr r4, [r1] + bl MOD16_021D9DE8 + str r0, [sp, #0x2c] + ldr r0, [r6] + ldr r1, [sp, #0x2c] + bl MOD16_021D9964 + ldr r3, _021EDE98 ; =0x00001BB4 + str r0, [sp, #0x30] + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r4, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r4, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r4, r1] + add r0, #0xc + str r1, [sp, #0x1c] + ldr r0, [r4, r0] + add r1, r3, #1 + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r2, r3, #0 + add r0, sp, #0x5c + sub r2, #0x4e + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + str r0, [sp, #0x3c] + add r0, sp, #0x5c + str r0, [sp, #0x40] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #0x2e + lsl r0, r0, #0xe + str r0, [sp, #0x44] + lsl r0, r1, #0x12 + str r0, [sp, #0x48] + str r1, [sp, #0x54] + str r7, [sp, #0x58] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5] + ldr r0, [r6] + bl MOD16_021D9F4C + cmp r0, #0 + ldr r0, [r5] + bne _021EDDA0 + mov r1, #3 + bl FUN_02020130 + b _021EDDA6 +_021EDDA0: + mov r1, #4 + bl FUN_02020130 +_021EDDA6: + mov r0, #2 + lsl r0, r0, #0x12 + str r0, [sp, #0x44] + mov r0, #0x6a + lsl r0, r0, #0xc + str r0, [sp, #0x48] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5, #8] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r5, #8] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x2e + lsl r0, r0, #0xe + str r0, [sp, #0x44] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x48] + add r0, sp, #0x3c + bl FUN_0201FF84 + mov r1, #0 + str r0, [r5, #0xc] + bl FUN_02020130 + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x44] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x48] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5, #0x10] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r5, #0x14] + bl FUN_02009530 + add r6, r0, #0 + ldr r0, [r5, #0x18] + bl FUN_02009530 + str r0, [sp, #0x34] + ldr r0, [r5, #0x1c] + bl FUN_02009530 + str r0, [sp, #0x38] + ldr r0, [r5, #0x20] + bl FUN_02009530 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + ldr r2, [r4, r0] + ldr r3, [sp, #0x38] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, [sp, #0x34] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r0, sp, #0x5c + add r1, r6, #0 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r0, [sp, #0x3c] + add r0, sp, #0x5c + str r0, [sp, #0x40] + mov r0, #0x1f + str r0, [sp, #0x50] + mov r0, #0x12 + mov r1, #1 + lsl r0, r0, #0xe + str r0, [sp, #0x44] + lsl r0, r1, #0x12 + str r0, [sp, #0x48] + str r1, [sp, #0x54] + str r7, [sp, #0x58] + add r0, sp, #0x3c + bl FUN_0201FF84 + str r0, [r5, #4] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + mov r2, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [r5, #4] + bl FUN_0202027C + add sp, #0x80 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EDE98: .word 0x00001BB4 + thumb_func_end MOD16_021EDD04 + + thumb_func_start MOD16_021EDE9C +MOD16_021EDE9C: ; 0x021EDE9C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + ldr r0, [r4, #4] + bl FUN_0201FFC8 + ldr r0, [r4, #8] + bl FUN_0201FFC8 + ldr r0, [r4, #0xc] + bl FUN_0201FFC8 + ldr r0, [r4, #0x10] + bl FUN_0201FFC8 + pop {r4, pc} + thumb_func_end MOD16_021EDE9C + + thumb_func_start MOD16_021EDEC0 +MOD16_021EDEC0: ; 0x021EDEC0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EDEC0 + + thumb_func_start MOD16_021EDEC4 +MOD16_021EDEC4: ; 0x021EDEC4 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EDEC4 + + thumb_func_start MOD16_021EDEC8 +MOD16_021EDEC8: ; 0x021EDEC8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x20 + add r6, r1, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021EDF70 ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r6, #0 + bl FUN_0200A86C + mov r1, #0x2c + add r2, r4, #0 + add r6, r0, #0 + bl FUN_0200A8E0 + mov r0, #0 + mov r3, #1 + add r1, r4, #0 + add r2, r0, #0 + lsl r3, r3, #8 + bl FUN_02002F40 + add r3, r0, #0 + mov r0, #0x18 + str r0, [sp] + mov r1, #0 + ldr r0, _021EDF74 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #0xa + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EDF74 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x20 + bl FUN_0201BDE0 + add r0, r6, #0 + mov r1, #0xa + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EDF74 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + mov r3, #0x98 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021EDF70: .word 0x00000266 +_021EDF74: .word 0x00020100 + thumb_func_end MOD16_021EDEC8 + + thumb_func_start MOD16_021EDF78 +MOD16_021EDF78: ; 0x021EDF78 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x20 + add r1, r7, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r2, _021EE084 ; =0x0000026B + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + str r0, [sp, #0x10] + ldr r0, [r6] + bl MOD16_021D9DE8 + add r1, r7, #0 + str r0, [sp, #0x14] + bl FUN_0200AA50 + str r0, [sp, #0x18] + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + ldr r2, [sp, #0x18] + add r0, r0, #4 + mov r3, #0x1a + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x6e + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r2, _021EE08C ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r7, #0 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [r6] + bl MOD16_021D9F40 + add r2, r0, #0 + mov r0, #0x98 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + mov r3, #0x92 + add r0, r0, #4 + bl FUN_0201BDE0 + ldr r0, [r6] + bl MOD16_021D9F4C + cmp r0, #0 + bne _021EE044 + add r0, r7, #0 + mov r1, #0x61 + add r2, r4, #0 + bl FUN_0200A8E0 + b _021EE04E +_021EE044: + add r0, r7, #0 + mov r1, #0x62 + add r2, r4, #0 + bl FUN_0200A8E0 +_021EE04E: + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xe6 + sub r3, r1, r0 + mov r0, #0xa8 + str r0, [sp] + mov r1, #0 + ldr r0, _021EE088 ; =0x00020100 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, [r5] + add r2, r4, #0 + add r0, r0, #4 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EE084: .word 0x0000026B +_021EE088: .word 0x00020100 +_021EE08C: .word 0x00000266 + thumb_func_end MOD16_021EDF78 + + thumb_func_start MOD16_021EE090 +MOD16_021EE090: ; 0x021EE090 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r1, #0 + add r4, r0, #0 + str r5, [sp] + add r3, r4, #0 + ldr r0, [r4] + mov r1, #0x24 + mov r2, #1 + add r3, #0x18 + bl MOD16_021D8D98 + str r0, [r4, #0x10] + add r2, r4, #0 + ldr r0, [r4] + mov r1, #6 + add r2, #0x1c + add r3, r5, #0 + bl MOD16_021D8D70 + str r0, [r4, #0x14] + mov r0, #0x5a + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [sp, #4] + ldr r0, [r4, #0x18] + str r0, [sp, #8] + add r0, sp, #4 + bl FUN_02013D98 + str r0, [r4, #4] + mov r0, #0x5a + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x10] + mov r0, #0x10 + str r0, [sp, #0x14] + add r0, sp, #0xc + bl FUN_02013E14 + str r0, [r4, #8] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EE090 + + thumb_func_start MOD16_021EE0F0 +MOD16_021EE0F0: ; 0x021EE0F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02013DD4 + ldr r0, [r4, #8] + bl FUN_02013E44 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE0F0 + + thumb_func_start MOD16_021EE110 +MOD16_021EE110: ; 0x021EE110 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0 + mov r0, #0x5a + ldr r1, [r4] + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + str r0, [sp] + ldr r0, [r4, #4] + mov r2, #0 + str r0, [sp, #4] + ldr r0, [r4, #8] + str r0, [sp, #8] + add r0, sp, #0 + strh r1, [r0, #0xc] + mov r1, #0x58 + strh r1, [r0, #0xe] + strh r2, [r0, #0x10] + mov r1, #0x1f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + strh r2, [r0, #0x1c] + add r0, sp, #0 + bl FUN_02013E84 + str r0, [r4, #0xc] + add sp, #0x20 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE110 + + thumb_func_start MOD16_021EE14C +MOD16_021EE14C: ; 0x021EE14C + ldr r3, _021EE154 ; =0x02013EA9 + ldr r0, [r0, #0xc] + bx r3 + nop +_021EE154: .word 0x02013EA9 + thumb_func_end MOD16_021EE14C + + thumb_func_start MOD16_021EE158 +MOD16_021EE158: ; 0x021EE158 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + mov r1, #0 + str r0, [r4, #0x40] + ldr r0, [r4, #0xc] + str r0, [r4, #0x44] + ldr r0, [r4, #0x10] + str r0, [r4, #0x48] + ldr r0, [r4] + str r0, [r4, #0x4c] + ldr r0, [r4, #4] + str r0, [r4, #0x50] + add r0, r4, #0 + str r1, [r4, #0x6c] + add r0, #0xb8 + str r0, [r4, #0x70] + add r0, r4, #0 + add r0, #0xb8 + str r1, [r0] + cmp r2, #0 + bne _021EE188 + sub r0, r1, #1 + b _021EE18A +_021EE188: + mov r0, #1 +_021EE18A: + str r0, [r4, #0x54] + add r1, r4, #0 + ldr r0, _021EE19C ; =MOD16_021EE1A0 + add r1, #0x40 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #0x3c] + pop {r4, pc} + .align 2, 0 +_021EE19C: .word MOD16_021EE1A0 + thumb_func_end MOD16_021EE158 + + thumb_func_start MOD16_021EE1A0 +MOD16_021EE1A0: ; 0x021EE1A0 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x2c] + cmp r1, #5 + bhi _021EE248 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EE1B6: ; jump table + .short _021EE1C2 - _021EE1B6 - 2 ; case 0 + .short _021EE1CA - _021EE1B6 - 2 ; case 1 + .short _021EE1D2 - _021EE1B6 - 2 ; case 2 + .short _021EE1F4 - _021EE1B6 - 2 ; case 3 + .short _021EE214 - _021EE1B6 - 2 ; case 4 + .short _021EE23E - _021EE1B6 - 2 ; case 5 +_021EE1C2: + mov r0, #2 + str r0, [r4, #0x18] + str r0, [r4, #0x2c] + pop {r4, pc} +_021EE1CA: + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE1D2: + ldr r1, [r4, #0x14] + ldr r0, _021EE24C ; =0xFFFFFDDE + mul r0, r1 + str r0, [r4, #0x24] + mov r0, #0xb5 + ldr r1, [r4, #0x14] + mvn r0, r0 + mul r0, r1 + str r0, [r4, #0x20] + mov r0, #3 + str r0, [r4, #0x28] + mov r0, #1 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE1F4: + ldr r1, [r4, #0x14] + ldr r0, _021EE250 ; =0x00000222 + mul r0, r1 + str r0, [r4, #0x24] + ldr r1, [r4, #0x14] + mov r0, #0xb6 + mul r0, r1 + str r0, [r4, #0x20] + mov r0, #4 + str r0, [r4, #0x28] + mov r0, #1 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE214: + mov r1, #0 + str r1, [r4, #0x24] + ldr r0, [r4, #0x14] + sub r1, #0xb6 + mul r1, r0 + str r1, [r4, #0x20] + mov r0, #1 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x18] + sub r0, r0, #1 + str r0, [r4, #0x18] + cmp r0, #0 + ble _021EE232 + mov r0, #2 + b _021EE234 +_021EE232: + mov r0, #5 +_021EE234: + str r0, [r4, #0x28] + add r0, r4, #0 + bl MOD16_021EE254 + pop {r4, pc} +_021EE23E: + bl FUN_0200CAB4 + ldr r0, [r4, #0x30] + mov r1, #1 + str r1, [r0] +_021EE248: + pop {r4, pc} + nop +_021EE24C: .word 0xFFFFFDDE +_021EE250: .word 0x00000222 + thumb_func_end MOD16_021EE1A0 + + thumb_func_start MOD16_021EE254 +MOD16_021EE254: ; 0x021EE254 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + ldr r2, [r3, #0x20] + ldr r1, [r3, #0x24] + cmp r2, #0 + bge _021EE276 + ldr r0, [r3, #0x1c] + add r0, r0, r2 + cmp r0, r1 + blt _021EE26E + str r0, [r3, #0x1c] + b _021EE288 +_021EE26E: + str r1, [r3, #0x1c] + ldr r0, [r3, #0x28] + str r0, [r3, #0x2c] + b _021EE288 +_021EE276: + ldr r0, [r3, #0x1c] + add r0, r0, r2 + cmp r0, r1 + bgt _021EE282 + str r0, [r3, #0x1c] + b _021EE288 +_021EE282: + str r1, [r3, #0x1c] + ldr r0, [r3, #0x28] + str r0, [r3, #0x2c] +_021EE288: + ldr r0, [r3, #0x10] + str r0, [sp] + ldr r0, [r3, #0x1c] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r3] + ldr r1, [r3, #4] + ldr r2, [r3, #8] + ldr r3, [r3, #0xc] + bl MOD16_021EE2A4 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD16_021EE254 + + thumb_func_start MOD16_021EE2A4 +MOD16_021EE2A4: ; 0x021EE2A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r1, sp, #0x18 + ldrh r1, [r1, #0x14] + add r7, r2, #0 + str r3, [sp] + bl FUN_02013F2C + add r0, sp, #0x18 + ldrh r0, [r0, #0x14] + mov r2, #0xe + lsl r2, r2, #0xe + asr r0, r0, #4 + lsl r4, r0, #1 + add r0, r4, #1 + lsl r1, r0, #1 + ldr r0, _021EE354 ; =0x020FFA38 + mov r3, #0 + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r5, r2, #0xc + orr r5, r0 + mov r2, #0xe + ldr r0, _021EE354 ; =0x020FFA38 + lsl r1, r4, #1 + ldrsh r0, [r0, r1] + lsl r2, r2, #0xe + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + mov r3, #0 + add r0, r0, r2 + adc r1, r3 + lsr r4, r0, #0xc + lsl r0, r2, #8 + lsl r1, r1, #0x14 + add r0, r5, r0 + orr r4, r1 + str r0, [sp, #4] + lsl r0, r2, #7 + add r0, r4, r0 + str r0, [sp, #8] + ldr r0, [sp] + add r1, sp, #4 + bl FUN_02020044 + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r6, #0 + add r1, sp, #4 + bl FUN_02020044 + mov r0, #2 + lsl r0, r0, #0x12 + sub r1, r0, r5 + lsr r0, r0, #1 + sub r0, r0, r4 + str r0, [sp, #8] + str r1, [sp, #4] + ldr r0, [sp, #0x28] + add r1, sp, #4 + bl FUN_02020044 + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + add r0, r7, #0 + add r1, sp, #4 + bl FUN_02020044 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EE354: .word 0x020FFA38 + thumb_func_end MOD16_021EE2A4 + + thumb_func_start MOD16_021EE358 +MOD16_021EE358: ; 0x021EE358 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + add r5, r4, #0 + str r0, [r4, #0x74] + ldr r0, [r4, #0xc] + add r5, #0xb8 + str r0, [r4, #0x78] + ldr r0, [r4, #0x10] + str r0, [r4, #0x7c] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + ldr r1, [r4, #4] + add r0, #0x84 + str r1, [r0] + add r1, r4, #0 + mov r0, #0 + add r1, #0x88 + str r0, [r1] + add r1, r4, #0 + add r1, #0x94 + str r5, [r1] + add r1, r4, #0 + add r1, #0xb8 + str r0, [r1] + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _021EE3A4 + add r0, r4, #0 + add r0, #0x8c + str r2, [r0] + add r0, r4, #0 + add r0, #0x90 + str r3, [r0] + b _021EE3B4 +_021EE3A4: + add r0, r4, #0 + neg r1, r2 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + neg r1, r3 + add r0, #0x90 + str r1, [r0] +_021EE3B4: + add r1, r4, #0 + ldr r0, _021EE3C4 ; =MOD16_021EE3C8 + add r1, #0x74 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #0x3c] + pop {r3, r4, r5, pc} + .align 2, 0 +_021EE3C4: .word MOD16_021EE3C8 + thumb_func_end MOD16_021EE358 + + thumb_func_start MOD16_021EE3C8 +MOD16_021EE3C8: ; 0x021EE3C8 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x18] + mov r4, #0 + cmp r0, #0 + ldr r2, [r5, #0x1c] + bge _021EE3EC + ldr r1, [r5, #0x14] + add r0, r1, r0 + cmp r0, r2 + blt _021EE3E6 + str r0, [r5, #0x14] + b _021EE3FC +_021EE3E6: + str r2, [r5, #0x14] + mov r4, #1 + b _021EE3FC +_021EE3EC: + ldr r1, [r5, #0x14] + add r0, r1, r0 + cmp r0, r2 + bgt _021EE3F8 + str r0, [r5, #0x14] + b _021EE3FC +_021EE3F8: + str r2, [r5, #0x14] + mov r4, #1 +_021EE3FC: + ldr r0, [r5, #0x10] + str r0, [sp] + ldr r0, [r5, #0x14] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [r5, #8] + ldr r3, [r5, #0xc] + bl MOD16_021EE2A4 + cmp r4, #1 + bne _021EE424 + add r0, r6, #0 + bl FUN_0200CAB4 + ldr r0, [r5, #0x20] + mov r1, #1 + str r1, [r0] +_021EE424: + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EE3C8 + + thumb_func_start MOD16_021EE428 +MOD16_021EE428: ; 0x021EE428 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r2, #0 + bne _021EE436 + ldr r1, [r5, #4] + b _021EE438 +_021EE436: + ldr r1, [r5] +_021EE438: + add r0, #0x98 + str r1, [r0] + neg r0, r4 + lsl r1, r0, #1 + add r0, r5, #0 + add r0, #0xa8 + str r1, [r0] + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + bl FUN_0202011C + add r1, r5, #0 + ldr r2, [r0] + add r1, #0x9c + str r2, [r1] + ldr r1, [r0, #4] + add r0, r5, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + add r1, r5, #0 + mov r2, #0 + add r0, #0xac + str r2, [r0] + add r0, r5, #0 + add r0, #0xa4 + strh r4, [r0] + add r0, r5, #0 + add r0, #0xb0 + str r2, [r0] + add r0, r5, #0 + add r1, #0xb8 + add r0, #0xb4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xb8 + str r2, [r0] + add r1, r5, #0 + ldr r0, _021EE494 ; =MOD16_021EE498 + add r1, #0x98 + bl FUN_0200CA44 + str r0, [r5, #0x3c] + pop {r3, r4, r5, pc} + nop +_021EE494: .word MOD16_021EE498 + thumb_func_end MOD16_021EE428 + + thumb_func_start MOD16_021EE498 +MOD16_021EE498: ; 0x021EE498 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, #3 + bhi _021EE5A2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE4B2: ; jump table + .short _021EE4BA - _021EE4B2 - 2 ; case 0 + .short _021EE50C - _021EE4B2 - 2 ; case 1 + .short _021EE540 - _021EE4B2 - 2 ; case 2 + .short _021EE586 - _021EE4B2 - 2 ; case 3 +_021EE4BA: + ldr r0, [r4, #0x14] + add r3, r0, #1 + str r3, [r4, #0x14] + mov r0, #0xc + ldrsh r0, [r4, r0] + add r1, r3, #0 + mul r1, r3 + add r2, r0, #0 + lsr r0, r1, #0x1f + add r0, r1, r0 + mul r2, r3 + asr r0, r0, #1 + add r2, r2, r0 + ldr r0, [r4, #4] + str r0, [sp] + ldr r1, [r4, #8] + lsl r0, r2, #0xc + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x10] + cmp r1, r0 + blt _021EE5A2 + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #0xc + ldrsh r1, [r4, r0] + add sp, #0xc + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE50C: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021EE528 + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #8] + add r1, sp, #0 + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 +_021EE528: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #1 + ble _021EE5A2 + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x18] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE540: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _021EE55C + mov r0, #2 + ldr r1, [r4, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #8] + add r1, sp, #0 + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 +_021EE55C: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #1 + ble _021EE5A2 + ldr r0, [r4, #0x10] + sub r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #0 + ble _021EE57C + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #1 + add sp, #0xc + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE57C: + ldr r0, [r4, #0x18] + add sp, #0xc + add r0, r0, #1 + str r0, [r4, #0x18] + pop {r4, r5, pc} +_021EE586: + ldr r0, [r4, #4] + add r1, sp, #0 + str r0, [sp] + ldr r0, [r4, #8] + str r0, [sp, #4] + ldr r0, [r4] + bl FUN_02020044 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x1c] + mov r1, #1 + str r1, [r0] +_021EE5A2: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EE498 + + thumb_func_start MOD16_021EE5A8 +MOD16_021EE5A8: ; 0x021EE5A8 + push {r4, r5} + mov r4, #0 + cmp r1, #0 + ble _021EE5CA + add r5, r0, #0 +_021EE5B2: + ldr r3, [r5] + cmp r3, r2 + blt _021EE5C2 + mov r1, #0x14 + mul r1, r4 + add r0, r0, r1 + pop {r4, r5} + bx lr +_021EE5C2: + add r4, r4, #1 + add r5, #0x14 + cmp r4, r1 + blt _021EE5B2 +_021EE5CA: + mov r0, #0 + pop {r4, r5} + bx lr + thumb_func_end MOD16_021EE5A8 + + thumb_func_start MOD16_021EE5D0 +MOD16_021EE5D0: ; 0x021EE5D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x18] + add r7, r1, #0 + add r4, r2, #0 + bl FUN_0200955C + add r6, r0, #0 + ldr r0, [r5, #0x18] + mov r1, #0 + bl FUN_02009E54 + add r1, r5, #0 + str r4, [sp] + add r1, #0xbc + str r0, [sp, #4] + ldr r0, [r6, #0xc] + ldr r1, [r1] + mov r2, #0x30 + add r3, r7, #0 + bl FUN_02003974 + ldr r0, [sp, #4] + mov r1, #1 + bl FUN_020B19C4 + add r2, r5, #0 + add r2, #0xbc + add r1, r0, #0 + ldr r2, [r2] + mov r0, #0xe + mov r3, #0x60 + bl FUN_0201C2C8 + ldr r0, [r5, #0x28] + bl FUN_0200955C + add r6, r0, #0 + ldr r0, [r5, #0x28] + mov r1, #0 + bl FUN_02009E54 + add r1, r5, #0 + str r4, [sp] + add r1, #0xc0 + str r0, [sp, #8] + ldr r0, [r6, #0xc] + ldr r1, [r1] + mov r2, #0x50 + add r3, r7, #0 + bl FUN_02003974 + ldr r0, [sp, #8] + mov r1, #1 + bl FUN_020B19C4 + add r5, #0xc0 + add r1, r0, #0 + ldr r2, [r5] + mov r0, #0xe + mov r3, #0xa0 + bl FUN_0201C2C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EE5D0 + + thumb_func_start MOD16_021EE654 +MOD16_021EE654: ; 0x021EE654 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + add r0, r2, #0 + add r4, r1, #0 + bl MOD16_021EE6CC + add r6, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EE714 + add r7, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + bl MOD16_021EE73C + str r6, [r5] + str r7, [r5, #4] + str r0, [r5, #0x20] + bl MOD16_021EE76C + str r0, [r5, #0x24] + ldr r0, _021EE69C ; =MOD16_021EE770 + str r0, [r5, #8] + ldr r0, _021EE6A0 ; =MOD16_021EE7AC + str r0, [r5, #0xc] + ldr r0, _021EE6A4 ; =MOD16_021EE810 + str r0, [r5, #0x10] + ldr r0, _021EE6A8 ; =MOD16_021EE824 + str r0, [r5, #0x14] + ldr r0, _021EE6AC ; =MOD16_021EE8AC + str r0, [r5, #0x18] + ldr r0, _021EE6B0 ; =MOD16_021EE8DC + str r0, [r5, #0x1c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EE69C: .word MOD16_021EE770 +_021EE6A0: .word MOD16_021EE7AC +_021EE6A4: .word MOD16_021EE810 +_021EE6A8: .word MOD16_021EE824 +_021EE6AC: .word MOD16_021EE8AC +_021EE6B0: .word MOD16_021EE8DC + thumb_func_end MOD16_021EE654 + + thumb_func_start MOD16_021EE6B4 +MOD16_021EE6B4: ; 0x021EE6B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl MOD16_021EE740 + ldr r0, [r4, #4] + bl MOD16_021EE754 + ldr r0, [r4, #0x20] + bl MOD16_021EE768 + pop {r4, pc} + thumb_func_end MOD16_021EE6B4 + + thumb_func_start MOD16_021EE6CC +MOD16_021EE6CC: ; 0x021EE6CC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021EE6DE + bl ErrorHandling +_021EE6DE: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021EE6E4: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EE6E4 + add r0, r5, #0 + bl MOD16_021D7AEC + str r0, [r4] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B7C + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #3 + bl MOD16_021D7B5C + str r0, [r4, #0xc] + add r0, r5, #0 + bl MOD16_021D7B38 + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EE6CC + + thumb_func_start MOD16_021EE714 +MOD16_021EE714: ; 0x021EE714 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _021EE726 + bl ErrorHandling +_021EE726: + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r0, r5, #0 + bl MOD16_021D7B48 + str r0, [r4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EE714 + + thumb_func_start MOD16_021EE73C +MOD16_021EE73C: ; 0x021EE73C + mov r0, #0 + bx lr + thumb_func_end MOD16_021EE73C + + thumb_func_start MOD16_021EE740 +MOD16_021EE740: ; 0x021EE740 + push {r4, lr} + add r4, r0, #0 + bne _021EE74A + bl ErrorHandling +_021EE74A: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE740 + + thumb_func_start MOD16_021EE754 +MOD16_021EE754: ; 0x021EE754 + push {r4, lr} + add r4, r0, #0 + bne _021EE75E + bl ErrorHandling +_021EE75E: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EE754 + + thumb_func_start MOD16_021EE768 +MOD16_021EE768: ; 0x021EE768 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EE768 + + thumb_func_start MOD16_021EE76C +MOD16_021EE76C: ; 0x021EE76C + mov r0, #0 + bx lr + thumb_func_end MOD16_021EE76C + + thumb_func_start MOD16_021EE770 +MOD16_021EE770: ; 0x021EE770 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x18 + mov r0, #0 +_021EE786: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021EE786 + mov r0, #4 + str r0, [r4, #0x10] + ldr r2, [r5, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EEA3C + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EEA88 + str r4, [r5, #8] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EE770 + + thumb_func_start MOD16_021EE7AC +MOD16_021EE7AC: ; 0x021EE7AC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, [r0, #0xc] + ldr r4, [r0, #8] + cmp r1, #1 + bne _021EE7BC + mov r0, #1 + pop {r3, r4, r5, pc} +_021EE7BC: + ldr r0, [r0, #0x10] + cmp r0, #1 + bne _021EE7C6 + mov r0, #0 + pop {r3, r4, r5, pc} +_021EE7C6: + ldr r0, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EE80A + add r0, r4, #0 + bl MOD16_021EEA80 + ldr r0, [r5, #8] + bl MOD16_021E95C8 + cmp r0, #0 + beq _021EE7F2 + ldr r0, [r5, #4] + bl MOD16_021D9FB8 + cmp r0, #0 + beq _021EE7F2 + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EEEB4 +_021EE7F2: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EEA88 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021EE80A + add r0, r5, #0 + bl MOD16_021EEF00 + mov r0, #0 + str r0, [r4, #0x14] +_021EE80A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EE7AC + + thumb_func_start MOD16_021EE810 +MOD16_021EE810: ; 0x021EE810 + push {r4, lr} + ldr r4, [r0, #8] + add r0, r4, #0 + bl MOD16_021EEAA0 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD16_021EE810 + + thumb_func_start MOD16_021EE824 +MOD16_021EE824: ; 0x021EE824 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #3 + bhi _021EE8A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE840: ; jump table + .short _021EE848 - _021EE840 - 2 ; case 0 + .short _021EE862 - _021EE840 - 2 ; case 1 + .short _021EE880 - _021EE840 - 2 ; case 2 + .short _021EE896 - _021EE840 - 2 ; case 3 +_021EE848: + ldr r0, [r4, #4] + mov r1, #0x30 + bl FUN_02016998 + str r0, [r4, #8] + mov r1, #0 + mov r2, #0x30 + bl Call_FillMemWithValue + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE8A8 +_021EE862: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021EEAE0 + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #1 + bl MOD16_021EE994 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE8A8 +_021EE880: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #1 + bl MOD16_021EEA00 + cmp r0, #0 + beq _021EE8A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE8A8 +_021EE896: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + bl MOD16_021D8B3C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EE8A8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EE824 + + thumb_func_start MOD16_021EE8AC +MOD16_021EE8AC: ; 0x021EE8AC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r3, #8] + add r4, r2, #0 + str r0, [sp] + add r5, r1, #0 + ldr r0, [r4, #8] + ldr r7, [r5, #8] + bl MOD16_021E95C0 + cmp r0, #0 + beq _021EE8D8 + ldr r2, [sp] + ldr r3, [r5, #4] + add r0, r6, #0 + add r1, r7, #0 + bl MOD16_021EEE80 + add r0, r6, #0 + add r1, r4, #0 + bl MOD16_021EEEC8 +_021EE8D8: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EE8AC + + thumb_func_start MOD16_021EE8DC +MOD16_021EE8DC: ; 0x021EE8DC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r7, r2, #0 + ldr r6, [r4, #8] + cmp r0, #4 + bhi _021EE95E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE8F8: ; jump table + .short _021EE902 - _021EE8F8 - 2 ; case 0 + .short _021EE924 - _021EE8F8 - 2 ; case 1 + .short _021EE93A - _021EE8F8 - 2 ; case 2 + .short _021EE94C - _021EE8F8 - 2 ; case 3 + .short _021EE95A - _021EE8F8 - 2 ; case 4 +_021EE902: + mov r0, #0x79 + ldr r1, [r5] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #1 + bl MOD16_021D8B3C + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + mov r3, #0 + bl MOD16_021EE994 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE924: + add r0, r6, #0 + add r1, r5, #0 + mov r3, #0 + bl MOD16_021EEA00 + cmp r0, #0 + beq _021EE95E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE93A: + ldr r2, [r4, #4] + add r0, r6, #0 + add r1, r5, #0 + bl MOD16_021EEB10 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE94C: + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EE95E +_021EE95A: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EE95E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EE8DC + + thumb_func_start MOD16_021EE964 +MOD16_021EE964: ; 0x021EE964 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #1 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021EE964 + + thumb_func_start MOD16_021EE97C +MOD16_021EE97C: ; 0x021EE97C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_02020398 + ldr r0, [r4, #4] + mov r1, #0 + ldr r0, [r0] + bl FUN_02011AF0 + pop {r4, pc} + thumb_func_end MOD16_021EE97C + + thumb_func_start MOD16_021EE994 +MOD16_021EE994: ; 0x021EE994 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r2, #0 + add r5, r1, #0 + add r6, r3, #0 + bl MOD16_021EE964 + ldr r0, [r4, #8] + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EE9FC + cmp r6, #0 + beq _021EE9D8 + mov r3, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r2, [r5] + lsl r0, r0, #4 + add r0, r2, r0 + add r2, r1, #0 + sub r2, #0x11 + bl MOD16_021D8988 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021EE9D8: + mov r0, #0x10 + str r0, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r0, #0x2c + str r0, [sp, #8] + mov r0, #0x2f + str r0, [sp, #0xc] + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #0x19 + ldr r3, [r5] + lsl r0, r0, #4 + add r0, r3, r0 + add r3, r1, #0 + sub r3, #0x11 + bl MOD16_021D8988 +_021EE9FC: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EE994 + + thumb_func_start MOD16_021EEA00 +MOD16_021EEA00: ; 0x021EEA00 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r2, #8] + add r5, r1, #0 + add r4, r3, #0 + bl MOD16_021E95B8 + cmp r0, #0 + beq _021EEA20 + mov r0, #0x19 + ldr r1, [r5] + lsl r0, r0, #4 + add r0, r1, r0 + bl MOD16_021D89B4 + b _021EEA26 +_021EEA20: + mov r0, #2 + bl FUN_0200A344 +_021EEA26: + cmp r0, #0 + beq _021EEA38 + cmp r4, #0 + beq _021EEA34 + add r0, r6, #0 + bl MOD16_021EE97C +_021EEA34: + mov r0, #1 + pop {r4, r5, r6, pc} +_021EEA38: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EEA00 + + thumb_func_start MOD16_021EEA3C +MOD16_021EEA3C: ; 0x021EEA3C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + mov r1, #4 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0xf8 + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x68 + mov r2, #0xb8 + mov r3, #8 + bl MOD16_021D7C98 + str r4, [r5, #8] + str r5, [r5, #0xc] + str r6, [sp] + add r3, r5, #0 + ldr r0, [r5, #4] + ldr r2, _021EEA7C ; =MOD16_021EEAB8 + mov r1, #1 + add r3, #8 + bl FUN_020220C4 + str r0, [r5] + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EEA7C: .word MOD16_021EEAB8 + thumb_func_end MOD16_021EEA3C + + thumb_func_start MOD16_021EEA80 +MOD16_021EEA80: ; 0x021EEA80 + mov r1, #3 + str r1, [r0, #0x10] + bx lr + .align 2, 0 + thumb_func_end MOD16_021EEA80 + + thumb_func_start MOD16_021EEA88 +MOD16_021EEA88: ; 0x021EEA88 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02022144 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021EEA9C + mov r0, #2 + str r0, [r4, #0x10] +_021EEA9C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEA88 + + thumb_func_start MOD16_021EEAA0 +MOD16_021EEAA0: ; 0x021EEAA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0202212C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEAA0 + + thumb_func_start MOD16_021EEAB8 +MOD16_021EEAB8: ; 0x021EEAB8 + ldr r3, [r2, #4] + lsl r2, r0, #2 + add r2, r3, r2 + str r1, [r2, #0x10] + cmp r1, #0 + beq _021EEACA + cmp r1, #2 + beq _021EEAD4 + bx lr +_021EEACA: + cmp r0, #0 + bne _021EEADC + mov r0, #1 + str r0, [r3, #0x14] + bx lr +_021EEAD4: + cmp r0, #0 + bne _021EEADC + mov r0, #1 + str r0, [r3, #0x14] +_021EEADC: + bx lr + .align 2, 0 + thumb_func_end MOD16_021EEAB8 + + thumb_func_start MOD16_021EEAE0 +MOD16_021EEAE0: ; 0x021EEAE0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021EEB50 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EEBB8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EEC6C + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021EED04 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EEAE0 + + thumb_func_start MOD16_021EEB10 +MOD16_021EEB10: ; 0x021EEB10 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + add r4, r1, #0 + str r2, [sp, #4] + ldr r0, [r4] + mov r1, #9 + mov r2, #4 + mov r3, #0x80 + bl MOD16_021D8CFC + add r0, r5, #0 + bl MOD16_021EECF8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EEDA0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EEC38 + ldr r0, [r5, #0x2c] + cmp r0, #0 + beq _021EEB4A + bl FUN_02016A18 +_021EEB4A: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EEB10 + + thumb_func_start MOD16_021EEB50 +MOD16_021EEB50: ; 0x021EEB50 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + str r5, [sp, #0xc] + ldr r2, [r0] + mov r1, #0x22 + mov r3, #6 + bl MOD16_021D8CB4 + str r5, [sp] + ldr r0, [r4] + mov r1, #0x3a + mov r2, #1 + add r3, sp, #0x10 + bl MOD16_021D8D48 + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #6 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r4] + ldr r0, [r0] + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + ldr r0, [r4] + mov r1, #6 + ldr r0, [r0] + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EEB50 + + thumb_func_start MOD16_021EEBB8 +MOD16_021EEBB8: ; 0x021EEBB8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r6, [r1] + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl MOD16_021D8C70 + add r7, r0, #0 + ldr r0, _021EEC2C ; =0x0000332E + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #5 + str r4, [sp, #8] + lsl r0, r0, #6 + ldr r0, [r6, r0] + mov r2, #0x66 + mov r3, #1 + bl FUN_020091E0 + str r0, [r5, #8] + bl FUN_02009B04 + ldr r0, [r5, #8] + bl FUN_02009474 + ldr r0, _021EEC30 ; =0x0000332C + add r1, r7, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x52 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x64 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x10] + ldr r0, _021EEC34 ; =0x0000332D + add r1, r7, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x53 + str r4, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #0x65 + mov r3, #1 + bl FUN_02009358 + str r0, [r5, #0x14] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EEC2C: .word 0x0000332E +_021EEC30: .word 0x0000332C +_021EEC34: .word 0x0000332D + thumb_func_end MOD16_021EEBB8 + + thumb_func_start MOD16_021EEC38 +MOD16_021EEC38: ; 0x021EEC38 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + ldr r4, [r1] + bl FUN_02009C0C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, [r5, #8] + bl FUN_02009490 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x10] + bl FUN_02009490 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [r5, #0x14] + bl FUN_02009490 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EEC38 + + thumb_func_start MOD16_021EEC6C +MOD16_021EEC6C: ; 0x021EEC6C + push {r4, r5, r6, lr} + sub sp, #0x70 + ldr r4, [r1] + ldr r3, _021EECF0 ; =0x0000332D + add r5, r0, #0 + mov r0, #0 + str r3, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #5 + lsl r0, r0, #6 + add r6, r2, #0 + ldr r2, [r4, r0] + str r2, [sp, #0x14] + add r2, r0, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r0, #0 + add r2, #8 + ldr r2, [r4, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r4, r0] + ldr r2, _021EECF4 ; =0x0000083F + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r1, r3, #1 + add r0, sp, #0x4c + sub r3, r3, #1 + bl FUN_02008AA4 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + mov r0, #0x1f + str r0, [sp, #0x40] + mov r0, #2 + str r0, [sp, #0x44] + lsl r0, r0, #0x12 + str r0, [sp, #0x34] + mov r0, #3 + lsl r1, r1, #0x10 + lsl r0, r0, #0x12 + str r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r6, [sp, #0x48] + bl FUN_0201FF84 + mov r1, #2 + str r0, [r5] + bl FUN_02020130 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 +_021EECF0: .word 0x0000332D +_021EECF4: .word 0x0000083F + thumb_func_end MOD16_021EEC6C + + thumb_func_start MOD16_021EECF8 +MOD16_021EECF8: ; 0x021EECF8 + ldr r3, _021EED00 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021EED00: .word 0x0201FFC9 + thumb_func_end MOD16_021EECF8 + + thumb_func_start MOD16_021EED04 +MOD16_021EED04: ; 0x021EED04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5] + add r6, r2, #0 + ldr r4, [r1] + cmp r0, #0 + bne _021EED18 + bl ErrorHandling +_021EED18: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021EED98 ; =0x0000083F + bl FUN_020094F0 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r4, r1] + str r1, [sp, #8] + mov r1, #0 + bl FUN_02009E54 + mov r1, #7 + mvn r1, r1 + str r1, [sp, #0x1c] + mov r1, #2 + mov r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x20] + str r2, [sp, #0x24] + str r1, [sp, #0x28] + str r6, [sp, #0x2c] + bl FUN_0201E28C + add r7, r0, #0 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x10 + mov r2, #2 + bl MOD16_021DB388 + add r6, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r2, _021EED9C ; =0x00000266 + add r1, r6, #0 + mov r3, #0x64 + bl MOD16_021DB3C8 + lsr r0, r0, #1 + neg r0, r0 + str r6, [sp, #0xc] + str r0, [sp, #0x18] + ldr r0, [r5] + str r0, [sp, #0x14] + add r0, sp, #8 + bl MOD16_021DB2BC + str r0, [r5, #4] + ldr r0, [r0] + add r1, r7, #4 + bl FUN_02011A60 + add r0, r6, #0 + bl MOD16_021DB3BC + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EED98: .word 0x0000083F +_021EED9C: .word 0x00000266 + thumb_func_end MOD16_021EED04 + + thumb_func_start MOD16_021EEDA0 +MOD16_021EEDA0: ; 0x021EEDA0 + ldr r3, _021EEDA8 ; =MOD16_021DB338 + ldr r0, [r0, #4] + bx r3 + nop +_021EEDA8: .word MOD16_021DB338 + thumb_func_end MOD16_021EEDA0 + + thumb_func_start MOD16_021EEDAC +MOD16_021EEDAC: ; 0x021EEDAC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + add r1, r3, #0 + str r2, [sp, #0xc] + ldr r4, [sp, #0x30] + ldr r6, [sp, #0x40] + mov r5, #0 + bl MOD16_021D7B98 + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #8] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + bl MOD16_021EEE58 + ldr r0, [sp, #8] + bl FUN_0202022C + cmp r0, #3 + bhi _021EEE1E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEDEA: ; jump table + .short _021EEDF2 - _021EEDEA - 2 ; case 0 + .short _021EEDF2 - _021EEDEA - 2 ; case 1 + .short _021EEE02 - _021EEDEA - 2 ; case 2 + .short _021EEE10 - _021EEDEA - 2 ; case 3 +_021EEDF2: + ldr r0, [r4] + cmp r0, #0 + beq _021EEE1E + mov r0, #0 + mov r5, #1 + mov r7, #9 + str r0, [r4] + b _021EEE1E +_021EEE02: + ldr r0, [r4] + cmp r0, #1 + beq _021EEE1E + mov r5, #1 + mov r7, #0xa + str r5, [r4] + b _021EEE1E +_021EEE10: + ldr r0, [r4] + cmp r0, #2 + beq _021EEE1E + mov r0, #2 + mov r5, #1 + mov r7, #8 + str r0, [r4] +_021EEE1E: + cmp r5, #0 + beq _021EEE54 + ldr r0, [r6] + cmp r0, #0 + beq _021EEE2C + bl FUN_02016A18 +_021EEE2C: + ldr r0, [sp, #4] + ldr r3, [sp, #0x34] + ldr r0, [r0] + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD16_021D8D70 + str r0, [r6] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x2c] + ldr r2, [r2, #0xc] + mov r0, #0x1f + lsl r1, r1, #5 + mov r3, #0x20 + bl FUN_0201C2C8 + cmp r0, #0 + bne _021EEE54 + bl ErrorHandling +_021EEE54: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EEDAC + + thumb_func_start MOD16_021EEE58 +MOD16_021EEE58: ; 0x021EEE58 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + bl MOD16_021D7BE4 + add r0, r5, #0 + bl FUN_0202022C + cmp r0, #2 + ldr r0, [r4] + bge _021EEE78 + add r1, r6, #0 + bl FUN_02011AC0 + pop {r4, r5, r6, pc} +_021EEE78: + ldr r1, [sp, #0x10] + bl FUN_02011AC0 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EEE58 + + thumb_func_start MOD16_021EEE80 +MOD16_021EEE80: ; 0x021EEE80 + push {r4, r5, lr} + sub sp, #0x1c + add r5, r1, #0 + mov r1, #7 + mvn r1, r1 + add r4, r2, #0 + str r1, [sp] + mov r2, #4 + add r1, r5, #0 + str r2, [sp, #4] + add r1, #0x28 + str r1, [sp, #8] + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r1, #1 + str r1, [sp, #0x14] + add r1, r5, #0 + add r1, #0x2c + str r1, [sp, #0x18] + ldr r1, [r5] + ldr r2, [r5, #4] + ldr r3, [r4, #0x10] + bl MOD16_021EEDAC + add sp, #0x1c + pop {r4, r5, pc} + thumb_func_end MOD16_021EEE80 + + thumb_func_start MOD16_021EEEB4 +MOD16_021EEEB4: ; 0x021EEEB4 + ldr r1, _021EEEC4 ; =0x021C48B8 + ldr r2, [r1, #0x44] + mov r1, #1 + tst r2, r1 + beq _021EEEC0 + str r1, [r0, #0x14] +_021EEEC0: + bx lr + nop +_021EEEC4: .word 0x021C48B8 + thumb_func_end MOD16_021EEEB4 + + thumb_func_start MOD16_021EEEC8 +MOD16_021EEEC8: ; 0x021EEEC8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r1, #8] + bl MOD16_021E95C8 + cmp r0, #1 + bne _021EEEE8 + mov r0, #0x40 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x80 + mov r2, #0x90 + mov r3, #0xe4 + bl MOD16_021EEEEC +_021EEEE8: + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD16_021EEEC8 + + thumb_func_start MOD16_021EEEEC +MOD16_021EEEEC: ; 0x021EEEEC + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r0, [r0] + bl MOD16_021D8B04 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEEEC + + thumb_func_start MOD16_021EEF00 +MOD16_021EEF00: ; 0x021EEF00 + ldr r3, _021EEF08 ; =MOD16_021E5C5C + ldr r0, [r0, #0xc] + mov r1, #1 + bx r3 + .align 2, 0 +_021EEF08: .word MOD16_021E5C5C + thumb_func_end MOD16_021EEF00 + + thumb_func_start MOD16_021EEF0C +MOD16_021EEF0C: ; 0x021EEF0C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r1, #0x7a + ldr r0, [r5, #0xc] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x7a + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021EEFA4 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD16_021EF9B8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + mov r2, #0xa + mov r3, #0xf + bl MOD16_021EF9D8 + ldr r0, _021EEF64 ; =MOD16_021EF90C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021EEF64: .word MOD16_021EF90C + thumb_func_end MOD16_021EEF0C + + thumb_func_start MOD16_021EEF68 +MOD16_021EEF68: ; 0x021EEF68 + push {r4, lr} + add r4, r0, #0 + bl MOD16_021EF174 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EEF68 + + thumb_func_start MOD16_021EEF84 +MOD16_021EEF84: ; 0x021EEF84 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r0, [r0, r1] + cmp r0, #4 + bne _021EEF92 + mov r0, #1 + bx lr +_021EEF92: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD16_021EEF84 + + thumb_func_start MOD16_021EEF98 +MOD16_021EEF98: ; 0x021EEF98 + ldr r0, [r0, #0xc] + bx lr + thumb_func_end MOD16_021EEF98 + + thumb_func_start MOD16_021EEF9C +MOD16_021EEF9C: ; 0x021EEF9C + mov r2, #0x79 + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + thumb_func_end MOD16_021EEF9C + + thumb_func_start MOD16_021EEFA4 +MOD16_021EEFA4: ; 0x021EEFA4 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4] + add r1, r5, #0 + str r0, [r5] + ldr r2, [r4, #0xc] + mov r0, #0x20 + add r1, #0x10 + bl FUN_02008C9C + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_020203CC + ldr r0, [r4, #0xc] + bl MOD16_021EFAEC + ldr r0, [r4, #0xc] + mov r2, #0x30 + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, [r4, #0x10] + mov r3, #0x48 + bl MOD16_021EFAC0 + str r0, [r5, #0xc] + ldr r0, [r4, #4] + str r0, [r5, #8] + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + str r0, [sp, #4] + ldr r0, [r5] + str r0, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + str r0, [sp, #0x10] + add r0, sp, #4 + bl MOD16_021DB228 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF218 + mov r1, #0x3f + add r2, r1, #0 + ldr r0, _021EF170 ; =0x04000050 + sub r2, #0x4f + bl G2x_SetBlendBrightness_ + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF318 + str r0, [r5, #4] + mov r0, #0x4f + lsl r0, r0, #2 + ldr r1, [r4, #0xc] + add r0, r5, r0 + bl MOD16_021EF370 + mov r1, #0x15 + lsl r1, r1, #4 + add r0, r5, r1 + sub r1, #0x14 + ldr r2, [r4, #0xc] + add r1, r5, r1 + bl MOD16_021D9118 + mov r2, #0x15 + lsl r2, r2, #4 + mov r0, #2 + str r0, [sp] + add r1, r2, #0 + sub r1, #0x18 + add r0, r5, r2 + sub r2, #0x14 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r2, r5, r2 + bl MOD16_021D9318 + ldr r0, [r4, #0x14] + mov r3, #0x15 + lsl r3, r3, #4 + str r0, [sp] + sub r1, r3, #4 + add r0, r5, r3 + add r3, #0x6c + ldr r1, [r5, r1] + ldr r2, [r4, #0xc] + ldr r3, [r5, r3] + bl MOD16_021EF3A8 + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0xac + mov r2, #0x20 + bl MOD16_021D7F7C + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #1 + bl MOD16_021D93D4 + mov r2, #6 + lsl r2, r2, #6 + add r1, r2, #0 + add r0, r5, r2 + add r2, #0x3c + sub r1, #0x44 + ldr r2, [r5, r2] + ldr r3, [r4, #0xc] + add r1, r5, r1 + bl MOD16_021EF540 + mov r2, #6 + lsl r2, r2, #6 + add r1, r2, #0 + sub r1, #0x48 + add r0, r5, r2 + sub r2, #0x44 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r2, r5, r2 + bl MOD16_021EF598 + mov r2, #0x67 + lsl r2, r2, #2 + add r1, r2, #0 + add r0, r5, r2 + add r2, #0x20 + sub r1, #0x60 + ldr r2, [r5, r2] + ldr r3, [r4, #0xc] + add r1, r5, r1 + bl MOD16_021EF6A4 + mov r2, #0x6f + lsl r2, r2, #2 + ldr r0, [r5, r2] + add r1, r2, #0 + str r0, [sp] + add r0, r2, #0 + sub r1, #0x84 + sub r0, #0x20 + sub r2, #0x80 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r0, r5, r0 + add r2, r5, r2 + bl MOD16_021EF6E0 + mov r2, #0x69 + lsl r2, r2, #2 + add r0, r5, r2 + str r0, [sp] + add r1, r2, #0 + add r0, r2, #0 + sub r1, #0x6c + sub r0, #0x10 + sub r2, #0x68 + ldr r1, [r5, r1] + ldr r3, [r4, #0xc] + add r0, r5, r0 + add r2, r5, r2 + bl MOD16_021EF5EC + mov r3, #0x16 + lsl r3, r3, #4 + ldr r0, [r5, r3] + add r1, r3, #0 + str r0, [sp] + add r0, r3, #0 + sub r1, #0x14 + add r3, #0x5c + add r0, #0x34 + ldr r1, [r5, r1] + ldr r2, [r4, #0xc] + ldr r3, [r5, r3] + add r0, r5, r0 + bl MOD16_021EF648 + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF790 + ldr r0, [r5] + ldr r1, [r4, #0xc] + bl MOD16_021EF8A8 + mov r2, #0x6f + lsl r2, r2, #2 + ldr r0, [r5, #4] + ldr r1, [r4, #0xc] + ldr r2, [r5, r2] + bl MOD16_021EFA48 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + add r0, r5, r0 + bl MOD16_021EFB20 + mov r0, #0x79 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + add sp, #0x14 + pop {r4, r5, pc} + nop +_021EF170: .word 0x04000050 + thumb_func_end MOD16_021EEFA4 + + thumb_func_start MOD16_021EF174 +MOD16_021EF174: ; 0x021EF174 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EFBA4 + mov r0, #0x67 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF774 + mov r1, #0x67 + lsl r1, r1, #2 + add r0, r4, r1 + sub r1, #0x60 + add r1, r4, r1 + bl MOD16_021EF6D4 + mov r0, #0x65 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF698 + mov r0, #0x65 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF63C + mov r0, #6 + lsl r0, r0, #6 + add r0, r4, r0 + bl MOD16_021EF5E0 + mov r1, #6 + lsl r1, r1, #6 + add r0, r4, r1 + sub r1, #0x44 + add r1, r4, r1 + bl MOD16_021EF58C + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD16_021EF418 + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD16_021D93AC + mov r1, #0x15 + lsl r1, r1, #4 + add r0, r4, r1 + sub r1, #0x14 + add r1, r4, r1 + bl MOD16_021D91E8 + mov r0, #0x4f + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD16_021EF390 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + ldr r0, [r4, #4] + bl MOD16_021EF358 + ldr r0, [r4] + bl MOD16_021EF2FC + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD16_021DB288 + bl MOD16_021EFB18 + pop {r4, pc} + thumb_func_end MOD16_021EF174 + + thumb_func_start MOD16_021EF218 +MOD16_021EF218: ; 0x021EF218 + push {r4, r5, lr} + sub sp, #0x54 + ldr r3, _021EF2F0 ; =0x021FF78C + add r5, r0, #0 + add r4, r1, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x38 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #1 + str r0, [r2] + add r0, r5, #0 + bl FUN_020178A0 + add r0, r5, #0 + mov r1, #1 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #1 + bl FUN_02018744 + ldr r3, _021EF2F4 ; =0x021FF770 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + add r0, r5, #0 + bl FUN_020178A0 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0x1c + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_020178BC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + add r0, r5, #0 + mov r1, #0 + bl FUN_020178A0 + ldr r3, _021EF2F8 ; =0x021FF7A8 + add r2, sp, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #3 + str r0, [r2] + add r0, r5, #0 + bl FUN_020178A0 + add r0, r5, #0 + mov r1, #3 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + add r0, r5, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x54 + pop {r4, r5, pc} + .align 2, 0 +_021EF2F0: .word 0x021FF78C +_021EF2F4: .word 0x021FF770 +_021EF2F8: .word 0x021FF7A8 + thumb_func_end MOD16_021EF218 + + thumb_func_start MOD16_021EF2FC +MOD16_021EF2FC: ; 0x021EF2FC + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD16_021EF2FC + + thumb_func_start MOD16_021EF318 +MOD16_021EF318: ; 0x021EF318 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, r1, #0 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + str r3, [sp, #0x10] + bl FUN_02019064 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EF318 + + thumb_func_start MOD16_021EF358 +MOD16_021EF358: ; 0x021EF358 + push {r4, lr} + add r4, r0, #0 + bl FUN_02019570 + add r0, r4, #0 + bl FUN_02019178 + add r0, r4, #0 + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + thumb_func_end MOD16_021EF358 + + thumb_func_start MOD16_021EF370 +MOD16_021EF370: ; 0x021EF370 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 + mov r7, #8 +_021EF37A: + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02008DEC + add r4, r4, #1 + stmia r5!, {r0} + cmp r4, #4 + blt _021EF37A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EF370 + + thumb_func_start MOD16_021EF390 +MOD16_021EF390: ; 0x021EF390 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021EF398: + ldr r0, [r5] + bl FUN_02008E2C + add r4, r4, #1 + stmia r5!, {r6} + cmp r4, #4 + blt _021EF398 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EF390 + + thumb_func_start MOD16_021EF3A8 +MOD16_021EF3A8: ; 0x021EF3A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r1, #0 + str r4, [sp, #4] + mov r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02009E54 + str r0, [sp, #0xc] + ldr r0, [r5] + str r0, [sp, #0x10] + mov r0, #0x3f + mvn r0, r0 + str r0, [sp, #0x14] + add r0, #0x38 + str r0, [sp, #0x18] + mov r0, #2 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #1 + str r0, [sp, #0x24] + ldr r0, [sp, #0x40] + str r6, [sp, #0x28] + cmp r0, #0 + bne _021EF3EE + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021D7E68 + b _021EF3F8 +_021EF3EE: + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD16_021D7E48 +_021EF3F8: + add r4, r0, #0 + ldr r0, [sp, #0x40] + str r4, [sp, #8] + str r0, [sp] + add r0, r5, #0 + add r1, sp, #4 + mov r2, #0 + add r3, r7, #0 + bl MOD16_021D8888 + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EF3A8 + + thumb_func_start MOD16_021EF418 +MOD16_021EF418: ; 0x021EF418 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021EF42A + bl MOD16_021DB338 + mov r0, #0 + str r0, [r4, #8] +_021EF42A: + pop {r4, pc} + thumb_func_end MOD16_021EF418 + + thumb_func_start MOD16_021EF42C +MOD16_021EF42C: ; 0x021EF42C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r7, [sp, #0x3c] + str r3, [sp, #0x10] + str r7, [sp] + mov r3, #1 + add r6, r2, #0 + str r3, [sp, #4] + add r4, r1, #0 + str r6, [sp, #8] + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x28] + bl FUN_02008F34 + str r0, [r5] + bl FUN_02009B04 + ldr r0, [r5] + bl FUN_02009474 + str r7, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x10] + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r4, #4] + ldr r2, [sp, #0x2c] + mov r3, #0 + bl FUN_02008FEC + str r0, [r5, #4] + bl FUN_02009D68 + ldr r0, [r5, #4] + bl FUN_02009474 + str r7, [sp] + mov r0, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #8] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x30] + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #8] + str r7, [sp] + mov r0, #3 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x34] + mov r3, #1 + bl FUN_020090AC + str r0, [r5, #0xc] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF42C + + thumb_func_start MOD16_021EF4AC +MOD16_021EF4AC: ; 0x021EF4AC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_02009C0C + ldr r0, [r5, #4] + bl FUN_02009E04 + ldr r0, [r4] + ldr r1, [r5] + bl FUN_02009490 + ldr r0, [r4, #4] + ldr r1, [r5, #4] + bl FUN_02009490 + ldr r0, [r4, #8] + ldr r1, [r5, #8] + bl FUN_02009490 + ldr r0, [r4, #0xc] + ldr r1, [r5, #0xc] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EF4AC + + thumb_func_start MOD16_021EF4E0 +MOD16_021EF4E0: ; 0x021EF4E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r7, r2, #0 + add r6, r3, #0 + bl FUN_02009530 + str r0, [sp, #0x2c] + ldr r0, [r5, #4] + bl FUN_02009530 + str r0, [sp, #0x30] + ldr r0, [r5, #8] + bl FUN_02009530 + str r0, [sp, #0x34] + ldr r0, [r5, #0xc] + bl FUN_02009530 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + ldr r1, [r4] + ldr r2, [sp, #0x30] + str r1, [sp, #0x14] + ldr r1, [r4, #4] + ldr r3, [sp, #0x34] + str r1, [sp, #0x18] + ldr r1, [r4, #8] + str r1, [sp, #0x1c] + ldr r1, [r4, #0xc] + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + add r0, r7, #0 + bl FUN_02008AA4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021EF4E0 + + thumb_func_start MOD16_021EF540 +MOD16_021EF540: ; 0x021EF540 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r2, #0 + add r5, r0, #0 + str r1, [sp, #0x18] + str r3, [sp, #0x1c] + bl MOD16_021D8520 + str r0, [sp, #0x20] + add r0, r4, #0 + bl MOD16_021D8524 + add r4, r0, #0 + bl MOD16_021D8528 + add r6, r0, #0 + bl MOD16_021D852C + add r7, r0, #0 + bl MOD16_021D8530 + str r4, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0xfa + lsl r0, r0, #4 + str r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r5, #4 + bl MOD16_021EF42C + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF540 + + thumb_func_start MOD16_021EF58C +MOD16_021EF58C: ; 0x021EF58C + ldr r3, _021EF594 ; =MOD16_021EF4AC + add r0, r0, #4 + bx r3 + nop +_021EF594: .word MOD16_021EF4AC + thumb_func_end MOD16_021EF58C + + thumb_func_start MOD16_021EF598 +MOD16_021EF598: ; 0x021EF598 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + add r1, r2, #0 + add r0, r5, #4 + add r2, sp, #0 + mov r3, #2 + bl MOD16_021EF4E0 + add r0, sp, #0 + str r0, [sp, #0x28] + mov r0, #1 + str r0, [sp, #0x3c] + mov r0, #0x20 + str r0, [sp, #0x38] + mov r0, #0x1e + lsl r0, r0, #0xe + str r0, [sp, #0x2c] + mov r0, #0x16 + lsl r0, r0, #0xe + str r0, [sp, #0x30] + add r0, sp, #0x24 + str r4, [sp, #0x24] + str r6, [sp, #0x40] + bl FUN_0201FF84 + str r0, [r5] + cmp r0, #0 + bne _021EF5DA + bl ErrorHandling +_021EF5DA: + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EF598 + + thumb_func_start MOD16_021EF5E0 +MOD16_021EF5E0: ; 0x021EF5E0 + ldr r3, _021EF5E8 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021EF5E8: .word 0x0201FFC9 + thumb_func_end MOD16_021EF5E0 + + thumb_func_start MOD16_021EF5EC +MOD16_021EF5EC: ; 0x021EF5EC + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r5, r0, #0 + add r4, r1, #0 + add r6, r3, #0 + add r1, r2, #0 + ldr r0, [sp, #0x58] + add r2, sp, #0 + mov r3, #2 + bl MOD16_021EF4E0 + add r0, sp, #0 + str r0, [sp, #0x28] + mov r0, #1 + str r0, [sp, #0x3c] + mov r0, #0x20 + str r0, [sp, #0x38] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp, #0x2c] + mov r0, #0xd + lsl r0, r0, #0xe + str r0, [sp, #0x30] + add r0, sp, #0x24 + str r4, [sp, #0x24] + str r6, [sp, #0x40] + bl FUN_0201FF84 + str r0, [r5] + cmp r0, #0 + bne _021EF62E + bl ErrorHandling +_021EF62E: + ldr r0, [r5] + mov r1, #0x11 + bl FUN_02020130 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EF5EC + + thumb_func_start MOD16_021EF63C +MOD16_021EF63C: ; 0x021EF63C + ldr r3, _021EF644 ; =0x0201FFC9 + ldr r0, [r0] + bx r3 + nop +_021EF644: .word 0x0201FFC9 + thumb_func_end MOD16_021EF63C + + thumb_func_start MOD16_021EF648 +MOD16_021EF648: ; 0x021EF648 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + add r1, r3, #0 + add r6, r2, #0 + bl MOD16_021E57C8 + add r4, r0, #0 + ldr r0, [sp, #0x40] + str r7, [sp] + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #8] + ldr r0, [r5] + str r0, [sp, #0xc] + mov r0, #0x4d + mvn r0, r0 + str r0, [sp, #0x10] + add r0, #0x46 + str r0, [sp, #0x14] + mov r0, #2 + str r0, [sp, #0x18] + mov r0, #0x1f + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + str r6, [sp, #0x24] + str r4, [sp, #4] + add r0, sp, #0 + bl MOD16_021DB2BC + str r0, [r5, #4] + add r0, r4, #0 + bl MOD16_021DB3BC + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF648 + + thumb_func_start MOD16_021EF698 +MOD16_021EF698: ; 0x021EF698 + ldr r3, _021EF6A0 ; =MOD16_021DB338 + ldr r0, [r0, #4] + bx r3 + nop +_021EF6A0: .word MOD16_021DB338 + thumb_func_end MOD16_021EF698 + + thumb_func_start MOD16_021EF6A4 +MOD16_021EF6A4: ; 0x021EF6A4 + push {r3, lr} + sub sp, #0x18 + mov r2, #0x5a + str r2, [sp] + mov r2, #0xd + str r2, [sp, #4] + mov r2, #0x58 + str r2, [sp, #8] + mov r2, #0x59 + str r2, [sp, #0xc] + mov r2, #5 + str r2, [sp, #0x10] + ldr r2, _021EF6D0 ; =0x00004268 + add r0, #8 + str r2, [sp, #0x14] + add r2, r3, #0 + mov r3, #0x45 + bl MOD16_021EF42C + add sp, #0x18 + pop {r3, pc} + nop +_021EF6D0: .word 0x00004268 + thumb_func_end MOD16_021EF6A4 + + thumb_func_start MOD16_021EF6D4 +MOD16_021EF6D4: ; 0x021EF6D4 + ldr r3, _021EF6DC ; =MOD16_021EF4AC + add r0, #8 + bx r3 + nop +_021EF6DC: .word MOD16_021EF4AC + thumb_func_end MOD16_021EF6D4 + + thumb_func_start MOD16_021EF6E0 +MOD16_021EF6E0: ; 0x021EF6E0 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + add r7, r1, #0 + ldr r0, [sp, #0x60] + mov r1, #6 + str r2, [sp] + str r3, [sp, #4] + bl FUN_02068678 + add r4, r0, #0 + ldr r0, [sp, #0x60] + mov r1, #7 + bl FUN_02068678 + add r6, r0, #0 + add r0, r4, #0 + bl MOD16_021E563C + add r4, r0, #0 + add r0, r6, #0 + bl MOD16_021E563C + add r6, r0, #0 + add r0, r5, #0 + ldr r1, [sp] + add r0, #8 + add r2, sp, #8 + mov r3, #2 + bl MOD16_021EF4E0 + add r0, sp, #8 + str r0, [sp, #0x30] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #0x20 + str r0, [sp, #0x40] + ldr r0, [sp, #4] + str r7, [sp, #0x2c] + str r0, [sp, #0x48] + mov r0, #0xaa + lsl r0, r0, #0xc + str r0, [sp, #0x34] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r1, r4, #0 + str r0, [r5] + bl FUN_02020130 + cmp r4, r6 + beq _021EF76C + mov r0, #0x37 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #0x12 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r1, r6, #0 + str r0, [r5, #4] + bl FUN_02020130 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_021EF76C: + mov r0, #0 + str r0, [r5, #4] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021EF6E0 + + thumb_func_start MOD16_021EF774 +MOD16_021EF774: ; 0x021EF774 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021EF782 + bl FUN_0201FFC8 +_021EF782: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021EF78C + bl FUN_0201FFC8 +_021EF78C: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021EF774 + + thumb_func_start MOD16_021EF790 +MOD16_021EF790: ; 0x021EF790 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + mov r2, #0 + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp] + mov r0, #0x45 + mov r1, #6 + add r3, r2, #0 + str r4, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r4, [sp, #0xc] + mov r0, #0x45 + mov r1, #0x21 + add r2, r5, #0 + mov r3, #3 + bl FUN_0200687C + str r4, [sp] + mov r0, #0x45 + mov r1, #0x32 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #3 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + mov r0, #0x45 + mov r1, #0x33 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r1, #3 + str r1, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + mov r0, #0x45 + mov r1, #0x34 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + add r6, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #8 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r6, #0 + bl FUN_02016A18 + str r4, [sp] + mov r0, #0x45 + mov r1, #0x36 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + add r4, r0, #0 + ldr r2, [sp, #0x10] + mov r0, #0x10 + str r0, [sp] + ldrh r0, [r2] + mov r1, #3 + mov r3, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02018148 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #3 + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD16_021EF790 + + thumb_func_start MOD16_021EF8A8 +MOD16_021EF8A8: ; 0x021EF8A8 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + add r5, r1, #0 + str r0, [sp, #8] + str r5, [sp, #0xc] + mov r0, #0x45 + mov r1, #0x21 + add r2, r4, #0 + mov r3, #2 + bl FUN_0200687C + str r5, [sp] + mov r0, #0x45 + mov r1, #0x39 + mov r2, #1 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r5, r0, #0 + ldrh r0, [r2] + mov r1, #2 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_02018148 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #2 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EF8A8 + + thumb_func_start MOD16_021EF90C +MOD16_021EF90C: ; 0x021EF90C + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #4 + bhi _021EF994 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF928: ; jump table + .short _021EF932 - _021EF928 - 2 ; case 0 + .short _021EF940 - _021EF928 - 2 ; case 1 + .short _021EF958 - _021EF928 - 2 ; case 2 + .short _021EF982 - _021EF928 - 2 ; case 3 + .short _021EF994 - _021EF928 - 2 ; case 4 +_021EF932: + ldr r0, _021EF9B4 ; =0x04000050 + mov r2, #0 + strh r2, [r0] + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + b _021EF994 +_021EF940: + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + bl MOD16_021EFA28 + cmp r0, #0 + beq _021EF994 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021EF994 +_021EF958: + add r2, r1, #0 + add r2, #0x47 + str r2, [sp] + add r1, r1, #4 + ldr r1, [r4, r1] + mov r0, #0xe + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r3, r2, #0 + bl FUN_020056AC + cmp r0, #0 + bne _021EF976 + bl ErrorHandling +_021EF976: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + b _021EF994 +_021EF982: + bl FUN_02005670 + cmp r0, #0 + bne _021EF994 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_021EF994: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021EF9A6 + sub r0, #0x20 + add r0, r4, r0 + bl MOD16_021EFB78 +_021EF9A6: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021EF9B4: .word 0x04000050 + thumb_func_end MOD16_021EF90C + + thumb_func_start MOD16_021EF9B8 +MOD16_021EF9B8: ; 0x021EF9B8 + push {r4, lr} + mov r1, #0 + mov r3, #2 + add r2, r1, #0 + lsl r3, r3, #8 + add r4, r0, #0 + bl FUN_02003108 + mov r3, #7 + add r0, r4, #0 + mov r1, #2 + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02003108 + pop {r4, pc} + thumb_func_end MOD16_021EF9B8 + + thumb_func_start MOD16_021EF9D8 +MOD16_021EF9D8: ; 0x021EF9D8 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [sp, #0x20] + add r4, r3, #0 + str r0, [sp] + add r0, r1, #0 + add r1, r2, #0 + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl FUN_02007E68 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x1c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x20] + lsl r3, r3, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + ldr r2, _021EFA24 ; =0x0000FFFF + add r0, r5, #0 + mov r1, #5 + asr r3, r3, #0x18 + bl FUN_02003210 + add r0, r5, #0 + mov r1, #0 + bl FUN_020038F0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021EFA24: .word 0x0000FFFF + thumb_func_end MOD16_021EF9D8 + + thumb_func_start MOD16_021EFA28 +MOD16_021EFA28: ; 0x021EFA28 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_020038E4 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02007F20 + cmp r4, #0 + bne _021EFA44 + cmp r0, #0 + bne _021EFA44 + mov r0, #1 + pop {r3, r4, r5, pc} +_021EFA44: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EFA28 + + thumb_func_start MOD16_021EFA48 +MOD16_021EFA48: ; 0x021EFA48 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _021EFA68 ; =0x00020100 + add r5, r0, #0 + str r1, [sp] + add r1, r2, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD16_021E5064 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EFA6C + pop {r3, r4, r5, pc} + nop +_021EFA68: .word 0x00020100 + thumb_func_end MOD16_021EFA48 + + thumb_func_start MOD16_021EFA6C +MOD16_021EFA6C: ; 0x021EFA6C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + mov r0, #0x40 + add r4, r1, #0 + bl FUN_020219F4 + add r5, r0, #0 + ldr r2, _021EFABC ; =0x00000266 + mov r0, #0 + mov r1, #0x1a + add r3, r4, #0 + bl FUN_0200A86C + mov r1, #0x6d + add r2, r5, #0 + add r4, r0, #0 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r0, #0xc1 + str r1, [sp, #4] + lsl r0, r0, #0xa + str r0, [sp, #8] + add r0, r6, #0 + add r2, r5, #0 + mov r3, #0x20 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021EFABC: .word 0x00000266 + thumb_func_end MOD16_021EFA6C + + thumb_func_start MOD16_021EFAC0 +MOD16_021EFAC0: ; 0x021EFAC0 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r2, #0 + add r0, sp, #0x10 + mov r2, #2 + add r6, r3, #0 + bl FUN_02068B68 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, sp, #0x10 + add r2, r4, #0 + add r3, r6, #0 + bl FUN_020073A0 + add sp, #0x20 + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021EFAC0 + + thumb_func_start MOD16_021EFAEC +MOD16_021EFAEC: ; 0x021EFAEC + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r4, _021EFB10 ; =0x021FF760 + add r3, sp, #0 + add r5, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + ldr r1, _021EFB14 ; =0x00200010 + mov r2, #0x10 + str r5, [sp, #0xc] + bl FUN_0201D060 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021EFB10: .word 0x021FF760 +_021EFB14: .word 0x00200010 + thumb_func_end MOD16_021EFAEC + + thumb_func_start MOD16_021EFB18 +MOD16_021EFB18: ; 0x021EFB18 + ldr r3, _021EFB1C ; =0x0201D12D + bx r3 + .align 2, 0 +_021EFB1C: .word 0x0201D12D + thumb_func_end MOD16_021EFB18 + + thumb_func_start MOD16_021EFB20 +MOD16_021EFB20: ; 0x021EFB20 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + cmp r2, #0 + bne _021EFB3A + add r2, r4, #0 + mov r0, #0x45 + mov r1, #0x17 + add r2, #8 + add r3, r5, #0 + bl FUN_02006C08 + b _021EFB48 +_021EFB3A: + add r2, r4, #0 + mov r0, #0x45 + mov r1, #0x18 + add r2, #8 + add r3, r5, #0 + bl FUN_02006C08 +_021EFB48: + add r2, r4, #0 + str r0, [r4] + mov r0, #0x45 + mov r1, #0x1a + add r2, #0xc + add r3, r5, #0 + bl FUN_02006C08 + str r0, [r4, #4] + mov r1, #0 + str r1, [r4, #0x10] + str r1, [r4, #0x1c] + add r2, r4, #0 +_021EFB62: + add r1, r1, #1 + lsl r0, r1, #4 + str r0, [r2, #0x14] + add r2, r2, #4 + cmp r1, #2 + blt _021EFB62 + ldr r1, [r4, #0x1c] + add r0, r4, #0 + bl MOD16_021EFBC4 + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021EFB20 + + thumb_func_start MOD16_021EFB78 +MOD16_021EFB78: ; 0x021EFB78 + push {r3, lr} + ldr r3, [r0, #0x1c] + lsl r1, r3, #2 + add r1, r0, r1 + ldr r2, [r1, #0x14] + ldr r1, [r0, #0x10] + cmp r2, r1 + bgt _021EFB9E + add r1, r3, #1 + str r1, [r0, #0x1c] + cmp r1, #2 + blt _021EFB96 + mov r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x10] +_021EFB96: + ldr r1, [r0, #0x1c] + bl MOD16_021EFBD8 + pop {r3, pc} +_021EFB9E: + add r1, r1, #1 + str r1, [r0, #0x10] + pop {r3, pc} + thumb_func_end MOD16_021EFB78 + + thumb_func_start MOD16_021EFBA4 +MOD16_021EFBA4: ; 0x021EFBA4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021EFBAA: + ldr r0, [r5] + bl FUN_02016A18 + add r4, r4, #1 + cmp r4, #2 + blt _021EFBAA + add r0, r5, #0 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021EFBA4 + + thumb_func_start MOD16_021EFBC4 +MOD16_021EFBC4: ; 0x021EFBC4 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #8] + ldr r3, _021EFBD4 ; =0x020C9550 + ldr r0, [r0, #0xc] + mov r1, #0 + mov r2, #0x20 + bx r3 + .align 2, 0 +_021EFBD4: .word 0x020C9550 + thumb_func_end MOD16_021EFBC4 + + thumb_func_start MOD16_021EFBD8 +MOD16_021EFBD8: ; 0x021EFBD8 + push {r3, lr} + add r2, r1, #0 + add r3, r0, #0 + lsl r2, r2, #2 + add r2, r3, r2 + ldr r2, [r2, #8] + mov r0, #0xf + ldr r2, [r2, #0xc] + mov r1, #0 + mov r3, #0x20 + bl FUN_0201C2C8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD16_021EFBD8 + + thumb_func_start MOD16_021EFBF4 +MOD16_021EFBF4: ; 0x021EFBF4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r2, #0xd5 + lsl r2, r2, #2 + str r1, [sp, #4] + add r1, r1, r2 + str r0, [sp] + ldr r2, _021EFC7C ; =0x00001DE0 + mov r0, #0 + bl MIi_CpuClear32 + ldr r0, [sp] + ldr r1, [r0, #0x2c] + mov r0, #1 + tst r0, r1 + beq _021EFC70 + mov r0, #0xb9 + lsl r0, r0, #2 + tst r0, r1 + bne _021EFC70 + ldr r6, _021EFC80 ; =0x000003CD + mov r0, #0 + add r7, r6, #0 + mov ip, r0 + sub r7, #0x31 +_021EFC26: + mov r1, ip + mov r0, #1 + tst r0, r1 + beq _021EFC60 + mov r0, ip + asr r4, r0, #1 + ldr r0, [sp, #4] + lsl r3, r4, #3 + ldr r2, [sp] + mov r1, #0 + add r3, r0, r3 + add r4, r0, r4 +_021EFC3E: + add r0, r2, #0 + add r0, #0xb0 + ldrh r0, [r0] + cmp r0, #0 + beq _021EFC58 + ldr r5, _021EFC80 ; =0x000003CD + ldrb r5, [r4, r5] + lsl r5, r5, #1 + add r5, r3, r5 + strh r0, [r5, r7] + ldrb r0, [r4, r6] + add r0, r0, #1 + strb r0, [r4, r6] +_021EFC58: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #4 + blt _021EFC3E +_021EFC60: + ldr r0, [sp] + add r0, #0x34 + str r0, [sp] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #4 + blt _021EFC26 +_021EFC70: + ldr r2, _021EFC84 ; =0x021F4E34 + ldr r1, _021EFC88 ; =0x00002134 + ldr r0, [sp, #4] + str r2, [r0, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021EFC7C: .word 0x00001DE0 +_021EFC80: .word 0x000003CD +_021EFC84: .word 0x021F4E34 +_021EFC88: .word 0x00002134 + thumb_func_end MOD16_021EFBF4 + + thumb_func_start MOD16_021EFC8C +MOD16_021EFC8C: ; 0x021EFC8C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #4] + mov r0, #0xd5 + add r5, r1, #0 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0 + str r2, [sp, #8] + add r2, r0, #0 +_021EFCA0: + strb r2, [r1, r0] + add r0, r0, #1 + cmp r0, #0x1c + blo _021EFCA0 + mov r0, #0 + mov r1, #0x64 + mov r7, #1 +_021EFCAE: + add r4, r3, #0 + tst r4, r7 + beq _021EFCBE + mov r4, #0xd6 + add r6, r5, r2 + lsl r4, r4, #2 + strb r1, [r6, r4] + b _021EFCC6 +_021EFCBE: + mov r4, #0xd6 + add r6, r5, r2 + lsl r4, r4, #2 + strb r0, [r6, r4] +_021EFCC6: + lsl r3, r3, #0x17 + add r2, r2, #1 + lsr r3, r3, #0x18 + cmp r2, #4 + blt _021EFCAE + mov r0, #0 + mvn r0, r0 + str r0, [sp] + ldr r0, [sp, #4] + ldr r2, [sp, #8] + add r1, r5, #0 + mov r3, #0 + bl MOD11_02245D38 + lsl r0, r0, #0x18 + mov r4, #0 + lsr r6, r0, #0x18 + add r7, r4, #0 +_021EFCEA: + add r0, r4, #0 + bl FUN_0206A92C + tst r0, r6 + beq _021EFCFC + mov r0, #0xd6 + add r1, r5, r4 + lsl r0, r0, #2 + strb r7, [r1, r0] +_021EFCFC: + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1c + sub r2, r2, r1 + mov r0, #0x1c + ror r2, r0 + add r1, r1, r2 + mov r0, #0x64 + sub r2, r0, r1 + mov r0, #0xdb + add r1, r5, r4 + lsl r0, r0, #2 + add r4, r4, #1 + strb r2, [r1, r0] + cmp r4, #4 + blt _021EFCEA + mov r1, #0 + add r0, #0x60 + strb r1, [r5, r0] + ldr r1, [sp, #4] + mov r3, #0x80 + ldr r2, [r1, #0x2c] + add r1, r2, #0 + tst r1, r3 + beq _021EFD38 + mov r1, #7 + sub r0, #0x6c + str r1, [r5, r0] + b _021EFD6E +_021EFD38: + add r1, r3, #0 + add r1, #0x80 + tst r1, r2 + beq _021EFD48 + lsl r1, r3, #0x16 + sub r0, #0x6c + str r1, [r5, r0] + b _021EFD6E +_021EFD48: + ldr r2, _021EFD88 ; =0x00002408 + ldr r1, [sp, #4] + ldr r2, [r1, r2] + mov r1, #1 + tst r1, r2 + beq _021EFD5C + lsl r1, r3, #0x18 + sub r0, #0x6c + str r1, [r5, r0] + b _021EFD6E +_021EFD5C: + ldr r1, [sp, #8] + mov r2, #0x34 + mul r2, r1 + ldr r1, [sp, #4] + sub r0, #0x6c + add r1, r1, r2 + add r1, #0xb8 + ldr r1, [r1] + str r1, [r5, r0] +_021EFD6E: + ldr r0, [sp, #4] + ldr r1, [r0, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021EFD84 + mov r1, #0x36 + lsl r1, r1, #4 + ldr r2, [r5, r1] + mov r0, #0x80 + orr r0, r2 + str r0, [r5, r1] +_021EFD84: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021EFD88: .word 0x00002408 + thumb_func_end MOD16_021EFC8C + + thumb_func_start MOD16_021EFD8C +MOD16_021EFD8C: ; 0x021EFD8C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r2, r1, #0 + mov r1, #0xd9 + ldr r4, [r5, #0x30] + lsl r1, r1, #2 + ldrb r6, [r4, r1] + mov r3, #0x10 + tst r3, r6 + bne _021EFDBE + add r1, #0x6b + strb r2, [r4, r1] + add r1, r4, #0 + bl MOD11_022482A4 + mov r2, #0x3d + lsl r2, r2, #4 + strb r0, [r4, r2] + sub r2, r2, #1 + ldrb r2, [r4, r2] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #0xf + bl MOD16_021EFC8C +_021EFDBE: + ldr r1, [r5, #0x2c] + mov r0, #2 + tst r0, r1 + bne _021EFDD0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EFDDC + pop {r4, r5, r6, pc} +_021EFDD0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021EFED0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021EFD8C + + thumb_func_start MOD16_021EFDDC +MOD16_021EFDDC: ; 0x021EFDDC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl MOD16_021F2CEC + mov r0, #0x36 + lsl r0, r0, #4 + ldr r1, [r5, r0] + cmp r1, #0 + beq _021EFE32 + add r7, r0, #0 + add r6, r0, #5 +_021EFDF6: + mov r0, #1 + tst r0, r1 + beq _021EFE18 + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #0x10 + tst r0, r1 + bne _021EFE10 + mov r0, #0xd5 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_021EFE10: + add r0, r4, #0 + add r1, r5, #0 + bl MOD16_021F00F0 +_021EFE18: + ldr r0, [r5, r7] + mov r1, #0 + lsr r0, r0, #1 + str r0, [r5, r7] + ldrb r0, [r5, r6] + add r0, r0, #1 + strb r0, [r5, r6] + ldr r0, _021EFEC8 ; =0x00000355 + strb r1, [r5, r0] + add r0, #0xb + ldr r1, [r5, r0] + cmp r1, #0 + bne _021EFDF6 +_021EFE32: + mov r3, #0xd9 + lsl r3, r3, #2 + ldrb r1, [r5, r3] + mov r0, #2 + tst r0, r1 + beq _021EFE42 + mov r0, #4 + b _021EFEB2 +_021EFE42: + mov r0, #4 + tst r0, r1 + beq _021EFE4C + mov r0, #5 + b _021EFEB2 +_021EFE4C: + add r0, r3, #0 + sub r0, #0xc + ldrsb r0, [r5, r0] + add r1, sp, #0 + mov r4, #1 + strb r0, [r1, #4] + mov r0, #0 + strb r0, [r1] + add r3, #0x6b + ldrb r3, [r5, r3] + mov r0, #0xc0 + add r2, r4, #0 + mul r0, r3 + add r0, r5, r0 + add r3, r0, #2 +_021EFE6A: + ldr r0, _021EFECC ; =0x00002D4C + ldrh r0, [r3, r0] + cmp r0, #0 + beq _021EFE9C + mov r0, #0xd6 + add r6, r5, r2 + lsl r0, r0, #2 + ldrsb r6, [r6, r0] + ldrb r0, [r1, #4] + cmp r0, r6 + bne _021EFE90 + add r0, sp, #4 + strb r6, [r0, r4] + add r0, r4, #1 + lsl r0, r0, #0x18 + add r7, r4, #0 + lsr r4, r0, #0x18 + add r0, sp, #0 + strb r2, [r0, r7] +_021EFE90: + ldrb r0, [r1, #4] + cmp r0, r6 + bge _021EFE9C + strb r6, [r1, #4] + mov r4, #1 + strb r2, [r1] +_021EFE9C: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #4 + blt _021EFE6A + bl FUN_0201B9EC + add r1, r4, #0 + bl _s32_div_f + add r0, sp, #0 + ldrb r0, [r0, r1] +_021EFEB2: + mov r2, #0x3d + lsl r2, r2, #4 + sub r1, r2, #1 + ldrb r1, [r5, r1] + ldrb r3, [r5, r2] + add r2, #0xa + add r1, r5, r1 + strb r3, [r1, r2] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EFEC8: .word 0x00000355 +_021EFECC: .word 0x00002D4C + thumb_func_end MOD16_021EFDDC + + thumb_func_start MOD16_021EFED0 +MOD16_021EFED0: ; 0x021EFED0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + add r0, sp, #0x18 + add r5, r1, #0 + str r0, [sp, #4] + add r0, sp, #0x20 + str r5, [sp, #8] + str r0, [sp] +_021EFEE6: + ldr r0, _021F00DC ; =0x000003CF + ldrb r2, [r5, r0] + ldr r0, [sp, #0xc] + cmp r0, r2 + beq _021EFEFA + ldr r1, _021F00E0 ; =0x00002D8C + ldr r0, [sp, #8] + ldr r0, [r0, r1] + cmp r0, #0 + bne _021EFF08 +_021EFEFA: + mov r1, #0 + ldr r0, [sp, #4] + mvn r1, r1 + strb r1, [r0] + ldr r0, [sp] + strh r1, [r0] + b _021F0026 +_021EFF08: + add r0, r7, #0 + add r1, r5, #0 + mov r3, #0xf + bl MOD16_021EFC8C + mov r1, #0x3d + ldr r0, [sp, #0xc] + lsl r1, r1, #4 + strb r0, [r5, r1] + sub r1, r1, #1 + mov r2, #1 + ldrb r1, [r5, r1] + and r0, r2 + and r1, r2 + cmp r0, r1 + beq _021EFF30 + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021F2CEC +_021EFF30: + ldr r0, _021F00E4 ; =0x00000365 + mov r2, #0 + add r1, r0, #0 + strb r2, [r5, r0] + sub r1, #0x10 + strb r2, [r5, r1] + sub r0, r0, #5 + ldr r4, [r5, r0] + cmp r4, #0 + beq _021EFF7A + ldr r6, _021F00E4 ; =0x00000365 +_021EFF46: + mov r0, #1 + tst r0, r4 + beq _021EFF68 + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #0x10 + tst r0, r1 + bne _021EFF60 + mov r0, #0xd5 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] +_021EFF60: + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021F00F0 +_021EFF68: + ldrb r0, [r5, r6] + asr r4, r4, #1 + mov r1, #0 + add r0, r0, #1 + strb r0, [r5, r6] + ldr r0, _021F00E8 ; =0x00000355 + cmp r4, #0 + strb r1, [r5, r0] + bne _021EFF46 +_021EFF7A: + mov r2, #0xd9 + lsl r2, r2, #2 + ldrb r1, [r5, r2] + mov r0, #2 + tst r0, r1 + beq _021EFF8E + ldr r0, [sp, #4] + mov r1, #4 + strb r1, [r0] + b _021F0026 +_021EFF8E: + mov r0, #4 + tst r0, r1 + beq _021EFF9C + ldr r0, [sp, #4] + mov r1, #5 + strb r1, [r0] + b _021F0026 +_021EFF9C: + add r0, r2, #0 + sub r0, #0xc + ldrsb r1, [r5, r0] + add r0, sp, #0x10 + add r2, #0x6b + strb r1, [r0, #4] + mov r1, #0 + strb r1, [r0] + ldrb r3, [r5, r2] + mov r2, #0xc0 + mov r4, #1 + mul r2, r3 + add r2, r5, r2 + add r1, r4, #0 + add r2, r2, #2 +_021EFFBA: + ldr r3, _021F00EC ; =0x00002D4C + ldrh r3, [r2, r3] + cmp r3, #0 + beq _021EFFE6 + mov r3, #0xd6 + add r6, r5, r1 + lsl r3, r3, #2 + ldrsb r3, [r6, r3] + ldrb r6, [r0, #4] + cmp r6, r3 + bne _021EFFDA + add r6, sp, #0x14 + strb r3, [r6, r4] + add r6, sp, #0x10 + strb r1, [r6, r4] + add r4, r4, #1 +_021EFFDA: + ldrb r6, [r0, #4] + cmp r6, r3 + bge _021EFFE6 + strb r3, [r0, #4] + strb r1, [r0] + mov r4, #1 +_021EFFE6: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #4 + blt _021EFFBA + bl FUN_0201B9EC + add r1, r4, #0 + bl _s32_div_f + add r0, sp, #0x10 + ldrb r1, [r0, r1] + ldr r0, [sp, #4] + strb r1, [r0] + add r0, sp, #0x10 + ldrb r1, [r0, #4] + ldr r0, [sp] + strh r1, [r0] + ldr r0, _021F00DC ; =0x000003CF + ldrb r1, [r5, r0] + mov r0, #2 + eor r1, r0 + ldr r0, [sp, #0xc] + cmp r0, r1 + bne _021F0026 + ldr r0, [sp] + mov r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0x64 + bge _021F0026 + ldr r0, [sp] + sub r1, r1, #1 + strh r1, [r0] +_021F0026: + ldr r0, [sp, #8] + add r0, #0xc0 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + ldr r0, [sp] + add r0, r0, #2 + str r0, [sp] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #4 + bge _021F0044 + b _021EFEE6 +_021F0044: + mov r1, #0x10 + add r0, sp, #0x10 + ldrsh r1, [r0, r1] + mov r2, #0 + mov r6, #1 + strb r2, [r0, #0xc] + add r2, sp, #0x20 + add r4, r6, #0 + add r2, #2 +_021F0056: + mov r0, #0 + ldrsh r3, [r2, r0] + cmp r1, r3 + bne _021F0064 + add r0, sp, #0x1c + strb r4, [r0, r6] + add r6, r6, #1 +_021F0064: + cmp r1, r3 + bge _021F0070 + add r0, sp, #0x10 + add r1, r3, #0 + strb r4, [r0, #0xc] + mov r6, #1 +_021F0070: + add r4, r4, #1 + add r2, r2, #2 + cmp r4, #4 + blt _021F0056 + bl FUN_0201B9EC + add r1, r6, #0 + bl _s32_div_f + add r0, sp, #0x1c + ldrb r3, [r0, r1] + ldr r0, _021F00DC ; =0x000003CF + ldrb r1, [r5, r0] + add r2, r5, r1 + add r1, r0, #0 + add r1, #0xb + strb r3, [r2, r1] + ldrb r2, [r5, r0] + add r1, r0, #0 + add r1, #0xb + add r3, r5, r2 + ldrb r1, [r3, r1] + add r3, sp, #0x18 + add r0, #0x17 + ldrsb r4, [r3, r1] + mov r3, #0xc0 + mul r3, r2 + add r3, r5, r3 + lsl r2, r4, #1 + add r3, r3, r2 + ldr r2, _021F00EC ; =0x00002D4C + ldrh r2, [r3, r2] + lsl r2, r2, #4 + add r2, r5, r2 + ldrh r2, [r2, r0] + mov r0, #2 + lsl r0, r0, #8 + cmp r2, r0 + bne _021F00D2 + add r0, r7, #0 + bl MOD11_02230270 + cmp r0, #0 + bne _021F00D2 + ldr r0, _021F00DC ; =0x000003CF + ldrb r2, [r5, r0] + add r0, #0xb + add r1, r5, r2 + strb r2, [r1, r0] +_021F00D2: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F00DC: .word 0x000003CF +_021F00E0: .word 0x00002D8C +_021F00E4: .word 0x00000365 +_021F00E8: .word 0x00000355 +_021F00EC: .word 0x00002D4C + thumb_func_end MOD16_021EFED0 + + thumb_func_start MOD16_021F00F0 +MOD16_021F00F0: ; 0x021F00F0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #0xd5 + add r5, r1, #0 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #2 + beq _021F01D6 + mov r6, #0xd9 + lsl r6, r6, #2 + add r4, r6, #0 + sub r4, #0x10 +_021F0108: + cmp r0, #0 + beq _021F0114 + cmp r0, #1 + beq _021F0154 + cmp r0, #2 + b _021F01CC +_021F0114: + ldr r1, _021F01D8 ; =0x00000365 + ldr r0, _021F01DC ; =0x00002134 + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + lsl r1, r1, #2 + ldr r1, [r0, r1] + ldr r0, _021F01E0 ; =0x00002138 + str r1, [r5, r0] + ldr r0, _021F01E4 ; =0x000003CF + ldrb r1, [r5, r0] + mov r0, #0xc0 + mul r0, r1 + add r3, r5, r0 + ldr r0, _021F01E8 ; =0x00000355 + ldrb r2, [r5, r0] + ldr r0, _021F01EC ; =0x00002D6C + add r1, r3, r2 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F0140 + mov r1, #0 + b _021F0148 +_021F0140: + lsl r0, r2, #1 + add r1, r3, r0 + ldr r0, _021F01F0 ; =0x00002D4C + ldrh r1, [r1, r0] +_021F0148: + ldr r0, _021F01F4 ; =0x00000356 + strh r1, [r5, r0] + ldrb r0, [r5, r4] + add r0, r0, #1 + strb r0, [r5, r4] + b _021F01CC +_021F0154: + ldr r0, _021F01F4 ; =0x00000356 + ldrh r0, [r5, r0] + cmp r0, #0 + beq _021F0176 + ldr r3, _021F01E0 ; =0x00002138 + ldr r2, _021F01DC ; =0x00002134 + ldr r3, [r5, r3] + ldr r2, [r5, r2] + lsl r3, r3, #2 + ldr r2, [r2, r3] + add r0, r7, #0 + lsl r3, r2, #2 + ldr r2, _021F01F8 ; =0x021FF810 + add r1, r5, #0 + ldr r2, [r2, r3] + blx r2 + b _021F018C +_021F0176: + ldr r0, _021F01E8 ; =0x00000355 + mov r1, #0 + ldrb r0, [r5, r0] + add r2, r5, r0 + mov r0, #0xd6 + lsl r0, r0, #2 + strb r1, [r2, r0] + ldrb r1, [r5, r6] + mov r0, #1 + orr r0, r1 + strb r0, [r5, r6] +_021F018C: + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #1 + tst r0, r1 + beq _021F01CC + ldr r0, _021F01E8 ; =0x00000355 + ldrb r0, [r5, r0] + add r1, r0, #1 + ldr r0, _021F01E8 ; =0x00000355 + strb r1, [r5, r0] + ldrb r0, [r5, r0] + cmp r0, #4 + bhs _021F01BE + mov r0, #0xd9 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + mov r0, #8 + tst r0, r1 + bne _021F01BE + mov r0, #0xd5 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] + b _021F01C4 +_021F01BE: + ldrb r0, [r5, r4] + add r0, r0, #1 + strb r0, [r5, r4] +_021F01C4: + ldrb r1, [r5, r6] + mov r0, #0xfe + and r0, r1 + strb r0, [r5, r6] +_021F01CC: + mov r0, #0xd5 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #2 + bne _021F0108 +_021F01D6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F01D8: .word 0x00000365 +_021F01DC: .word 0x00002134 +_021F01E0: .word 0x00002138 +_021F01E4: .word 0x000003CF +_021F01E8: .word 0x00000355 +_021F01EC: .word 0x00002D6C +_021F01F0: .word 0x00002D4C +_021F01F4: .word 0x00000356 +_021F01F8: .word 0x021FF810 + thumb_func_end MOD16_021F00F0 + + thumb_func_start MOD16_021F01FC +MOD16_021F01FC: ; 0x021F01FC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r0, r4 + bge _021F0234 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F0234: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F01FC + + thumb_func_start MOD16_021F0238 +MOD16_021F0238: ; 0x021F0238 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r0, r4 + ble _021F0270 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F0270: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F0238 + + thumb_func_start MOD16_021F0274 +MOD16_021F0274: ; 0x021F0274 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r4, r0 + bne _021F02AC + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F02AC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F0274 + + thumb_func_start MOD16_021F02B0 +MOD16_021F02B0: ; 0x021F02B0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x18 + sub r1, r1, r2 + mov r0, #0x18 + ror r1, r0 + add r0, r2, r1 + cmp r4, r0 + beq _021F02E8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F02E8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD16_021F02B0 + + thumb_func_start MOD16_021F02EC +MOD16_021F02EC: ; 0x021F02EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + mov r2, #0xd6 + lsl r2, r2, #2 + sub r3, r2, #3 + ldrb r5, [r4, r3] + add r1, r4, r2 + ldrsb r3, [r1, r5] + add r0, r3, r0 + strb r0, [r1, r5] + sub r0, r2, #3 + ldrb r2, [r4, r0] + ldrsb r0, [r1, r2] + cmp r0, #0 + bge _021F031C + mov r0, #0 + strb r0, [r1, r2] +_021F031C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F02EC + + thumb_func_start MOD16_021F0320 +MOD16_021F0320: ; 0x021F0320 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F0374 ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + bl _u32_div_f + cmp r0, r6 + bhs _021F0370 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0370: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0374: .word 0x00002D8C + thumb_func_end MOD16_021F0320 + + thumb_func_start MOD16_021F0378 +MOD16_021F0378: ; 0x021F0378 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F03CC ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + bl _u32_div_f + cmp r0, r6 + bls _021F03C8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F03C8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F03CC: .word 0x00002D8C + thumb_func_end MOD16_021F0378 + + thumb_func_start MOD16_021F03D0 +MOD16_021F03D0: ; 0x021F03D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F0424 ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + bl _u32_div_f + cmp r0, r6 + bne _021F0420 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0420: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0424: .word 0x00002D8C + thumb_func_end MOD16_021F03D0 + + thumb_func_start MOD16_021F0428 +MOD16_021F0428: ; 0x021F0428 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r3, _021F047C ; =0x00002D8C + add r2, r5, r1 + ldr r1, [r2, r3] + mov r0, #0x64 + mul r0, r1 + add r1, r3, #4 + ldr r1, [r2, r1] + bl _u32_div_f + cmp r0, r6 + beq _021F0478 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0478: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F047C: .word 0x00002D8C + thumb_func_end MOD16_021F0428 + + thumb_func_start MOD16_021F0480 +MOD16_021F0480: ; 0x021F0480 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F04C8 ; =0x00002DAC + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F04C4 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F04C4: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F04C8: .word 0x00002DAC + thumb_func_end MOD16_021F0480 + + thumb_func_start MOD16_021F04CC +MOD16_021F04CC: ; 0x021F04CC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F0514 ; =0x00002DAC + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F0510 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0510: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0514: .word 0x00002DAC + thumb_func_end MOD16_021F04CC + + thumb_func_start MOD16_021F0518 +MOD16_021F0518: ; 0x021F0518 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F0560 ; =0x00002DB0 + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F055C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F055C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0560: .word 0x00002DB0 + thumb_func_end MOD16_021F0518 + + thumb_func_start MOD16_021F0564 +MOD16_021F0564: ; 0x021F0564 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F05AC ; =0x00002DB0 + add r1, r5, r1 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F05A8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F05A8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F05AC: .word 0x00002DB0 + thumb_func_end MOD16_021F0564 + + thumb_func_start MOD16_021F05B0 +MOD16_021F05B0: ; 0x021F05B0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + mov r0, #0xb7 + add r1, r5, r1 + lsl r0, r0, #6 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F05F6 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F05F6: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F05B0 + + thumb_func_start MOD16_021F05F8 +MOD16_021F05F8: ; 0x021F05F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + mov r0, #0xb7 + add r1, r5, r1 + lsl r0, r0, #6 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F063E + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F063E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F05F8 + + thumb_func_start MOD16_021F0640 +MOD16_021F0640: ; 0x021F0640 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r1, r0] + tst r0, r6 + beq _021F068E + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F068E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F0640 + + thumb_func_start MOD16_021F0690 +MOD16_021F0690: ; 0x021F0690 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r1, r0] + tst r0, r6 + bne _021F06DE + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F06DE: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F0690 + + thumb_func_start MOD16_021F06E0 +MOD16_021F06E0: ; 0x021F06E0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + bge _021F070C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F070C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F06E0 + + thumb_func_start MOD16_021F0710 +MOD16_021F0710: ; 0x021F0710 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + ble _021F073C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F073C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0710 + + thumb_func_start MOD16_021F0740 +MOD16_021F0740: ; 0x021F0740 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + bne _021F076C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F076C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0740 + + thumb_func_start MOD16_021F0770 +MOD16_021F0770: ; 0x021F0770 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, r4 + beq _021F079C + add r0, r5, #0 + bl MOD16_021F2D88 +_021F079C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0770 + + thumb_func_start MOD16_021F07A0 +MOD16_021F07A0: ; 0x021F07A0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + tst r0, r4 + beq _021F07CC + add r0, r5, #0 + bl MOD16_021F2D88 +_021F07CC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F07A0 + + thumb_func_start MOD16_021F07D0 +MOD16_021F07D0: ; 0x021F07D0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + tst r0, r4 + bne _021F07FC + add r0, r5, #0 + bl MOD16_021F2D88 +_021F07FC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F07D0 + + thumb_func_start MOD16_021F0800 +MOD16_021F0800: ; 0x021F0800 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F082C ; =0x00000356 + ldrh r0, [r5, r0] + cmp r0, r4 + bne _021F082A + add r0, r5, #0 + bl MOD16_021F2D88 +_021F082A: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F082C: .word 0x00000356 + thumb_func_end MOD16_021F0800 + + thumb_func_start MOD16_021F0830 +MOD16_021F0830: ; 0x021F0830 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F085C ; =0x00000356 + ldrh r0, [r5, r0] + cmp r0, r4 + beq _021F085A + add r0, r5, #0 + bl MOD16_021F2D88 +_021F085A: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F085C: .word 0x00000356 + thumb_func_end MOD16_021F0830 + + thumb_func_start MOD16_021F0860 +MOD16_021F0860: ; 0x021F0860 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021F08B0 + mov r6, #0xd7 + add r7, r1, #0 + lsl r6, r6, #2 +_021F0892: + ldr r1, [r5, r6] + cmp r1, r0 + bne _021F08A2 + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F08A2: + add r4, r4, #1 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + cmp r0, r7 + bne _021F0892 +_021F08B0: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F0860 + + thumb_func_start MOD16_021F08B4 +MOD16_021F08B4: ; 0x021F08B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021F08FA + mov r6, #0xd7 + add r7, r1, #0 + lsl r6, r6, #2 +_021F08E6: + ldr r1, [r5, r6] + cmp r1, r0 + beq _021F0902 + add r4, r4, #1 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2D74 + cmp r0, r7 + bne _021F08E6 +_021F08FA: + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F0902: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F08B4 + + thumb_func_start MOD16_021F0904 +MOD16_021F0904: ; 0x021F0904 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r1, _021F095C ; =0x000003CF + mov ip, r0 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mov r0, #0 + mul r1, r2 + add r3, r6, r1 + ldr r7, _021F0960 ; =0x00002D4C + add r1, r3, #0 + add r2, r0, #0 +_021F092A: + ldrh r4, [r1, r7] + cmp r4, #0 + beq _021F0942 + ldr r4, _021F0960 ; =0x00002D4C + add r5, r3, r2 + ldrh r4, [r5, r4] + lsl r4, r4, #4 + add r5, r6, r4 + ldr r4, _021F0964 ; =0x000003E1 + ldrb r4, [r5, r4] + cmp r4, #0 + bne _021F094C +_021F0942: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _021F092A +_021F094C: + cmp r0, #4 + bge _021F0958 + add r0, r6, #0 + mov r1, ip + bl MOD16_021F2D88 +_021F0958: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F095C: .word 0x000003CF +_021F0960: .word 0x00002D4C +_021F0964: .word 0x000003E1 + thumb_func_end MOD16_021F0904 + + thumb_func_start MOD16_021F0968 +MOD16_021F0968: ; 0x021F0968 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r1, _021F09C0 ; =0x000003CF + mov ip, r0 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mov r0, #0 + mul r1, r2 + add r3, r6, r1 + ldr r7, _021F09C4 ; =0x00002D4C + add r1, r3, #0 + add r2, r0, #0 +_021F098E: + ldrh r4, [r1, r7] + cmp r4, #0 + beq _021F09A6 + ldr r4, _021F09C4 ; =0x00002D4C + add r5, r3, r2 + ldrh r4, [r5, r4] + lsl r4, r4, #4 + add r5, r6, r4 + ldr r4, _021F09C8 ; =0x000003E1 + ldrb r4, [r5, r4] + cmp r4, #0 + bne _021F09B0 +_021F09A6: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _021F098E +_021F09B0: + cmp r0, #4 + bne _021F09BC + add r0, r6, #0 + mov r1, ip + bl MOD16_021F2D88 +_021F09BC: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F09C0: .word 0x000003CF +_021F09C4: .word 0x00002D4C +_021F09C8: .word 0x000003E1 + thumb_func_end MOD16_021F0968 + + thumb_func_start MOD16_021F09CC +MOD16_021F09CC: ; 0x021F09CC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r4, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F09CC + + thumb_func_start MOD16_021F09E8 +MOD16_021F09E8: ; 0x021F09E8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + cmp r0, #8 + bls _021F0A02 + b _021F0B0C +_021F0A02: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F0A0E: ; jump table + .short _021F0A36 - _021F0A0E - 2 ; case 0 + .short _021F0A20 - _021F0A0E - 2 ; case 1 + .short _021F0A64 - _021F0A0E - 2 ; case 2 + .short _021F0A4E - _021F0A0E - 2 ; case 3 + .short _021F0A7C - _021F0A0E - 2 ; case 4 + .short _021F0AAE - _021F0A0E - 2 ; case 5 + .short _021F0A90 - _021F0A0E - 2 ; case 6 + .short _021F0AEC - _021F0A0E - 2 ; case 7 + .short _021F0ACE - _021F0A0E - 2 ; case 8 +_021F0A20: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A36: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A4E: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r4, #0 + ldrb r1, [r4, r1] + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A64: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0A7C: + ldr r0, _021F0B18 ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x8c + ldrb r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r3, r4, r5, pc} +_021F0A90: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r5, #0 + ldrb r1, [r4, r1] + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0AAE: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r5, #0 + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0ACE: + ldr r1, _021F0B14 ; =0x000003CF + add r0, r5, #0 + ldrb r1, [r4, r1] + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0AEC: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r4, r1] + add r0, r5, #0 + bl FUN_022302BC + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r3, r4, r5, pc} +_021F0B0C: + bl ErrorHandling + pop {r3, r4, r5, pc} + nop +_021F0B14: .word 0x000003CF +_021F0B18: .word 0x00000356 + thumb_func_end MOD16_021F09E8 + + thumb_func_start MOD16_021F0B1C +MOD16_021F0B1C: ; 0x021F0B1C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r4, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r4, r0 + beq _021F0B64 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r4, r0 + bne _021F0B6E +_021F0B64: + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r4, r5, r6, pc} +_021F0B6E: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r4, r5, r6, pc} + thumb_func_end MOD16_021F0B1C + + thumb_func_start MOD16_021F0B78 +MOD16_021F0B78: ; 0x021F0B78 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F0B98 ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x8b + ldrb r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F0B98: .word 0x00000356 + thumb_func_end MOD16_021F0B78 + + thumb_func_start MOD16_021F0B9C +MOD16_021F0B9C: ; 0x021F0B9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r2, _021F0CB8 ; =0x00000356 + str r0, [sp, #0x1c] + ldrh r3, [r6, r2] + add r2, #0x88 + ldr r1, _021F0CBC ; =0x021FF7F4 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F0CC0 ; =0x0000FFFF + mov r0, #0 +_021F0BC6: + ldrh r4, [r1] + cmp r3, r4 + beq _021F0BD6 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F0BC6 +_021F0BD6: + ldr r2, _021F0CC4 ; =0x021FF7DC + ldr r4, _021F0CC0 ; =0x0000FFFF + mov r1, #0 +_021F0BDC: + ldrh r5, [r2] + cmp r3, r5 + beq _021F0BEC + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F0BDC +_021F0BEC: + lsl r2, r1, #1 + ldr r1, _021F0CC4 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F0CC0 ; =0x0000FFFF + cmp r1, r2 + bne _021F0C0C + ldr r1, _021F0CC8 ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F0CAA + lsl r1, r0, #1 + ldr r0, _021F0CBC ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F0CAA +_021F0C0C: + ldr r7, _021F0CCC ; =0x000003CF + mov r4, #0 + add r5, sp, #0x20 +_021F0C12: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F0C12 + ldr r0, _021F0CCC ; =0x000003CF + ldrb r4, [r6, r0] + mov r0, #0xc0 + add r5, r4, #0 + mul r5, r0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x28 + str r1, [sp] + ldr r3, _021F0CD0 ; =0x00002DB8 + add r1, r6, r5 + ldrh r1, [r1, r3] + add r2, r4, #0 + str r1, [sp, #4] + add r1, sp, #0x20 + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc0 + mul r0, r4 + add r1, r6, r0 + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r1, r0] + sub r3, #0x6c + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + add r3, r6, r3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r6, #0 + add r3, r3, r5 + bl MOD16_021F2DE0 + ldr r0, _021F0CD4 ; =0x00000355 + add r1, sp, #0x28 + ldrb r0, [r6, r0] + mov r3, #0 + lsl r0, r0, #2 + ldr r2, [r1, r0] +_021F0C80: + ldr r0, [r1] + cmp r0, r2 + bgt _021F0C8E + add r3, r3, #1 + add r1, r1, #4 + cmp r3, #4 + blt _021F0C80 +_021F0C8E: + cmp r3, #4 + bne _021F0C9E + mov r0, #0xd7 + mov r1, #2 + lsl r0, r0, #2 + add sp, #0x38 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0C9E: + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + add sp, #0x38 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0CAA: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0CB8: .word 0x00000356 +_021F0CBC: .word 0x021FF7F4 +_021F0CC0: .word 0x0000FFFF +_021F0CC4: .word 0x021FF7DC +_021F0CC8: .word 0x000003E1 +_021F0CCC: .word 0x000003CF +_021F0CD0: .word 0x00002DB8 +_021F0CD4: .word 0x00000355 + thumb_func_end MOD16_021F0B9C + + thumb_func_start MOD16_021F0CD8 +MOD16_021F0CD8: ; 0x021F0CD8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _021F0D08 ; =0x0000307C + ldrh r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F0D08: .word 0x0000307C + thumb_func_end MOD16_021F0CD8 + + thumb_func_start MOD16_021F0D0C +MOD16_021F0D0C: ; 0x021F0D0C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r4, r0 + bne _021F0D38 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F0D38: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0D0C + + thumb_func_start MOD16_021F0D3C +MOD16_021F0D3C: ; 0x021F0D3C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r4, r0 + beq _021F0D68 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F0D68: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F0D3C + + thumb_func_start MOD16_021F0D6C +MOD16_021F0D6C: ; 0x021F0D6C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r3, _021F0DAC ; =0x000003CF + add r0, r6, #0 + ldrb r2, [r5, r3] + add r3, r3, #1 + ldrb r3, [r5, r3] + add r1, r5, #0 + bl MOD11_02244248 + cmp r4, r0 + bne _021F0DAA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0DAA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0DAC: .word 0x000003CF + thumb_func_end MOD16_021F0D6C + + thumb_func_start MOD16_021F0DB0 +MOD16_021F0DB0: ; 0x021F0DB0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r3, _021F0DF0 ; =0x000003CF + add r0, r6, #0 + ldrb r2, [r5, r3] + add r3, r3, #1 + ldrb r3, [r5, r3] + add r1, r5, #0 + bl MOD11_02244248 + cmp r4, r0 + beq _021F0DEE + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F0DEE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0DF0: .word 0x000003CF + thumb_func_end MOD16_021F0DB0 + + thumb_func_start MOD16_021F0DF4 +MOD16_021F0DF4: ; 0x021F0DF4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r2, r0, #0 + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + lsl r1, r2, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + str r0, [sp] + ldr r1, [sp] + add r0, r7, #0 + bl FUN_0222FF88 + str r0, [sp, #0xc] + ldr r1, [r7, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F0E4E + ldr r0, [sp] + add r1, r5, r0 + ldr r0, _021F0EC8 ; =0x0000219C + ldrb r0, [r1, r0] + ldr r1, [sp] + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_022302BC + add r1, r5, r0 + ldr r0, _021F0EC8 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _021F0E5A +_021F0E4E: + ldr r0, [sp] + add r1, r5, r0 + ldr r0, _021F0EC8 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + str r0, [sp, #8] +_021F0E5A: + ldr r1, [sp] + add r0, r7, #0 + mov r4, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F0EC4 +_021F0E68: + ldr r0, [sp, #0xc] + add r1, r4, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #8] + add r6, r0, #0 + cmp r4, r1 + beq _021F0EB6 + ldr r1, [sp, #4] + cmp r4, r1 + beq _021F0EB6 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F0EB6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F0EB6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F0ECC ; =0x000001EE + cmp r0, r1 + beq _021F0EB6 + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r0, #1 + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] +_021F0EB6: + ldr r1, [sp] + add r0, r7, #0 + add r4, r4, #1 + bl MOD11_0222FFC8 + cmp r4, r0 + blt _021F0E68 +_021F0EC4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0EC8: .word 0x0000219C +_021F0ECC: .word 0x000001EE + thumb_func_end MOD16_021F0DF4 + + thumb_func_start MOD16_021F0ED0 +MOD16_021F0ED0: ; 0x021F0ED0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F0EE8 ; =0x00000356 + ldrh r1, [r4, r0] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F0EE8: .word 0x00000356 + thumb_func_end MOD16_021F0ED0 + + thumb_func_start MOD16_021F0EEC +MOD16_021F0EEC: ; 0x021F0EEC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F0F0C ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x88 + ldrh r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F0F0C: .word 0x00000356 + thumb_func_end MOD16_021F0EEC + + thumb_func_start MOD16_021F0F10 +MOD16_021F0F10: ; 0x021F0F10 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + lsl r1, r7, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + mov r3, #0xb7 + mov r2, #2 + mov r0, #0xc0 + add r6, r1, #0 + mul r6, r0 + add r0, r5, r6 + lsl r3, r3, #6 + ldr r4, [r0, r3] + lsl r2, r2, #0x14 + tst r2, r4 + beq _021F0F50 + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0F50: + ldr r2, _021F0FE4 ; =0x000003CF + ldrb r4, [r5, r2] + cmp r4, r1 + beq _021F0FD6 + cmp r7, #3 + beq _021F0FD6 + add r4, r5, r1 + add r1, r2, #0 + sub r1, #0x3f + ldrb r1, [r4, r1] + cmp r1, #0 + beq _021F0F6E + sub r2, #0x73 + str r1, [r5, r2] + pop {r3, r4, r5, r6, r7, pc} +_021F0F6E: + add r1, r3, #0 + sub r1, #0x59 + ldrb r1, [r0, r1] + cmp r1, #0x17 + beq _021F0F80 + cmp r1, #0x2a + beq _021F0F80 + cmp r1, #0x47 + bne _021F0F88 +_021F0F80: + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0F88: + sub r3, #0x80 + add r7, r5, r3 + ldrh r0, [r7, r6] + mov r1, #0x18 + bl FUN_02068678 + add r4, r0, #0 + ldrh r0, [r7, r6] + mov r1, #0x19 + bl FUN_02068678 + add r6, r0, #0 + cmp r4, #0 + beq _021F0FC2 + cmp r6, #0 + beq _021F0FC2 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F0FBA + mov r0, #0xd7 + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FBA: + mov r0, #0xd7 + lsl r0, r0, #2 + str r6, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FC2: + cmp r4, #0 + beq _021F0FCE + mov r0, #0xd7 + lsl r0, r0, #2 + str r4, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FCE: + mov r0, #0xd7 + lsl r0, r0, #2 + str r6, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F0FD6: + ldr r0, _021F0FE8 ; =0x00002D67 + add r1, r5, r6 + ldrb r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F0FE4: .word 0x000003CF +_021F0FE8: .word 0x00002D67 + thumb_func_end MOD16_021F0F10 + + thumb_func_start MOD16_021F0FEC +MOD16_021F0FEC: ; 0x021F0FEC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + mov r2, #2 + mov ip, r1 + add r6, r5, r1 + mov r1, #0xb7 + lsl r1, r1, #6 + ldr r3, [r6, r1] + lsl r2, r2, #0x14 + tst r2, r3 + beq _021F102C + mov r4, #0 + b _021F1098 +_021F102C: + cmp r4, #0 + beq _021F1034 + cmp r4, #2 + bne _021F1094 +_021F1034: + mov r1, #0x39 + add r2, r5, r0 + lsl r1, r1, #4 + ldrb r4, [r2, r1] + cmp r4, #0 + beq _021F1046 + sub r1, #0x34 + str r4, [r5, r1] + b _021F1098 +_021F1046: + mov r1, ip + add r2, r5, r1 + ldr r1, _021F10C0 ; =0x00002D67 + ldrb r4, [r2, r1] + cmp r4, #0x17 + beq _021F1098 + cmp r4, #0x2a + beq _021F1098 + cmp r4, #0x47 + beq _021F1098 + sub r1, #0x27 + add r6, r5, r1 + mov r1, #0xc0 + mul r1, r0 + ldrh r0, [r6, r1] + str r1, [sp] + mov r1, #0x18 + bl FUN_02068678 + add r4, r0, #0 + ldr r0, [sp] + mov r1, #0x19 + ldrh r0, [r6, r0] + bl FUN_02068678 + cmp r4, #0 + beq _021F108C + cmp r0, #0 + beq _021F108C + cmp r4, r7 + beq _021F1088 + cmp r0, r7 + bne _021F1098 +_021F1088: + mov r4, #0 + b _021F1098 +_021F108C: + cmp r4, #0 + bne _021F1098 + add r4, r0, #0 + b _021F1098 +_021F1094: + sub r1, #0x59 + ldrb r4, [r6, r1] +_021F1098: + cmp r4, #0 + bne _021F10A6 + mov r0, #0xd7 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F10A6: + cmp r4, r7 + bne _021F10B4 + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F10B4: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + nop +_021F10C0: .word 0x00002D67 + thumb_func_end MOD16_021F0FEC + + thumb_func_start MOD16_021F10C4 +MOD16_021F10C4: ; 0x021F10C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [sp, #0x10] + str r0, [r5, r1] + add r4, r0, #0 +_021F10E0: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, _021F116C ; =0x000003CF + ldrb r2, [r5, r0] + mov r0, #0xc0 + mul r0, r2 + add r0, r5, r0 + add r1, r4, r0 + ldr r0, _021F1170 ; =0x00002D4C + ldrh r6, [r1, r0] + add r0, r7, #0 + add r1, r5, #0 + add r3, r6, #0 + bl MOD16_021F32DC + add r3, r0, #0 + cmp r6, #0 + beq _021F115C + ldr r0, _021F116C ; =0x000003CF + add r1, r5, #0 + ldrb r0, [r5, r0] + add r2, r6, #0 + str r0, [sp] + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r5, r0] + str r0, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + add r0, sp, #0x14 + str r0, [sp, #0xc] + add r0, r7, #0 + bl MOD11_02246274 + cmp r0, #0x78 + bne _021F112C + mov r0, #0x50 + b _021F1142 +_021F112C: + cmp r0, #0xf0 + bne _021F1134 + mov r0, #0xa0 + b _021F1142 +_021F1134: + cmp r0, #0x1e + bne _021F113C + mov r0, #0x14 + b _021F1142 +_021F113C: + cmp r0, #0xf + bne _021F1142 + mov r0, #0xa +_021F1142: + ldr r2, [sp, #0x14] + ldr r1, _021F1174 ; =0x00140808 + tst r1, r2 + beq _021F114C + mov r0, #0 +_021F114C: + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r1, [r5, r1] + cmp r1, r0 + bhs _021F115C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r5, r1] +_021F115C: + ldr r0, [sp, #0x10] + add r4, r4, #2 + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #4 + blt _021F10E0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F116C: .word 0x000003CF +_021F1170: .word 0x00002D4C +_021F1174: .word 0x00140808 + thumb_func_end MOD16_021F10C4 + + thumb_func_start MOD16_021F1178 +MOD16_021F1178: ; 0x021F1178 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r3, _021F1208 ; =0x000003CF + add r0, r5, #0 + ldrb r6, [r4, r3] + sub r3, #0x79 + ldrh r3, [r4, r3] + add r1, r4, #0 + add r2, r6, #0 + bl MOD16_021F32DC + mov r2, #0x3d + str r6, [sp] + lsl r2, r2, #4 + add r3, r0, #0 + ldrb r0, [r4, r2] + sub r2, #0x7a + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x28 + str r0, [sp, #8] + add r0, sp, #0x14 + str r0, [sp, #0xc] + ldrh r2, [r4, r2] + add r0, r5, #0 + bl MOD11_02246274 + cmp r0, #0x78 + bne _021F11D6 + mov r0, #0x50 + b _021F11EC +_021F11D6: + cmp r0, #0xf0 + bne _021F11DE + mov r0, #0xa0 + b _021F11EC +_021F11DE: + cmp r0, #0x1e + bne _021F11E6 + mov r0, #0x14 + b _021F11EC +_021F11E6: + cmp r0, #0xf + bne _021F11EC + mov r0, #0xa +_021F11EC: + ldr r2, [sp, #0x14] + ldr r1, _021F120C ; =0x00140808 + tst r1, r2 + beq _021F11F6 + mov r0, #0 +_021F11F6: + cmp r0, r7 + bne _021F1202 + ldr r1, [sp, #0x10] + add r0, r4, #0 + bl MOD16_021F2D88 +_021F1202: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1208: .word 0x000003CF +_021F120C: .word 0x00140808 + thumb_func_end MOD16_021F1178 + + thumb_func_start MOD16_021F1210 +MOD16_021F1210: ; 0x021F1210 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0x10] + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0xc] + lsl r1, r4, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + ldr r1, [r7, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F126A + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F12FC ; =0x0000219C + ldrb r0, [r1, r0] + add r1, r6, #0 + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_022302BC + ldr r1, [sp] + add r1, r1, r0 + ldr r0, _021F12FC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _021F1276 +_021F126A: + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F12FC ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + str r0, [sp, #8] +_021F1276: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_0222FF88 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r6, #0 + mov r5, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F12F8 +_021F128E: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #8] + add r4, r0, #0 + cmp r5, r1 + beq _021F12EA + ldr r1, [sp, #4] + cmp r5, r1 + beq _021F12EA + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F12EA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F12EA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F1300 ; =0x000001EE + cmp r0, r1 + beq _021F12EA + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x10] + tst r0, r1 + beq _021F12EA + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD16_021F2D88 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021F12EA: + add r0, r7, #0 + add r1, r6, #0 + add r5, r5, #1 + bl MOD11_0222FFC8 + cmp r5, r0 + blt _021F128E +_021F12F8: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F12FC: .word 0x0000219C +_021F1300: .word 0x000001EE + thumb_func_end MOD16_021F1210 + + thumb_func_start MOD16_021F1304 +MOD16_021F1304: ; 0x021F1304 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0x10] + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #0xc] + lsl r1, r4, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + ldr r1, [r7, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F135E + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F13F0 ; =0x0000219C + ldrb r0, [r1, r0] + add r1, r6, #0 + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_022302BC + ldr r1, [sp] + add r1, r1, r0 + ldr r0, _021F13F0 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + b _021F136A +_021F135E: + ldr r0, [sp] + add r1, r0, r6 + ldr r0, _021F13F0 ; =0x0000219C + ldrb r0, [r1, r0] + str r0, [sp, #4] + str r0, [sp, #8] +_021F136A: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_0222FF88 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r6, #0 + mov r5, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F13EC +_021F1382: + ldr r0, [sp, #0x14] + add r1, r5, #0 + bl FUN_0206B9B0 + ldr r1, [sp, #8] + add r4, r0, #0 + cmp r5, r1 + beq _021F13DE + ldr r1, [sp, #4] + cmp r5, r1 + beq _021F13DE + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F13DE + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F13DE + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F13F4 ; =0x000001EE + cmp r0, r1 + beq _021F13DE + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x10] + tst r0, r1 + bne _021F13DE + ldr r0, [sp] + ldr r1, [sp, #0xc] + bl MOD16_021F2D88 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021F13DE: + add r0, r7, #0 + add r1, r6, #0 + add r5, r5, #1 + bl MOD11_0222FFC8 + cmp r5, r0 + blt _021F1382 +_021F13EC: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F13F0: .word 0x0000219C +_021F13F4: .word 0x000001EE + thumb_func_end MOD16_021F1304 + + thumb_func_start MOD16_021F13F8 +MOD16_021F13F8: ; 0x021F13F8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #6 + lsl r1, r1, #6 + ldr r2, [r4, r1] + mov r1, #3 + tst r1, r2 + beq _021F141C + mov r1, #2 + str r1, [r4, r0] +_021F141C: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xc + tst r0, r1 + beq _021F1430 + mov r0, #0xd7 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F1430: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x30 + tst r0, r1 + beq _021F1444 + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F1444: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0xc0 + tst r0, r1 + beq _021F1458 + mov r0, #0xd7 + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F1458: + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r1 + beq _021F146E + mov r0, #0xd7 + mov r1, #5 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F146E: + pop {r4, pc} + thumb_func_end MOD16_021F13F8 + + thumb_func_start MOD16_021F1470 +MOD16_021F1470: ; 0x021F1470 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F14A4 ; =0x00000356 + ldrh r2, [r5, r0] + add r0, #0x88 + lsl r2, r2, #4 + add r2, r5, r2 + ldrh r0, [r2, r0] + cmp r4, r0 + bne _021F14A2 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F14A2: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F14A4: .word 0x00000356 + thumb_func_end MOD16_021F1470 + + thumb_func_start MOD16_021F14A8 +MOD16_021F14A8: ; 0x021F14A8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + ldr r0, _021F14DC ; =0x00000356 + ldrh r2, [r5, r0] + add r0, #0x88 + lsl r2, r2, #4 + add r2, r5, r2 + ldrh r0, [r2, r0] + cmp r4, r0 + beq _021F14DA + add r0, r5, #0 + bl MOD16_021F2D88 +_021F14DA: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F14DC: .word 0x00000356 + thumb_func_end MOD16_021F14A8 + + thumb_func_start MOD16_021F14E0 +MOD16_021F14E0: ; 0x021F14E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F1530 ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r0, r7 + bge _021F152E + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F152E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1530: .word 0x00002D58 + thumb_func_end MOD16_021F14E0 + + thumb_func_start MOD16_021F1534 +MOD16_021F1534: ; 0x021F1534 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F1584 ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r0, r7 + ble _021F1582 + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F1582: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1584: .word 0x00002D58 + thumb_func_end MOD16_021F1534 + + thumb_func_start MOD16_021F1588 +MOD16_021F1588: ; 0x021F1588 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F15D8 ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r7, r0 + bne _021F15D6 + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F15D6: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F15D8: .word 0x00002D58 + thumb_func_end MOD16_021F1588 + + thumb_func_start MOD16_021F15DC +MOD16_021F15DC: ; 0x021F15DC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r7, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + str r0, [sp] + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + add r1, r0, r6 + ldr r0, _021F162C ; =0x00002D58 + ldrsb r0, [r1, r0] + cmp r7, r0 + beq _021F162A + ldr r1, [sp] + add r0, r5, #0 + bl MOD16_021F2D88 +_021F162A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F162C: .word 0x00002D58 + thumb_func_end MOD16_021F15DC + + thumb_func_start MOD16_021F1630 +MOD16_021F1630: ; 0x021F1630 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r6, r1, #0 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x1c] + cmp r4, #1 + bne _021F1662 + ldr r0, _021F1738 ; =0x00000355 + ldrb r1, [r6, r0] + add r0, #0x17 + add r1, r6, r1 + ldrb r0, [r1, r0] + str r0, [sp, #0x18] + b _021F1666 +_021F1662: + mov r0, #0x64 + str r0, [sp, #0x18] +_021F1666: + ldr r2, _021F173C ; =0x00000356 + ldr r1, _021F1740 ; =0x021FF7F4 + ldrh r3, [r6, r2] + add r2, #0x88 + mov r0, #0 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F1744 ; =0x0000FFFF +_021F1678: + ldrh r4, [r1] + cmp r3, r4 + beq _021F1688 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F1678 +_021F1688: + ldr r2, _021F1748 ; =0x021FF7DC + ldr r4, _021F1744 ; =0x0000FFFF + mov r1, #0 +_021F168E: + ldrh r5, [r2] + cmp r3, r5 + beq _021F169E + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F168E +_021F169E: + lsl r2, r1, #1 + ldr r1, _021F1748 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F1744 ; =0x0000FFFF + cmp r1, r2 + bne _021F16BE + ldr r1, _021F174C ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F1734 + lsl r1, r0, #1 + ldr r0, _021F1740 ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F1734 +_021F16BE: + ldr r7, _021F1750 ; =0x000003CF + mov r4, #0 + add r5, sp, #0x20 +_021F16C4: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F16C4 + ldr r0, _021F1750 ; =0x000003CF + ldrb r4, [r6, r0] + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x20 + str r1, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc0 + mul r0, r4 + ldr r3, _021F1754 ; =0x00002DCC + add r4, r6, r0 + ldr r0, [r4, r3] + ldr r2, _021F173C ; =0x00000356 + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + sub r3, #0x14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldrh r2, [r6, r2] + ldrh r3, [r4, r3] + ldr r0, [sp, #0x14] + add r1, r6, #0 + bl MOD16_021F2EE8 + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mul r1, r2 + add r2, r6, r1 + ldr r1, _021F1758 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, r0 + bhi _021F1734 + ldr r1, [sp, #0x1c] + add r0, r6, #0 + bl MOD16_021F2D88 +_021F1734: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1738: .word 0x00000355 +_021F173C: .word 0x00000356 +_021F1740: .word 0x021FF7F4 +_021F1744: .word 0x0000FFFF +_021F1748: .word 0x021FF7DC +_021F174C: .word 0x000003E1 +_021F1750: .word 0x000003CF +_021F1754: .word 0x00002DCC +_021F1758: .word 0x00002D8C + thumb_func_end MOD16_021F1630 + + thumb_func_start MOD16_021F175C +MOD16_021F175C: ; 0x021F175C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r6, r1, #0 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x1c] + cmp r4, #1 + bne _021F178E + ldr r0, _021F1864 ; =0x00000355 + ldrb r1, [r6, r0] + add r0, #0x17 + add r1, r6, r1 + ldrb r0, [r1, r0] + str r0, [sp, #0x18] + b _021F1792 +_021F178E: + mov r0, #0x64 + str r0, [sp, #0x18] +_021F1792: + ldr r2, _021F1868 ; =0x00000356 + ldr r1, _021F186C ; =0x021FF7F4 + ldrh r3, [r6, r2] + add r2, #0x88 + mov r0, #0 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F1870 ; =0x0000FFFF +_021F17A4: + ldrh r4, [r1] + cmp r3, r4 + beq _021F17B4 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F17A4 +_021F17B4: + ldr r2, _021F1874 ; =0x021FF7DC + ldr r4, _021F1870 ; =0x0000FFFF + mov r1, #0 +_021F17BA: + ldrh r5, [r2] + cmp r3, r5 + beq _021F17CA + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F17BA +_021F17CA: + lsl r2, r1, #1 + ldr r1, _021F1874 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F1870 ; =0x0000FFFF + cmp r1, r2 + bne _021F17EA + ldr r1, _021F1878 ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F1860 + lsl r1, r0, #1 + ldr r0, _021F186C ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F1860 +_021F17EA: + ldr r7, _021F187C ; =0x000003CF + mov r4, #0 + add r5, sp, #0x20 +_021F17F0: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F17F0 + ldr r0, _021F187C ; =0x000003CF + ldrb r4, [r6, r0] + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x20 + str r1, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, #0xc0 + mul r0, r4 + ldr r3, _021F1880 ; =0x00002DCC + add r4, r6, r0 + ldr r0, [r4, r3] + ldr r2, _021F1868 ; =0x00000356 + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + sub r3, #0x14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldrh r2, [r6, r2] + ldrh r3, [r4, r3] + ldr r0, [sp, #0x14] + add r1, r6, #0 + bl MOD16_021F2EE8 + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r2, [r6, r1] + mov r1, #0xc0 + mul r1, r2 + add r2, r6, r1 + ldr r1, _021F1884 ; =0x00002D8C + ldr r1, [r2, r1] + cmp r1, r0 + bls _021F1860 + ldr r1, [sp, #0x1c] + add r0, r6, #0 + bl MOD16_021F2D88 +_021F1860: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1864: .word 0x00000355 +_021F1868: .word 0x00000356 +_021F186C: .word 0x021FF7F4 +_021F1870: .word 0x0000FFFF +_021F1874: .word 0x021FF7DC +_021F1878: .word 0x000003E1 +_021F187C: .word 0x000003CF +_021F1880: .word 0x00002DCC +_021F1884: .word 0x00002D8C + thumb_func_end MOD16_021F175C + + thumb_func_start MOD16_021F1888 +MOD16_021F1888: ; 0x021F1888 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F1918 + cmp r6, #1 + beq _021F18C4 + cmp r6, #3 + beq _021F18EA + pop {r3, r4, r5, r6, r7, pc} +_021F18C4: + mov r2, #0xc0 + mul r2, r0 + ldr r0, _021F1940 ; =0x00002D4C + mov r1, #0 + add r3, r5, r2 +_021F18CE: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F18DC + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F18CE +_021F18DC: + cmp r1, #4 + bge _021F193C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F18EA: + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + ldr r1, _021F1944 ; =0x00002D8C + ldr r1, [r0, r1] + cmp r1, #0 + beq _021F193C + ldr r1, _021F1940 ; =0x00002D4C + mov r3, #0 +_021F18FC: + ldrh r2, [r0, r1] + cmp r4, r2 + beq _021F190A + add r3, r3, #1 + add r0, r0, #2 + cmp r3, #4 + blt _021F18FC +_021F190A: + cmp r3, #4 + bge _021F193C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1918: + lsl r0, r0, #3 + add r3, r5, r0 + mov r0, #0x37 + mov r1, #0 + lsl r0, r0, #4 +_021F1922: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F1930 + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F1922 +_021F1930: + cmp r1, #4 + bge _021F193C + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F193C: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1940: .word 0x00002D4C +_021F1944: .word 0x00002D8C + thumb_func_end MOD16_021F1888 + + thumb_func_start MOD16_021F1948 +MOD16_021F1948: ; 0x021F1948 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F19D8 + cmp r6, #1 + beq _021F1984 + cmp r6, #3 + beq _021F19AA + pop {r3, r4, r5, r6, r7, pc} +_021F1984: + mov r2, #0xc0 + mul r2, r0 + ldr r0, _021F1A00 ; =0x00002D4C + mov r1, #0 + add r3, r5, r2 +_021F198E: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F199C + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F198E +_021F199C: + cmp r1, #4 + bne _021F19FC + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F19AA: + mov r1, #0xc0 + mul r1, r0 + add r0, r5, r1 + ldr r1, _021F1A04 ; =0x00002D8C + ldr r1, [r0, r1] + cmp r1, #0 + beq _021F19FC + ldr r1, _021F1A00 ; =0x00002D4C + mov r3, #0 +_021F19BC: + ldrh r2, [r0, r1] + cmp r4, r2 + beq _021F19CA + add r3, r3, #1 + add r0, r0, #2 + cmp r3, #4 + blt _021F19BC +_021F19CA: + cmp r3, #4 + bne _021F19FC + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F19D8: + lsl r0, r0, #3 + add r3, r5, r0 + mov r0, #0x37 + mov r1, #0 + lsl r0, r0, #4 +_021F19E2: + ldrh r2, [r3, r0] + cmp r4, r2 + beq _021F19F0 + add r1, r1, #1 + add r3, r3, #2 + cmp r1, #4 + blt _021F19E2 +_021F19F0: + cmp r1, #4 + bne _021F19FC + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F19FC: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1A00: .word 0x00002D4C +_021F1A04: .word 0x00002D8C + thumb_func_end MOD16_021F1948 + + thumb_func_start MOD16_021F1A08 +MOD16_021F1A08: ; 0x021F1A08 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F1A70 + cmp r6, #1 + bne _021F1AA0 + mov r2, #0xc0 + mul r2, r0 + add r0, r5, r2 + ldr r2, _021F1AA4 ; =0x000003DE + ldr r3, _021F1AA8 ; =0x00002D4C + mov r1, #0 +_021F1A4A: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1A5A + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1A62 +_021F1A5A: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1A4A +_021F1A62: + cmp r1, #4 + bge _021F1AA0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1A70: + ldr r2, _021F1AA4 ; =0x000003DE + lsl r0, r0, #3 + add r3, r2, #0 + mov r1, #0 + add r0, r5, r0 + sub r3, #0x6e +_021F1A7C: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1A8C + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1A94 +_021F1A8C: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1A7C +_021F1A94: + cmp r1, #4 + bge _021F1AA0 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1AA0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1AA4: .word 0x000003DE +_021F1AA8: .word 0x00002D4C + thumb_func_end MOD16_021F1A08 + + thumb_func_start MOD16_021F1AAC +MOD16_021F1AAC: ; 0x021F1AAC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r6, #0 + beq _021F1B14 + cmp r6, #1 + bne _021F1B44 + mov r2, #0xc0 + mul r2, r0 + add r0, r5, r2 + ldr r2, _021F1B48 ; =0x000003DE + ldr r3, _021F1B4C ; =0x00002D4C + mov r1, #0 +_021F1AEE: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1AFE + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1B06 +_021F1AFE: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1AEE +_021F1B06: + cmp r1, #4 + bne _021F1B44 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1B14: + ldr r2, _021F1B48 ; =0x000003DE + lsl r0, r0, #3 + add r3, r2, #0 + mov r1, #0 + add r0, r5, r0 + sub r3, #0x6e +_021F1B20: + ldrh r6, [r0, r3] + cmp r6, #0 + beq _021F1B30 + lsl r6, r6, #4 + add r6, r5, r6 + ldrh r6, [r6, r2] + cmp r4, r6 + beq _021F1B38 +_021F1B30: + add r1, r1, #1 + add r0, r0, #2 + cmp r1, #4 + blt _021F1B20 +_021F1B38: + cmp r1, #4 + bne _021F1B44 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1B44: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1B48: .word 0x000003DE +_021F1B4C: .word 0x00002D4C + thumb_func_end MOD16_021F1AAC + + thumb_func_start MOD16_021F1B50 +MOD16_021F1B50: ; 0x021F1B50 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + cmp r4, #0 + beq _021F1B88 + cmp r4, #1 + beq _021F1BA2 + pop {r3, r4, r5, r6, r7, pc} +_021F1B88: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F1BBC ; =0x00002DC8 + add r1, r5, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + beq _021F1BBA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, r6, r7, pc} +_021F1BA2: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F1BBC ; =0x00002DC8 + add r1, r5, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1d + beq _021F1BBA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1BBA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1BBC: .word 0x00002DC8 + thumb_func_end MOD16_021F1B50 + + thumb_func_start MOD16_021F1BC0 +MOD16_021F1BC0: ; 0x021F1BC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + cmp r5, #0 + beq _021F1BE6 + cmp r5, #1 + beq _021F1C04 + pop {r3, r4, r5, pc} +_021F1BE6: + ldr r2, _021F1C24 ; =0x00000356 + ldrh r0, [r4, r2] + add r2, #0x79 + ldrb r3, [r4, r2] + mov r2, #0xc0 + mul r2, r3 + add r3, r4, r2 + ldr r2, _021F1C28 ; =0x00002DE8 + ldrh r2, [r3, r2] + cmp r0, r2 + bne _021F1C20 + add r0, r4, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, pc} +_021F1C04: + ldr r2, _021F1C24 ; =0x00000356 + ldrh r0, [r4, r2] + add r2, #0x79 + ldrb r3, [r4, r2] + mov r2, #0xc0 + mul r2, r3 + add r3, r4, r2 + ldr r2, _021F1C2C ; =0x00002DEC + ldrh r2, [r3, r2] + cmp r0, r2 + bne _021F1C20 + add r0, r4, #0 + bl MOD16_021F2D88 +_021F1C20: + pop {r3, r4, r5, pc} + nop +_021F1C24: .word 0x00000356 +_021F1C28: .word 0x00002DE8 +_021F1C2C: .word 0x00002DEC + thumb_func_end MOD16_021F1BC0 + + thumb_func_start MOD16_021F1C30 +MOD16_021F1C30: ; 0x021F1C30 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd9 + lsl r1, r1, #2 + ldrb r2, [r4, r1] + mov r0, #0xb + orr r0, r2 + strb r0, [r4, r1] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F1C30 + + thumb_func_start MOD16_021F1C4C +MOD16_021F1C4C: ; 0x021F1C4C + bx lr + .align 2, 0 + thumb_func_end MOD16_021F1C4C + + thumb_func_start MOD16_021F1C50 +MOD16_021F1C50: ; 0x021F1C50 + bx lr + .align 2, 0 + thumb_func_end MOD16_021F1C50 + + thumb_func_start MOD16_021F1C54 +MOD16_021F1C54: ; 0x021F1C54 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F1C84 ; =0x00002DB8 + add r1, r4, r1 + ldrh r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F1C84: .word 0x00002DB8 + thumb_func_end MOD16_021F1C54 + + thumb_func_start MOD16_021F1C88 +MOD16_021F1C88: ; 0x021F1C88 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + ldr r1, _021F1CE4 ; =0x000003CF + add r2, r0, #0 + ldrb r0, [r4, r1] + cmp r0, r2 + beq _021F1CC8 + lsl r2, r2, #1 + add r2, r4, r2 + sub r1, #0x3b + ldrh r1, [r2, r1] + add r0, r4, #0 + mov r2, #1 + bl MOD11_0224C12C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} +_021F1CC8: + mov r1, #0xc0 + mul r1, r2 + add r2, r4, r1 + ldr r1, _021F1CE8 ; =0x00002DB8 + add r0, r4, #0 + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD11_0224C12C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_021F1CE4: .word 0x000003CF +_021F1CE8: .word 0x00002DB8 + thumb_func_end MOD16_021F1C88 + + thumb_func_start MOD16_021F1CEC +MOD16_021F1CEC: ; 0x021F1CEC + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + ldr r0, _021F1D4C ; =0x000003CF + mov r1, #1 + add r3, r6, #0 + ldrb r2, [r5, r0] + and r3, r1 + and r1, r2 + cmp r3, r1 + bne _021F1D36 + mov r0, #0xc0 + mul r0, r6 + add r1, r5, r0 + ldr r0, _021F1D50 ; =0x00002DB8 + b _021F1D3C +_021F1D36: + lsl r1, r6, #1 + add r1, r5, r1 + sub r0, #0x3b +_021F1D3C: + ldrh r0, [r1, r0] + cmp r0, r4 + bne _021F1D4A + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1D4A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1D4C: .word 0x000003CF +_021F1D50: .word 0x00002DB8 + thumb_func_end MOD16_021F1CEC + + thumb_func_start MOD16_021F1D54 +MOD16_021F1D54: ; 0x021F1D54 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + tst r0, r4 + beq _021F1D80 + add r0, r5, #0 + bl MOD16_021F2D88 +_021F1D80: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD16_021F1D54 + + thumb_func_start MOD16_021F1D84 +MOD16_021F1D84: ; 0x021F1D84 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r4, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r7, #0 + bl MOD11_02230270 + cmp r4, #4 + beq _021F1DC2 + mov r1, #1 + lsl r1, r1, #0xa + cmp r4, r1 + beq _021F1DD8 + pop {r3, r4, r5, r6, r7, pc} +_021F1DC2: + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r0, r0, #0x1e + lsr r1, r0, #0x1e + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F1DD8: + lsl r0, r0, #3 + add r2, r5, r0 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r2, r0] + sub r1, #0xa4 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1e + str r0, [r5, r1] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F1D84 + + thumb_func_start MOD16_021F1DEC +MOD16_021F1DEC: ; 0x021F1DEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp] + bl MOD16_021F2D54 + str r0, [sp, #8] + lsl r1, r4, #0x18 + ldr r0, [sp] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r4, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F1E74 + ldr r0, [sp] + add r0, r0, r6 + str r0, [sp, #4] +_021F1E2C: + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_02230014 + ldr r2, [sp, #4] + ldr r1, _021F1E78 ; =0x0000219C + str r0, [sp, #0xc] + ldrb r1, [r2, r1] + cmp r4, r1 + beq _021F1E66 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + cmp r7, r0 + beq _021F1E66 + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD16_021F2D88 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021F1E66: + add r0, r5, #0 + add r1, r6, #0 + add r4, r4, #1 + bl MOD11_0222FFC8 + cmp r4, r0 + blt _021F1E2C +_021F1E74: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F1E78: .word 0x0000219C + thumb_func_end MOD16_021F1DEC + + thumb_func_start MOD16_021F1E7C +MOD16_021F1E7C: ; 0x021F1E7C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp, #4] + bl MOD16_021F2D54 + add r4, r0, #0 + ldr r0, [sp, #4] + bl MOD16_021F2D54 + str r0, [sp, #0x10] + lsl r1, r4, #0x18 + ldr r0, [sp, #4] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + str r0, [sp, #8] + ldr r0, [sp] + ldr r1, [sp, #8] + mov r7, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F1F16 + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0xc] +_021F1EBE: + ldr r0, [sp] + ldr r1, [sp, #8] + add r2, r7, #0 + bl FUN_02230014 + add r5, r0, #0 + ldr r1, [sp, #0xc] + ldr r0, _021F1F1C ; =0x0000219C + ldrb r0, [r1, r0] + cmp r7, r0 + beq _021F1F08 + mov r4, #0 +_021F1ED6: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + cmp r6, r0 + beq _021F1EFE + ldr r0, [sp, #4] + ldr r1, [sp, #0x10] + bl MOD16_021F2D88 + b _021F1F04 +_021F1EFE: + add r4, r4, #1 + cmp r4, #4 + blt _021F1ED6 +_021F1F04: + cmp r4, #4 + bne _021F1F16 +_021F1F08: + ldr r0, [sp] + ldr r1, [sp, #8] + add r7, r7, #1 + bl MOD11_0222FFC8 + cmp r7, r0 + blt _021F1EBE +_021F1F16: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021F1F1C: .word 0x0000219C + thumb_func_end MOD16_021F1E7C + + thumb_func_start MOD16_021F1F20 +MOD16_021F1F20: ; 0x021F1F20 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02249E58 + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F1F20 + + thumb_func_start MOD16_021F1F50 +MOD16_021F1F50: ; 0x021F1F50 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r1, _021F1F78 ; =0x000003CF + mov r0, #0xc0 + ldrb r2, [r4, r1] + mul r0, r2 + add r2, r4, r0 + add r0, r1, #0 + sub r0, #0x7a + ldrb r0, [r4, r0] + sub r1, #0x73 + add r2, r2, r0 + ldr r0, _021F1F7C ; =0x00002D6C + ldrb r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_021F1F78: .word 0x000003CF +_021F1F7C: .word 0x00002D6C + thumb_func_end MOD16_021F1F50 + + thumb_func_start MOD16_021F1F80 +MOD16_021F1F80: ; 0x021F1F80 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r5, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D54 + lsl r1, r5, #0x18 + add r7, r0, #0 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r5, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD11_022473F8 + mov r1, #0xc0 + mul r1, r5 + add r2, r4, r1 + ldr r1, _021F1FD8 ; =0x00002DCC + ldr r1, [r2, r1] + lsl r1, r1, #0x13 + lsr r2, r1, #0x1d + sub r1, r0, #1 + cmp r2, r1 + blo _021F1FD4 + cmp r0, #1 + ble _021F1FD4 + add r0, r4, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F1FD4: + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1FD8: .word 0x00002DCC + thumb_func_end MOD16_021F1F80 + + thumb_func_start MOD16_021F1FDC +MOD16_021F1FDC: ; 0x021F1FDC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, _021F1FFC ; =0x00000356 + ldrh r1, [r4, r0] + lsl r1, r1, #4 + add r2, r4, r1 + add r1, r0, #0 + add r1, #0x8a + ldrb r1, [r2, r1] + add r0, r0, #6 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F1FFC: .word 0x00000356 + thumb_func_end MOD16_021F1FDC + + thumb_func_start MOD16_021F2000 +MOD16_021F2000: ; 0x021F2000 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r0, [r4, r1] + lsl r0, r0, #1 + add r2, r4, r0 + ldr r0, _021F202C ; =0x0000307C + ldrh r0, [r2, r0] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x10 + ldrb r0, [r2, r0] + sub r1, #0x74 + str r0, [r4, r1] + pop {r4, pc} + nop +_021F202C: .word 0x0000307C + thumb_func_end MOD16_021F2000 + + thumb_func_start MOD16_021F2030 +MOD16_021F2030: ; 0x021F2030 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp, #8] + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + ldr r0, [sp, #8] + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + str r0, [sp, #0x10] + ldr r0, [sp, #4] + bl MOD11_0222FF84 + mov r1, #0 + str r0, [sp, #0x14] + cmp r0, #0 + ble _021F206E + add r2, sp, #0x24 +_021F2064: + ldr r0, [sp, #0x14] + stmia r2!, {r1} + add r1, r1, #1 + cmp r1, r0 + blt _021F2064 +_021F206E: + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #0 + ble _021F20C8 + add r6, sp, #0x24 + str r6, [sp, #0x20] +_021F2080: + ldr r0, [sp, #0xc] + add r7, r0, #1 + ldr r0, [sp, #0x14] + cmp r7, r0 + bge _021F20BA + ldr r0, [sp, #0x20] + lsl r1, r7, #2 + add r5, r0, r1 +_021F2090: + ldr r0, [r6] + ldr r4, [r5] + str r0, [sp, #0x18] + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0x18] + add r3, r4, #0 + bl MOD11_02244248 + cmp r0, #0 + beq _021F20B0 + ldr r0, [sp, #0x18] + str r4, [r6] + str r0, [r5] +_021F20B0: + ldr r0, [sp, #0x14] + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r0 + blt _021F2090 +_021F20BA: + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021F2080 +_021F20C8: + ldr r1, [sp, #0x14] + mov r0, #0 + cmp r1, #0 + ble _021F20F0 + add r3, sp, #0x24 +_021F20D2: + ldr r2, [r3] + ldr r1, [sp, #0x10] + cmp r1, r2 + bne _021F20E6 + mov r2, #0xd7 + ldr r1, [sp, #8] + lsl r2, r2, #2 + str r0, [r1, r2] + add sp, #0x34 + pop {r4, r5, r6, r7, pc} +_021F20E6: + ldr r1, [sp, #0x14] + add r0, r0, #1 + add r3, r3, #4 + cmp r0, r1 + blt _021F20D2 +_021F20F0: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD16_021F2030 + + thumb_func_start MOD16_021F20F4 +MOD16_021F20F4: ; 0x021F20F4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r2, [r4, r1] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F212C ; =0x00002DD4 + add r1, r4, r1 + ldr r0, [r1, r0] + sub r1, r2, r0 + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F212C: .word 0x00002DD4 + thumb_func_end MOD16_021F20F4 + + thumb_func_start MOD16_021F2130 +MOD16_021F2130: ; 0x021F2130 + push {r4, r5, r6, r7, lr} + sub sp, #0x54 + str r0, [sp, #0x18] + str r1, [sp, #0x1c] + add r0, r1, #0 + mov r1, #1 + bl MOD16_021F2D88 + ldr r0, [sp, #0x1c] + bl MOD16_021F2D54 + str r0, [sp, #0x30] + ldr r0, [sp, #0x1c] + bl MOD16_021F2D54 + str r0, [sp, #0x2c] + mov r4, #0 + ldr r1, _021F22B4 ; =0x000003CF + ldr r0, [sp, #0x1c] + add r5, sp, #0x34 + ldrb r0, [r0, r1] + add r6, r4, #0 + str r0, [sp, #0x28] +_021F215E: + add r2, r4, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x28] + add r2, #0xa + add r3, r6, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F215E + ldr r0, [sp, #0x28] + mov r1, #0xc0 + add r4, r0, #0 + mul r4, r1 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x28] + bl MOD11_02246D1C + add r1, sp, #0x44 + str r1, [sp] + ldr r1, [sp, #0x1c] + ldr r3, _021F22B8 ; =0x00002DB8 + add r2, r1, r4 + ldrh r1, [r2, r3] + ldr r5, _021F22B4 ; =0x000003CF + str r1, [sp, #4] + add r1, sp, #0x34 + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r2, r0] + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + add r2, r1, #0 + str r0, [sp, #0x14] + ldrb r2, [r2, r5] + sub r3, #0x6c + add r5, r1, #0 + add r3, r5, r3 + ldr r0, [sp, #0x18] + add r3, r3, r4 + bl MOD16_021F2DE0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + mov r7, #0 + bl MOD11_0222FFC8 + cmp r0, #0 + ble _021F22AE + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x20] +_021F21D8: + ldr r1, _021F22BC ; =0x0000219C + ldr r0, [sp, #0x20] + ldrb r0, [r0, r1] + cmp r7, r0 + beq _021F22A0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + add r2, r7, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F22A0 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F22A0 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F22C0 ; =0x000001EE + cmp r0, r1 + beq _021F22A0 + add r5, sp, #0x38 + mov r4, #0 + add r5, #2 +_021F221E: + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #4 + blt _021F221E + mov r5, #0 + add r4, sp, #0x34 +_021F2238: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x46 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4] + add r5, r5, #1 + add r4, r4, #1 + cmp r5, #6 + blt _021F2238 + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x44 + str r1, [sp] + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #4] + add r1, sp, #0x34 + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x14] + ldr r3, _021F22B4 ; =0x000003CF + add r2, r1, #0 + ldrb r2, [r2, r3] + add r3, sp, #0x38 + ldr r0, [sp, #0x18] + add r3, #2 + bl MOD16_021F2DE0 + ldr r1, [sp, #0x24] + cmp r0, r1 + ble _021F22A0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x2c] + bl MOD16_021F2D88 + add sp, #0x54 + pop {r4, r5, r6, r7, pc} +_021F22A0: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + add r7, r7, #1 + bl MOD11_0222FFC8 + cmp r7, r0 + blt _021F21D8 +_021F22AE: + add sp, #0x54 + pop {r4, r5, r6, r7, pc} + nop +_021F22B4: .word 0x000003CF +_021F22B8: .word 0x00002DB8 +_021F22BC: .word 0x0000219C +_021F22C0: .word 0x000001EE + thumb_func_end MOD16_021F2130 + + thumb_func_start MOD16_021F22C4 +MOD16_021F22C4: ; 0x021F22C4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + ldr r2, _021F22F8 ; =0x000003CF + add r6, r0, #0 + ldrb r2, [r4, r2] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #1 + bl MOD16_021F3D3C + cmp r0, #1 + bne _021F22F4 + add r0, r4, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F22F4: + pop {r4, r5, r6, pc} + nop +_021F22F8: .word 0x000003CF + thumb_func_end MOD16_021F22C4 + + thumb_func_start MOD16_021F22FC +MOD16_021F22FC: ; 0x021F22FC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x28] + add r0, r6, #0 + bl MOD16_021F2D54 + str r0, [sp, #0x24] + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r7, _021F2400 ; =0x000003CF + str r0, [sp, #0x20] + mov r4, #0 + add r5, sp, #0x2c +_021F232A: + ldrb r1, [r6, r7] + add r2, r4, #0 + add r0, r6, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F232A + ldr r0, _021F2400 ; =0x000003CF + ldrb r4, [r6, r0] + mov r0, #0xc0 + add r5, r4, #0 + mul r5, r0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x34 + str r1, [sp] + ldr r3, _021F2404 ; =0x00002DB8 + add r1, r6, r5 + ldrh r1, [r1, r3] + add r2, r4, #0 + str r1, [sp, #4] + add r1, sp, #0x2c + str r1, [sp, #8] + str r0, [sp, #0xc] + mov r0, #0xc0 + mul r0, r4 + add r1, r6, r0 + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r1, r0] + sub r3, #0x6c + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x24] + add r3, r6, r3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r6, #0 + add r3, r3, r5 + bl MOD16_021F2DE0 + ldr r1, [sp, #0x28] + str r0, [sp, #0x1c] + lsl r1, r1, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r4, r0, #0 + ldr r0, [sp, #0x24] + cmp r0, #1 + bne _021F23AE + ldr r0, _021F2408 ; =0x00000355 + ldrb r1, [r6, r0] + add r0, #0x17 + add r1, r6, r1 + ldrb r5, [r1, r0] + b _021F23B0 +_021F23AE: + mov r5, #0x64 +_021F23B0: + mov r0, #0xc0 + add r7, r4, #0 + mul r7, r0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD11_02246D1C + add r1, sp, #0x2c + str r1, [sp] + str r4, [sp, #4] + lsl r2, r4, #1 + add r4, r6, r2 + ldr r3, _021F240C ; =0x00002DCC + add r7, r6, r7 + str r0, [sp, #8] + ldr r0, [r7, r3] + ldr r2, _021F2410 ; =0x0000307C + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + sub r3, #0x14 + ldrh r2, [r4, r2] + ldrh r3, [r7, r3] + ldr r0, [sp, #0x18] + add r1, r6, #0 + bl MOD16_021F2EE8 + ldr r1, [sp, #0x1c] + cmp r0, r1 + ble _021F23FA + ldr r1, [sp, #0x20] + add r0, r6, #0 + bl MOD16_021F2D88 +_021F23FA: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021F2400: .word 0x000003CF +_021F2404: .word 0x00002DB8 +_021F2408: .word 0x00000355 +_021F240C: .word 0x00002DCC +_021F2410: .word 0x0000307C + thumb_func_end MOD16_021F22FC + + thumb_func_start MOD16_021F2414 +MOD16_021F2414: ; 0x021F2414 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r2, #0xd7 + mov r3, #0xd7 + mov r1, #0 + lsl r2, r2, #2 + str r1, [r4, r2] + mov r2, #0xc0 + mul r2, r0 + add r0, r4, r2 + ldr r2, _021F2460 ; =0x00002D58 + lsl r3, r3, #2 +_021F2446: + ldrsb r5, [r0, r2] + cmp r5, #6 + ble _021F2454 + ldr r6, [r4, r3] + sub r5, r5, #6 + add r5, r6, r5 + str r5, [r4, r3] +_021F2454: + add r1, r1, #1 + add r0, r0, #1 + cmp r1, #8 + blt _021F2446 + pop {r4, r5, r6, pc} + nop +_021F2460: .word 0x00002D58 + thumb_func_end MOD16_021F2414 + + thumb_func_start MOD16_021F2464 +MOD16_021F2464: ; 0x021F2464 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r6, #0x18 + add r4, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + ldr r3, _021F24AC ; =0x000003CF + mov r1, #0xc0 + ldrb r6, [r5, r3] + add r2, r0, #0 + mul r2, r1 + add r0, r5, r2 + mul r1, r6 + add r1, r5, r1 + ldr r2, _021F24B0 ; =0x00002D58 + add r0, r0, r4 + add r1, r1, r4 + ldrsb r0, [r0, r2] + ldrsb r1, [r1, r2] + sub r3, #0x73 + sub r0, r0, r1 + str r0, [r5, r3] + pop {r4, r5, r6, pc} + .align 2, 0 +_021F24AC: .word 0x000003CF +_021F24B0: .word 0x00002D58 + thumb_func_end MOD16_021F2464 + + thumb_func_start MOD16_021F24B4 +MOD16_021F24B4: ; 0x021F24B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + str r6, [sp] + add r0, r5, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD16_021F25B0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + bge _021F2502 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F2502: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F24B4 + + thumb_func_start MOD16_021F2508 +MOD16_021F2508: ; 0x021F2508 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + str r6, [sp] + add r0, r5, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD16_021F25B0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + ble _021F2556 + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F2556: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F2508 + + thumb_func_start MOD16_021F255C +MOD16_021F255C: ; 0x021F255C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r7, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + str r6, [sp] + add r0, r5, #0 + add r2, sp, #8 + add r3, sp, #4 + bl MOD16_021F25B0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + bne _021F25AA + add r0, r5, #0 + add r1, r7, #0 + bl MOD16_021F2D88 +_021F25AA: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD16_021F255C + + thumb_func_start MOD16_021F25B0 +MOD16_021F25B0: ; 0x021F25B0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r1, r3, #0 + ldr r3, [sp, #0x10] + cmp r3, #5 + bhi _021F2688 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_021F25C8: ; jump table + .short _021F25D4 - _021F25C8 - 2 ; case 0 + .short _021F25F2 - _021F25C8 - 2 ; case 1 + .short _021F2610 - _021F25C8 - 2 ; case 2 + .short _021F266A - _021F25C8 - 2 ; case 3 + .short _021F262E - _021F25C8 - 2 ; case 4 + .short _021F264C - _021F25C8 - 2 ; case 5 +_021F25D4: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F2694 ; =0x00002D8C + add r6, r0, r6 + ldr r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldr r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F25F2: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F2698 ; =0x00002D42 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F2610: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F269C ; =0x00002D44 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F262E: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F26A0 ; =0x00002D48 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F264C: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F26A4 ; =0x00002D4A + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F266A: + ldr r3, _021F2690 ; =0x000003CF + ldrb r5, [r0, r3] + mov r3, #0xc0 + add r6, r5, #0 + mul r6, r3 + ldr r5, _021F26A8 ; =0x00002D46 + add r6, r0, r6 + ldrh r6, [r6, r5] + str r6, [r2] + add r2, r4, #0 + mul r2, r3 + add r0, r0, r2 + ldrh r0, [r0, r5] + str r0, [r1] + pop {r4, r5, r6, pc} +_021F2688: + bl ErrorHandling + pop {r4, r5, r6, pc} + nop +_021F2690: .word 0x000003CF +_021F2694: .word 0x00002D8C +_021F2698: .word 0x00002D42 +_021F269C: .word 0x00002D44 +_021F26A0: .word 0x00002D48 +_021F26A4: .word 0x00002D4A +_021F26A8: .word 0x00002D46 + thumb_func_end MOD16_021F25B0 + + thumb_func_start MOD16_021F26AC +MOD16_021F26AC: ; 0x021F26AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r6, #0 + bl MOD16_021F2D54 + ldr r2, _021F27E8 ; =0x00000356 + str r0, [sp, #0x20] + ldrh r3, [r6, r2] + add r2, #0x88 + ldr r1, _021F27EC ; =0x021FF7F4 + lsl r7, r3, #4 + add r3, r6, r7 + ldrh r3, [r3, r2] + ldr r2, _021F27F0 ; =0x0000FFFF + mov r0, #0 +_021F26D6: + ldrh r4, [r1] + cmp r3, r4 + beq _021F26E6 + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F26D6 +_021F26E6: + ldr r2, _021F27F4 ; =0x021FF7DC + ldr r4, _021F27F0 ; =0x0000FFFF + mov r1, #0 +_021F26EC: + ldrh r5, [r2] + cmp r3, r5 + beq _021F26FC + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F26EC +_021F26FC: + lsl r2, r1, #1 + ldr r1, _021F27F4 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F27F0 ; =0x0000FFFF + cmp r1, r2 + bne _021F271C + ldr r1, _021F27F8 ; =0x000003E1 + add r3, r6, r7 + ldrb r1, [r3, r1] + cmp r1, #1 + bls _021F27DA + lsl r1, r0, #1 + ldr r0, _021F27EC ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F27DA +_021F271C: + ldr r0, _021F27FC ; =0x000003CF + ldrb r7, [r6, r0] + mov r0, #0 + str r0, [sp, #0x1c] +_021F2724: + mov r4, #0 + add r5, sp, #0x28 +_021F2728: + add r2, r4, #0 + add r0, r6, #0 + add r1, r7, #0 + add r2, #0xa + mov r3, #0 + bl MOD11_02243420 + strb r0, [r5] + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #6 + blt _021F2728 + mov r0, #0xc0 + add r4, r7, #0 + mul r4, r0 + add r0, r6, #0 + add r1, r7, #0 + bl MOD11_02246D1C + add r1, sp, #0x30 + str r1, [sp] + ldr r3, _021F2800 ; =0x00002DB8 + add r1, r6, r4 + ldrh r2, [r1, r3] + str r2, [sp, #4] + add r2, sp, #0x28 + str r2, [sp, #8] + str r0, [sp, #0xc] + add r0, r3, #0 + add r0, #0x14 + ldr r0, [r1, r0] + sub r3, #0x6c + lsl r0, r0, #0xa + lsr r0, r0, #0x1d + str r0, [sp, #0x10] + ldr r0, [sp, #0x20] + add r3, r6, r3 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r1, r6, #0 + add r2, r7, #0 + add r3, r3, r4 + bl MOD16_021F2DE0 + ldr r1, _021F27FC ; =0x000003CF + ldr r0, [sp, #0x18] + ldrb r1, [r6, r1] + bl FUN_022302BC + add r7, r0, #0 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _021F279E + ldr r0, _021F2804 ; =0x00000355 + ldrb r0, [r6, r0] + lsl r1, r0, #2 + add r0, sp, #0x30 + ldr r0, [r0, r1] + str r0, [sp, #0x24] +_021F279E: + mov r3, #0 + add r2, sp, #0x30 +_021F27A2: + ldr r1, [r2] + ldr r0, [sp, #0x24] + cmp r1, r0 + bgt _021F27B2 + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _021F27A2 +_021F27B2: + cmp r3, #4 + bne _021F27C0 + mov r0, #0xd7 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r6, r0] + b _021F27CC +_021F27C0: + mov r0, #0xd7 + mov r1, #1 + lsl r0, r0, #2 + add sp, #0x40 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F27CC: + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #2 + blt _021F2724 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} +_021F27DA: + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F27E8: .word 0x00000356 +_021F27EC: .word 0x021FF7F4 +_021F27F0: .word 0x0000FFFF +_021F27F4: .word 0x021FF7DC +_021F27F8: .word 0x000003E1 +_021F27FC: .word 0x000003CF +_021F2800: .word 0x00002DB8 +_021F2804: .word 0x00000355 + thumb_func_end MOD16_021F26AC + + thumb_func_start MOD16_021F2808 +MOD16_021F2808: ; 0x021F2808 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + cmp r4, #1 + bne _021F282C + bl ErrorHandling +_021F282C: + cmp r4, #0 + bne _021F2834 + bl ErrorHandling +_021F2834: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + bl FUN_0206A92C + ldr r1, _021F2854 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + beq _021F2852 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F2852: + pop {r4, r5, r6, pc} + .align 2, 0 +_021F2854: .word 0x00003108 + thumb_func_end MOD16_021F2808 + + thumb_func_start MOD16_021F2858 +MOD16_021F2858: ; 0x021F2858 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r6, r0, #0 + cmp r4, #1 + bne _021F287C + bl ErrorHandling +_021F287C: + cmp r4, #0 + bne _021F2884 + bl ErrorHandling +_021F2884: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + bl FUN_0206A92C + ldr r1, _021F28A4 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _021F28A2 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F28A2: + pop {r4, r5, r6, pc} + .align 2, 0 +_021F28A4: .word 0x00003108 + thumb_func_end MOD16_021F2858 + + thumb_func_start MOD16_021F28A8 +MOD16_021F28A8: ; 0x021F28A8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F28DC ; =0x00002DBE + add r1, r4, r1 + ldrb r0, [r1, r0] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F28DC: .word 0x00002DBE + thumb_func_end MOD16_021F28A8 + + thumb_func_start MOD16_021F28E0 +MOD16_021F28E0: ; 0x021F28E0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r2, r0, #0 + mov r1, #0xc0 + mul r2, r1 + ldr r0, _021F2928 ; =0x00002DD4 + add r2, r4, r2 + add r1, #0x90 + ldr r2, [r2, r0] + ldr r0, [r4, r1] + cmp r2, r0 + bge _021F291C + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} +_021F291C: + mov r1, #1 + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F2928: .word 0x00002DD4 + thumb_func_end MOD16_021F28E0 + + thumb_func_start MOD16_021F292C +MOD16_021F292C: ; 0x021F292C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F2960 ; =0x00002DC8 + add r1, r4, r1 + ldr r0, [r1, r0] + lsl r0, r0, #8 + lsr r1, r0, #0x1d + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021F2960: .word 0x00002DC8 + thumb_func_end MOD16_021F292C + + thumb_func_start MOD16_021F2964 +MOD16_021F2964: ; 0x021F2964 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r0, #0xd7 + ldr r1, [r5, #0x2c] + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021F2964 + + thumb_func_start MOD16_021F297C +MOD16_021F297C: ; 0x021F297C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + lsl r0, r0, #1 + add r1, r4, r0 + ldr r0, _021F29AC ; =0x00003124 + ldrh r1, [r1, r0] + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F29AC: .word 0x00003124 + thumb_func_end MOD16_021F297C + + thumb_func_start MOD16_021F29B0 +MOD16_021F29B0: ; 0x021F29B0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r0, [r4, r1] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x86 + ldrb r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD16_021F29B0 + + thumb_func_start MOD16_021F29D0 +MOD16_021F29D0: ; 0x021F29D0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r0, [r4, r1] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x85 + ldrb r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD16_021F29D0 + + thumb_func_start MOD16_021F29F0 +MOD16_021F29F0: ; 0x021F29F0 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + mov r1, #0xd7 + lsl r1, r1, #2 + ldr r0, [r4, r1] + lsl r0, r0, #4 + add r2, r4, r0 + add r0, r1, #0 + add r0, #0x82 + ldrh r0, [r2, r0] + str r0, [r4, r1] + pop {r4, pc} + thumb_func_end MOD16_021F29F0 + + thumb_func_start MOD16_021F2A10 +MOD16_021F2A10: ; 0x021F2A10 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + lsl r1, r0, #1 + add r2, r4, r1 + ldr r1, _021F2A64 ; =0x0000305C + ldrh r1, [r2, r1] + cmp r1, #0xb6 + beq _021F2A4C + cmp r1, #0xc5 + beq _021F2A4C + cmp r1, #0xcb + beq _021F2A4C + mov r0, #0xd7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} +_021F2A4C: + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F2A68 ; =0x00002DC8 + add r1, r4, r1 + ldr r0, [r1, r0] + lsl r0, r0, #0x13 + lsr r1, r0, #0x1e + mov r0, #0xd7 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + nop +_021F2A64: .word 0x0000305C +_021F2A68: .word 0x00002DC8 + thumb_func_end MOD16_021F2A10 + + thumb_func_start MOD16_021F2A6C +MOD16_021F2A6C: ; 0x021F2A6C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2C8C + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021F2A6C + + thumb_func_start MOD16_021F2A8C +MOD16_021F2A8C: ; 0x021F2A8C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + add r0, r4, #0 + bl MOD16_021F2D88 + pop {r4, pc} + thumb_func_end MOD16_021F2A8C + + thumb_func_start MOD16_021F2AA8 +MOD16_021F2AA8: ; 0x021F2AA8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + add r1, r4, #0 + bl MOD16_021F2CC4 + cmp r0, #1 + beq _021F2ACE + mov r1, #0xd9 + lsl r1, r1, #2 + ldrb r2, [r4, r1] + mov r0, #1 + orr r0, r2 + strb r0, [r4, r1] +_021F2ACE: + pop {r3, r4, r5, pc} + thumb_func_end MOD16_021F2AA8 + + thumb_func_start MOD16_021F2AD0 +MOD16_021F2AD0: ; 0x021F2AD0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + cmp r4, #0 + beq _021F2AFA + cmp r4, #1 + beq _021F2B20 + cmp r4, #2 + beq _021F2B46 + pop {r3, r4, r5, pc} +_021F2AFA: + ldr r2, _021F2B6C ; =0x000003CF + mov r3, #0xc0 + ldrb r0, [r5, r2] + add r2, r2, #1 + ldrb r2, [r5, r2] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + ldr r4, _021F2B70 ; =0x00002D74 + mul r3, r2 + add r2, r5, r3 + ldrb r0, [r0, r4] + ldrb r2, [r2, r4] + cmp r0, r2 + bls _021F2B6A + add r0, r5, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, pc} +_021F2B20: + ldr r2, _021F2B6C ; =0x000003CF + mov r3, #0xc0 + ldrb r0, [r5, r2] + add r2, r2, #1 + ldrb r2, [r5, r2] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + ldr r4, _021F2B70 ; =0x00002D74 + mul r3, r2 + add r2, r5, r3 + ldrb r0, [r0, r4] + ldrb r2, [r2, r4] + cmp r0, r2 + bhs _021F2B6A + add r0, r5, #0 + bl MOD16_021F2D88 + pop {r3, r4, r5, pc} +_021F2B46: + ldr r2, _021F2B6C ; =0x000003CF + mov r3, #0xc0 + ldrb r0, [r5, r2] + add r2, r2, #1 + ldrb r2, [r5, r2] + add r4, r0, #0 + mul r4, r3 + add r0, r5, r4 + ldr r4, _021F2B70 ; =0x00002D74 + mul r3, r2 + add r2, r5, r3 + ldrb r0, [r0, r4] + ldrb r2, [r2, r4] + cmp r0, r2 + bne _021F2B6A + add r0, r5, #0 + bl MOD16_021F2D88 +_021F2B6A: + pop {r3, r4, r5, pc} + .align 2, 0 +_021F2B6C: .word 0x000003CF +_021F2B70: .word 0x00002D74 + thumb_func_end MOD16_021F2AD0 + + thumb_func_start MOD16_021F2B74 +MOD16_021F2B74: ; 0x021F2B74 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r2, [r4, r0] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _021F2BA8 ; =0x00002DC8 + ldr r0, [r2, r0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + beq _021F2BA4 + add r0, r4, #0 + bl MOD16_021F2D88 +_021F2BA4: + pop {r4, pc} + nop +_021F2BA8: .word 0x00002DC8 + thumb_func_end MOD16_021F2B74 + + thumb_func_start MOD16_021F2BAC +MOD16_021F2BAC: ; 0x021F2BAC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r2, [r4, r0] + mov r0, #0xc0 + mul r0, r2 + add r2, r4, r0 + ldr r0, _021F2BE0 ; =0x00002DC8 + ldr r0, [r2, r0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1d + bne _021F2BDC + add r0, r4, #0 + bl MOD16_021F2D88 +_021F2BDC: + pop {r4, pc} + nop +_021F2BE0: .word 0x00002DC8 + thumb_func_end MOD16_021F2BAC + + thumb_func_start MOD16_021F2BE4 +MOD16_021F2BE4: ; 0x021F2BE4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + ldr r2, _021F2C14 ; =0x000003CF + add r1, r0, #0 + ldrb r0, [r4, r2] + add r2, r2, #1 + mov r3, #1 + ldrb r2, [r4, r2] + and r0, r3 + and r2, r3 + cmp r0, r2 + bne _021F2C10 + add r0, r4, #0 + bl MOD16_021F2D88 +_021F2C10: + pop {r4, pc} + nop +_021F2C14: .word 0x000003CF + thumb_func_end MOD16_021F2BE4 + + thumb_func_start MOD16_021F2C18 +MOD16_021F2C18: ; 0x021F2C18 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r5, #0 + bl MOD16_021F2D54 + add r4, r0, #0 + add r0, r5, #0 + bl MOD16_021F2D54 + lsl r1, r4, #0x18 + add r6, r0, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F2C58 ; =0x00002DC8 + add r1, r5, r1 + ldr r0, [r1, r0] + lsr r0, r0, #0x1f + beq _021F2C54 + add r0, r5, #0 + add r1, r6, #0 + bl MOD16_021F2D88 +_021F2C54: + pop {r4, r5, r6, pc} + nop +_021F2C58: .word 0x00002DC8 + thumb_func_end MOD16_021F2C18 + + thumb_func_start MOD16_021F2C5C +MOD16_021F2C5C: ; 0x021F2C5C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD16_021F2D88 + add r0, r4, #0 + bl MOD16_021F2D54 + add r1, r0, #0 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl MOD16_021F2D98 + add r1, r0, #0 + add r0, r4, #0 + bl MOD11_02246D1C + mov r1, #0xd7 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD16_021F2C5C + + thumb_func_start MOD16_021F2C8C +MOD16_021F2C8C: ; 0x021F2C8C + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0xf3 + lsl r1, r1, #2 + ldrb r5, [r4, r1] + add r0, r5, #1 + strb r0, [r4, r1] + ldr r0, _021F2CC0 ; =0x00002138 + sub r1, #0x20 + ldr r3, [r4, r0] + lsl r0, r5, #2 + add r0, r4, r0 + str r3, [r0, r1] + add r0, r4, #0 + add r1, r2, #0 + bl MOD16_021F2D88 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #8 + bls _021F2CBC + bl ErrorHandling +_021F2CBC: + pop {r3, r4, r5, pc} + nop +_021F2CC0: .word 0x00002138 + thumb_func_end MOD16_021F2C8C + + thumb_func_start MOD16_021F2CC4 +MOD16_021F2CC4: ; 0x021F2CC4 + mov r0, #0xf3 + lsl r0, r0, #2 + ldrb r2, [r1, r0] + cmp r2, #0 + beq _021F2CE4 + sub r2, r2, #1 + strb r2, [r1, r0] + ldrb r2, [r1, r0] + sub r0, #0x20 + lsl r2, r2, #2 + add r2, r1, r2 + ldr r2, [r2, r0] + ldr r0, _021F2CE8 ; =0x00002138 + str r2, [r1, r0] + mov r0, #1 + bx lr +_021F2CE4: + mov r0, #0 + bx lr + .align 2, 0 +_021F2CE8: .word 0x00002138 + thumb_func_end MOD16_021F2CC4 + + thumb_func_start MOD16_021F2CEC +MOD16_021F2CEC: ; 0x021F2CEC + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x3d + lsl r2, r2, #4 + str r1, [sp] + ldrb r1, [r1, r2] + mov r7, #0x37 + lsl r7, r7, #4 + mov lr, r1 + mov r3, lr + lsl r4, r3, #1 + ldr r3, [sp] + ldr r2, [sp] + lsl r1, r1, #3 + add r4, r3, r4 + ldr r3, _021F2D50 ; =0x0000307C + mov r0, #0 + add r5, r2, r1 + mov ip, r1 + ldrh r3, [r4, r3] + add r1, r5, #0 + add r2, r0, #0 + add r6, r7, #0 +_021F2D18: + ldrh r4, [r1, r6] + cmp r3, r4 + beq _021F2D4E + add r4, r5, r2 + ldrh r4, [r4, r7] + cmp r4, #0 + bne _021F2D44 + mov r1, lr + lsl r2, r1, #1 + ldr r1, [sp] + ldr r3, [sp] + add r2, r1, r2 + ldr r1, _021F2D50 ; =0x0000307C + lsl r0, r0, #1 + ldrh r1, [r2, r1] + mov r2, ip + add r2, r3, r2 + add r2, r2, r0 + mov r0, #0x37 + lsl r0, r0, #4 + strh r1, [r2, r0] + pop {r3, r4, r5, r6, r7, pc} +_021F2D44: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _021F2D18 +_021F2D4E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F2D50: .word 0x0000307C + thumb_func_end MOD16_021F2CEC + + thumb_func_start MOD16_021F2D54 +MOD16_021F2D54: ; 0x021F2D54 + ldr r1, _021F2D70 ; =0x00002134 + add r2, r1, #4 + ldr r2, [r0, r2] + ldr r3, [r0, r1] + lsl r2, r2, #2 + ldr r3, [r3, r2] + add r2, r1, #4 + ldr r2, [r0, r2] + add r1, r1, #4 + add r2, r2, #1 + str r2, [r0, r1] + add r0, r3, #0 + bx lr + nop +_021F2D70: .word 0x00002134 + thumb_func_end MOD16_021F2D54 + + thumb_func_start MOD16_021F2D74 +MOD16_021F2D74: ; 0x021F2D74 + ldr r2, _021F2D84 ; =0x00002134 + ldr r3, [r0, r2] + add r2, r2, #4 + ldr r0, [r0, r2] + add r0, r0, r1 + lsl r0, r0, #2 + ldr r0, [r3, r0] + bx lr + .align 2, 0 +_021F2D84: .word 0x00002134 + thumb_func_end MOD16_021F2D74 + + thumb_func_start MOD16_021F2D88 +MOD16_021F2D88: ; 0x021F2D88 + ldr r2, _021F2D94 ; =0x00002138 + ldr r3, [r0, r2] + add r1, r3, r1 + str r1, [r0, r2] + bx lr + nop +_021F2D94: .word 0x00002138 + thumb_func_end MOD16_021F2D88 + + thumb_func_start MOD16_021F2D98 +MOD16_021F2D98: ; 0x021F2D98 + cmp r1, #3 + bhi _021F2DB6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021F2DA8: ; jump table + .short _021F2DB6 - _021F2DA8 - 2 ; case 0 + .short _021F2DB0 - _021F2DA8 - 2 ; case 1 + .short _021F2DCC - _021F2DA8 - 2 ; case 2 + .short _021F2DBE - _021F2DA8 - 2 ; case 3 +_021F2DB0: + ldr r1, _021F2DDC ; =0x000003CF + ldrb r0, [r0, r1] + bx lr +_021F2DB6: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r0, [r0, r1] + bx lr +_021F2DBE: + ldr r1, _021F2DDC ; =0x000003CF + ldrb r1, [r0, r1] + mov r0, #2 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021F2DCC: + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r0, r1] + mov r0, #2 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .align 2, 0 +_021F2DDC: .word 0x000003CF + thumb_func_end MOD16_021F2D98 + + thumb_func_start MOD16_021F2DE0 +MOD16_021F2DE0: ; 0x021F2DE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp, #0x14] + ldr r0, [sp, #0x44] + ldr r6, [sp, #0x40] + str r0, [sp, #0x44] + ldr r0, [sp, #0x48] + add r7, r1, #0 + str r0, [sp, #0x48] + ldr r0, [sp, #0x4c] + str r2, [sp, #0x18] + str r0, [sp, #0x4c] + ldr r0, [sp, #0x50] + str r3, [sp, #0x1c] + str r0, [sp, #0x50] + ldr r0, [sp, #0x54] + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x28] +_021F2E08: + ldr r2, [sp, #0x1c] + ldr r3, _021F2ED4 ; =0x000003DE + ldrh r2, [r2] + ldr r1, _021F2ED8 ; =0x021FF7F4 + mov r0, #0 + mov ip, r2 + lsl r2, r2, #4 + add r2, r7, r2 + ldrh r3, [r2, r3] + str r2, [sp, #0x20] + ldr r2, _021F2EDC ; =0x0000FFFF +_021F2E1E: + ldrh r4, [r1] + cmp r4, r3 + beq _021F2E2E + add r1, r1, #2 + ldrh r4, [r1] + add r0, r0, #1 + cmp r4, r2 + bne _021F2E1E +_021F2E2E: + ldr r2, _021F2EE0 ; =0x021FF7DC + ldr r4, _021F2EDC ; =0x0000FFFF + mov r1, #0 +_021F2E34: + ldrh r5, [r2] + cmp r5, r3 + beq _021F2E44 + add r2, r2, #2 + ldrh r5, [r2] + add r1, r1, #1 + cmp r5, r4 + bne _021F2E34 +_021F2E44: + lsl r2, r1, #1 + ldr r1, _021F2EE0 ; =0x021FF7DC + ldrh r1, [r1, r2] + ldr r2, _021F2EDC ; =0x0000FFFF + cmp r1, r2 + bne _021F2E6A + mov r1, ip + cmp r1, #0 + beq _021F2EA0 + lsl r1, r0, #1 + ldr r0, _021F2ED8 ; =0x021FF7F4 + ldrh r0, [r0, r1] + cmp r0, r2 + bne _021F2EA0 + ldr r1, _021F2EE4 ; =0x000003E1 + ldr r0, [sp, #0x20] + ldrb r0, [r0, r1] + cmp r0, #1 + bls _021F2EA0 +_021F2E6A: + ldr r0, [sp, #0x54] + cmp r0, #1 + bne _021F2E7C + ldr r0, [sp, #0x28] + add r1, r7, r0 + mov r0, #0xdb + lsl r0, r0, #2 + ldrb r0, [r1, r0] + b _021F2E7E +_021F2E7C: + mov r0, #0x64 +_021F2E7E: + ldr r1, [sp, #0x48] + mov r2, ip + str r1, [sp] + ldr r1, [sp, #0x18] + str r1, [sp, #4] + ldr r1, [sp, #0x4c] + str r1, [sp, #8] + ldr r1, [sp, #0x50] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x44] + add r1, r7, #0 + bl MOD16_021F2EE8 + str r0, [r6] + b _021F2EA4 +_021F2EA0: + mov r0, #0 + str r0, [r6] +_021F2EA4: + ldr r0, [sp, #0x1c] + add r6, r6, #4 + add r0, r0, #2 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #4 + blt _021F2E08 + ldr r2, [sp, #0x40] + mov r3, #0 +_021F2EBA: + ldr r1, [r2] + ldr r0, [sp, #0x24] + cmp r0, r1 + bge _021F2EC4 + str r1, [sp, #0x24] +_021F2EC4: + add r3, r3, #1 + add r2, r2, #4 + cmp r3, #4 + blt _021F2EBA + ldr r0, [sp, #0x24] + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021F2ED4: .word 0x000003DE +_021F2ED8: .word 0x021FF7F4 +_021F2EDC: .word 0x0000FFFF +_021F2EE0: .word 0x021FF7DC +_021F2EE4: .word 0x000003E1 + thumb_func_end MOD16_021F2DE0 + + thumb_func_start MOD16_021F2EE8 +MOD16_021F2EE8: ; 0x021F2EE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r6, r1, #0 + ldr r1, [sp, #0x60] + str r3, [sp, #0x1c] + str r1, [sp, #0x60] + ldr r1, [sp, #0x64] + str r0, [sp, #0x18] + str r1, [sp, #0x64] + mov r1, #0x3d + lsl r1, r1, #4 + ldrb r1, [r6, r1] + add r5, r2, #0 + bl MOD11_02230270 + mov r4, #0 + str r0, [sp, #0x28] + add r0, r4, #0 + add r7, r4, #0 + str r4, [sp, #0x20] + str r0, [sp, #0x48] + cmp r5, #0xd8 + bgt _021F2F4E + blt _021F2F1A + b _021F3156 +_021F2F1A: + cmp r5, #0x52 + bgt _021F2F3C + blt _021F2F22 + b _021F311C +_021F2F22: + cmp r5, #0x31 + bgt _021F2F2C + bne _021F2F2A + b _021F31CE +_021F2F2A: + b _021F3210 +_021F2F2C: + cmp r5, #0x45 + bgt _021F2F3A + cmp r5, #0x43 + blt _021F2F3A + beq _021F2F84 + cmp r5, #0x45 + beq _021F2F42 +_021F2F3A: + b _021F3210 +_021F2F3C: + cmp r5, #0x65 + bgt _021F2F46 + bne _021F2F44 +_021F2F42: + b _021F3122 +_021F2F44: + b _021F3210 +_021F2F46: + cmp r5, #0x95 + bne _021F2F4C + b _021F3132 +_021F2F4C: + b _021F3210 +_021F2F4E: + mov r0, #0x5a + lsl r0, r0, #2 + cmp r5, r0 + bgt _021F2F74 + blt _021F2F5A + b _021F30F2 +_021F2F5A: + cmp r5, #0xde + bgt _021F2F6E + cmp r5, #0xda + blt _021F2F6C + bne _021F2F66 + b _021F3170 +_021F2F66: + cmp r5, #0xde + bne _021F2F6C + b _021F318E +_021F2F6C: + b _021F3210 +_021F2F6E: + cmp r5, #0xed + beq _021F304C + b _021F3210 +_021F2F74: + add r1, r0, #0 + add r1, #0x57 + cmp r5, r1 + bgt _021F2F8E + add r1, r0, #0 + add r1, #0x57 + cmp r5, r1 + blt _021F2F86 +_021F2F84: + b _021F31D4 +_021F2F86: + add r0, r0, #3 + cmp r5, r0 + beq _021F2F96 + b _021F3210 +_021F2F8E: + add r0, #0x59 + cmp r5, r0 + beq _021F2FBE + b _021F3210 +_021F2F96: + ldr r0, [sp, #0x68] + cmp r0, #0x67 + beq _021F2FCA + ldr r0, [sp, #0x6c] + cmp r0, #0 + bne _021F2FCA + ldr r1, [sp, #0x1c] + add r0, r6, #0 + mov r2, #0xb + bl MOD11_0224C12C + add r4, r0, #0 + beq _021F2FCA + ldr r1, [sp, #0x1c] + add r0, r6, #0 + mov r2, #0xc + bl MOD11_0224C12C + add r7, r0, #0 + b _021F3214 +_021F2FBE: + ldr r0, [sp, #0x68] + cmp r0, #0x67 + beq _021F2FCA + ldr r0, [sp, #0x6c] + cmp r0, #0 + beq _021F2FCC +_021F2FCA: + b _021F3214 +_021F2FCC: + ldr r1, [sp, #0x1c] + add r0, r6, #0 + mov r2, #1 + bl MOD11_0224C12C + sub r0, #0x7d + cmp r0, #0xf + bhi _021F3048 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F2FE8: ; jump table + .short _021F3028 - _021F2FE8 - 2 ; case 0 + .short _021F302C - _021F2FE8 - 2 ; case 1 + .short _021F3034 - _021F2FE8 - 2 ; case 2 + .short _021F3030 - _021F2FE8 - 2 ; case 3 + .short _021F303C - _021F2FE8 - 2 ; case 4 + .short _021F3008 - _021F2FE8 - 2 ; case 5 + .short _021F3010 - _021F2FE8 - 2 ; case 6 + .short _021F3014 - _021F2FE8 - 2 ; case 7 + .short _021F300C - _021F2FE8 - 2 ; case 8 + .short _021F3038 - _021F2FE8 - 2 ; case 9 + .short _021F301C - _021F2FE8 - 2 ; case 10 + .short _021F3018 - _021F2FE8 - 2 ; case 11 + .short _021F3020 - _021F2FE8 - 2 ; case 12 + .short _021F3040 - _021F2FE8 - 2 ; case 13 + .short _021F3044 - _021F2FE8 - 2 ; case 14 + .short _021F3024 - _021F2FE8 - 2 ; case 15 +_021F3008: + mov r7, #1 + b _021F3214 +_021F300C: + mov r7, #2 + b _021F3214 +_021F3010: + mov r7, #3 + b _021F3214 +_021F3014: + mov r7, #4 + b _021F3214 +_021F3018: + mov r7, #5 + b _021F3214 +_021F301C: + mov r7, #6 + b _021F3214 +_021F3020: + mov r7, #7 + b _021F3214 +_021F3024: + mov r7, #8 + b _021F3214 +_021F3028: + mov r7, #0xa + b _021F3214 +_021F302C: + mov r7, #0xb + b _021F3214 +_021F3030: + mov r7, #0xc + b _021F3214 +_021F3034: + mov r7, #0xd + b _021F3214 +_021F3038: + mov r7, #0xe + b _021F3214 +_021F303C: + mov r7, #0xf + b _021F3214 +_021F3040: + mov r7, #0x10 + b _021F3214 +_021F3044: + mov r7, #0x11 + b _021F3214 +_021F3048: + mov r7, #0 + b _021F3214 +_021F304C: + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x60] + ldrb r0, [r0, #1] + ldrb r3, [r1, #4] + ldrb r1, [r1, #5] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x60] + str r1, [sp, #0x34] + ldrb r0, [r0] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1a + str r0, [sp, #0x30] + ldr r0, [sp, #0x60] + str r1, [sp, #0x38] + ldrb r2, [r0, #2] + lsl r1, r3, #0x1f + lsr r1, r1, #0x1b + ldrb r0, [r0, #3] + str r1, [sp, #0x3c] + mov r4, #1 + lsl r1, r0, #0x1f + lsr r1, r1, #0x1c + str r1, [sp, #0x40] + lsl r1, r2, #0x1f + lsr r7, r1, #0x1d + ldr r1, [sp, #0x30] + and r1, r4 + ldr r4, [sp, #0x2c] + lsl r4, r4, #0x1f + lsr r4, r4, #0x1e + orr r1, r4 + add r4, r7, #0 + orr r4, r1 + ldr r1, [sp, #0x40] + orr r4, r1 + ldr r1, [sp, #0x3c] + orr r4, r1 + ldr r1, [sp, #0x38] + orr r1, r4 + str r1, [sp, #0x24] + mov r1, #2 + ldr r4, [sp, #0x34] + and r3, r1 + and r4, r1 + lsl r4, r4, #4 + str r4, [sp, #0x44] + and r0, r1 + lsl r4, r3, #3 + lsl r3, r0, #2 + add r0, r2, #0 + and r0, r1 + lsl r2, r0, #1 + ldr r0, [sp, #0x30] + and r0, r1 + asr r7, r0, #1 + ldr r0, [sp, #0x2c] + and r0, r1 + orr r0, r7 + orr r0, r2 + orr r0, r3 + add r1, r4, #0 + orr r1, r0 + ldr r0, [sp, #0x44] + orr r1, r0 + mov r0, #0x28 + mul r0, r1 + mov r1, #0x3f + bl _s32_div_f + add r4, r0, #0 + ldr r1, [sp, #0x24] + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + add r4, #0x1e + bl _s32_div_f + add r7, r0, #1 + cmp r7, #9 + bge _021F30EE + b _021F3214 +_021F30EE: + add r7, r7, #1 + b _021F3214 +_021F30F2: + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r6, r0] + ldr r2, _021F32B4 ; =0x000021F0 + lsl r0, r0, #2 + add r0, r6, r0 + ldr r1, [r0, r2] + mov r0, #0x19 + mul r0, r1 + ldr r1, [sp, #0x64] + lsl r1, r1, #2 + add r1, r6, r1 + ldr r1, [r1, r2] + bl _u32_div_f + add r4, r0, #1 + cmp r4, #0x96 + ble _021F3118 + mov r4, #0x96 +_021F3118: + mov r7, #0 + b _021F3214 +_021F311C: + mov r0, #0x28 + str r0, [sp, #0x20] + b _021F3214 +_021F3122: + ldr r0, [sp, #0x64] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F32B8 ; =0x00002D74 + add r1, r6, r1 + ldrb r0, [r1, r0] + str r0, [sp, #0x20] + b _021F3214 +_021F3132: + bl FUN_0201B9EC + mov r1, #0xb + bl _s32_div_f + ldr r0, [sp, #0x64] + mov r2, #0xc0 + mul r2, r0 + ldr r0, _021F32B8 ; =0x00002D74 + add r2, r6, r2 + ldrb r2, [r2, r0] + add r0, r1, #5 + mov r1, #0xa + mul r0, r2 + bl _s32_div_f + str r0, [sp, #0x20] + b _021F3214 +_021F3156: + ldr r0, [sp, #0x64] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F32BC ; =0x00002D75 + add r1, r6, r1 + ldrb r1, [r1, r0] + mov r0, #0xa + mul r0, r1 + mov r1, #0x19 + bl _s32_div_f + add r4, r0, #0 + b _021F3214 +_021F3170: + ldr r0, [sp, #0x64] + mov r1, #0xc0 + mul r1, r0 + ldr r0, _021F32BC ; =0x00002D75 + add r1, r6, r1 + ldrb r1, [r1, r0] + mov r0, #0xff + sub r1, r0, r1 + mov r0, #0xa + mul r0, r1 + mov r1, #0x19 + bl _s32_div_f + add r4, r0, #0 + b _021F3214 +_021F318E: + bl FUN_0201B9EC + mov r1, #0x64 + bl _s32_div_f + cmp r1, #5 + bge _021F31A0 + mov r4, #0xa + b _021F31CA +_021F31A0: + cmp r1, #0xf + bge _021F31A8 + mov r4, #0x1e + b _021F31CA +_021F31A8: + cmp r1, #0x23 + bge _021F31B0 + mov r4, #0x32 + b _021F31CA +_021F31B0: + cmp r1, #0x41 + bge _021F31B8 + mov r4, #0x46 + b _021F31CA +_021F31B8: + cmp r1, #0x55 + bge _021F31C0 + mov r4, #0x5a + b _021F31CA +_021F31C0: + cmp r1, #0x5f + bge _021F31C8 + mov r4, #0x6e + b _021F31CA +_021F31C8: + mov r4, #0x96 +_021F31CA: + mov r7, #0 + b _021F3214 +_021F31CE: + mov r0, #0x14 + str r0, [sp, #0x20] + b _021F3214 +_021F31D4: + mov r2, #0x3d + lsl r2, r2, #4 + ldrb r3, [r6, r2] + mov r2, #0xc0 + ldr r1, _021F32C0 ; =0x021FF7C4 + mul r2, r3 + add r3, r6, r2 + ldr r2, _021F32C4 ; =0x00002D60 + ldr r4, _021F32C8 ; =0x0000FFFF + ldr r2, [r3, r2] + mov r0, #0 +_021F31EA: + ldrh r3, [r1] + cmp r3, r2 + bge _021F31FA + add r1, r1, #4 + ldrh r3, [r1] + add r0, r0, #1 + cmp r3, r4 + bne _021F31EA +_021F31FA: + ldr r1, _021F32C0 ; =0x021FF7C4 + lsl r0, r0, #2 + ldrh r2, [r1, r0] + ldr r1, _021F32C8 ; =0x0000FFFF + cmp r2, r1 + beq _021F320C + ldr r1, _021F32CC ; =0x021FF7C6 + ldrh r4, [r1, r0] + b _021F3214 +_021F320C: + mov r4, #0x78 + b _021F3214 +_021F3210: + mov r4, #0 + add r7, r4, #0 +_021F3214: + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _021F325E + mov r0, #6 + lsl r0, r0, #6 + mov ip, r0 + ldr r0, [r6, r0] + ldr r3, [sp, #0x28] + str r0, [sp] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x64] + lsl r3, r3, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r6, r0] + add r4, r6, r3 + mov r3, ip + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + add r3, #0x3c + ldr r0, [sp, #0x18] + ldr r3, [r4, r3] + add r1, r6, #0 + add r2, r5, #0 + bl MOD11_0224B310 + str r0, [sp, #0x20] + b _021F326A +_021F325E: + ldr r1, _021F32D0 ; =0x0000213C + mov r0, #2 + ldr r2, [r6, r1] + lsl r0, r0, #0xa + orr r0, r2 + str r0, [r6, r1] +_021F326A: + ldr r0, [sp, #0x64] + add r1, r6, #0 + str r0, [sp] + mov r0, #0x3d + lsl r0, r0, #4 + ldrb r0, [r6, r0] + add r2, r5, #0 + add r3, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x20] + str r0, [sp, #8] + add r0, sp, #0x48 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + bl MOD11_02246274 + ldr r2, _021F32D0 ; =0x0000213C + ldr r1, _021F32D4 ; =0xFFFFF7FF + ldr r3, [r6, r2] + and r1, r3 + str r1, [r6, r2] + ldr r2, [sp, #0x48] + ldr r1, _021F32D8 ; =0x00140808 + tst r1, r2 + beq _021F32A2 + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F32A2: + add r1, sp, #0x70 + ldrb r1, [r1] + mul r1, r0 + add r0, r1, #0 + mov r1, #0x64 + bl MOD11_022476C0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F32B4: .word 0x000021F0 +_021F32B8: .word 0x00002D74 +_021F32BC: .word 0x00002D75 +_021F32C0: .word 0x021FF7C4 +_021F32C4: .word 0x00002D60 +_021F32C8: .word 0x0000FFFF +_021F32CC: .word 0x021FF7C6 +_021F32D0: .word 0x0000213C +_021F32D4: .word 0xFFFFF7FF +_021F32D8: .word 0x00140808 + thumb_func_end MOD16_021F2EE8 + + thumb_func_start MOD16_021F32DC +MOD16_021F32DC: ; 0x021F32DC + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + ldr r2, _021F3448 ; =0x00000137 + add r7, r0, #0 + add r4, r1, #0 + cmp r3, r2 + bgt _021F32F4 + blt _021F32EE + b _021F33F0 +_021F32EE: + cmp r3, #0xed + beq _021F3396 + b _021F3442 +_021F32F4: + add r0, r2, #0 + add r0, #0x34 + cmp r3, r0 + bgt _021F3304 + add r2, #0x34 + cmp r3, r2 + beq _021F330C + b _021F3442 +_021F3304: + add r2, #0x8a + cmp r3, r2 + beq _021F3318 + b _021F3442 +_021F330C: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02249E04 + add r5, r0, #0 + b _021F3444 +_021F3318: + add r0, r4, #0 + add r1, r6, #0 + bl MOD11_02249D90 + sub r0, #0x7d + cmp r0, #0xf + bhi _021F3392 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F3332: ; jump table + .short _021F3372 - _021F3332 - 2 ; case 0 + .short _021F3376 - _021F3332 - 2 ; case 1 + .short _021F337E - _021F3332 - 2 ; case 2 + .short _021F337A - _021F3332 - 2 ; case 3 + .short _021F3386 - _021F3332 - 2 ; case 4 + .short _021F3352 - _021F3332 - 2 ; case 5 + .short _021F335A - _021F3332 - 2 ; case 6 + .short _021F335E - _021F3332 - 2 ; case 7 + .short _021F3356 - _021F3332 - 2 ; case 8 + .short _021F3382 - _021F3332 - 2 ; case 9 + .short _021F3366 - _021F3332 - 2 ; case 10 + .short _021F3362 - _021F3332 - 2 ; case 11 + .short _021F336A - _021F3332 - 2 ; case 12 + .short _021F338A - _021F3332 - 2 ; case 13 + .short _021F338E - _021F3332 - 2 ; case 14 + .short _021F336E - _021F3332 - 2 ; case 15 +_021F3352: + mov r5, #1 + b _021F3444 +_021F3356: + mov r5, #2 + b _021F3444 +_021F335A: + mov r5, #3 + b _021F3444 +_021F335E: + mov r5, #4 + b _021F3444 +_021F3362: + mov r5, #5 + b _021F3444 +_021F3366: + mov r5, #6 + b _021F3444 +_021F336A: + mov r5, #7 + b _021F3444 +_021F336E: + mov r5, #8 + b _021F3444 +_021F3372: + mov r5, #0xa + b _021F3444 +_021F3376: + mov r5, #0xb + b _021F3444 +_021F337A: + mov r5, #0xc + b _021F3444 +_021F337E: + mov r5, #0xd + b _021F3444 +_021F3382: + mov r5, #0xe + b _021F3444 +_021F3386: + mov r5, #0xf + b _021F3444 +_021F338A: + mov r5, #0x10 + b _021F3444 +_021F338E: + mov r5, #0x11 + b _021F3444 +_021F3392: + mov r5, #0 + b _021F3444 +_021F3396: + ldr r0, _021F344C ; =0x00002D54 + add r1, r4, r0 + mov r0, #0xc0 + mul r0, r6 + ldr r4, [r1, r0] + lsl r0, r4, #2 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r5, r0, #0x1a + lsl r0, r4, #7 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r3, r0, #0x1b + lsl r0, r4, #0xc + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r2, r0, #0x1c + lsl r0, r4, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x1f + lsr r1, r0, #0x1d + lsl r0, r4, #0x1b + lsl r4, r4, #0x16 + lsr r4, r4, #0x1b + lsr r6, r0, #0x1b + mov r0, #1 + lsl r4, r4, #0x1f + and r0, r6 + lsr r4, r4, #0x1e + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + add r1, r5, #0 + orr r1, r0 + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + bl _s32_div_f + add r5, r0, #1 + cmp r5, #9 + blt _021F3444 + add r5, r5, #1 + b _021F3444 +_021F33F0: + mov r2, #0xd + str r2, [sp] + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3444 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3444 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r1, _021F3450 ; =0x000080FF + tst r1, r0 + beq _021F3444 + mov r1, #3 + tst r1, r0 + beq _021F3428 + mov r5, #0xb +_021F3428: + mov r1, #0xc + tst r1, r0 + beq _021F3430 + mov r5, #5 +_021F3430: + mov r1, #0x30 + tst r1, r0 + beq _021F3438 + mov r5, #0xa +_021F3438: + mov r1, #0xc0 + tst r0, r1 + beq _021F3444 + mov r5, #0xf + b _021F3444 +_021F3442: + mov r5, #0 +_021F3444: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F3448: .word 0x00000137 +_021F344C: .word 0x00002D54 +_021F3450: .word 0x000080FF + thumb_func_end MOD16_021F32DC + + thumb_func_start MOD16_021F3454 +MOD16_021F3454: ; 0x021F3454 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r2, _021F360C ; =0x00000137 + add r7, r0, #0 + add r6, r1, #0 + cmp r3, r2 + bgt _021F346E + blt _021F3468 + b _021F35B2 +_021F3468: + cmp r3, #0xed + beq _021F3530 + b _021F3604 +_021F346E: + add r0, r2, #0 + add r0, #0x34 + cmp r3, r0 + bgt _021F347E + add r2, #0x34 + cmp r3, r2 + beq _021F3486 + b _021F3604 +_021F347E: + add r2, #0x8a + cmp r3, r2 + beq _021F34A2 + b _021F3604 +_021F3486: + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #0xc + bl MOD11_0224C12C + add r5, r0, #0 + b _021F3606 +_021F34A2: + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #1 + bl MOD11_0224C12C + sub r0, #0x7d + cmp r0, #0xf + bhi _021F352C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F34CC: ; jump table + .short _021F350C - _021F34CC - 2 ; case 0 + .short _021F3510 - _021F34CC - 2 ; case 1 + .short _021F3518 - _021F34CC - 2 ; case 2 + .short _021F3514 - _021F34CC - 2 ; case 3 + .short _021F3520 - _021F34CC - 2 ; case 4 + .short _021F34EC - _021F34CC - 2 ; case 5 + .short _021F34F4 - _021F34CC - 2 ; case 6 + .short _021F34F8 - _021F34CC - 2 ; case 7 + .short _021F34F0 - _021F34CC - 2 ; case 8 + .short _021F351C - _021F34CC - 2 ; case 9 + .short _021F3500 - _021F34CC - 2 ; case 10 + .short _021F34FC - _021F34CC - 2 ; case 11 + .short _021F3504 - _021F34CC - 2 ; case 12 + .short _021F3524 - _021F34CC - 2 ; case 13 + .short _021F3528 - _021F34CC - 2 ; case 14 + .short _021F3508 - _021F34CC - 2 ; case 15 +_021F34EC: + mov r5, #1 + b _021F3606 +_021F34F0: + mov r5, #2 + b _021F3606 +_021F34F4: + mov r5, #3 + b _021F3606 +_021F34F8: + mov r5, #4 + b _021F3606 +_021F34FC: + mov r5, #5 + b _021F3606 +_021F3500: + mov r5, #6 + b _021F3606 +_021F3504: + mov r5, #7 + b _021F3606 +_021F3508: + mov r5, #8 + b _021F3606 +_021F350C: + mov r5, #0xa + b _021F3606 +_021F3510: + mov r5, #0xb + b _021F3606 +_021F3514: + mov r5, #0xc + b _021F3606 +_021F3518: + mov r5, #0xd + b _021F3606 +_021F351C: + mov r5, #0xe + b _021F3606 +_021F3520: + mov r5, #0xf + b _021F3606 +_021F3524: + mov r5, #0x10 + b _021F3606 +_021F3528: + mov r5, #0x11 + b _021F3606 +_021F352C: + mov r5, #0 + b _021F3606 +_021F3530: + add r0, r4, #0 + mov r1, #0x4b + mov r2, #0 + bl FUN_020671BC + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x4a + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0x49 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0x48 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0x46 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #0x47 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r2, r6, #0x1f + lsl r0, r5, #0x1f + lsr r5, r2, #0x1b + lsl r2, r7, #0x1f + lsr r4, r2, #0x1c + ldr r2, [sp, #4] + lsl r1, r1, #0x1f + lsl r2, r2, #0x1f + lsr r3, r2, #0x1d + ldr r2, [sp, #8] + mov r6, #1 + and r2, r6 + lsr r1, r1, #0x1e + orr r1, r2 + orr r1, r3 + orr r1, r4 + lsr r0, r0, #0x1a + orr r1, r5 + orr r1, r0 + mov r0, #0xf + mul r0, r1 + mov r1, #0x3f + bl _s32_div_f + add r5, r0, #1 + cmp r5, #9 + blt _021F3606 + add r5, r5, #1 + b _021F3606 +_021F35B2: + mov r2, #0xd + str r2, [sp] + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3606 + mov r0, #0x4c + str r0, [sp] + add r0, r7, #0 + add r1, r6, #0 + mov r2, #8 + mov r3, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F3606 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r6, r0] + ldr r1, _021F3610 ; =0x000080FF + tst r1, r0 + beq _021F3606 + mov r1, #3 + tst r1, r0 + beq _021F35EA + mov r5, #0xb +_021F35EA: + mov r1, #0xc + tst r1, r0 + beq _021F35F2 + mov r5, #5 +_021F35F2: + mov r1, #0x30 + tst r1, r0 + beq _021F35FA + mov r5, #0xa +_021F35FA: + mov r1, #0xc0 + tst r0, r1 + beq _021F3606 + mov r5, #0xf + b _021F3606 +_021F3604: + mov r5, #0 +_021F3606: + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F360C: .word 0x00000137 +_021F3610: .word 0x000080FF + thumb_func_end MOD16_021F3454 + + thumb_func_start MOD16_021F3614 +MOD16_021F3614: ; 0x021F3614 + push {r4, r5} + mov r2, #0xc0 + mul r2, r1 + add r5, r0, r2 + mov r2, #0xb7 + lsl r2, r2, #6 + ldr r4, [r5, r2] + mov r3, #0x20 + tst r3, r4 + beq _021F3640 + add r2, #8 + ldr r2, [r5, r2] + lsl r2, r2, #0x11 + lsr r2, r2, #0x1e + bne _021F3640 + add r1, r0, r1 + ldr r0, _021F3648 ; =0x000021A4 + mov r2, #6 + strb r2, [r1, r0] + mov r0, #1 + pop {r4, r5} + bx lr +_021F3640: + mov r0, #0 + pop {r4, r5} + bx lr + nop +_021F3648: .word 0x000021A4 + thumb_func_end MOD16_021F3614 + + thumb_func_start MOD16_021F364C +MOD16_021F364C: ; 0x021F364C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #0x14] + add r5, r1, #0 + str r2, [sp, #0x18] + bl FUN_0222FF74 + mov r1, #2 + tst r0, r1 + beq _021F3666 + add sp, #0x44 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3666: + ldr r0, [sp, #0x18] + mov r1, #1 + add r4, r0, #0 + eor r4, r1 + mov r1, #0xc0 + add r0, r4, #0 + mul r0, r1 + add r2, r5, r0 + ldr r0, _021F37FC ; =0x00002D67 + ldrb r0, [r2, r0] + cmp r0, #0x19 + bne _021F36E4 + mov r0, #0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x18] + mul r1, r0 + add r6, r5, r1 +_021F3688: + ldr r0, _021F3800 ; =0x00002D4C + ldr r2, [sp, #0x18] + ldrh r7, [r6, r0] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F32DC + add r3, r0, #0 + cmp r7, #0 + beq _021F36C8 + mov r0, #0 + str r0, [sp, #0x40] + ldr r0, [sp, #0x18] + add r1, r5, #0 + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x40 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r2, r7, #0 + bl MOD11_02246274 + ldr r1, [sp, #0x40] + mov r0, #2 + tst r0, r1 + beq _021F36C8 + add sp, #0x44 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F36C8: + ldr r0, [sp, #0x28] + add r6, r6, #2 + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #4 + blt _021F3688 + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD11_0222FFC8 + cmp r0, #0 + bgt _021F36E6 +_021F36E4: + b _021F37F4 +_021F36E6: + ldr r0, [sp, #0x18] + add r0, r5, r0 + str r0, [sp, #0x24] +_021F36EC: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x20] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F37DE + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F37DE + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3804 ; =0x000001EE + cmp r0, r1 + beq _021F37DE + ldr r1, _021F3808 ; =0x0000219C + ldr r0, [sp, #0x24] + ldrb r1, [r0, r1] + ldr r0, [sp, #0x20] + cmp r0, r1 + beq _021F37DE + mov r7, #0 +_021F3730: + add r1, r7, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x1c] + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021F3454 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _021F37D8 + mov r0, #0 + str r0, [sp, #0x40] + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x30] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + str r0, [sp, #0x34] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #0x38] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x3c] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x2c] + str r1, [sp] + ldr r1, [sp, #0x38] + ldr r3, [sp, #0x30] + str r1, [sp, #4] + ldr r1, [sp, #0x3c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x40 + str r0, [sp, #0x10] + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl MOD11_022465A0 + ldr r1, [sp, #0x40] + mov r0, #2 + tst r0, r1 + beq _021F37D8 + bl FUN_0201B9EC + mov r1, #3 + bl _s32_div_f + cmp r1, #2 + bge _021F37D8 + ldr r0, [sp, #0x18] + ldr r1, _021F380C ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x20] + add sp, #0x44 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F37D8: + add r7, r7, #1 + cmp r7, #4 + blt _021F3730 +_021F37DE: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + bl MOD11_0222FFC8 + ldr r1, [sp, #0x20] + cmp r1, r0 + bge _021F37F4 + b _021F36EC +_021F37F4: + mov r0, #0 + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021F37FC: .word 0x00002D67 +_021F3800: .word 0x00002D4C +_021F3804: .word 0x000001EE +_021F3808: .word 0x0000219C +_021F380C: .word 0x000021A4 + thumb_func_end MOD16_021F364C + + thumb_func_start MOD16_021F3810 +MOD16_021F3810: ; 0x021F3810 + push {r4, r5, r6, r7, lr} + sub sp, #0xb4 + str r0, [sp, #0x14] + add r5, r1, #0 + str r2, [sp, #0x18] + bl FUN_0222FF74 + mov r4, #2 + tst r0, r4 + beq _021F3828 + mov r6, #0 + b _021F382C +_021F3828: + mov r6, #0 + add r4, r6, #0 +_021F382C: + mov r0, #0 + str r0, [sp, #0x54] + str r0, [sp, #0x6c] + ldr r0, [sp, #0x18] + mov r1, #0xc0 + add r2, r0, #0 + mul r2, r1 + add r0, r5, r2 + str r0, [sp, #0x3c] + add r0, r6, #0 + mul r0, r1 + add r0, r5, r0 + str r0, [sp, #0x38] + add r0, r4, #0 + mul r0, r1 + add r0, r5, r0 + str r0, [sp, #0x34] +_021F384E: + ldr r1, [sp, #0x3c] + ldr r0, _021F3B78 ; =0x00002D4C + ldr r2, [sp, #0x18] + ldrh r7, [r1, r0] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F32DC + str r0, [sp, #0x5c] + cmp r7, #0 + beq _021F38E4 + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _021F3B7C ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _021F38E4 + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x38] + add r0, r0, #1 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp, #0xb0] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F38A0 + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x5c] + str r0, [sp] + str r6, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0xb0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02246274 +_021F38A0: + ldr r1, [sp, #0xb0] + mov r0, #8 + tst r0, r1 + bne _021F38AE + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F38AE: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x34] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F38D6 + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x5c] + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0xb0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, r5, #0 + add r2, r7, #0 + bl MOD11_02246274 +_021F38D6: + ldr r1, [sp, #0xb0] + mov r0, #8 + tst r0, r1 + bne _021F38E4 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F38E4: + ldr r0, [sp, #0x3c] + add r0, r0, #2 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x6c] + add r0, r0, #1 + str r0, [sp, #0x6c] + cmp r0, #4 + blt _021F384E + ldr r0, [sp, #0x54] + cmp r0, #2 + bge _021F3900 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3900: + ldr r0, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x64] + ldr r0, [sp, #0x14] + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F3920 + ldr r0, [sp, #0x14] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F3926 +_021F3920: + ldr r0, [sp, #0x64] + str r0, [sp, #0x60] + b _021F3934 +_021F3926: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x60] +_021F3934: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD11_0222FFC8 + str r0, [sp, #0x58] + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x58] + cmp r0, #0 + bgt _021F394A + b _021F3B24 +_021F394A: + ldr r0, [sp, #0x64] + add r0, r5, r0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x60] + add r0, r5, r0 + str r0, [sp, #0x40] +_021F3956: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x2c] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + str r0, [sp, #0x50] + bl FUN_020671BC + cmp r0, #0 + beq _021F39BC + ldr r0, [sp, #0x50] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F39BC + ldr r0, [sp, #0x50] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3B84 ; =0x000001EE + cmp r0, r1 + beq _021F39BC + ldr r0, _021F3B88 ; =0x0000219C + ldr r1, [sp, #0x44] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x2c] + cmp r1, r2 + beq _021F39BC + ldr r1, [sp, #0x40] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x2c] + cmp r1, r2 + beq _021F39BC + add r2, r0, #0 + ldr r1, [sp, #0x44] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x2c] + cmp r1, r2 + beq _021F39BC + ldr r1, [sp, #0x40] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x2c] + cmp r0, r1 + bne _021F39BE +_021F39BC: + b _021F3B16 +_021F39BE: + mov r0, #0 + str r0, [sp, #0x68] +_021F39C2: + ldr r1, [sp, #0x68] + ldr r0, [sp, #0x50] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x50] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F3454 + str r0, [sp, #0x24] + cmp r7, #0 + beq _021F39F0 + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _021F3B7C ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F39F2 +_021F39F0: + b _021F3B0A +_021F39F2: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x38] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3A58 + ldr r0, [sp, #0x50] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x70] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + str r0, [sp, #0x74] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0x78] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x7c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x74] + ldr r2, [sp, #0x24] + str r1, [sp] + ldr r1, [sp, #0x78] + ldr r3, [sp, #0x70] + str r1, [sp, #4] + ldr r1, [sp, #0x7c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3A58: + ldr r1, [sp, #0xb0] + mov r0, #2 + tst r0, r1 + beq _021F3A7E + bl FUN_0201B9EC + mov r1, #3 + bl _s32_div_f + cmp r1, #2 + bge _021F3A7E + ldr r0, [sp, #0x18] + ldr r1, _021F3B8C ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x2c] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3A7E: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x34] + ldr r0, _021F3B80 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3AE4 + ldr r0, [sp, #0x50] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x80] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + str r0, [sp, #0x84] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #0x88] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x8c] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x84] + ldr r2, [sp, #0x24] + str r1, [sp] + ldr r1, [sp, #0x88] + ldr r3, [sp, #0x80] + str r1, [sp, #4] + ldr r1, [sp, #0x8c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3AE4: + ldr r1, [sp, #0xb0] + mov r0, #2 + tst r0, r1 + beq _021F3B0A + bl FUN_0201B9EC + mov r1, #3 + bl _s32_div_f + cmp r1, #2 + bge _021F3B0A + ldr r0, [sp, #0x18] + ldr r1, _021F3B8C ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x2c] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3B0A: + ldr r0, [sp, #0x68] + add r0, r0, #1 + str r0, [sp, #0x68] + cmp r0, #4 + bge _021F3B16 + b _021F39C2 +_021F3B16: + ldr r0, [sp, #0x2c] + add r1, r0, #1 + ldr r0, [sp, #0x58] + str r1, [sp, #0x2c] + cmp r1, r0 + bge _021F3B24 + b _021F3956 +_021F3B24: + mov r0, #0 + str r0, [sp, #0x30] + ldr r0, [sp, #0x58] + cmp r0, #0 + bgt _021F3B30 + b _021F3D2A +_021F3B30: + ldr r0, [sp, #0x64] + add r0, r5, r0 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x60] + add r0, r5, r0 + str r0, [sp, #0x48] +_021F3B3C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x30] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + str r0, [sp, #0x20] + bl FUN_020671BC + cmp r0, #0 + beq _021F3BBE + ldr r0, [sp, #0x20] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F3BBE + ldr r0, [sp, #0x20] + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3B84 ; =0x000001EE + cmp r0, r1 + beq _021F3BBE + ldr r0, _021F3B88 ; =0x0000219C + b _021F3B90 + nop +_021F3B78: .word 0x00002D4C +_021F3B7C: .word 0x000003E1 +_021F3B80: .word 0x00002D8C +_021F3B84: .word 0x000001EE +_021F3B88: .word 0x0000219C +_021F3B8C: .word 0x000021A4 +_021F3B90: + ldr r1, [sp, #0x4c] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x30] + cmp r1, r2 + beq _021F3BBE + ldr r1, [sp, #0x48] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x30] + cmp r1, r2 + beq _021F3BBE + add r2, r0, #0 + ldr r1, [sp, #0x4c] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x30] + cmp r1, r2 + beq _021F3BBE + ldr r1, [sp, #0x48] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x30] + cmp r0, r1 + bne _021F3BC0 +_021F3BBE: + b _021F3D1C +_021F3BC0: + mov r0, #0 + str r0, [sp, #0x1c] +_021F3BC4: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x20] + add r1, r5, #0 + add r3, r7, #0 + bl MOD16_021F3454 + str r0, [sp, #0x28] + cmp r7, #0 + beq _021F3BF2 + lsl r0, r7, #4 + add r1, r5, r0 + ldr r0, _021F3D30 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F3BF4 +_021F3BF2: + b _021F3D10 +_021F3BF4: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x38] + ldr r0, _021F3D34 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3C5A + ldr r0, [sp, #0x20] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x90] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + str r0, [sp, #0x94] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0x98] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x9c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x94] + ldr r2, [sp, #0x28] + str r1, [sp] + ldr r1, [sp, #0x98] + ldr r3, [sp, #0x90] + str r1, [sp, #4] + ldr r1, [sp, #0x9c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3C5A: + ldr r0, [sp, #0xb0] + cmp r0, #0 + bne _021F3C82 + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1f + sub r2, r2, r1 + mov r0, #0x1f + ror r2, r0 + add r0, r1, r2 + bne _021F3C82 + ldr r0, [sp, #0x18] + ldr r1, _021F3D38 ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x30] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3C82: + mov r0, #0 + str r0, [sp, #0xb0] + ldr r1, [sp, #0x34] + ldr r0, _021F3D34 ; =0x00002D8C + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F3CE8 + ldr r0, [sp, #0x20] + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0xa0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + str r0, [sp, #0xa4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02249D90 + str r0, [sp, #0xa8] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0xac] + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0xa4] + ldr r2, [sp, #0x28] + str r1, [sp] + ldr r1, [sp, #0xa8] + ldr r3, [sp, #0xa0] + str r1, [sp, #4] + ldr r1, [sp, #0xac] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0xb0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r7, #0 + bl MOD11_022465A0 +_021F3CE8: + ldr r0, [sp, #0xb0] + cmp r0, #0 + bne _021F3D10 + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + bne _021F3D10 + ldr r0, [sp, #0x18] + ldr r1, _021F3D38 ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x30] + add sp, #0xb4 + strb r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3D10: + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #4 + bge _021F3D1C + b _021F3BC4 +_021F3D1C: + ldr r0, [sp, #0x30] + add r1, r0, #1 + ldr r0, [sp, #0x58] + str r1, [sp, #0x30] + cmp r1, r0 + bge _021F3D2A + b _021F3B3C +_021F3D2A: + mov r0, #0 + add sp, #0xb4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F3D30: .word 0x000003E1 +_021F3D34: .word 0x00002D8C +_021F3D38: .word 0x000021A4 + thumb_func_end MOD16_021F3810 + + thumb_func_start MOD16_021F3D3C +MOD16_021F3D3C: ; 0x021F3D3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r2, #0 + add r5, r1, #0 + add r1, r4, #0 + add r6, r0, #0 + str r3, [sp, #0x10] + bl FUN_02230260 + mov r1, #1 + eor r0, r1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r6, #0 + bl MOD11_0223022C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + bl FUN_0206A92C + ldr r1, _021F3E88 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _021F3DE2 + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #0xc0 + mul r0, r4 + add r7, r5, r0 +_021F3D78: + ldr r0, _021F3E8C ; =0x00002D4C + add r1, r5, #0 + ldrh r0, [r7, r0] + add r2, r4, #0 + str r0, [sp, #0x20] + ldr r3, [sp, #0x20] + add r0, r6, #0 + bl MOD16_021F32DC + add r3, r0, #0 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _021F3DD6 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + str r4, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x2c + str r0, [sp, #0xc] + ldr r2, [sp, #0x20] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02246274 + ldr r1, [sp, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F3DD6 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _021F3DC2 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3DC2: + bl FUN_0201B9EC + mov r1, #0xa + bl _s32_div_f + cmp r1, #0 + beq _021F3DD6 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3DD6: + ldr r0, [sp, #0x28] + add r7, r7, #2 + add r0, r0, #1 + str r0, [sp, #0x28] + cmp r0, #4 + blt _021F3D78 +_021F3DE2: + add r0, r6, #0 + bl FUN_0222FF74 + mov r1, #2 + tst r0, r1 + bne _021F3DF4 + add sp, #0x30 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3DF4: + ldr r1, [sp, #0x24] + add r0, r6, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + bl FUN_0206A92C + ldr r1, _021F3E88 ; =0x00003108 + ldrb r1, [r5, r1] + tst r0, r1 + bne _021F3E82 + mov r0, #0 + str r0, [sp, #0x18] + mov r0, #0xc0 + mul r0, r4 + add r7, r5, r0 +_021F3E18: + ldr r0, _021F3E8C ; =0x00002D4C + add r1, r5, #0 + ldrh r0, [r7, r0] + add r2, r4, #0 + str r0, [sp, #0x14] + ldr r3, [sp, #0x14] + add r0, r6, #0 + bl MOD16_021F32DC + add r3, r0, #0 + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _021F3E76 + mov r0, #0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x1c] + str r4, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, sp, #0x2c + str r0, [sp, #0xc] + ldr r2, [sp, #0x14] + add r0, r6, #0 + add r1, r5, #0 + bl MOD11_02246274 + ldr r1, [sp, #0x2c] + mov r0, #2 + tst r0, r1 + beq _021F3E76 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _021F3E62 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3E62: + bl FUN_0201B9EC + mov r1, #0xa + bl _s32_div_f + cmp r1, #0 + beq _021F3E76 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3E76: + ldr r0, [sp, #0x18] + add r7, r7, #2 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #4 + blt _021F3E18 +_021F3E82: + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F3E88: .word 0x00003108 +_021F3E8C: .word 0x00002D4C + thumb_func_end MOD16_021F3D3C + + thumb_func_start MOD16_021F3E90 +MOD16_021F3E90: ; 0x021F3E90 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #1 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + bl MOD16_021F3D3C + cmp r0, #0 + beq _021F3EB8 + bl FUN_0201B9EC + mov r1, #3 + bl _s32_div_f + cmp r1, #0 + beq _021F3EB8 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3EB8: + ldr r0, [sp, #8] + lsl r1, r0, #1 + ldr r0, [sp, #4] + add r1, r0, r1 + ldr r0, _021F3FF4 ; =0x00003064 + ldrh r0, [r1, r0] + cmp r0, #0 + bne _021F3ECE + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3ECE: + lsl r1, r0, #4 + ldr r0, [sp, #4] + add r2, r0, r1 + ldr r0, _021F3FF8 ; =0x000003E1 + ldrb r1, [r2, r0] + cmp r1, #0 + bne _021F3EE2 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3EE2: + add r0, r0, #1 + ldrb r0, [r2, r0] + cmp r0, #0xa + bne _021F3EF0 + mov r0, #0x12 + str r0, [sp, #0x10] + b _021F3F0A +_021F3EF0: + cmp r0, #0xb + bne _021F3EFA + mov r0, #0xb + str r0, [sp, #0x10] + b _021F3F0A +_021F3EFA: + cmp r0, #0xd + bne _021F3F04 + mov r0, #0xa + str r0, [sp, #0x10] + b _021F3F0A +_021F3F04: + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3F0A: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl MOD11_02246D1C + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _021F3F1E + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021F3F1E: + ldr r0, [sp, #8] + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp] + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F3F3C + ldr r0, [sp] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F3F40 +_021F3F3C: + add r6, r4, #0 + b _021F3F4C +_021F3F40: + ldr r0, [sp] + ldr r1, [sp, #8] + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_021F3F4C: + ldr r0, [sp] + ldr r1, [sp, #8] + bl MOD11_0222FFC8 + mov r5, #0 + str r0, [sp, #0xc] + cmp r0, #0 + ble _021F3FEE + ldr r0, [sp, #4] + add r7, r0, r4 + add r6, r0, r6 +_021F3F62: + ldr r0, [sp] + ldr r1, [sp, #8] + add r2, r5, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F3FE6 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F3FE6 + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F3FFC ; =0x000001EE + cmp r0, r1 + beq _021F3FE6 + ldr r0, _021F4000 ; =0x0000219C + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F3FE6 + ldr r0, _021F4000 ; =0x0000219C + ldrb r0, [r6, r0] + cmp r5, r0 + beq _021F3FE6 + ldr r0, _021F4004 ; =0x000021A4 + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F3FE6 + ldr r0, _021F4004 ; =0x000021A4 + ldrb r0, [r6, r0] + cmp r5, r0 + beq _021F3FE6 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x10] + cmp r0, r1 + bne _021F3FE6 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F3FE6 + ldr r1, [sp, #4] + ldr r0, [sp, #8] + add sp, #0x14 + add r1, r1, r0 + ldr r0, _021F4004 ; =0x000021A4 + strb r5, [r1, r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021F3FE6: + ldr r0, [sp, #0xc] + add r5, r5, #1 + cmp r5, r0 + blt _021F3F62 +_021F3FEE: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021F3FF4: .word 0x00003064 +_021F3FF8: .word 0x000003E1 +_021F3FFC: .word 0x000001EE +_021F4000: .word 0x0000219C +_021F4004: .word 0x000021A4 + thumb_func_end MOD16_021F3E90 + + thumb_func_start MOD16_021F4008 +MOD16_021F4008: ; 0x021F4008 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r5, r1, #0 + add r1, r2, #0 + lsl r6, r1, #1 + str r3, [sp, #0x1c] + ldr r1, _021F424C ; =0x00003064 + add r3, r5, r6 + str r2, [sp, #0x18] + ldrh r2, [r3, r1] + str r0, [sp, #0x14] + cmp r2, #0 + beq _021F402A + add r1, #8 + ldrh r1, [r3, r1] + cmp r1, #0xff + bne _021F4030 +_021F402A: + add sp, #0x60 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4030: + lsl r1, r2, #4 + add r2, r5, r1 + ldr r1, _021F4250 ; =0x000003E1 + ldrb r1, [r2, r1] + cmp r1, #0 + bne _021F4042 + add sp, #0x60 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4042: + ldr r1, [sp, #0x18] + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F405E + ldr r0, [sp, #0x14] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F4062 +_021F405E: + add r7, r4, #0 + b _021F406E +_021F4062: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_021F406E: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + bl MOD11_0222FFC8 + str r0, [sp, #0x30] + mov r0, #0 + str r0, [sp, #0x34] + ldr r0, [sp, #0x30] + cmp r0, #0 + bgt _021F4084 + b _021F4246 +_021F4084: + add r0, r5, r4 + str r0, [sp, #0x2c] + add r0, r5, r7 + str r0, [sp, #0x28] + add r0, sp, #0x68 + ldrb r0, [r0, #0x10] + add r4, r5, r6 + str r0, [sp, #0x24] +_021F4094: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x34] + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F40FA + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F40FA + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F4254 ; =0x000001EE + cmp r0, r1 + beq _021F40FA + ldr r0, _021F4258 ; =0x0000219C + ldr r1, [sp, #0x2c] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x34] + cmp r1, r2 + beq _021F40FA + ldr r1, [sp, #0x28] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x34] + cmp r1, r2 + beq _021F40FA + add r2, r0, #0 + ldr r1, [sp, #0x2c] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x34] + cmp r1, r2 + beq _021F40FA + ldr r1, [sp, #0x28] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x34] + cmp r0, r1 + bne _021F40FC +_021F40FA: + b _021F4238 +_021F40FC: + mov r0, #0 + str r0, [sp, #0x5c] + ldr r3, _021F425C ; =0x0000306C + ldr r0, [sp, #0x14] + ldrh r2, [r4, r3] + sub r3, #8 + ldrh r3, [r4, r3] + add r1, r5, #0 + bl MOD16_021F32DC + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x38] + ldrh r1, [r4, r1] + add r0, r5, #0 + bl MOD11_02246D1C + str r0, [sp, #0x3c] + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x40] + add r0, r6, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + mov r2, #1 + bl MOD11_0224C12C + str r0, [sp, #0x44] + add r0, r6, #0 + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x38] + str r1, [sp] + ldr r1, [sp, #0x44] + ldr r3, [sp, #0x3c] + str r1, [sp, #4] + str r7, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x5c + str r0, [sp, #0x10] + ldr r1, _021F424C ; =0x00003064 + add r0, r5, #0 + ldrh r1, [r4, r1] + bl MOD11_022465A0 + ldr r1, [sp, #0x5c] + ldr r0, [sp, #0x1c] + tst r0, r1 + beq _021F4238 + mov r7, #0 +_021F4182: + add r1, r7, #0 + add r0, r6, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x20] + add r1, r5, #0 + add r2, r6, #0 + bl MOD16_021F3454 + str r0, [sp, #0x48] + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _021F4232 + mov r0, #0 + str r0, [sp, #0x5c] + add r0, r6, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x4c] + ldrh r1, [r4, r1] + add r0, r5, #0 + bl MOD11_02246D1C + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x50] + ldrh r1, [r4, r1] + add r0, r5, #0 + bl MOD11_02249D90 + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x54] + ldrh r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + ldr r1, _021F425C ; =0x0000306C + str r0, [sp, #0x58] + ldrh r1, [r4, r1] + add r0, r5, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x50] + ldr r2, [sp, #0x48] + str r1, [sp] + ldr r1, [sp, #0x54] + ldr r3, [sp, #0x4c] + str r1, [sp, #4] + ldr r1, [sp, #0x58] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x5c + str r0, [sp, #0x10] + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD11_022465A0 + ldr r1, [sp, #0x5c] + mov r0, #2 + tst r0, r1 + beq _021F4232 + bl FUN_0201B9EC + ldr r1, [sp, #0x24] + bl _s32_div_f + cmp r1, #0 + bne _021F4232 + ldr r0, [sp, #0x18] + ldr r1, _021F4260 ; =0x000021A4 + add r2, r5, r0 + ldr r0, [sp, #0x34] + add sp, #0x60 + strb r0, [r2, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4232: + add r7, r7, #1 + cmp r7, #4 + blt _021F4182 +_021F4238: + ldr r0, [sp, #0x34] + add r1, r0, #1 + ldr r0, [sp, #0x30] + str r1, [sp, #0x34] + cmp r1, r0 + bge _021F4246 + b _021F4094 +_021F4246: + mov r0, #0 + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F424C: .word 0x00003064 +_021F4250: .word 0x000003E1 +_021F4254: .word 0x000001EE +_021F4258: .word 0x0000219C +_021F425C: .word 0x0000306C +_021F4260: .word 0x000021A4 + thumb_func_end MOD16_021F4008 + + thumb_func_start MOD16_021F4264 +MOD16_021F4264: ; 0x021F4264 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r4, r2, #0 + mov r0, #0xc0 + add r5, r1, #0 + mul r0, r4 + add r1, r5, r0 + ldr r0, _021F4340 ; =0x00002DAC + ldr r1, [r1, r0] + mov r0, #7 + tst r0, r1 + beq _021F429E + add r0, r5, #0 + add r1, r4, #0 + bl MOD11_02246D1C + cmp r0, #0x1e + bne _021F429E + mov r0, #0xc0 + mul r0, r4 + add r2, r5, r0 + ldr r0, _021F4344 ; =0x00002D8C + ldr r1, [r2, r0] + add r0, r0, #4 + ldr r0, [r2, r0] + lsr r0, r0, #1 + cmp r1, r0 + bhs _021F42A4 +_021F429E: + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F42A4: + ldr r0, _021F4348 ; =0x00003064 + lsl r7, r4, #1 + add r6, r5, r0 + ldrh r0, [r6, r7] + cmp r0, #0 + bne _021F42C8 + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F42C8 + ldr r0, _021F434C ; =0x000021A4 + mov r3, #6 + add r2, r5, r4 + strb r3, [r2, r0] + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F42C8: + ldrh r0, [r6, r7] + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _021F4350 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _021F42EE + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F42EE + ldr r0, _021F434C ; =0x000021A4 + mov r3, #6 + add r2, r5, r4 + strb r3, [r2, r0] + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F42EE: + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #8 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F4308 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4308: + mov r0, #1 + str r0, [sp] + ldr r0, [sp, #4] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #4 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F4322 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4322: + bl FUN_0201B9EC + mov r1, #1 + tst r0, r1 + beq _021F433A + ldr r0, _021F434C ; =0x000021A4 + mov r3, #6 + add r2, r5, r4 + strb r3, [r2, r0] + add sp, #8 + add r0, r1, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F433A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021F4340: .word 0x00002DAC +_021F4344: .word 0x00002D8C +_021F4348: .word 0x00003064 +_021F434C: .word 0x000021A4 +_021F4350: .word 0x000003E1 + thumb_func_end MOD16_021F4264 + + thumb_func_start MOD16_021F4354 +MOD16_021F4354: ; 0x021F4354 + push {r3, r4} + mov r4, #0xc0 + mul r4, r2 + mov r3, #0 + ldr r2, _021F4388 ; =0x00002D58 + add r0, r3, #0 + add r4, r1, r4 +_021F4362: + ldrsb r1, [r4, r2] + cmp r1, #6 + ble _021F4370 + sub r1, r1, #6 + add r1, r3, r1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 +_021F4370: + add r0, r0, #1 + add r4, r4, #1 + cmp r0, #8 + blt _021F4362 + cmp r3, #4 + blo _021F4382 + mov r0, #1 + pop {r3, r4} + bx lr +_021F4382: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 +_021F4388: .word 0x00002D58 + thumb_func_end MOD16_021F4354 + + thumb_func_start MOD16_021F438C +MOD16_021F438C: ; 0x021F438C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r2, #0 + mov r2, #0xc0 + add r3, r6, #0 + mul r3, r2 + add r2, r1, #0 + add r5, r2, r3 + ldr r2, _021F4590 ; =0x00002DB0 + ldr r3, _021F4594 ; =0x0400E000 + ldr r4, [r5, r2] + str r0, [sp, #4] + str r1, [sp, #8] + tst r4, r3 + bne _021F440C + add r2, #0x10 + ldr r4, [r5, r2] + lsr r2, r3, #0x10 + tst r2, r4 + bne _021F440C + mov r2, #0x17 + str r2, [sp] + mov r2, #2 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F440C + mov r0, #0x47 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + mov r2, #2 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + bne _021F440C + mov r0, #0x2a + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + mov r2, #6 + add r3, r6, #0 + bl MOD11_02246870 + cmp r0, #0 + beq _021F4412 + ldr r0, [sp, #8] + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + beq _021F440C + ldr r0, [sp, #8] + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + cmp r0, #8 + bne _021F4412 +_021F440C: + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4412: + mov r0, #0 + str r0, [sp, #0x14] + lsl r0, r6, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #4] + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F4432 + ldr r0, [sp, #4] + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F4436 +_021F4432: + add r7, r4, #0 + b _021F4442 +_021F4436: + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_021F4442: + ldr r0, [sp, #4] + add r1, r6, #0 + bl MOD11_0222FFC8 + mov r5, #0 + str r0, [sp, #0x10] + cmp r0, #0 + ble _021F44C2 + ldr r0, [sp, #8] + add r0, r0, r4 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r7, r0, r7 +_021F445C: + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, r5, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F44BA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F44BA + add r0, r4, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F4598 ; =0x000001EE + cmp r0, r1 + beq _021F44BA + ldr r1, [sp, #0xc] + ldr r0, _021F459C ; =0x0000219C + ldrb r0, [r1, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, _021F459C ; =0x0000219C + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, _021F45A0 ; =0x000021A4 + ldrb r0, [r1, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, _021F45A0 ; =0x000021A4 + ldrb r0, [r7, r0] + cmp r5, r0 + beq _021F44BA + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] +_021F44BA: + ldr r0, [sp, #0x10] + add r5, r5, #1 + cmp r5, r0 + blt _021F445C +_021F44C2: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _021F4588 + ldr r0, [sp, #8] + add r1, r6, #0 + bl MOD16_021F3614 + cmp r0, #0 + beq _021F44DA + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F44DA: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F364C + cmp r0, #0 + beq _021F44EE + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F44EE: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F3810 + cmp r0, #0 + beq _021F4502 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4502: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F3E90 + cmp r0, #0 + beq _021F4516 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4516: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F4264 + cmp r0, #0 + beq _021F452A + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F452A: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + mov r3, #0 + bl MOD16_021F3D3C + cmp r0, #0 + beq _021F4540 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4540: + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + bl MOD16_021F4354 + cmp r0, #0 + beq _021F4554 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4554: + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + mov r3, #8 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F456E + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F456E: + mov r0, #3 + str r0, [sp] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r6, #0 + mov r3, #4 + bl MOD16_021F4008 + cmp r0, #0 + beq _021F4588 + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4588: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4590: .word 0x00002DB0 +_021F4594: .word 0x0400E000 +_021F4598: .word 0x000001EE +_021F459C: .word 0x0000219C +_021F45A0: .word 0x000021A4 + thumb_func_end MOD16_021F438C + + thumb_func_start MOD16_021F45A4 +MOD16_021F45A4: ; 0x021F45A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r1, r0, #0 + str r0, [sp] + ldr r5, [r1, #0x30] + bl FUN_0222FF74 + add r6, r0, #0 + mov r0, #1 + tst r0, r6 + bne _021F45C8 + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_02230270 + cmp r0, #0 + bne _021F4688 +_021F45C8: + ldr r0, [sp] + add r1, r5, #0 + add r2, r7, #0 + bl MOD16_021F438C + cmp r0, #0 + beq _021F4676 + ldr r0, _021F4690 ; =0x000021A4 + add r0, r5, r0 + str r0, [sp, #0x10] + ldrb r0, [r0, r7] + cmp r0, #6 + bne _021F4670 + ldr r0, [sp] + add r1, r7, #0 + bl MOD16_021F4698 + add r4, r0, #0 + cmp r4, #6 + bne _021F466C + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x10 + tst r0, r6 + bne _021F4602 + mov r0, #8 + tst r0, r6 + beq _021F4608 +_021F4602: + ldr r0, [sp, #0xc] + str r0, [sp, #8] + b _021F4616 +_021F4608: + ldr r0, [sp] + add r1, r7, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] +_021F4616: + ldr r0, [sp] + add r1, r7, #0 + bl MOD11_0222FFC8 + mov r4, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _021F466C + ldr r0, [sp, #0xc] + add r6, r5, r0 + ldr r0, [sp, #8] + add r5, r5, r0 +_021F462E: + ldr r0, [sp] + add r1, r7, #0 + add r2, r4, #0 + bl FUN_02230014 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4664 + ldr r0, _021F4694 ; =0x0000219C + ldrb r0, [r6, r0] + cmp r4, r0 + beq _021F4664 + ldr r0, _021F4694 ; =0x0000219C + ldrb r0, [r5, r0] + cmp r4, r0 + beq _021F4664 + ldr r0, _021F4690 ; =0x000021A4 + ldrb r0, [r6, r0] + cmp r4, r0 + beq _021F4664 + ldr r0, _021F4690 ; =0x000021A4 + ldrb r0, [r5, r0] + cmp r4, r0 + bne _021F466C +_021F4664: + ldr r0, [sp, #4] + add r4, r4, #1 + cmp r4, r0 + blt _021F462E +_021F466C: + ldr r0, [sp, #0x10] + strb r4, [r0, r7] +_021F4670: + add sp, #0x14 + mov r0, #3 + pop {r4, r5, r6, r7, pc} +_021F4676: + ldr r0, [sp] + add r1, r7, #0 + bl MOD16_021F4A40 + cmp r0, #0 + beq _021F4688 + add sp, #0x14 + mov r0, #2 + pop {r4, r5, r6, r7, pc} +_021F4688: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021F4690: .word 0x000021A4 +_021F4694: .word 0x0000219C + thumb_func_end MOD16_021F45A4 + + thumb_func_start MOD16_021F4698 +MOD16_021F4698: ; 0x021F4698 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + add r7, r0, #0 + str r1, [sp, #0x18] + lsl r1, r1, #0x18 + ldr r5, [r7, #0x30] + lsr r4, r1, #0x18 + bl FUN_0222FF74 + mov r1, #0x10 + tst r0, r1 + bne _021F46BC + add r0, r7, #0 + bl FUN_0222FF74 + mov r1, #8 + tst r0, r1 + beq _021F46C0 +_021F46BC: + str r4, [sp, #0x44] + b _021F46CE +_021F46C0: + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl FUN_022302BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x44] +_021F46CE: + ldr r2, [sp, #0x18] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_022482A4 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r1, [sp, #0x18] + add r0, r7, #0 + bl MOD11_0222FFC8 + str r0, [sp, #0x40] + mov r0, #0 + str r0, [sp, #0x50] + add r0, r5, r4 + str r0, [sp, #0x34] + ldr r0, [sp, #0x44] + add r0, r5, r0 + str r0, [sp, #0x30] +_021F46F4: + mov r0, #0 + str r0, [sp, #0x48] + mov r0, #6 + str r0, [sp, #0x38] + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x48] + cmp r0, #0 + ble _021F47F8 +_021F4704: + ldr r1, [sp, #0x18] + add r0, r7, #0 + add r2, r4, #0 + bl FUN_02230014 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x68] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _021F47E0 + ldr r0, _021F4A1C ; =0x000001EE + cmp r1, r0 + beq _021F47E0 + ldr r0, [sp, #0x68] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F47E0 + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x50] + tst r0, r1 + bne _021F47E0 + ldr r1, [sp, #0x34] + ldr r0, _021F4A20 ; =0x0000219C + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + ldr r1, [sp, #0x30] + ldr r0, _021F4A20 ; =0x0000219C + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + ldr r1, [sp, #0x34] + ldr r0, _021F4A24 ; =0x000021A4 + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + ldr r1, [sp, #0x30] + ldr r0, _021F4A24 ; =0x000021A4 + ldrb r0, [r1, r0] + cmp r4, r0 + beq _021F47E0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x60] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x68] + mov r1, #0xb0 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x58] + ldr r0, [sp, #0x68] + mov r1, #0xb1 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x54] + ldr r0, [sp, #0x58] + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x5c] + bl MOD11_02246B9C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x54] + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x5c] + bl MOD11_02246B9C + ldr r1, [sp, #0x4c] + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r1, [sp, #0x48] + cmp r1, r0 + bhs _021F47F0 + ldr r0, [sp, #0x4c] + str r0, [sp, #0x48] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x38] + b _021F47F0 +_021F47E0: + add r0, r4, #0 + bl FUN_0206A92C + ldr r1, [sp, #0x50] + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x50] +_021F47F0: + ldr r0, [sp, #0x40] + add r4, r4, #1 + cmp r4, r0 + blt _021F4704 +_021F47F8: + ldr r0, [sp, #0x38] + cmp r0, #6 + beq _021F48C0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x38] + add r0, r7, #0 + bl FUN_02230014 + add r4, r0, #0 + mov r0, #0 + str r0, [sp, #0x20] +_021F480E: + ldr r1, [sp, #0x20] + add r0, r4, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x3c] + ldr r3, [sp, #0x3c] + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD16_021F3454 + str r0, [sp, #0x6c] + ldr r0, [sp, #0x3c] + cmp r0, #0 + beq _021F4898 + mov r0, #0 + str r0, [sp, #0x90] + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x70] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02246D1C + str r0, [sp, #0x74] + add r0, r5, #0 + add r1, r6, #0 + bl MOD11_02249D90 + str r0, [sp, #0x78] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1b + mov r3, #0 + bl MOD11_02243420 + str r0, [sp, #0x7c] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0x1c + mov r3, #0 + bl MOD11_02243420 + ldr r1, [sp, #0x74] + ldr r2, [sp, #0x6c] + str r1, [sp] + ldr r1, [sp, #0x78] + ldr r3, [sp, #0x70] + str r1, [sp, #4] + ldr r1, [sp, #0x7c] + str r1, [sp, #8] + str r0, [sp, #0xc] + add r0, sp, #0x90 + str r0, [sp, #0x10] + ldr r1, [sp, #0x3c] + add r0, r5, #0 + bl MOD11_022465A0 + ldr r1, [sp, #0x90] + mov r0, #2 + tst r0, r1 + bne _021F48A2 +_021F4898: + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #4 + blt _021F480E +_021F48A2: + ldr r0, [sp, #0x20] + cmp r0, #4 + bne _021F48BA + ldr r0, [sp, #0x38] + bl FUN_0206A92C + ldr r1, [sp, #0x50] + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x50] + b _021F48C4 +_021F48BA: + ldr r0, [sp, #0x38] + add sp, #0x94 + pop {r4, r5, r6, r7, pc} +_021F48C0: + mov r0, #0x3f + str r0, [sp, #0x50] +_021F48C4: + ldr r0, [sp, #0x50] + cmp r0, #0x3f + beq _021F48CC + b _021F46F4 +_021F48CC: + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #6 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + str r0, [sp, #0x24] + ldr r0, [sp, #0x40] + cmp r0, #0 + bgt _021F48E0 + b _021F4A14 +_021F48E0: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r7, #0 + bl FUN_02230014 + mov r1, #0xad + mov r2, #0 + str r0, [sp, #0x1c] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _021F4900 + ldr r0, _021F4A1C ; =0x000001EE + cmp r1, r0 + bne _021F4902 +_021F4900: + b _021F4A06 +_021F4902: + ldr r0, [sp, #0x1c] + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4A06 + ldr r0, _021F4A20 ; =0x0000219C + ldr r1, [sp, #0x34] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x24] + cmp r1, r2 + beq _021F4A06 + ldr r1, [sp, #0x30] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x24] + cmp r1, r2 + beq _021F4A06 + add r2, r0, #0 + ldr r1, [sp, #0x34] + add r2, #8 + ldrb r2, [r1, r2] + ldr r1, [sp, #0x24] + cmp r1, r2 + beq _021F4A06 + ldr r1, [sp, #0x30] + add r0, #8 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x24] + cmp r0, r1 + beq _021F4A06 + mov r0, #0 + str r0, [sp, #0x64] + ldr r0, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x84] + ldr r0, [sp, #0x24] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x88] +_021F4954: + ldr r1, [sp, #0x64] + ldr r0, [sp, #0x1c] + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x8c] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x8c] + add r0, r7, #0 + add r1, r5, #0 + bl MOD16_021F3454 + str r0, [sp, #0x80] + ldr r0, [sp, #0x8c] + cmp r0, #0 + beq _021F49EE + lsl r0, r0, #4 + add r1, r5, r0 + ldr r0, _021F4A28 ; =0x000003E1 + ldrb r0, [r1, r0] + cmp r0, #1 + beq _021F49EE + add r0, r7, #0 + add r1, r6, #0 + bl MOD11_02230270 + add r3, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + lsl r3, r3, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x84] + add r4, r5, r3 + str r0, [sp, #0xc] + mov r3, #0x6f + str r6, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + lsl r3, r3, #2 + ldr r2, [sp, #0x8c] + ldr r3, [r4, r3] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_0224B310 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0 + str r0, [sp, #0x90] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x80] + str r0, [sp] + str r6, [sp, #4] + str r1, [sp, #8] + add r0, sp, #0x90 + str r0, [sp, #0xc] + ldr r2, [sp, #0x8c] + add r0, r7, #0 + add r1, r5, #0 + bl MOD11_02246274 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + ldr r1, [sp, #0x90] + ldr r0, _021F4A2C ; =0x00140808 + tst r0, r1 + beq _021F49EE + mov r0, #0 + str r0, [sp, #0x4c] +_021F49EE: + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x4c] + cmp r1, r0 + bhs _021F49FC + str r0, [sp, #0x28] + ldr r0, [sp, #0x88] + str r0, [sp, #0x2c] +_021F49FC: + ldr r0, [sp, #0x64] + add r0, r0, #1 + str r0, [sp, #0x64] + cmp r0, #4 + blt _021F4954 +_021F4A06: + ldr r0, [sp, #0x24] + add r1, r0, #1 + ldr r0, [sp, #0x40] + str r1, [sp, #0x24] + cmp r1, r0 + bge _021F4A14 + b _021F48E0 +_021F4A14: + ldr r0, [sp, #0x2c] + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + nop +_021F4A1C: .word 0x000001EE +_021F4A20: .word 0x0000219C +_021F4A24: .word 0x000021A4 +_021F4A28: .word 0x000003E1 +_021F4A2C: .word 0x00140808 + thumb_func_end MOD16_021F4698 + + thumb_func_start MOD16_021F4A30 +MOD16_021F4A30: ; 0x021F4A30 + ldr r0, [r0, #0x30] + add r1, r0, r1 + ldr r0, _021F4A3C ; =0x000021A4 + ldrb r0, [r1, r0] + bx lr + nop +_021F4A3C: .word 0x000021A4 + thumb_func_end MOD16_021F4A30 + + thumb_func_start MOD16_021F4A40 +MOD16_021F4A40: ; 0x021F4A40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r2, #0 + str r2, [sp, #0x14] + add r2, r1, #0 + asr r2, r2, #1 + ldr r4, [r5, #0x30] + str r2, [sp, #0xc] + add r6, r4, r2 + ldr r2, [sp, #0x14] + ldr r3, _021F4D6C ; =0x000003D3 + str r2, [sp, #0x1c] + strb r2, [r6, r3] + ldr r3, [r5, #0x2c] + mov r2, #0x4b + and r2, r3 + str r1, [sp] + cmp r2, #0x4b + bne _021F4A76 + bl FUN_02230260 + cmp r0, #4 + bne _021F4A76 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4A76: + ldr r0, [sp] + mov r1, #0xc0 + mul r1, r0 + mov r0, #0xb7 + str r1, [sp, #8] + add r1, r4, r1 + lsl r0, r0, #6 + ldr r1, [r1, r0] + mov r0, #1 + lsl r0, r0, #0x1a + tst r0, r1 + beq _021F4A94 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F4A94: + ldr r1, [sp] + add r0, r5, #0 + bl FUN_0222FF88 + add r7, r0, #0 + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _021F4AF2 +_021F4AA8: + add r0, r7, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4AE6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021F4AE6 + add r0, r6, #0 + mov r1, #0xad + mov r2, #0 + bl FUN_020671BC + ldr r1, _021F4D70 ; =0x000001EE + cmp r0, r1 + beq _021F4AE6 + ldr r0, [sp, #0x14] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] +_021F4AE6: + add r0, r7, #0 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _021F4AA8 +_021F4AF2: + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r1, #1 + lsl r0, r0, #3 + add r0, r4, r0 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r5, r4, r0 + ldr r0, [sp, #8] + add r7, r4, r0 + ldr r0, [sp] + bic r0, r1 + str r0, [sp] + add r0, r4, r0 + str r0, [sp, #0x10] +_021F4B12: + ldr r0, [sp, #4] + cmp r0, #0 + beq _021F4B28 + ldr r0, _021F4D74 ; =0x000003CD + ldrb r1, [r5, r0] + ldr r0, [sp, #4] + sub r0, r1, r0 + add r1, r0, #1 + ldr r0, [sp, #0x14] + cmp r0, r1 + bgt _021F4B34 +_021F4B28: + mov r0, #0xe7 + ldr r1, [sp, #0x18] + lsl r0, r0, #2 + ldrh r6, [r1, r0] + cmp r6, #0 + bne _021F4B36 +_021F4B34: + b _021F4E0E +_021F4B36: + cmp r6, #0x17 + bne _021F4B58 + ldr r1, _021F4D78 ; =0x00002D90 + ldr r0, _021F4D7C ; =0x00002D8C + ldr r1, [r7, r1] + ldr r0, [r7, r0] + lsr r1, r1, #2 + cmp r0, r1 + bhs _021F4BB2 + cmp r0, #0 + beq _021F4BB2 + ldr r0, _021F4D80 ; =0x000003D1 + mov r1, #0 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4B58: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x26 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4B9A + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x36 + bl MOD11_0224C12C + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + beq _021F4BB2 + ldr r0, _021F4D7C ; =0x00002D8C + ldr r1, [r7, r0] + cmp r1, #0 + beq _021F4BB2 + add r0, r0, #4 + ldr r3, [r7, r0] + lsr r0, r3, #2 + cmp r1, r0 + blo _021F4B8E + sub r0, r3, r1 + cmp r0, r2 + bls _021F4BB2 +_021F4B8E: + ldr r0, _021F4D80 ; =0x000003D1 + mov r1, #1 + strb r1, [r5, r0] + add r0, r1, #0 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4B9A: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0xf + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4BD0 + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #7 + tst r0, r1 + bne _021F4BB4 +_021F4BB2: + b _021F4DFA +_021F4BB4: + mov r0, #5 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4BD0: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x10 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4C0A + ldr r0, _021F4D84 ; =0x00002DAC + mov r1, #8 + ldr r0, [r7, r0] + tst r1, r0 + bne _021F4BEE + mov r1, #0x80 + tst r0, r1 + beq _021F4CBE +_021F4BEE: + mov r0, #4 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4C0A: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x11 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4C3E + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #0x10 + tst r0, r1 + beq _021F4CBE + mov r0, #3 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4C3E: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x12 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4C72 + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #0x20 + tst r0, r1 + beq _021F4CBE + mov r0, #2 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4C72: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x13 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4CA6 + ldr r0, _021F4D84 ; =0x00002DAC + ldr r1, [r7, r0] + mov r0, #0x40 + tst r0, r1 + beq _021F4CBE + mov r0, #1 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4CA6: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x14 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4CDC + ldr r0, _021F4D88 ; =0x00002DB0 + ldr r1, [r7, r0] + mov r0, #7 + tst r0, r1 + bne _021F4CC0 +_021F4CBE: + b _021F4DFA +_021F4CC0: + mov r0, #0 + bl FUN_0206A92C + ldr r1, _021F4D6C ; =0x000003D3 + ldrb r1, [r5, r1] + orr r1, r0 + ldr r0, _021F4D6C ; =0x000003D3 + strb r1, [r5, r0] + mov r1, #2 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4CDC: + ldr r0, _021F4D8C ; =0x00002DD4 + ldr r1, [r7, r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + sub r0, r1, r0 + bpl _021F4CEC + b _021F4DF4 +_021F4CEC: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1b + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D0C + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #1 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4D0C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1c + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D2C + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #2 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4D2C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1d + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D4C + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #4 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4D4C: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1e + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4D90 + ldr r0, _021F4D6C ; =0x000003D3 + mov r1, #5 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA + .align 2, 0 +_021F4D6C: .word 0x000003D3 +_021F4D70: .word 0x000001EE +_021F4D74: .word 0x000003CD +_021F4D78: .word 0x00002D90 +_021F4D7C: .word 0x00002D8C +_021F4D80: .word 0x000003D1 +_021F4D84: .word 0x00002DAC +_021F4D88: .word 0x00002DB0 +_021F4D8C: .word 0x00002DD4 +_021F4D90: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x1f + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4DAE + ldr r0, _021F4E28 ; =0x000003D3 + mov r1, #3 + strb r1, [r5, r0] + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4DAE: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x20 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4DCE + ldr r0, _021F4E28 ; =0x000003D3 + mov r1, #6 + strb r1, [r5, r0] + mov r1, #3 + sub r0, r0, #2 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4DCE: + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x16 + bl MOD11_0224C12C + cmp r0, #0 + beq _021F4DFA + mov r0, #7 + lsl r0, r0, #6 + ldr r1, [r4, r0] + mov r0, #0x40 + tst r0, r1 + bne _021F4DFA + ldr r0, _021F4E2C ; =0x000003D1 + mov r1, #4 + strb r1, [r5, r0] + mov r0, #1 + str r0, [sp, #0x1c] + b _021F4DFA +_021F4DF4: + ldr r0, _021F4E2C ; =0x000003D1 + mov r1, #5 + strb r1, [r5, r0] +_021F4DFA: + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _021F4E0E + ldr r1, [sp, #0x10] + ldr r0, _021F4E30 ; =0x000003D6 + mov r2, #0 + strh r6, [r1, r0] + ldr r1, [sp, #0x18] + sub r0, #0x3a + strh r2, [r1, r0] +_021F4E0E: + ldr r0, [sp, #0x18] + add r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + bge _021F4E20 + b _021F4B12 +_021F4E20: + ldr r0, [sp, #0x1c] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4E28: .word 0x000003D3 +_021F4E2C: .word 0x000003D1 +_021F4E30: .word 0x000003D6 + thumb_func_end MOD16_021F4A40 + + .section .data + ; 0x021F4E34 + .incbin "baserom.nds", 0x259554, 0xABAC diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s new file mode 100644 index 00000000..884302f2 --- /dev/null +++ b/arm9/modules/17/asm/module_17.s @@ -0,0 +1,14606 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD17_021D74E0 +MOD17_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + mov r1, #8 + bl FUN_02016998 + lsl r6, r5, #3 + add r4, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02016998 + mov r1, #0 + add r2, r6, #0 + str r0, [r4] + bl Call_FillMemWithValue + str r5, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D74E0 + + thumb_func_start MOD17_021D750C +MOD17_021D750C: ; 0x021D750C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D750C + + thumb_func_start MOD17_021D7520 +MOD17_021D7520: ; 0x021D7520 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + bl MOD17_021D76E0 + add r4, r0, #0 + bne _021D7532 + bl ErrorHandling +_021D7532: + ldr r0, [r5, #0x18] + str r0, [r4] + add r0, r5, #0 + bl MOD17_021D770C + str r0, [r4, #4] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D7520 + + thumb_func_start MOD17_021D7544 +MOD17_021D7544: ; 0x021D7544 + push {r3, lr} + add r1, sp, #0 + bl MOD17_021D7740 + add r0, sp, #0 + bl FUN_02020A40 + pop {r3, pc} + thumb_func_end MOD17_021D7544 + + thumb_func_start MOD17_021D7554 +MOD17_021D7554: ; 0x021D7554 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + add r6, r1, #0 + str r2, [sp] + add r7, r3, #0 + bl MOD17_021D7544 + cmp r0, #0 + bne _021D756E + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D756E: + add r0, r4, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD17_021D7600 + ldr r0, _021D75D8 ; =0x021C48F8 + ldr r1, [sp, #8] + ldrh r2, [r0, #0x1c] + sub r1, r2, r1 + str r1, [r6] + ldrh r1, [r0, #0x1e] + ldr r0, [sp, #4] + sub r1, r1, r0 + ldr r0, [sp] + sub r4, r1, #4 + str r1, [r0] + add r0, r1, #4 + cmp r4, r0 + bge _021D75D2 +_021D7594: + cmp r4, #0 + blt _021D75C6 + ldr r0, [r6] + sub r5, r0, #4 + add r0, r0, #4 + cmp r5, r0 + bge _021D75C6 +_021D75A2: + cmp r5, #0 + blt _021D75BC + add r0, r7, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #0 + bl MOD17_021D7B0C + cmp r0, #0 + bne _021D75BC + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D75BC: + ldr r0, [r6] + add r5, r5, #1 + add r0, r0, #4 + cmp r5, r0 + blt _021D75A2 +_021D75C6: + ldr r0, [sp] + add r4, r4, #1 + ldr r0, [r0] + add r0, r0, #4 + cmp r4, r0 + blt _021D7594 +_021D75D2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D75D8: .word 0x021C48F8 + thumb_func_end MOD17_021D7554 + + thumb_func_start MOD17_021D75DC +MOD17_021D75DC: ; 0x021D75DC + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + add r1, sp, #0 + bl MOD17_021D7740 + add r0, sp, #0 + add r1, r5, #0 + add r2, r4, #0 + bl FUN_02020AE8 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021D75DC + + thumb_func_start MOD17_021D75F4 +MOD17_021D75F4: ; 0x021D75F4 + ldr r3, _021D75FC ; =0x02013EC5 + ldr r0, [r0, #4] + bx r3 + nop +_021D75FC: .word 0x02013EC5 + thumb_func_end MOD17_021D75F4 + + thumb_func_start MOD17_021D7600 +MOD17_021D7600: ; 0x021D7600 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r0, [r0, #4] + add r5, r1, #0 + add r4, r2, #0 + bl FUN_02013ECC + add r1, sp, #0 + strh r0, [r1] + lsr r0, r0, #0x10 + strh r0, [r1, #2] + ldrh r0, [r1] + strh r0, [r1, #4] + ldrh r0, [r1, #2] + strh r0, [r1, #6] + mov r0, #4 + ldrsh r0, [r1, r0] + str r0, [r5] + mov r0, #6 + ldrsh r0, [r1, r0] + str r0, [r4] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D7600 + + thumb_func_start MOD17_021D7630 +MOD17_021D7630: ; 0x021D7630 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r0, [r0, #4] + add r5, r1, #0 + add r4, r2, #0 + bl FUN_02013EF0 + add r1, sp, #0 + strh r0, [r1] + lsr r0, r0, #0x10 + strh r0, [r1, #2] + ldrh r0, [r1] + strh r0, [r1, #4] + ldrh r0, [r1, #2] + strh r0, [r1, #6] + mov r0, #4 + ldrsh r0, [r1, r0] + str r0, [r5] + mov r0, #6 + ldrsh r0, [r1, r0] + str r0, [r4] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D7630 + + thumb_func_start MOD17_021D7660 +MOD17_021D7660: ; 0x021D7660 + ldr r3, _021D7668 ; =0x02013EB1 + ldr r0, [r0, #4] + bx r3 + nop +_021D7668: .word 0x02013EB1 + thumb_func_end MOD17_021D7660 + + thumb_func_start MOD17_021D766C +MOD17_021D766C: ; 0x021D766C + ldr r3, _021D7674 ; =0x02013EFD + ldr r0, [r0, #4] + bx r3 + nop +_021D7674: .word 0x02013EFD + thumb_func_end MOD17_021D766C + + thumb_func_start MOD17_021D7678 +MOD17_021D7678: ; 0x021D7678 + ldr r3, _021D7680 ; =0x02013F01 + ldr r0, [r0, #4] + bx r3 + nop +_021D7680: .word 0x02013F01 + thumb_func_end MOD17_021D7678 + + thumb_func_start MOD17_021D7684 +MOD17_021D7684: ; 0x021D7684 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + add r4, r2, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021D7630 + ldr r0, [sp, #4] + cmp r0, #0x10 + beq _021D76A4 + cmp r0, #0x20 + beq _021D76AA + cmp r0, #0x40 + beq _021D76B0 + b _021D76B4 +_021D76A4: + mov r0, #0 + str r0, [r5] + b _021D76B4 +_021D76AA: + mov r0, #0xa + str r0, [r5] + b _021D76B4 +_021D76B0: + mov r0, #0x14 + str r0, [r5] +_021D76B4: + ldr r0, [sp] + cmp r0, #0x10 + beq _021D76C6 + cmp r0, #0x20 + beq _021D76CE + cmp r0, #0x40 + beq _021D76D6 + add sp, #8 + pop {r3, r4, r5, pc} +_021D76C6: + mov r0, #0 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76CE: + mov r0, #0xa + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_021D76D6: + mov r0, #0x14 + str r0, [r4] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D7684 + + thumb_func_start MOD17_021D76E0 +MOD17_021D76E0: ; 0x021D76E0 + push {r3, r4} + ldr r4, [r0, #4] + mov r1, #0 + cmp r4, #0 + ble _021D7704 + ldr r3, [r0] + add r2, r3, #0 +_021D76EE: + ldr r0, [r2, #4] + cmp r0, #0 + bne _021D76FC + lsl r0, r1, #3 + add r0, r3, r0 + pop {r3, r4} + bx lr +_021D76FC: + add r1, r1, #1 + add r2, #8 + cmp r1, r4 + blt _021D76EE +_021D7704: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD17_021D76E0 + + thumb_func_start MOD17_021D770C +MOD17_021D770C: ; 0x021D770C + push {r3, lr} + sub sp, #0x20 + ldr r1, [r0, #4] + mov r3, #0 + str r1, [sp] + ldr r1, [r0, #8] + str r1, [sp, #4] + ldr r1, [r0, #0xc] + str r1, [sp, #8] + ldr r2, [r0, #0x10] + add r1, sp, #0 + strh r2, [r1, #0xc] + ldr r2, [r0, #0x14] + strh r2, [r1, #0xe] + strh r3, [r1, #0x10] + mov r2, #0x1f + str r2, [sp, #0x14] + str r3, [sp, #0x18] + ldr r0, [r0, #0x1c] + strh r0, [r1, #0x1c] + add r0, sp, #0 + bl FUN_02013E84 + add sp, #0x20 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021D770C + + thumb_func_start MOD17_021D7740 +MOD17_021D7740: ; 0x021D7740 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #4] + add r4, r1, #0 + bl FUN_02013ECC + add r1, sp, #0 + strh r0, [r1, #4] + lsr r0, r0, #0x10 + strh r0, [r1, #6] + ldrh r0, [r1, #4] + strh r0, [r1, #0xc] + ldrh r0, [r1, #6] + strh r0, [r1, #0xe] + ldr r0, [r5, #4] + bl FUN_02013EF0 + add r1, sp, #0 + strh r0, [r1] + lsr r0, r0, #0x10 + strh r0, [r1, #2] + ldrh r0, [r1] + strh r0, [r1, #8] + ldrh r0, [r1, #2] + strh r0, [r1, #0xa] + mov r0, #0xe + ldrsh r2, [r1, r0] + mov r0, #0xa + strb r2, [r4] + ldrsh r0, [r1, r0] + add r0, r2, r0 + strb r0, [r4, #1] + mov r0, #0xc + ldrsh r2, [r1, r0] + mov r0, #8 + strb r2, [r4, #2] + ldrsh r0, [r1, r0] + add r0, r2, r0 + strb r0, [r4, #3] + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021D7740 + + thumb_func_start MOD17_021D7794 +MOD17_021D7794: ; 0x021D7794 + push {r3, lr} + bl MOD17_021D7D08 + bl MOD17_021D7D28 + bl MOD17_021D7DB0 + ldr r0, _021D77B0 ; =0x021C4918 + mov r1, #1 + strb r1, [r0, #5] + bl FUN_0201E7A0 + pop {r3, pc} + nop +_021D77B0: .word 0x021C4918 + thumb_func_end MOD17_021D7794 + + thumb_func_start MOD17_021D77B4 +MOD17_021D77B4: ; 0x021D77B4 + push {r3, lr} + ldr r0, _021D77D0 ; =0x021C4918 + mov r1, #0 + strb r1, [r0, #5] + bl FUN_0201E7A0 + bl MOD17_021D7E0C + bl MOD17_021D7E00 + bl GX_ResetBankForTex + pop {r3, pc} + nop +_021D77D0: .word 0x021C4918 + thumb_func_end MOD17_021D77B4 + + thumb_func_start MOD17_021D77D4 +MOD17_021D77D4: ; 0x021D77D4 + push {r3, r4, r5, lr} + sub sp, #0x10 + ldr r5, _021D7824 ; =0x021DE274 + add r3, sp, #0 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r4, #0 + add r1, r2, #0 + bl MOD17_021D7E1C + mov r2, #0xa + add r0, r4, #0 + mov r1, #0xe + lsl r2, r2, #0xa + mov r3, #0x20 + bl MOD17_021D82E4 + add r0, r4, #0 + bl MOD17_021D8088 + add r0, r4, #0 + mov r1, #0xd + bl MOD17_021D82B8 + add r0, r4, #0 + bl MOD17_021D80CC + mov r0, #0xe + bl FUN_02016B94 + str r0, [r4, #0x38] + add r0, r4, #0 + bl MOD17_021D7F34 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7824: .word 0x021DE274 + thumb_func_end MOD17_021D77D4 + + thumb_func_start MOD17_021D7828 +MOD17_021D7828: ; 0x021D7828 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D82D4 + add r0, r4, #0 + bl MOD17_021D7E58 + add r0, r4, #0 + bl MOD17_021D8058 + ldr r0, [r4, #0x38] + bl FUN_02016A18 + add r0, r4, #0 + bl MOD17_021D834C + add r0, r4, #0 + bl MOD17_021D816C + add r0, r4, #0 + bl MOD17_021D80B4 + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7828 + + thumb_func_start MOD17_021D786C +MOD17_021D786C: ; 0x021D786C + push {r4, lr} + add r4, r0, #0 + bl FUN_020222AC + bl FUN_020B02C8 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021D7884 + add r0, r4, #0 + bl MOD17_021D7E68 +_021D7884: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D7890 + ldr r0, [r4, #0x20] + bl FUN_02006ED4 +_021D7890: + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 + add r0, r4, #0 + bl MOD17_021D8194 + pop {r4, pc} + thumb_func_end MOD17_021D786C + + thumb_func_start MOD17_021D78A0 +MOD17_021D78A0: ; 0x021D78A0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + ldr r2, [r4, #4] + add r5, r0, #0 + bl MOD17_021D7E74 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + add r0, r5, #0 + bl MOD17_021D7ED4 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D78A0 + + thumb_func_start MOD17_021D78BC +MOD17_021D78BC: ; 0x021D78BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02013DEC + ldr r0, [r4] + bl FUN_02013E5C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D78BC + + thumb_func_start MOD17_021D78D0 +MOD17_021D78D0: ; 0x021D78D0 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + mov r0, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + add r4, r2, #0 + ldr r2, [r5, #0x40] + add r6, r3, #0 + str r2, [sp, #0x14] + ldr r2, [r5, #0x44] + add r3, r1, #0 + str r2, [sp, #0x18] + ldr r2, [r5, #0x48] + str r2, [sp, #0x1c] + ldr r2, [r5, #0x4c] + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, sp, #0x4c + add r2, r1, #0 + bl FUN_02008AA4 + ldr r0, [r5, #0x3c] + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + lsl r0, r4, #0xc + str r0, [sp, #0x34] + lsl r0, r6, #0xc + str r0, [sp, #0x38] + mov r0, #0 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x80] + str r0, [sp, #0x40] + ldr r0, [sp, #0x84] + str r0, [sp, #0x44] + mov r0, #0xe + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + add sp, #0x70 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021D78D0 + + thumb_func_start MOD17_021D7934 +MOD17_021D7934: ; 0x021D7934 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x1c] + str r4, [sp] + ldr r4, [sp, #0x18] + str r4, [sp, #4] + mov r4, #0xe + str r4, [sp, #8] + ldr r0, [r0, #0x40] + bl FUN_02008F34 + bl FUN_02009B04 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7934 + + thumb_func_start MOD17_021D7954 +MOD17_021D7954: ; 0x021D7954 + push {r4, lr} + sub sp, #0x10 + ldr r4, [sp, #0x20] + str r4, [sp] + ldr r4, [sp, #0x18] + str r4, [sp, #4] + ldr r4, [sp, #0x1c] + str r4, [sp, #8] + mov r4, #0xe + str r4, [sp, #0xc] + ldr r0, [r0, #0x44] + bl FUN_02008FEC + bl FUN_02009D68 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7954 + + thumb_func_start MOD17_021D7978 +MOD17_021D7978: ; 0x021D7978 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + str r4, [sp] + mov r4, #2 + str r4, [sp, #4] + mov r4, #0xe + str r4, [sp, #8] + ldr r0, [r0, #0x48] + bl FUN_020090AC + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7978 + + thumb_func_start MOD17_021D7994 +MOD17_021D7994: ; 0x021D7994 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + str r4, [sp] + mov r4, #3 + str r4, [sp, #4] + mov r4, #0xe + str r4, [sp, #8] + ldr r0, [r0, #0x4c] + bl FUN_020090AC + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7994 + + thumb_func_start MOD17_021D79B0 +MOD17_021D79B0: ; 0x021D79B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + bl FUN_020094F0 + add r1, r0, #0 + ldr r0, [r4, #0x40] + bl FUN_02009490 + pop {r4, pc} + thumb_func_end MOD17_021D79B0 + + thumb_func_start MOD17_021D79C4 +MOD17_021D79C4: ; 0x021D79C4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x44] + bl FUN_020094F0 + add r1, r0, #0 + ldr r0, [r4, #0x44] + bl FUN_02009490 + pop {r4, pc} + thumb_func_end MOD17_021D79C4 + + thumb_func_start MOD17_021D79D8 +MOD17_021D79D8: ; 0x021D79D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x48] + bl FUN_020094F0 + add r1, r0, #0 + ldr r0, [r4, #0x48] + bl FUN_02009490 + pop {r4, pc} + thumb_func_end MOD17_021D79D8 + + thumb_func_start MOD17_021D79EC +MOD17_021D79EC: ; 0x021D79EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + bl FUN_020094F0 + add r1, r0, #0 + ldr r0, [r4, #0x4c] + bl FUN_02009490 + pop {r4, pc} + thumb_func_end MOD17_021D79EC + + thumb_func_start MOD17_021D7A00 +MOD17_021D7A00: ; 0x021D7A00 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x76 + mov r2, #0x13 + mov r3, #0xe + bl MOD17_021D8358 + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021D81A0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021D821C + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021D7A00 + + thumb_func_start MOD17_021D7A24 +MOD17_021D7A24: ; 0x021D7A24 + ldr r3, _021D7A28 ; =MOD17_021D83AC + bx r3 + .align 2, 0 +_021D7A28: .word MOD17_021D83AC + thumb_func_end MOD17_021D7A24 + + thumb_func_start MOD17_021D7A2C +MOD17_021D7A2C: ; 0x021D7A2C + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + add r6, r1, #0 + add r5, r2, #0 + bl FUN_02020CD4 + ldr r1, [r4, #0x30] + lsl r5, r5, #2 + add r0, r6, #0 + add r1, r1, r5 + bl FUN_020B0088 + ldr r0, [r4, #0x30] + ldr r0, [r0, r5] + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021D7A2C + + thumb_func_start MOD17_021D7A4C +MOD17_021D7A4C: ; 0x021D7A4C + push {r3, r4} + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _021D7A78 ; =0xFFFF1FFF + add r3, r0, #0 + and r1, r2 + str r1, [r0] + add r3, #8 + ldrh r4, [r3] + mov r2, #3 + mov r1, #1 + bic r4, r2 + orr r1, r4 + add r0, #0xa + strh r1, [r3] + ldrh r1, [r0] + bic r1, r2 + strh r1, [r0] + pop {r3, r4} + bx lr + nop +_021D7A78: .word 0xFFFF1FFF + thumb_func_end MOD17_021D7A4C + + thumb_func_start MOD17_021D7A7C +MOD17_021D7A7C: ; 0x021D7A7C + push {r3, r4} + mov r0, #1 + lsl r0, r0, #0x1a + ldr r2, [r0] + ldr r1, _021D7AD8 ; =0xFFFF1FFF + add r3, r0, #0 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0] + add r3, #0x48 + ldrh r4, [r3] + mov r2, #0x3f + mov r1, #0x1f + bic r4, r2 + orr r1, r4 + strh r1, [r3] + add r3, r0, #0 + add r3, #0x4a + ldrh r4, [r3] + mov r1, #0x12 + bic r4, r2 + orr r1, r4 + strh r1, [r3] + add r1, r0, #0 + ldr r2, _021D7ADC ; =0x00000AF6 + add r1, #0x40 + strh r2, [r1] + add r1, r0, #0 + ldr r2, _021D7AE0 ; =0x0000128F + add r1, #0x44 + strh r2, [r1] + add r2, r0, #0 + add r2, #8 + ldrh r3, [r2] + mov r1, #3 + add r0, #0xa + bic r3, r1 + strh r3, [r2] + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + pop {r3, r4} + bx lr + .align 2, 0 +_021D7AD8: .word 0xFFFF1FFF +_021D7ADC: .word 0x00000AF6 +_021D7AE0: .word 0x0000128F + thumb_func_end MOD17_021D7A7C + + thumb_func_start MOD17_021D7AE4 +MOD17_021D7AE4: ; 0x021D7AE4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_0201AB60 + ldr r0, [r4, #0x20] + bl FUN_020081C4 + bl FUN_02009F80 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7AE4 + + thumb_func_start MOD17_021D7AFC +MOD17_021D7AFC: ; 0x021D7AFC + push {r3, lr} + add r3, r1, #0 + mov r1, #0x76 + mov r2, #0x13 + bl MOD17_021D8358 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021D7AFC + + thumb_func_start MOD17_021D7B0C +MOD17_021D7B0C: ; 0x021D7B0C + push {r4, r5} + ldrh r5, [r0, #2] + ldrh r4, [r0] + lsl r5, r5, #3 + cmp r1, #0 + blt _021D7B26 + cmp r2, #0 + blt _021D7B26 + cmp r1, r5 + bge _021D7B26 + lsl r4, r4, #3 + cmp r2, r4 + blt _021D7B2C +_021D7B26: + mov r0, #2 + pop {r4, r5} + bx lr +_021D7B2C: + add r4, r2, #0 + mul r4, r5 + add r4, r1, r4 + lsr r5, r4, #0x1f + lsl r2, r4, #0x1d + sub r2, r2, r5 + mov r1, #0x1d + ror r2, r1 + add r1, r5, r2 + lsl r2, r1, #2 + add r1, r3, #0 + ldr r3, [r0, #0x14] + asr r0, r4, #2 + lsr r0, r0, #0x1d + add r0, r4, r0 + asr r0, r0, #3 + lsl r0, r0, #2 + ldr r3, [r3, r0] + mov r0, #0xf + lsl r0, r2 + lsl r1, r2 + and r0, r3 + cmp r1, r0 + bne _021D7B62 + mov r0, #1 + pop {r4, r5} + bx lr +_021D7B62: + mov r0, #0 + pop {r4, r5} + bx lr + thumb_func_end MOD17_021D7B0C + + thumb_func_start MOD17_021D7B68 +MOD17_021D7B68: ; 0x021D7B68 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD17_021D7E1C + mov r2, #0xa + add r0, r5, #0 + add r1, r4, #0 + lsl r2, r2, #0xa + mov r3, #0x20 + bl MOD17_021D82E4 + ldr r0, [r5, #0x20] + mov r1, #1 + bl FUN_0200825C + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021D82B8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D7B68 + + thumb_func_start MOD17_021D7B94 +MOD17_021D7B94: ; 0x021D7B94 + push {r4, r5, lr} + sub sp, #0x1c + ldr r3, _021D7BE0 ; =0x021DE2D8 + add r5, r0, #0 + str r1, [r5, #0x38] + add r4, r2, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r0, [r5, #0x38] + bl FUN_020178A0 + ldr r0, [r5, #0x38] + mov r1, #2 + add r2, sp, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + add r3, r4, #0 + bl FUN_02017F18 + ldr r0, [r5, #0x38] + mov r1, #2 + bl FUN_02018744 + add sp, #0x1c + pop {r4, r5, pc} + nop +_021D7BE0: .word 0x021DE2D8 + thumb_func_end MOD17_021D7B94 + + thumb_func_start MOD17_021D7BE4 +MOD17_021D7BE4: ; 0x021D7BE4 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D82D4 + add r0, r4, #0 + bl MOD17_021D7E58 + add r0, r4, #0 + bl MOD17_021D834C + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7BE4 + + thumb_func_start MOD17_021D7C10 +MOD17_021D7C10: ; 0x021D7C10 + ldr r3, _021D7C18 ; =0x020178A1 + ldr r0, [r0, #0x38] + mov r1, #2 + bx r3 + .align 2, 0 +_021D7C18: .word 0x020178A1 + thumb_func_end MOD17_021D7C10 + + thumb_func_start MOD17_021D7C1C +MOD17_021D7C1C: ; 0x021D7C1C + ldr r3, _021D7C24 ; =0x020081C5 + ldr r0, [r0, #0x20] + bx r3 + nop +_021D7C24: .word 0x020081C5 + thumb_func_end MOD17_021D7C1C + + thumb_func_start MOD17_021D7C28 +MOD17_021D7C28: ; 0x021D7C28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, _021D7CAC ; =0x04000454 + str r3, [sp] + mov r1, #0 + str r1, [r0] + sub r0, #0x10 + add r6, r2, #0 + ldr r7, [sp, #0x18] + str r1, [r0] + bl FUN_020B02C8 + ldr r1, _021D7CB0 ; =0x04000470 + lsl r0, r4, #0xc + str r0, [r1] + lsl r0, r6, #0xc + str r0, [r1] + mov r0, #0 + str r0, [r1] + ldr r0, [sp] + ldr r1, _021D7CB4 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r0, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r0, [r1, r0] + ldrsh r1, [r1, r2] + bl G3_RotZ + ldr r2, [r7, #8] + ldr r1, [r7, #4] + ldr r3, [r7] + ldr r0, _021D7CB8 ; =0x0400046C + str r3, [r0] + str r1, [r0] + neg r1, r4 + str r2, [r0] + lsl r1, r1, #0xc + str r1, [r0, #4] + neg r1, r6 + lsl r1, r1, #0xc + str r1, [r0, #4] + mov r1, #0 + str r1, [r0, #4] + sub r0, #0x28 + str r1, [r0] + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021D7C94 + add r0, r5, #0 + bl MOD17_021D7E68 +_021D7C94: + ldr r0, [r5, #0x24] + cmp r0, #0 + beq _021D7CA0 + ldr r0, [r5, #0x20] + bl FUN_02006ED4 +_021D7CA0: + ldr r0, _021D7CBC ; =0x04000448 + mov r1, #1 + str r1, [r0] + str r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7CAC: .word 0x04000454 +_021D7CB0: .word 0x04000470 +_021D7CB4: .word 0x020FFA38 +_021D7CB8: .word 0x0400046C +_021D7CBC: .word 0x04000448 + thumb_func_end MOD17_021D7C28 + + thumb_func_start MOD17_021D7CC0 +MOD17_021D7CC0: ; 0x021D7CC0 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D80CC + mov r0, #0xe + bl FUN_02016B94 + str r0, [r4, #0x38] + add r0, r4, #0 + bl MOD17_021D7F34 + pop {r4, pc} + thumb_func_end MOD17_021D7CC0 + + thumb_func_start MOD17_021D7CD8 +MOD17_021D7CD8: ; 0x021D7CD8 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D8058 + ldr r0, [r4, #0x38] + bl FUN_02016A18 + add r0, r4, #0 + bl MOD17_021D816C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D7CD8 + + thumb_func_start MOD17_021D7CF0 +MOD17_021D7CF0: ; 0x021D7CF0 + push {r3, lr} + ldr r0, [r0, #0x38] + bl FUN_0201AB60 + bl FUN_02009F80 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021D7CF0 + + thumb_func_start MOD17_021D7D00 +MOD17_021D7D00: ; 0x021D7D00 + ldr r3, _021D7D04 ; =MOD17_021D8194 + bx r3 + .align 2, 0 +_021D7D04: .word MOD17_021D8194 + thumb_func_end MOD17_021D7D00 + + thumb_func_start MOD17_021D7D08 +MOD17_021D7D08: ; 0x021D7D08 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7D24 ; =0x021DE32C + add r3, sp, #0 + mov r2, #5 +_021D7D12: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7D12 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7D24: .word 0x021DE32C + thumb_func_end MOD17_021D7D08 + + thumb_func_start MOD17_021D7D28 +MOD17_021D7D28: ; 0x021D7D28 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r0, _021D7D9C ; =0x04000008 + mov r1, #3 + ldrh r2, [r0] + bic r2, r1 + mov r1, #1 + orr r1, r2 + strh r1, [r0] + add r0, #0x58 + ldrh r1, [r0] + ldr r2, _021D7DA0 ; =0xFFFFCFFD + and r1, r2 + strh r1, [r0] + ldrh r3, [r0] + add r1, r2, #2 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021D7DA4 ; =0x0000CFFB + and r1, r3 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #8 + orr r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r2, _021D7DA8 ; =0x04000540 + mov r0, #2 + ldr r1, _021D7DAC ; =0xBFFF0000 + str r0, [r2] + str r1, [r2, #0x40] + mov r1, #1 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + pop {r3, pc} + .align 2, 0 +_021D7D9C: .word 0x04000008 +_021D7DA0: .word 0xFFFFCFFD +_021D7DA4: .word 0x0000CFFB +_021D7DA8: .word 0x04000540 +_021D7DAC: .word 0xBFFF0000 + thumb_func_end MOD17_021D7D28 + + thumb_func_start MOD17_021D7DB0 +MOD17_021D7DB0: ; 0x021D7DB0 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021D7DF8 ; =0x021DE254 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7DFC ; =0xFFCFFFEF + and r1, r0 + mov r0, #0x10 + orr r0, r1 + str r0, [r2] + bl FUN_020B0FC0 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r0, #0x1f + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x13 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D7DF8: .word 0x021DE254 +_021D7DFC: .word 0xFFCFFFEF + thumb_func_end MOD17_021D7DB0 + + thumb_func_start MOD17_021D7E00 +MOD17_021D7E00: ; 0x021D7E00 + push {r3, lr} + bl FUN_020AEAF4 + bl FUN_020AEC60 + pop {r3, pc} + thumb_func_end MOD17_021D7E00 + + thumb_func_start MOD17_021D7E0C +MOD17_021D7E0C: ; 0x021D7E0C + push {r3, lr} + bl FUN_0201E6D8 + bl FUN_0201E740 + bl FUN_020B0FC0 + pop {r3, pc} + thumb_func_end MOD17_021D7E0C + + thumb_func_start MOD17_021D7E1C +MOD17_021D7E1C: ; 0x021D7E1C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02013CD4 + str r0, [r5] + mov r1, #0x76 + ldr r0, [r4, #0xc] + lsl r1, r1, #2 + bl FUN_02016998 + str r0, [r5, #4] + mov r0, #0x76 + str r0, [r5, #8] + mov r0, #0 + str r0, [r5, #0xc] + ldr r0, [r4, #0xc] + mov r1, #0x4c + bl FUN_02016998 + str r0, [r5, #0x10] + mov r0, #0x13 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x18] + mov r0, #1 + str r0, [r5, #0x1c] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021D7E1C + + thumb_func_start MOD17_021D7E58 +MOD17_021D7E58: ; 0x021D7E58 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02013D18 + mov r0, #0 + str r0, [r4] + pop {r4, pc} + thumb_func_end MOD17_021D7E58 + + thumb_func_start MOD17_021D7E68 +MOD17_021D7E68: ; 0x021D7E68 + ldr r3, _021D7E70 ; =0x02013D5D + ldr r0, [r0] + bx r3 + nop +_021D7E70: .word 0x02013D5D + thumb_func_end MOD17_021D7E68 + + thumb_func_start MOD17_021D7E74 +MOD17_021D7E74: ; 0x021D7E74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + add r0, r2, #0 + add r4, r1, #0 + str r2, [sp] + cmp r0, #0 + ble _021D7ED0 + add r7, r5, #0 + add r6, r4, #0 + add r7, #0xc +_021D7E8E: + ldr r1, [r5, #0xc] + ldr r0, [r5, #8] + cmp r1, r0 + blt _021D7E9A + bl ErrorHandling +_021D7E9A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7EB0 + add r0, r6, #0 + bl FUN_02013D98 + ldr r2, [r5, #0xc] + ldr r1, [r5, #4] + lsl r2, r2, #2 + str r0, [r1, r2] + b _021D7EBA +_021D7EB0: + ldr r1, [r5, #0xc] + ldr r0, [r5, #4] + lsl r2, r1, #2 + mov r1, #0 + str r1, [r0, r2] +_021D7EBA: + ldr r0, [r7] + add r4, #8 + add r0, r0, #1 + str r0, [r7] + ldr r0, [sp, #4] + add r6, #8 + add r1, r0, #1 + ldr r0, [sp] + str r1, [sp, #4] + cmp r1, r0 + blt _021D7E8E +_021D7ED0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021D7E74 + + thumb_func_start MOD17_021D7ED4 +MOD17_021D7ED4: ; 0x021D7ED4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + add r0, r2, #0 + add r4, r1, #0 + str r2, [sp] + cmp r0, #0 + ble _021D7F30 + add r7, r5, #0 + add r6, r4, #0 + add r7, #0x18 +_021D7EEE: + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x14] + cmp r1, r0 + blt _021D7EFA + bl ErrorHandling +_021D7EFA: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7F10 + add r0, r6, #0 + bl FUN_02013E14 + ldr r2, [r5, #0x18] + ldr r1, [r5, #0x10] + lsl r2, r2, #2 + str r0, [r1, r2] + b _021D7F1A +_021D7F10: + ldr r1, [r5, #0x18] + ldr r0, [r5, #0x10] + lsl r2, r1, #2 + mov r1, #0 + str r1, [r0, r2] +_021D7F1A: + ldr r0, [r7] + add r4, #0xc + add r0, r0, #1 + str r0, [r7] + ldr r0, [sp, #4] + add r6, #0xc + add r1, r0, #1 + ldr r0, [sp] + str r1, [sp, #4] + cmp r1, r0 + blt _021D7EEE +_021D7F30: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021D7ED4 + + thumb_func_start MOD17_021D7F34 +MOD17_021D7F34: ; 0x021D7F34 + push {r4, r5, lr} + sub sp, #0x8c + ldr r5, _021D8044 ; =0x021DE2A0 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x70 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #0x38] + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xe + bl FUN_02017F18 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D8048 ; =0x021DE2BC + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #0x38] + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xe + bl FUN_02017F18 + ldr r0, [r4, #0x38] + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D804C ; =0x021DE2F4 + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #0x38] + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xe + bl FUN_02017F18 + ldr r0, [r4, #0x38] + mov r1, #3 + bl FUN_02018744 + ldr r5, _021D8050 ; =0x021DE284 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + ldr r0, [r4, #0x38] + mov r3, #0 + bl FUN_02016C18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xe + bl FUN_02017F18 + ldr r0, [r4, #0x38] + mov r1, #4 + bl FUN_02018744 + ldr r5, _021D8054 ; =0x021DE310 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + ldr r0, [r4, #0x38] + mov r3, #0 + bl FUN_02016C18 + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + mov r3, #0xe + bl FUN_02017F18 + ldr r0, [r4, #0x38] + mov r1, #5 + bl FUN_02018744 + add sp, #0x8c + pop {r4, r5, pc} + nop +_021D8044: .word 0x021DE2A0 +_021D8048: .word 0x021DE2BC +_021D804C: .word 0x021DE2F4 +_021D8050: .word 0x021DE284 +_021D8054: .word 0x021DE310 + thumb_func_end MOD17_021D7F34 + + thumb_func_start MOD17_021D8058 +MOD17_021D8058: ; 0x021D8058 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x38] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x38] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x38] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x38] + mov r1, #5 + bl FUN_020178A0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D8058 + + thumb_func_start MOD17_021D8088 +MOD17_021D8088: ; 0x021D8088 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x77 + mov r1, #0xe + bl FUN_02020C44 + mov r1, #0x77 + str r0, [r4, #0x2c] + mov r0, #0xe + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x77 + mov r1, #0 + lsl r2, r2, #2 + str r0, [r4, #0x30] + bl Call_FillMemWithValue + mov r0, #0x77 + str r0, [r4, #0x34] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D8088 + + thumb_func_start MOD17_021D80B4 +MOD17_021D80B4: ; 0x021D80B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + bl FUN_02016A18 + ldr r0, [r4, #0x2c] + bl FUN_02020C90 + mov r0, #0 + str r0, [r4, #0x34] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D80B4 + + thumb_func_start MOD17_021D80CC +MOD17_021D80CC: ; 0x021D80CC + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D8168 ; =0x021DE264 + add r3, sp, #0x14 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #0x10 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_0201D060 + mov r0, #5 + mov r1, #0xe + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7c + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x1f + str r3, [sp, #0xc] + mov r2, #0xe + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x30 + add r1, #0x50 + mov r2, #0xe + bl FUN_02008C9C + str r0, [r4, #0x3c] + add r0, r4, #0 + mov r2, #2 + add r0, #0x50 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #8 + mov r1, #0 + mov r2, #0xe + bl FUN_02008DEC + str r0, [r4, #0x40] + mov r0, #5 + mov r1, #1 + mov r2, #0xe + bl FUN_02008DEC + str r0, [r4, #0x44] + mov r0, #0x30 + mov r1, #2 + mov r2, #0xe + bl FUN_02008DEC + str r0, [r4, #0x48] + mov r0, #0x30 + mov r1, #3 + mov r2, #0xe + bl FUN_02008DEC + str r0, [r4, #0x4c] + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D8168: .word 0x021DE264 + thumb_func_end MOD17_021D80CC + + thumb_func_start MOD17_021D816C +MOD17_021D816C: ; 0x021D816C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x3c] + bl FUN_0201FD58 + mov r4, #0 +_021D8178: + ldr r0, [r5, #0x40] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D8178 + bl FUN_0201D12C + bl FUN_0201E08C + bl FUN_02009FA0 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021D816C + + thumb_func_start MOD17_021D8194 +MOD17_021D8194: ; 0x021D8194 + ldr r3, _021D819C ; =0x0201FDED + ldr r0, [r0, #0x3c] + bx r3 + nop +_021D819C: .word 0x0201FDED + thumb_func_end MOD17_021D8194 + + thumb_func_start MOD17_021D81A0 +MOD17_021D81A0: ; 0x021D81A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r4, #0 + add r7, r0, #0 + add r6, r1, #0 + add r5, r4, #0 +_021D81AC: + mov r0, #1 + str r0, [sp] + mov r0, #0x19 + add r1, r4, #1 + mov r2, #0 + mov r3, #0xe + bl FUN_02006C98 + str r0, [sp, #4] + cmp r0, #0 + bne _021D81C6 + bl ErrorHandling +_021D81C6: + ldr r1, [sp, #4] + add r0, r7, #0 + add r2, r4, #0 + bl MOD17_021D7A2C + ldr r1, [r6] + add r4, r4, #1 + add r1, r1, r5 + str r0, [r1, #4] + ldr r1, [r7] + ldr r0, [r6] + str r1, [r0, r5] + add r5, #8 + cmp r4, #0x64 + blt _021D81AC + mov r0, #1 + mov r1, #0 + str r0, [sp] + mov r0, #0x19 + add r2, r1, #0 + mov r3, #0xe + bl FUN_02006C98 + add r4, r0, #0 + ldr r0, [r6, #0x14] + add r1, r4, #0 + mov r2, #0 + bl FUN_02020CD4 + ldr r1, [r6, #8] + add r0, r4, #0 + add r1, r1, #4 + bl FUN_020B0138 + ldr r1, [r7] + ldr r0, [r6, #8] + str r1, [r0] + ldr r0, [r6, #8] + mov r1, #3 + str r1, [r0, #8] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D81A0 + + thumb_func_start MOD17_021D821C +MOD17_021D821C: ; 0x021D821C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + mov r0, #0x87 + add r5, r1, #0 + mov r4, #0 + str r0, [sp, #8] +_021D822A: + mov r0, #1 + add r1, r4, #0 + str r0, [sp] + mov r0, #0x19 + add r1, #0xce + mov r2, #0 + mov r3, #0xe + bl FUN_02006C98 + add r2, r4, #0 + add r1, r0, #0 + add r2, #0x64 + add r0, r7, #0 + lsl r6, r2, #3 + bl MOD17_021D7A2C + ldr r1, [r5] + mov r2, #0 + add r1, r1, r6 + str r0, [r1, #4] + ldr r1, [r7] + ldr r0, [r5] + mov r3, #0xe + str r1, [r0, r6] + add r0, r4, #1 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #8] + mov r0, #0x19 + bl FUN_02006C98 + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r1, [sp, #0xc] + ldr r2, [sp, #4] + bl FUN_02020CD4 + ldr r1, [sp, #4] + mov r0, #0xc + add r6, r1, #0 + mul r6, r0 + ldr r1, [r5, #8] + ldr r0, [sp, #0xc] + add r1, r1, r6 + add r1, r1, #4 + bl FUN_020B0138 + ldr r0, [r5, #8] + add r0, r0, r6 + ldr r0, [r0, #4] + cmp r0, #0 + bne _021D8298 + bl ErrorHandling +_021D8298: + ldr r1, [r7] + ldr r0, [r5, #8] + add r4, r4, #1 + str r1, [r0, r6] + ldr r0, [r5, #8] + add r1, r0, r6 + mov r0, #1 + str r0, [r1, #8] + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + cmp r4, #0x12 + blt _021D822A + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D821C + + thumb_func_start MOD17_021D82B8 +MOD17_021D82B8: ; 0x021D82B8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r3, r1, #0 + mov r2, #0 + mov r0, #0x19 + mov r1, #0xeb + str r2, [sp] + bl FUN_02006C98 + str r0, [r4, #0x28] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D82B8 + + thumb_func_start MOD17_021D82D4 +MOD17_021D82D4: ; 0x021D82D4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #0x28] + pop {r4, pc} + thumb_func_end MOD17_021D82D4 + + thumb_func_start MOD17_021D82E4 +MOD17_021D82E4: ; 0x021D82E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_02006D98 + str r0, [r5, #0x20] + ldr r3, _021D833C ; =0x021064B8 + mov r1, #0 + ldr r3, [r3] + add r0, r4, #0 + add r2, r1, #0 + blx r3 + ldr r3, _021D8340 ; =0x021064C0 + add r4, r0, #0 + ldr r3, [r3] + add r0, r6, #0 + mov r1, #0 + mov r2, #1 + blx r3 + ldr r2, _021D8344 ; =0x7FFF0000 + add r6, r0, #0 + and r2, r4 + lsl r1, r4, #0x10 + lsr r2, r2, #0x10 + ldr r0, [r5, #0x20] + lsr r1, r1, #0xd + lsl r2, r2, #4 + bl FUN_020081A8 + ldr r2, _021D8348 ; =0xFFFF0000 + lsl r1, r6, #0x10 + and r2, r6 + lsr r2, r2, #0x10 + ldr r0, [r5, #0x20] + lsr r1, r1, #0xd + lsl r2, r2, #3 + bl FUN_020081B4 + mov r0, #1 + str r0, [r5, #0x24] + pop {r4, r5, r6, pc} + nop +_021D833C: .word 0x021064B8 +_021D8340: .word 0x021064C0 +_021D8344: .word 0x7FFF0000 +_021D8348: .word 0xFFFF0000 + thumb_func_end MOD17_021D82E4 + + thumb_func_start MOD17_021D834C +MOD17_021D834C: ; 0x021D834C + ldr r3, _021D8354 ; =0x020072E9 + ldr r0, [r0, #0x20] + bx r3 + nop +_021D8354: .word 0x020072E9 + thumb_func_end MOD17_021D834C + + thumb_func_start MOD17_021D8358 +MOD17_021D8358: ; 0x021D8358 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + lsl r0, r4, #3 + str r0, [sp] + add r7, r3, #0 + ldr r1, [sp] + add r0, r7, #0 + add r6, r2, #0 + bl FUN_02016998 + ldr r2, [sp] + mov r1, #0 + str r0, [r5] + bl Call_FillMemWithValue + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02020C44 + str r0, [r5, #0x10] + str r4, [r5, #4] + mov r0, #0xc + add r4, r6, #0 + mul r4, r0 + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02016998 + mov r1, #0 + add r2, r4, #0 + str r0, [r5, #8] + bl Call_FillMemWithValue + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02020C44 + str r0, [r5, #0x14] + str r6, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D8358 + + thumb_func_start MOD17_021D83AC +MOD17_021D83AC: ; 0x021D83AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021D83BE + bl FUN_02020C90 + mov r0, #0 + str r0, [r4, #0x10] +_021D83BE: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021D83CC + bl FUN_02020C90 + mov r0, #0 + str r0, [r4, #0x14] +_021D83CC: + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + ldr r0, [r4, #8] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #8] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D83AC + + thumb_func_start MOD17_021D83E4 +MOD17_021D83E4: ; 0x021D83E4 + push {r3, r4, r5, lr} + sub sp, #8 + mov r2, #2 + add r4, r0, #0 + mov r0, #3 + mov r1, #0xd + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r2, #1 + mov r0, #3 + mov r1, #0xe + lsl r2, r2, #0x12 + bl FUN_0201681C + ldr r1, _021D84D8 ; =0x000006D8 + add r0, r4, #0 + mov r2, #0xd + bl FUN_02006268 + ldr r2, _021D84D8 ; =0x000006D8 + mov r1, #0 + add r5, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021D84DC ; =MOD17_021D8FC8 + add r1, r5, #0 + bl FUN_02015F10 + bl FUN_02015F1C + add r0, r4, #0 + bl FUN_0200628C + add r4, r0, #0 + ldr r1, [r4, #0xc] + ldr r0, _021D84E0 ; =0x000006C8 + str r1, [r5, r0] + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r1, #0x5e + lsl r1, r1, #2 + ldr r0, [r4, #8] + add r1, r5, r1 + bl MOD17_021DAFA4 + add r0, r5, #0 + bl MOD17_021D8D60 + mov r1, #0x35 + lsl r1, r1, #4 + add r0, r5, r1 + sub r1, #0x81 + mov r2, #0xd + bl MOD17_021DB9F4 + mov r0, #0xaf + lsl r0, r0, #2 + mov r1, #0xd + bl MOD17_021D74E0 + mov r1, #0xd6 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [r4] + add r0, r5, #0 + mov r2, #0xa + bl MOD17_021D8DA8 + add r0, r5, #0 + bl MOD17_021D8E84 + add r0, r5, #0 + mov r1, #0 + bl MOD17_021D8FD0 + add r0, r5, #0 + bl MOD17_021D9024 + ldr r1, [r4, #0xc] + add r0, r5, #0 + bl MOD17_021D9228 + ldr r0, _021D84E4 ; =0x00000554 + mov r2, #0xfa + add r1, r5, r0 + str r1, [sp] + mov r1, #1 + sub r0, #0xc8 + lsl r2, r2, #2 + str r1, [sp, #4] + add r1, r5, r2 + sub r2, #0x8c + add r0, r5, r0 + add r2, r5, r2 + add r3, r5, #0 + bl MOD17_021DB038 + mov r0, #0xd + bl FUN_02014590 + ldr r1, _021D84E8 ; =0x000006A4 + str r0, [r5, r1] + mov r0, #0xd + mov r1, #1 + bl FUN_02018FF4 + ldr r2, _021D84EC ; =0x000006A8 + mov r1, #0 + str r0, [r5, r2] + sub r2, #0xc + str r1, [r5, r2] + mov r0, #0x35 + add r2, r1, #0 + bl FUN_0200433C + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D84D8: .word 0x000006D8 +_021D84DC: .word MOD17_021D8FC8 +_021D84E0: .word 0x000006C8 +_021D84E4: .word 0x00000554 +_021D84E8: .word 0x000006A4 +_021D84EC: .word 0x000006A8 + thumb_func_end MOD17_021D83E4 + + thumb_func_start MOD17_021D84F0 +MOD17_021D84F0: ; 0x021D84F0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r7, #0 + mov r6, #0 + bl FUN_0200628C + ldr r1, [r5] + cmp r1, #0xc + bhi _021D85BA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D8518: ; jump table + .short _021D8532 - _021D8518 - 2 ; case 0 + .short _021D8532 - _021D8518 - 2 ; case 1 + .short _021D854E - _021D8518 - 2 ; case 2 + .short _021D855E - _021D8518 - 2 ; case 3 + .short _021D858A - _021D8518 - 2 ; case 4 + .short _021D85AA - _021D8518 - 2 ; case 5 + .short _021D85D8 - _021D8518 - 2 ; case 6 + .short _021D860C - _021D8518 - 2 ; case 7 + .short _021D8636 - _021D8518 - 2 ; case 8 + .short _021D8678 - _021D8518 - 2 ; case 9 + .short _021D86B2 - _021D8518 - 2 ; case 10 + .short _021D86D4 - _021D8518 - 2 ; case 11 + .short _021D86F2 - _021D8518 - 2 ; case 12 +_021D8532: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0xd + str r1, [sp, #8] + mov r1, #5 + add r2, r1, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] + b _021D8710 +_021D854E: + bl FUN_0200E308 + cmp r0, #0 + beq _021D85BA + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8710 +_021D855E: + ldr r0, [r0, #0x1c] + cmp r0, #1 + bne _021D8584 + mov r0, #1 + bl FUN_02002BB8 + ldr r0, _021D871C ; =0x00000554 + ldr r2, _021D8720 ; =0x00000151 + add r0, r4, r0 + mov r1, #0x1a + mov r3, #0x2f + bl MOD17_021DCB80 + ldr r1, _021D8724 ; =0x000006CC + str r0, [r4, r1] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8710 +_021D8584: + mov r0, #6 + str r0, [r5] + b _021D8710 +_021D858A: + ldr r0, _021D8724 ; =0x000006CC + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D85BA + ldr r0, _021D871C ; =0x00000554 + add r0, r4, r0 + bl MOD17_021DCBC0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8710 +_021D85AA: + ldr r0, _021D8728 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + and r1, r0 + ldr r0, _021D872C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + orr r0, r1 + bne _021D85BC +_021D85BA: + b _021D8710 +_021D85BC: + ldr r0, _021D871C ; =0x00000554 + ldr r2, _021D8720 ; =0x00000151 + add r0, r4, r0 + mov r1, #0x1a + mov r3, #0x30 + bl MOD17_021DCB48 + add r0, r6, #0 + bl FUN_02002BB8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8710 +_021D85D8: + ldr r1, _021D8730 ; =0x0000069C + ldr r0, [r4, r1] + cmp r0, #3 + bne _021D85EE + add r1, r1, #4 + add r0, r4, #0 + add r1, r4, r1 + bl MOD17_021D92BC + mov r0, #7 + str r0, [r5] +_021D85EE: + ldr r0, _021D8734 ; =0x0000048C + add r0, r4, r0 + bl MOD17_021DAF64 + add r0, r4, #0 + bl MOD17_021D9BE8 + ldr r0, _021D871C ; =0x00000554 + add r0, r4, r0 + bl MOD17_021DCB30 + add r0, r4, #0 + bl MOD17_021D9140 + b _021D8710 +_021D860C: + mov r0, #0x6a + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D8710 + add r1, r6, #0 + str r1, [r4, r0] + mov r1, #8 + str r1, [r5] + mov r1, #4 + sub r0, r0, #4 + str r1, [r4, r0] + mov r1, #0x47 + lsl r1, r1, #4 + add r0, r4, r1 + sub r1, #0x88 + add r1, r4, r1 + mov r2, #0xe + bl MOD17_021DD464 + b _021D8710 +_021D8636: + ldr r1, _021D8730 ; =0x0000069C + ldr r0, [r4, r1] + cmp r0, #9 + bne _021D864E + add r1, r1, #4 + add r0, r4, #0 + add r1, r4, r1 + bl MOD17_021D942C + mov r0, #0xa + str r0, [r5] + b _021D8710 +_021D864E: + cmp r0, #8 + bne _021D8662 + mov r0, #9 + str r0, [r5] + mov r0, #5 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD17_021D9C3C + b _021D8710 +_021D8662: + add r0, r4, #0 + bl MOD17_021D98F0 + ldr r1, _021D8730 ; =0x0000069C + str r0, [r4, r1] + mov r0, #0x47 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD17_021DD488 + b _021D8710 +_021D8678: + ldr r0, _021D8730 ; =0x0000069C + ldr r1, [r4, r0] + cmp r1, #6 + bne _021D868C + mov r1, #1 + add r0, #0x10 + str r1, [r4, r0] + mov r0, #0xb + str r0, [r5] + b _021D8710 +_021D868C: + cmp r1, #7 + bne _021D869C + add r1, r6, #0 + add r0, #0x10 + str r1, [r4, r0] + mov r0, #0xb + str r0, [r5] + b _021D8710 +_021D869C: + add r0, r4, #0 + bl MOD17_021D9CAC + ldr r1, _021D8730 ; =0x0000069C + str r0, [r4, r1] + mov r0, #0x47 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD17_021DD488 + b _021D8710 +_021D86B2: + mov r0, #0x6a + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0 + beq _021D8710 + add r2, r6, #0 + str r2, [r4, r0] + mov r1, #6 + str r1, [r5] + sub r0, r0, #4 + str r2, [r4, r0] + mov r0, #0x47 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD17_021DD494 + b _021D8710 +_021D86D4: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0xd + str r1, [sp, #8] + add r1, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D8710 +_021D86F2: + bl FUN_0200E308 + cmp r0, #0 + beq _021D8710 + add r0, r6, #0 + str r0, [r5] + ldr r0, _021D8730 ; =0x0000069C + mov r1, #0xa + str r1, [r4, r0] + mov r0, #0x47 + lsl r0, r0, #4 + add r0, r4, r0 + mov r6, #1 + bl MOD17_021DD494 +_021D8710: + add r0, r4, #0 + bl MOD17_021D8D8C + add r0, r6, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D871C: .word 0x00000554 +_021D8720: .word 0x00000151 +_021D8724: .word 0x000006CC +_021D8728: .word 0x021C48B8 +_021D872C: .word 0x021C48F8 +_021D8730: .word 0x0000069C +_021D8734: .word 0x0000048C + thumb_func_end MOD17_021D84F0 + + thumb_func_start MOD17_021D8738 +MOD17_021D8738: ; 0x021D8738 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0200628C + add r5, r0, #0 + ldr r0, _021D8808 ; =0x000006AC + ldr r0, [r4, r0] + cmp r0, #1 + bne _021D8768 + ldr r0, [r5, #0x10] + mov r1, #7 + bl FUN_0202A170 + mov r1, #0xfa + lsl r1, r1, #2 + ldr r0, [r5, #4] + ldr r2, [r5, #0x14] + add r1, r4, r1 + bl MOD17_021D95AC +_021D8768: + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _021D8780 + ldr r0, _021D8808 ; =0x000006AC + ldr r0, [r4, r0] + cmp r0, #1 + bne _021D877C + mov r0, #1 + str r0, [r1] + b _021D8780 +_021D877C: + mov r0, #0 + str r0, [r1] +_021D8780: + ldr r0, _021D880C ; =0x000006A4 + ldr r0, [r4, r0] + bl FUN_020145A8 + ldr r0, _021D8810 ; =0x000006A8 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020191A4 + add r0, r4, #0 + bl MOD17_021D92AC + ldr r0, _021D8814 ; =0x0000048C + add r0, r4, r0 + bl MOD17_021DB08C + add r0, r4, #0 + bl MOD17_021D912C + add r0, r4, #0 + bl MOD17_021D9014 + add r0, r4, #0 + bl MOD17_021D8E60 + add r0, r4, #0 + bl MOD17_021D8F40 + mov r0, #0xd6 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD17_021D750C + mov r0, #0xd6 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + add r0, r4, r0 + bl MOD17_021DBA1C + add r0, r4, #0 + bl MOD17_021D8D94 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201CD04 + cmp r0, #1 + beq _021D87F0 + bl ErrorHandling +_021D87F0: + add r0, r6, #0 + bl FUN_0200627C + mov r0, #0xd + bl FUN_020168D0 + mov r0, #0xe + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D8808: .word 0x000006AC +_021D880C: .word 0x000006A4 +_021D8810: .word 0x000006A8 +_021D8814: .word 0x0000048C + thumb_func_end MOD17_021D8738 + + thumb_func_start MOD17_021D8818 +MOD17_021D8818: ; 0x021D8818 + push {r3, r4, r5, lr} + sub sp, #8 + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0xd + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r2, #1 + mov r0, #3 + mov r1, #0xe + lsl r2, r2, #0x12 + bl FUN_0201681C + ldr r1, _021D897C ; =0x000006D8 + add r0, r5, #0 + mov r2, #0xd + bl FUN_02006268 + ldr r2, _021D897C ; =0x000006D8 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021D8980 ; =MOD17_021D8FC8 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_02015F1C + add r0, r5, #0 + bl FUN_0200628C + add r5, r0, #0 + ldr r0, [r5, #0xc] + ldr r1, _021D8984 ; =0x000006B4 + str r0, [r4, r1] + ldr r2, [r5, #0x10] + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, [r5, #0x14] + add r0, #8 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, [r5, #8] + add r0, #0xc + str r2, [r4, r0] + ldr r0, [r5, #0x1c] + add r1, #0x10 + str r0, [r4, r1] + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + mov r1, #0x5e + lsl r1, r1, #2 + ldr r0, [r5, #0x18] + add r1, r4, r1 + bl MOD17_021DAFA4 + add r0, r4, #0 + bl MOD17_021D8D60 + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0201FD98 + bl FUN_02033E74 + mov r0, #1 + mov r1, #0x10 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + mov r1, #0x35 + lsl r1, r1, #4 + add r0, r4, r1 + sub r1, #0x81 + mov r2, #0xd + bl MOD17_021DB9F4 + mov r0, #0xaf + lsl r0, r0, #2 + mov r1, #0xd + bl MOD17_021D74E0 + mov r1, #0xd6 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [r5, #0x20] + ldr r0, _021D8988 ; =0x000006C8 + str r1, [r4, r0] + sub r1, r0, #4 + ldr r1, [r4, r1] + ldrb r1, [r1, #0x16] + cmp r1, #0 + bne _021D88F2 + ldr r0, [r5, #0xc] + bl MOD17_021D9C08 + mov r1, #0x6b + lsl r1, r1, #4 + str r0, [r4, r1] + b _021D88F8 +_021D88F2: + mov r1, #0x14 + sub r0, #0x18 + str r1, [r4, r0] +_021D88F8: + mov r2, #0x6b + lsl r2, r2, #4 + ldr r1, [r5] + ldr r2, [r4, r2] + add r0, r4, #0 + bl MOD17_021D8E18 + add r0, r4, #0 + bl MOD17_021D8E84 + add r0, r4, #0 + mov r1, #0 + bl MOD17_021D8FD0 + add r0, r4, #0 + bl MOD17_021D90A8 + ldr r0, [r5, #0x20] + mov r1, #0x6b + str r0, [sp] + lsl r1, r1, #4 + ldr r1, [r4, r1] + ldr r2, [r5, #8] + ldr r3, [r5, #0x1c] + add r0, r4, #0 + bl MOD17_021D926C + ldr r0, _021D898C ; =0x00000554 + mov r2, #0xfa + add r1, r4, r0 + str r1, [sp] + mov r1, #0 + sub r0, #0xc8 + lsl r2, r2, #2 + str r1, [sp, #4] + add r1, r4, r2 + sub r2, #0x8c + add r0, r4, r0 + add r2, r4, r2 + add r3, r4, #0 + bl MOD17_021DB038 + mov r0, #0xd + bl FUN_02014590 + ldr r1, _021D8990 ; =0x000006A4 + str r0, [r4, r1] + mov r0, #0xd + mov r1, #1 + bl FUN_02018FF4 + ldr r1, _021D8994 ; =0x000006A8 + mov r2, #0 + str r0, [r4, r1] + add r0, r1, #0 + sub r0, #0xc + add r1, #0x1c + str r2, [r4, r0] + ldr r0, [r4, r1] + ldrb r0, [r0, #0x16] + bl FUN_020833D4 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_021D897C: .word 0x000006D8 +_021D8980: .word MOD17_021D8FC8 +_021D8984: .word 0x000006B4 +_021D8988: .word 0x000006C8 +_021D898C: .word 0x00000554 +_021D8990: .word 0x000006A4 +_021D8994: .word 0x000006A8 + thumb_func_end MOD17_021D8818 + + thumb_func_start MOD17_021D8998 +MOD17_021D8998: ; 0x021D8998 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + bl FUN_02006278 + ldr r1, [r4] + add r5, r0, #0 + mov r6, #0 + cmp r1, #0x14 + bhi _021D89FA + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D89B8: ; jump table + .short _021D89E2 - _021D89B8 - 2 ; case 0 + .short _021D89F2 - _021D89B8 - 2 ; case 1 + .short _021D8A04 - _021D89B8 - 2 ; case 2 + .short _021D8A3C - _021D89B8 - 2 ; case 3 + .short _021D8A5A - _021D89B8 - 2 ; case 4 + .short _021D8A72 - _021D89B8 - 2 ; case 5 + .short _021D8A90 - _021D89B8 - 2 ; case 6 + .short _021D8AB2 - _021D89B8 - 2 ; case 7 + .short _021D8AD0 - _021D89B8 - 2 ; case 8 + .short _021D8AE8 - _021D89B8 - 2 ; case 9 + .short _021D8B0A - _021D89B8 - 2 ; case 10 + .short _021D8B1C - _021D89B8 - 2 ; case 11 + .short _021D8B3A - _021D89B8 - 2 ; case 12 + .short _021D8B56 - _021D89B8 - 2 ; case 13 + .short _021D8BBC - _021D89B8 - 2 ; case 14 + .short _021D8BEA - _021D89B8 - 2 ; case 15 + .short _021D8C64 - _021D89B8 - 2 ; case 16 + .short _021D8C64 - _021D89B8 - 2 ; case 17 + .short _021D8C64 - _021D89B8 - 2 ; case 18 + .short _021D8C04 - _021D89B8 - 2 ; case 19 + .short _021D8C34 - _021D89B8 - 2 ; case 20 +_021D89E2: + mov r0, #0x2a + mov r1, #0x1e + bl FUN_020053CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D89F2: + bl FUN_02005404 + cmp r0, #0 + beq _021D89FC +_021D89FA: + b _021D8C64 +_021D89FC: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8A04: + bl MOD17_021D9778 + mov r2, #0x6b + lsl r2, r2, #4 + ldr r2, [r5, r2] + add r0, r5, #0 + add r1, r6, #0 + bl MOD17_021D9BA4 + ldr r0, _021D8C70 ; =0x000006B8 + ldr r0, [r5, r0] + cmp r0, #3 + beq _021D8A28 + add r0, r5, #0 + mov r1, #0x1a + bl MOD17_021D9B9C + b _021D8A30 +_021D8A28: + add r0, r5, #0 + mov r1, #0x1c + bl MOD17_021D9B9C +_021D8A30: + ldr r1, _021D8C74 ; =0x000006CC + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8A3C: + ldr r0, _021D8C74 ; =0x000006CC + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D8B42 + add r0, r5, #0 + bl MOD17_021D9BC4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8A5A: + mov r1, #0x1b + lsl r1, r1, #6 + ldr r1, [r5, r1] + add r1, #0x1d + bl MOD17_021D9B9C + ldr r1, _021D8C74 ; =0x000006CC + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8A72: + ldr r0, _021D8C74 ; =0x000006CC + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D8B42 + add r0, r5, #0 + bl MOD17_021D9BC4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8A90: + ldr r1, _021D8C70 ; =0x000006B8 + ldr r1, [r5, r1] + cmp r1, #3 + beq _021D8AA0 + mov r1, #0x2a + bl MOD17_021D9B9C + b _021D8AA6 +_021D8AA0: + mov r1, #0x29 + bl MOD17_021D9B9C +_021D8AA6: + ldr r1, _021D8C74 ; =0x000006CC + str r0, [r5, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8AB2: + ldr r0, _021D8C74 ; =0x000006CC + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D8B42 + add r0, r5, #0 + bl MOD17_021D9BC4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8AD0: + ldr r0, _021D8C78 ; =0x000006C4 + ldr r0, [r5, r0] + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _021D8AE0 + mov r0, #2 + bl FUN_02031588 +_021D8AE0: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8AE8: + ldr r0, _021D8C78 ; =0x000006C4 + ldr r0, [r5, r0] + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _021D8B04 + mov r0, #2 + bl FUN_020315D8 + cmp r0, #0 + beq _021D8B42 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8B04: + add r0, r1, #1 + str r0, [r4] + b _021D8C64 +_021D8B0A: + bl MOD17_021D9800 + ldr r0, _021D8C7C ; =0x00000643 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8B1C: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0xd + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x13 + add r3, r6, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8B3A: + bl FUN_0200E308 + cmp r0, #0 + bne _021D8B44 +_021D8B42: + b _021D8C64 +_021D8B44: + ldr r1, _021D8C80 ; =0x00000491 + mov r0, #7 + add r2, r6, #0 + bl FUN_0200433C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8B56: + ldr r0, _021D8C84 ; =0x0000069C + ldr r1, [r5, r0] + cmp r1, #3 + bne _021D8B86 + add r0, #0x28 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02083A7C + ldr r0, _021D8C78 ; =0x000006C4 + ldr r0, [r5, r0] + ldrb r0, [r0, #0x16] + cmp r0, #0 + beq _021D8B80 + ldr r0, _021D8C88 ; =0x00000554 + ldr r2, _021D8C8C ; =0x00000151 + add r0, r5, r0 + mov r1, #0x1a + mov r3, #0x2e + bl MOD17_021DCB48 +_021D8B80: + mov r0, #0xe + str r0, [r4] + b _021D8C64 +_021D8B86: + ldr r0, _021D8C88 ; =0x00000554 + add r0, r5, r0 + bl MOD17_021DCBE4 + cmp r0, #0 + bne _021D8B9E + mov r0, #0xf + str r0, [r4] + mov r0, #0x1a + lsl r0, r0, #6 + bl FUN_020054C8 +_021D8B9E: + ldr r0, _021D8C90 ; =0x0000048C + add r0, r5, r0 + bl MOD17_021DAF64 + add r0, r5, #0 + bl MOD17_021D9BE8 + ldr r0, _021D8C88 ; =0x00000554 + add r0, r5, r0 + bl MOD17_021DCB30 + add r0, r5, #0 + bl MOD17_021D9140 + b _021D8C64 +_021D8BBC: + ldr r0, _021D8C88 ; =0x00000554 + add r0, r5, r0 + bl MOD17_021DCBE4 + cmp r0, #0 + bne _021D8BD4 + mov r0, #0xf + str r0, [r4] + mov r0, #0x1a + lsl r0, r0, #6 + bl FUN_020054C8 +_021D8BD4: + add r0, r5, #0 + bl MOD17_021D9BE8 + ldr r0, _021D8C88 ; =0x00000554 + add r0, r5, r0 + bl MOD17_021DCB30 + add r0, r5, #0 + bl MOD17_021D9E28 + b _021D8C64 +_021D8BEA: + ldr r0, _021D8C88 ; =0x00000554 + add r0, r5, r0 + bl MOD17_021DCB30 + ldr r0, _021D8C88 ; =0x00000554 + add r0, r5, r0 + bl MOD17_021DCBF4 + cmp r0, #0 + beq _021D8C64 + mov r0, #0x13 + str r0, [r4] + b _021D8C64 +_021D8C04: + mov r0, #0x1a + lsl r0, r0, #6 + bl FUN_02005508 + cmp r0, #1 + beq _021D8C64 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #0xd + str r1, [sp, #8] + mov r1, #0x1a + add r2, r1, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + ldr r0, _021D8C94 ; =0x00000684 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D8C64 +_021D8C34: + bl FUN_0200E308 + cmp r0, #0 + beq _021D8C64 + add r0, r6, #0 + str r0, [r4] + mov r2, #1 + ldr r0, _021D8C84 ; =0x0000069C + mov r1, #0xa + str r1, [r5, r0] + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D8C98 ; =0xFFFF1FFF + mov r6, #1 + and r0, r1 + str r0, [r2] + mov r0, #0xfa + lsl r0, r0, #2 + add r1, r6, #0 + add r0, r5, r0 + sub r1, #0x41 + mov r2, #0x28 + bl MOD17_021DA118 +_021D8C64: + add r0, r5, #0 + bl MOD17_021D8D8C + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D8C70: .word 0x000006B8 +_021D8C74: .word 0x000006CC +_021D8C78: .word 0x000006C4 +_021D8C7C: .word 0x00000643 +_021D8C80: .word 0x00000491 +_021D8C84: .word 0x0000069C +_021D8C88: .word 0x00000554 +_021D8C8C: .word 0x00000151 +_021D8C90: .word 0x0000048C +_021D8C94: .word 0x00000684 +_021D8C98: .word 0xFFFF1FFF + thumb_func_end MOD17_021D8998 + + thumb_func_start MOD17_021D8C9C +MOD17_021D8C9C: ; 0x021D8C9C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200628C + ldr r2, _021D8D50 ; =0x000006B4 + add r3, r0, #0 + mov r1, #0xfa + ldr r0, [r3, #4] + lsl r1, r1, #2 + ldr r2, [r4, r2] + ldr r3, [r3, #0x24] + add r1, r4, r1 + bl MOD17_021D964C + ldr r0, _021D8D54 ; =0x000006A4 + ldr r0, [r4, r0] + bl FUN_020145A8 + ldr r0, _021D8D58 ; =0x000006A8 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020191A4 + add r0, r4, #0 + bl MOD17_021D92AC + ldr r0, _021D8D5C ; =0x0000048C + add r0, r4, r0 + bl MOD17_021DB08C + add r0, r4, #0 + bl MOD17_021D912C + add r0, r4, #0 + bl MOD17_021D9014 + add r0, r4, #0 + bl MOD17_021D8E60 + add r0, r4, #0 + bl MOD17_021D8F40 + mov r0, #0xd6 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD17_021D750C + mov r0, #0xd6 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #8 + add r0, r4, r0 + bl MOD17_021DBA1C + add r0, r4, #0 + bl MOD17_021D8D94 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201CD04 + cmp r0, #1 + beq _021D8D30 + bl ErrorHandling +_021D8D30: + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0xd + bl FUN_020168D0 + mov r0, #0xe + bl FUN_020168D0 + bl FUN_02083404 + bl FUN_02033ED0 + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D8D50: .word 0x000006B4 +_021D8D54: .word 0x000006A4 +_021D8D58: .word 0x000006A8 +_021D8D5C: .word 0x0000048C + thumb_func_end MOD17_021D8C9C + + thumb_func_start MOD17_021D8D60 +MOD17_021D8D60: ; 0x021D8D60 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + bl MOD17_021D7794 + add r0, r4, #0 + bl MOD17_021D77D4 + add r0, r4, #0 + add r1, sp, #0 + bl MOD17_021D7A00 + add r0, r4, #0 + add r1, sp, #0 + bl MOD17_021D78A0 + add r0, sp, #0 + bl MOD17_021D7A24 + add sp, #0x18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D8D60 + + thumb_func_start MOD17_021D8D8C +MOD17_021D8D8C: ; 0x021D8D8C + ldr r3, _021D8D90 ; =MOD17_021D786C + bx r3 + .align 2, 0 +_021D8D90: .word MOD17_021D786C + thumb_func_end MOD17_021D8D8C + + thumb_func_start MOD17_021D8D94 +MOD17_021D8D94: ; 0x021D8D94 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D78BC + add r0, r4, #0 + bl MOD17_021D7828 + bl MOD17_021D77B4 + pop {r4, pc} + thumb_func_end MOD17_021D8D94 + + thumb_func_start MOD17_021D8DA8 +MOD17_021D8DA8: ; 0x021D8DA8 + push {r4, r5, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + mov r1, #0xd6 + str r0, [sp, #0x14] + ldr r0, [r5, #0x10] + lsl r1, r1, #2 + str r0, [sp, #0x18] + ldr r0, [r5, #0x28] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x20] + str r0, [sp, #0x20] + ldr r0, [r5, #0x38] + str r2, [sp, #0x30] + str r0, [sp, #0x24] + ldr r0, [r5, r1] + str r0, [sp, #0x28] + add r0, r1, #0 + sub r0, #8 + add r0, r5, r0 + add r1, #0x90 + str r0, [sp, #0x2c] + add r0, r5, r1 + add r1, sp, #0x10 + bl MOD17_021D9F80 + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r4, #0 + add r2, sp, #0 + mov r3, #0xe + bl MOD17_021DA024 + add r0, r5, #0 + add r1, sp, #0 + bl MOD17_021DB6D8 + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r5, r0 + bl MOD17_021DA178 + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + mov r2, #0xe + bl MOD17_021DA2F0 + add sp, #0x34 + pop {r4, r5, pc} + thumb_func_end MOD17_021D8DA8 + + thumb_func_start MOD17_021D8E18 +MOD17_021D8E18: ; 0x021D8E18 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + bl MOD17_021D8DA8 + mov r0, #0x46 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DB878 + mov r0, #0x46 + lsl r0, r0, #4 + add r0, r4, r0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DB960 + ldr r3, [sp, #8] + mov r0, #0x46 + lsr r2, r3, #0x1f + add r2, r3, r2 + asr r3, r2, #1 + ldr r2, [sp] + lsl r0, r0, #4 + sub r3, r3, r2 + mov r2, #0x8d + add r0, r4, r0 + mov r1, #0xc0 + sub r2, r2, r3 + bl MOD17_021DB7F4 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D8E18 + + thumb_func_start MOD17_021D8E60 +MOD17_021D8E60: ; 0x021D8E60 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DA33C + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DA100 + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021D9FD4 + pop {r4, pc} + thumb_func_end MOD17_021D8E60 + + thumb_func_start MOD17_021D8E84 +MOD17_021D8E84: ; 0x021D8E84 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, [r5] + str r0, [sp] + ldr r0, [r5, #4] + str r0, [sp, #4] + ldr r0, [r5, #0x10] + str r0, [sp, #8] + ldr r0, [r5, #0x28] + str r0, [sp, #0xc] + ldr r0, [r5, #0x38] + str r0, [sp, #0x10] + mov r0, #0x5e + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x28] + mov r0, #0xd6 + lsl r0, r0, #2 + ldr r1, [r5, r0] + str r1, [sp, #0x14] + add r1, r0, #0 + sub r1, #8 + add r1, r5, r1 + str r1, [sp, #0x18] + mov r1, #0xe + str r1, [sp, #0x1c] + mov r1, #2 + str r1, [sp, #0x20] + mov r1, #1 + add r0, r0, #4 + str r1, [sp, #0x24] + add r0, r5, r0 + add r1, sp, #0 + bl MOD17_021DA5A8 + mov r0, #0xd7 + lsl r0, r0, #2 + mov r1, #0 + add r0, r5, r0 + add r2, r1, #0 + bl MOD17_021DA918 + mov r6, #0 +_021D8EDC: + mov r0, #0x5e + lsl r0, r0, #2 + add r0, r5, r0 + add r1, r6, #0 + bl MOD17_021DAFF4 + add r7, r0, #0 + mov r4, #0 + cmp r7, #0 + ble _021D8F04 +_021D8EF0: + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + add r2, r6, #0 + bl MOD17_021DA6FC + add r4, r4, #1 + cmp r4, r7 + blt _021D8EF0 +_021D8F04: + add r6, r6, #1 + cmp r6, #0x64 + blt _021D8EDC + mov r7, #0xd7 + mov r6, #0x5e + mov r4, #0 + lsl r7, r7, #2 + lsl r6, r6, #2 +_021D8F14: + add r0, r5, r6 + add r1, r4, #0 + bl MOD17_021DB008 + add r2, r0, #0 + cmp r2, #0x12 + bge _021D8F2A + add r0, r5, r7 + mov r1, #1 + bl MOD17_021DA6FC +_021D8F2A: + add r4, r4, #1 + cmp r4, #0x12 + blt _021D8F14 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + bl MOD17_021DA844 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D8E84 + + thumb_func_start MOD17_021D8F40 +MOD17_021D8F40: ; 0x021D8F40 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DAA60 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DA818 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DA5E0 + pop {r4, pc} + thumb_func_end MOD17_021D8F40 + + thumb_func_start MOD17_021D8F64 +MOD17_021D8F64: ; 0x021D8F64 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _021D8FC4 ; =0x04000008 + mov r2, #3 + ldrh r3, [r0] + mov r1, #1 + bic r3, r2 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r2 + strh r1, [r0, #2] + ldrh r3, [r0, #4] + mov r1, #2 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #4] + ldrh r3, [r0, #6] + mov r1, #3 + bic r3, r2 + add r2, r3, #0 + orr r2, r1 + strh r2, [r0, #6] + add r3, r1, #0 + ldr r0, [r4, #0x38] + add r2, r1, #0 + sub r3, #0x13 + bl FUN_020179E0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl MOD17_021DA9AC + mov r1, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r2, #2 + add r3, r1, #0 + str r1, [sp] + bl MOD17_021DA9F8 + add sp, #4 + pop {r3, r4, pc} + nop +_021D8FC4: .word 0x04000008 + thumb_func_end MOD17_021D8F64 + + thumb_func_start MOD17_021D8FC8 +MOD17_021D8FC8: ; 0x021D8FC8 + ldr r3, _021D8FCC ; =MOD17_021D7AE4 + bx r3 + .align 2, 0 +_021D8FCC: .word MOD17_021D7AE4 + thumb_func_end MOD17_021D8FC8 + + thumb_func_start MOD17_021D8FD0 +MOD17_021D8FD0: ; 0x021D8FD0 + push {r3, lr} + sub sp, #0x30 + ldr r2, [r0, #0x38] + str r2, [sp] + mov r2, #0x19 + str r2, [sp, #4] + lsl r2, r1, #1 + add r1, r2, #0 + add r1, #0x79 + str r1, [sp, #8] + mov r1, #0x85 + str r1, [sp, #0xc] + mov r1, #1 + add r2, #0x7a + str r2, [sp, #0x10] + mov r2, #0 + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + mov r1, #2 + str r1, [sp, #0x24] + mov r1, #0xe + str r1, [sp, #0x2c] + ldr r1, _021D9010 ; =0x000004A8 + str r2, [sp, #0x14] + add r0, r0, r1 + add r1, sp, #0 + str r2, [sp, #0x18] + str r2, [sp, #0x28] + bl MOD17_021DBD04 + add sp, #0x30 + pop {r3, pc} + .align 2, 0 +_021D9010: .word 0x000004A8 + thumb_func_end MOD17_021D8FD0 + + thumb_func_start MOD17_021D9014 +MOD17_021D9014: ; 0x021D9014 + ldr r1, _021D901C ; =0x000004A8 + ldr r3, _021D9020 ; =MOD17_021DBD4C + add r0, r0, r1 + bx r3 + .align 2, 0 +_021D901C: .word 0x000004A8 +_021D9020: .word MOD17_021DBD4C + thumb_func_end MOD17_021D9014 + + thumb_func_start MOD17_021D9024 +MOD17_021D9024: ; 0x021D9024 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _021D9090 ; =0x000004D4 + add r1, r4, #0 + add r0, r4, r0 + bl MOD17_021DC304 + ldr r0, _021D9090 ; =0x000004D4 + mov r1, #0 + ldr r2, _021D9094 ; =MOD17_021D9180 + add r0, r4, r0 + add r3, r4, #0 + str r1, [sp] + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9090 ; =0x000004D4 + ldr r2, _021D9098 ; =MOD17_021D91A0 + add r0, r4, r0 + mov r1, #1 + add r3, r4, #0 + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9090 ; =0x000004D4 + ldr r2, _021D909C ; =MOD17_021D91C0 + add r0, r4, r0 + mov r1, #2 + add r3, r4, #0 + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9090 ; =0x000004D4 + ldr r2, _021D90A0 ; =MOD17_021D91F4 + add r0, r4, r0 + mov r1, #3 + add r3, r4, #0 + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9090 ; =0x000004D4 + ldr r2, _021D90A4 ; =MOD17_021D9160 + add r0, r4, r0 + mov r1, #4 + add r3, r4, #0 + bl MOD17_021DC538 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9090: .word 0x000004D4 +_021D9094: .word MOD17_021D9180 +_021D9098: .word MOD17_021D91A0 +_021D909C: .word MOD17_021D91C0 +_021D90A0: .word MOD17_021D91F4 +_021D90A4: .word MOD17_021D9160 + thumb_func_end MOD17_021D9024 + + thumb_func_start MOD17_021D90A8 +MOD17_021D90A8: ; 0x021D90A8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _021D9114 ; =0x000004D4 + add r1, r4, #0 + add r0, r4, r0 + bl MOD17_021DC304 + ldr r0, _021D9114 ; =0x000004D4 + mov r1, #0 + ldr r2, _021D9118 ; =MOD17_021D9180 + add r0, r4, r0 + add r3, r4, #0 + str r1, [sp] + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9114 ; =0x000004D4 + ldr r2, _021D911C ; =MOD17_021D91A0 + add r0, r4, r0 + mov r1, #1 + add r3, r4, #0 + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9114 ; =0x000004D4 + ldr r2, _021D9120 ; =MOD17_021D91C0 + add r0, r4, r0 + mov r1, #2 + add r3, r4, #0 + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9114 ; =0x000004D4 + ldr r2, _021D9124 ; =MOD17_021D91F4 + add r0, r4, r0 + mov r1, #3 + add r3, r4, #0 + bl MOD17_021DC538 + mov r0, #0 + str r0, [sp] + ldr r0, _021D9114 ; =0x000004D4 + ldr r2, _021D9128 ; =MOD17_021D9160 + add r0, r4, r0 + mov r1, #4 + add r3, r4, #0 + bl MOD17_021DC538 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9114: .word 0x000004D4 +_021D9118: .word MOD17_021D9180 +_021D911C: .word MOD17_021D91A0 +_021D9120: .word MOD17_021D91C0 +_021D9124: .word MOD17_021D91F4 +_021D9128: .word MOD17_021D9160 + thumb_func_end MOD17_021D90A8 + + thumb_func_start MOD17_021D912C +MOD17_021D912C: ; 0x021D912C + add r1, r0, #0 + ldr r0, _021D9138 ; =0x000004D4 + ldr r3, _021D913C ; =MOD17_021DC468 + add r0, r1, r0 + bx r3 + nop +_021D9138: .word 0x000004D4 +_021D913C: .word MOD17_021DC468 + thumb_func_end MOD17_021D912C + + thumb_func_start MOD17_021D9140 +MOD17_021D9140: ; 0x021D9140 + ldr r1, _021D9148 ; =0x000004D4 + ldr r3, _021D914C ; =MOD17_021DC4CC + add r0, r0, r1 + bx r3 + .align 2, 0 +_021D9148: .word 0x000004D4 +_021D914C: .word MOD17_021DC4CC + thumb_func_end MOD17_021D9140 + + thumb_func_start MOD17_021D9150 +MOD17_021D9150: ; 0x021D9150 + ldr r1, _021D9158 ; =0x000004D4 + ldr r3, _021D915C ; =MOD17_021DC4E4 + add r0, r0, r1 + bx r3 + .align 2, 0 +_021D9158: .word 0x000004D4 +_021D915C: .word MOD17_021DC4E4 + thumb_func_end MOD17_021D9150 + + thumb_func_start MOD17_021D9160 +MOD17_021D9160: ; 0x021D9160 + push {r4, lr} + mov r0, #0xd7 + add r4, r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DAAB8 + cmp r0, #0 + beq _021D9178 + ldr r0, _021D917C ; =0x0000069C + mov r1, #3 + str r1, [r4, r0] +_021D9178: + pop {r4, pc} + nop +_021D917C: .word 0x0000069C + thumb_func_end MOD17_021D9160 + + thumb_func_start MOD17_021D9180 +MOD17_021D9180: ; 0x021D9180 + push {r4, lr} + mov r0, #0xd7 + add r4, r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DAA6C + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r2, #0 + bl MOD17_021DA8B0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D9180 + + thumb_func_start MOD17_021D91A0 +MOD17_021D91A0: ; 0x021D91A0 + push {r4, lr} + mov r0, #0xd7 + add r4, r1, #0 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DAA6C + add r1, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r2, #1 + bl MOD17_021DA8B0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D91A0 + + thumb_func_start MOD17_021D91C0 +MOD17_021D91C0: ; 0x021D91C0 + push {r4, lr} + ldr r0, _021D91F0 ; =0x0000069C + add r4, r1, #0 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D91EC + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl MOD17_021DAA7C + add r2, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl MOD17_021DA918 + ldr r0, _021D91F0 ; =0x0000069C + mov r1, #0 + str r1, [r4, r0] +_021D91EC: + pop {r4, pc} + nop +_021D91F0: .word 0x0000069C + thumb_func_end MOD17_021D91C0 + + thumb_func_start MOD17_021D91F4 +MOD17_021D91F4: ; 0x021D91F4 + push {r4, lr} + ldr r0, _021D9224 ; =0x0000069C + add r4, r1, #0 + ldr r0, [r4, r0] + cmp r0, #1 + beq _021D9220 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #1 + bl MOD17_021DAA7C + add r2, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #1 + bl MOD17_021DA918 + ldr r0, _021D9224 ; =0x0000069C + mov r1, #1 + str r1, [r4, r0] +_021D9220: + pop {r4, pc} + nop +_021D9224: .word 0x0000069C + thumb_func_end MOD17_021D91F4 + + thumb_func_start MOD17_021D9228 +MOD17_021D9228: ; 0x021D9228 + push {r4, r5, lr} + sub sp, #0x24 + add r4, r0, #0 + add r2, sp, #0 + mov r0, #0 + add r3, r1, #0 + add r5, r2, #0 + add r1, r0, #0 + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + stmia r5!, {r0, r1} + str r0, [r5] + ldr r0, [r4, #0x38] + add r1, r2, #0 + str r0, [sp] + ldr r0, [r4, #0x3c] + mov r2, #0xf + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x40 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0x10] + ldr r0, _021D9268 ; =0x00000554 + str r3, [sp, #0xc] + add r0, r4, r0 + bl MOD17_021DC950 + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D9268: .word 0x00000554 + thumb_func_end MOD17_021D9228 + + thumb_func_start MOD17_021D926C +MOD17_021D926C: ; 0x021D926C + push {r3, r4, lr} + sub sp, #0x24 + ldr r4, [r0, #0x38] + str r4, [sp] + ldr r4, [r0, #0x3c] + str r1, [sp, #0x10] + ldr r1, _021D92A4 ; =0x00000151 + str r4, [sp, #4] + str r1, [sp, #0x14] + add r1, r2, #7 + str r1, [sp, #0x18] + mov r1, #0x3c + str r1, [sp, #0x1c] + ldr r1, [sp, #0x30] + add r4, r0, #0 + str r1, [sp, #0xc] + ldr r1, _021D92A8 ; =0x00000554 + add r4, #0x40 + add r0, r0, r1 + add r1, sp, #0 + mov r2, #0x3f + str r4, [sp, #8] + str r3, [sp, #0x20] + bl MOD17_021DC950 + add sp, #0x24 + pop {r3, r4, pc} + nop +_021D92A4: .word 0x00000151 +_021D92A8: .word 0x00000554 + thumb_func_end MOD17_021D926C + + thumb_func_start MOD17_021D92AC +MOD17_021D92AC: ; 0x021D92AC + ldr r1, _021D92B4 ; =0x00000554 + ldr r3, _021D92B8 ; =MOD17_021DCA80 + add r0, r0, r1 + bx r3 + .align 2, 0 +_021D92B4: .word 0x00000554 +_021D92B8: .word MOD17_021DCA80 + thumb_func_end MOD17_021D92AC + + thumb_func_start MOD17_021D92BC +MOD17_021D92BC: ; 0x021D92BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, _021D92E0 ; =MOD17_021D92E4 + mov r1, #0x10 + mov r2, #0xa + mov r3, #0xd + bl FUN_020061E8 + bl FUN_0201B6C8 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] + pop {r3, r4, r5, pc} + nop +_021D92E0: .word MOD17_021D92E4 + thumb_func_end MOD17_021D92BC + + thumb_func_start MOD17_021D92E4 +MOD17_021D92E4: ; 0x021D92E4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4, #0xc] + cmp r1, #9 + bls _021D92F2 + b _021D9424 +_021D92F2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D92FE: ; jump table + .short _021D9312 - _021D92FE - 2 ; case 0 + .short _021D9334 - _021D92FE - 2 ; case 1 + .short _021D934E - _021D92FE - 2 ; case 2 + .short _021D936A - _021D92FE - 2 ; case 3 + .short _021D937E - _021D92FE - 2 ; case 4 + .short _021D93A4 - _021D92FE - 2 ; case 5 + .short _021D93C4 - _021D92FE - 2 ; case 6 + .short _021D93EA - _021D92FE - 2 ; case 7 + .short _021D9406 - _021D92FE - 2 ; case 8 + .short _021D941A - _021D92FE - 2 ; case 9 +_021D9312: + mov r0, #0xd7 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #3 + mov r2, #0 + bl MOD17_021DA870 + cmp r0, #0 + bne _021D932A + bl ErrorHandling +_021D932A: + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D9334: + mov r0, #0xd7 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD17_021DAAB8 + cmp r0, #0 + beq _021D9424 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D934E: + mov r0, #1 + str r0, [sp] + mov r0, #8 + add r1, r0, #0 + sub r1, #0x18 + mov r2, #0 + mov r3, #0xa + bl FUN_0200A208 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D936A: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9424 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D937E: + ldr r1, [r4] + ldr r0, _021D9428 ; =0x000004D4 + mov r2, #8 + add r0, r1, r0 + mov r1, #0 + bl MOD17_021DC508 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #8 + blt _021D9424 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D93A4: + mov r1, #7 + add r0, r4, #0 + mvn r1, r1 + mov r2, #5 + mov r3, #8 + bl MOD17_021D970C + cmp r0, #0 + beq _021D9424 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D93C4: + ldr r0, [r4] + mov r1, #1 + bl MOD17_021D8FD0 + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x38] + mov r2, #3 + mov r3, #0 + bl FUN_0201AEE4 + ldr r0, [r4] + bl MOD17_021D9848 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D93EA: + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #8 + sub r2, #0x10 + mov r3, #0xa + bl FUN_0200A208 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D9406: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021D9424 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D941A: + ldr r1, [r4, #4] + mov r2, #1 + str r2, [r1] + bl FUN_0200621C +_021D9424: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D9428: .word 0x000004D4 + thumb_func_end MOD17_021D92E4 + + thumb_func_start MOD17_021D942C +MOD17_021D942C: ; 0x021D942C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, _021D9450 ; =MOD17_021D9454 + mov r1, #0x10 + mov r2, #0xa + mov r3, #0xd + bl FUN_020061E8 + bl FUN_0201B6C8 + str r5, [r0] + str r4, [r0, #4] + mov r1, #0 + str r1, [r0, #8] + str r1, [r0, #0xc] + pop {r3, r4, r5, pc} + nop +_021D9450: .word MOD17_021D9454 + thumb_func_end MOD17_021D942C + + thumb_func_start MOD17_021D9454 +MOD17_021D9454: ; 0x021D9454 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4, #0xc] + cmp r1, #9 + bls _021D9462 + b _021D95A4 +_021D9462: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D946E: ; jump table + .short _021D9482 - _021D946E - 2 ; case 0 + .short _021D949E - _021D946E - 2 ; case 1 + .short _021D94B2 - _021D946E - 2 ; case 2 + .short _021D94E6 - _021D946E - 2 ; case 3 + .short _021D9506 - _021D946E - 2 ; case 4 + .short _021D952E - _021D946E - 2 ; case 5 + .short _021D954A - _021D946E - 2 ; case 6 + .short _021D955E - _021D946E - 2 ; case 7 + .short _021D9580 - _021D946E - 2 ; case 8 + .short _021D959A - _021D946E - 2 ; case 9 +_021D9482: + mov r0, #1 + str r0, [sp] + mov r0, #8 + add r1, r0, #0 + sub r1, #0x18 + mov r2, #0 + mov r3, #0xa + bl FUN_0200A208 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D949E: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021D95A4 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D94B2: + ldr r0, [r4] + bl MOD17_021D98D0 + ldr r0, [r4] + bl MOD17_021D8F64 + ldr r0, [r4] + bl MOD17_021D9150 + ldr r0, [r4] + mov r1, #0 + bl MOD17_021D8FD0 + ldr r0, [r4] + mov r2, #3 + add r3, r2, #0 + ldr r0, [r0, #0x38] + mov r1, #1 + sub r3, #0x2b + bl FUN_0201AEE4 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D94E6: + mov r1, #8 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0xd + add r3, r1, #0 + bl MOD17_021D970C + cmp r0, #0 + beq _021D95A4 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D9506: + ldr r1, [r4] + ldr r0, _021D95A8 ; =0x000004D4 + add r0, r1, r0 + mov r1, #0 + add r2, r1, #0 + sub r2, #8 + bl MOD17_021DC508 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #8 + blt _021D95A4 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D952E: + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #8 + sub r2, #0x10 + mov r3, #0xa + bl FUN_0200A208 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D954A: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _021D95A4 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D955E: + mov r0, #0xd7 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + mov r1, #0 + add r2, r1, #0 + bl MOD17_021DA870 + cmp r0, #0 + bne _021D9576 + bl ErrorHandling +_021D9576: + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D9580: + mov r0, #0xd7 + ldr r1, [r4] + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD17_021DAAB8 + cmp r0, #0 + beq _021D95A4 + ldr r0, [r4, #0xc] + add sp, #4 + add r0, r0, #1 + str r0, [r4, #0xc] + pop {r3, r4, pc} +_021D959A: + ldr r1, [r4, #4] + mov r2, #1 + str r2, [r1] + bl FUN_0200621C +_021D95A4: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_021D95A8: .word 0x000004D4 + thumb_func_end MOD17_021D9454 + + thumb_func_start MOD17_021D95AC +MOD17_021D95AC: ; 0x021D95AC + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + add r6, r0, #0 + add r4, r2, #0 + bl FUN_02027310 + ldr r1, [sp] + ldr r2, [sp] + add r1, #0x84 + ldr r1, [r1] + add r0, r6, #0 + add r2, #0x78 + bl FUN_02027348 + cmp r4, #0 + beq _021D95EC + add r0, r4, #0 + mov r1, #0xd + bl FUN_020239A0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020239CC + add r2, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020274F0 + add r0, r5, #0 + bl FUN_02021A20 +_021D95EC: + ldr r0, [sp] + mov r5, #0 + add r7, r0, #0 + ldr r4, [r0, #0x1c] + add r7, #0x14 + cmp r4, r7 + beq _021D9612 +_021D95FA: + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D960C + ldr r1, [r4] + add r0, r6, #0 + add r2, r5, #0 + bl FUN_02027380 + add r5, r5, #1 +_021D960C: + ldr r4, [r4, #8] + cmp r4, r7 + bne _021D95FA +_021D9612: + ldr r0, [sp] + ldr r4, [r0, #0xc] + add r7, r0, #4 + cmp r4, r7 + beq _021D9634 +_021D961C: + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D962E + ldr r1, [r4] + add r0, r6, #0 + add r2, r5, #0 + bl FUN_02027380 + add r5, r5, #1 +_021D962E: + ldr r4, [r4, #8] + cmp r4, r7 + bne _021D961C +_021D9634: + ldr r1, [sp] + add r0, r6, #0 + ldr r1, [r1, #0x74] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02027448 + add r0, r6, #0 + bl FUN_020272D4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D95AC + + thumb_func_start MOD17_021D964C +MOD17_021D964C: ; 0x021D964C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp] + mov r0, #0xd + mov r1, #0xac + str r2, [sp, #4] + add r4, r3, #0 + bl FUN_02016998 + add r6, r0, #0 + bl MOD17_021D9CD4 + ldr r1, [sp] + ldr r2, [sp] + add r1, #0x84 + ldr r1, [r1] + add r0, r7, #0 + add r2, #0x78 + bl FUN_02027778 + cmp r4, #0 + beq _021D969A + add r0, r4, #0 + mov r1, #0xd + bl FUN_020239A0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020239CC + add r2, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + bl FUN_02027A58 + add r0, r5, #0 + bl FUN_02021A20 +_021D969A: + ldr r1, [sp] + add r0, r6, #0 + add r1, #0x14 + mov r2, #1 + bl MOD17_021D9E00 + ldr r1, [sp] + add r0, r6, #0 + add r1, r1, #4 + mov r2, #0 + bl MOD17_021D9E00 + add r0, r6, #0 + bl MOD17_021D9D14 + mov r4, #0 + add r5, r4, #0 +_021D96BC: + add r0, r6, #0 + add r1, r5, #0 + bl MOD17_021D9D84 + cmp r0, #1 + bne _021D96DE + add r0, r6, #0 + add r1, r5, #0 + bl MOD17_021D9D70 + add r1, r0, #0 + ldr r1, [r1] + add r0, r7, #0 + add r2, r4, #0 + bl FUN_020277B4 + add r4, r4, #1 +_021D96DE: + add r5, r5, #1 + cmp r5, #0x15 + blt _021D96BC + ldr r1, [sp] + add r0, r7, #0 + ldr r1, [r1, #0x74] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0202787C + ldr r1, [sp, #4] + add r0, r7, #0 + bl FUN_020278AC + add r0, r7, #0 + bl FUN_02027710 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D964C + + thumb_func_start MOD17_021D970C +MOD17_021D970C: ; 0x021D970C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #8 + bge _021D9728 + mov r0, #0xfa + ldr r3, [r5] + lsl r0, r0, #2 + add r0, r3, r0 + bl MOD17_021DA118 +_021D9728: + ldr r0, [r5, #8] + cmp r0, #1 + blt _021D9766 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0, #0x38] + add r2, r1, #0 + add r3, r4, #0 + bl FUN_0201AEE4 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0, #0x38] + mov r2, #2 + add r3, r4, #0 + bl FUN_0201AEE4 + ldr r0, [r5] + mov r1, #2 + ldr r0, [r0, #0x38] + mov r2, #5 + add r3, r6, #0 + bl FUN_0201AEE4 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0, #0x38] + mov r2, #5 + add r3, r6, #0 + bl FUN_0201AEE4 +_021D9766: + ldr r0, [r5, #8] + add r0, r0, #1 + str r0, [r5, #8] + cmp r0, r7 + ble _021D9774 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9774: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021D970C + + thumb_func_start MOD17_021D9778 +MOD17_021D9778: ; 0x021D9778 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + ldr r0, [r4, #0x38] + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + ldr r0, [r4, #0x38] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add r0, r4, #0 + mov r1, #0 + bl MOD17_021D9B74 + ldr r1, _021D97FC ; =0x04000008 + mov r3, #3 + ldrh r2, [r1] + mov r0, #2 + bic r2, r3 + orr r0, r2 + strh r0, [r1] + ldrh r2, [r1, #2] + mov r0, #1 + bic r2, r3 + orr r2, r0 + strh r2, [r1, #2] + ldrh r4, [r1, #4] + mov r2, #3 + bic r4, r3 + orr r2, r4 + strh r2, [r1, #4] + ldrh r2, [r1, #6] + bic r2, r3 + strh r2, [r1, #6] + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0 + bl FUN_0200E394 + pop {r4, pc} + nop +_021D97FC: .word 0x04000008 + thumb_func_end MOD17_021D9778 + + thumb_func_start MOD17_021D9800 +MOD17_021D9800: ; 0x021D9800 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D9BCC + ldr r0, [r4, #0x38] + mov r1, #3 + bl FUN_02018744 + add r0, r4, #0 + bl MOD17_021D8F64 + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl FUN_0201FD98 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + pop {r4, pc} + thumb_func_end MOD17_021D9800 + + thumb_func_start MOD17_021D9848 +MOD17_021D9848: ; 0x021D9848 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #3 + bl FUN_02018744 + mov r2, #0 + ldr r0, [r4, #0x38] + mov r1, #3 + add r3, r2, #0 + bl FUN_020179E0 + mov r1, #3 + ldr r0, [r4, #0x38] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x38] + mov r1, #0x19 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + add r0, sp, #0 + strb r1, [r0, #0x10] + mov r1, #4 + strb r1, [r0, #0x11] + ldr r0, _021D98C8 ; =0x000006A4 + add r1, sp, #0 + ldr r0, [r4, r0] + bl FUN_020145C8 + add r0, r4, #0 + mov r1, #1 + bl MOD17_021D9B4C + ldr r0, _021D98CC ; =0x04000008 + mov r2, #3 + ldrh r3, [r0] + mov r1, #2 + bic r3, r2 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0, #2] + mov r1, #1 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #2] + ldrh r3, [r0, #4] + mov r1, #3 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #4] + ldrh r1, [r0, #6] + bic r1, r2 + strh r1, [r0, #6] + add sp, #0x14 + pop {r3, r4, pc} + nop +_021D98C8: .word 0x000006A4 +_021D98CC: .word 0x04000008 + thumb_func_end MOD17_021D9848 + + thumb_func_start MOD17_021D98D0 +MOD17_021D98D0: ; 0x021D98D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D98EC ; =0x000006A4 + ldr r0, [r4, r0] + bl FUN_020146C4 + add r0, r4, #0 + bl MOD17_021D9B6C + ldr r0, [r4, #0x38] + mov r1, #3 + bl FUN_02018744 + pop {r4, pc} + .align 2, 0 +_021D98EC: .word 0x000006A4 + thumb_func_end MOD17_021D98D0 + + thumb_func_start MOD17_021D98F0 +MOD17_021D98F0: ; 0x021D98F0 + push {r3, lr} + ldr r1, _021D9914 ; =0x000006A4 + ldr r0, [r0, r1] + bl FUN_0201466C + cmp r0, #0 + beq _021D9908 + cmp r0, #1 + beq _021D990C + cmp r0, #2 + beq _021D9910 + pop {r3, pc} +_021D9908: + mov r0, #4 + pop {r3, pc} +_021D990C: + mov r0, #8 + pop {r3, pc} +_021D9910: + mov r0, #9 + pop {r3, pc} + .align 2, 0 +_021D9914: .word 0x000006A4 + thumb_func_end MOD17_021D98F0 + + thumb_func_start MOD17_021D9918 +MOD17_021D9918: ; 0x021D9918 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, _021D99D0 ; =0x000006C8 + str r1, [sp, #0x14] + ldr r0, [r5, r0] + add r7, r2, #0 + add r4, r3, #0 + bl FUN_02025084 + add r6, r0, #0 + mov r0, #0 + mov r1, #0xe0 + mov r2, #0xe + bl FUN_02002EEC + str r4, [sp] + add r0, sp, #0x20 + ldrb r1, [r0, #0x10] + mov r2, #3 + add r3, r7, #0 + str r1, [sp, #4] + ldrb r0, [r0, #0x14] + ldr r1, _021D99D4 ; =0x000006A8 + str r0, [sp, #8] + mov r0, #7 + str r0, [sp, #0xc] + mov r0, #0x92 + str r0, [sp, #0x10] + ldr r0, [r5, #0x38] + ldr r1, [r5, r1] + bl FUN_02019064 + ldr r0, _021D99D4 ; =0x000006A8 + mov r1, #0xf + ldr r0, [r5, r0] + bl FUN_02019620 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + ldr r0, [r5, #0x38] + mov r1, #3 + mov r2, #0x74 + mov r3, #8 + bl FUN_0200CD68 + ldr r0, _021D99D4 ; =0x000006A8 + mov r1, #0 + ldr r0, [r5, r0] + mov r2, #0x74 + mov r3, #8 + bl FUN_0200D0BC + ldr r2, _021D99D8 ; =0x00000151 + mov r0, #0 + mov r1, #0x1a + mov r3, #0xd + bl FUN_0200A86C + ldr r1, [sp, #0x14] + add r6, r0, #0 + bl FUN_0200A914 + add r4, r0, #0 + mov r3, #0 + str r3, [sp] + ldr r0, _021D99DC ; =0x0001020F + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, _021D99D4 ; =0x000006A8 + str r3, [sp, #0xc] + ldr r0, [r5, r0] + mov r1, #1 + add r2, r4, #0 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r0, _021D99D4 ; =0x000006A8 + ldr r0, [r5, r0] + bl FUN_020191D0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D99D0: .word 0x000006C8 +_021D99D4: .word 0x000006A8 +_021D99D8: .word 0x00000151 +_021D99DC: .word 0x0001020F + thumb_func_end MOD17_021D9918 + + thumb_func_start MOD17_021D99E0 +MOD17_021D99E0: ; 0x021D99E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _021D9A58 ; =0x000006A8 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0xf + bl FUN_02019620 + ldr r2, _021D9A5C ; =0x00000151 + mov r0, #0 + mov r1, #0x1a + mov r3, #0xd + bl FUN_0200A86C + add r1, r4, #0 + add r7, r0, #0 + bl FUN_0200A914 + add r6, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0xd + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, _021D9A60 ; =0x000006D4 + add r1, r4, #0 + ldr r0, [r5, r0] + add r2, r6, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + ldr r0, _021D9A64 ; =0x0001020F + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, _021D9A58 ; =0x000006A8 + str r3, [sp, #0xc] + ldr r0, [r5, r0] + mov r1, #1 + add r2, r4, #0 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r0, _021D9A58 ; =0x000006A8 + ldr r0, [r5, r0] + bl FUN_020191D0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9A58: .word 0x000006A8 +_021D9A5C: .word 0x00000151 +_021D9A60: .word 0x000006D4 +_021D9A64: .word 0x0001020F + thumb_func_end MOD17_021D99E0 + + thumb_func_start MOD17_021D9A68 +MOD17_021D9A68: ; 0x021D9A68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x6d + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r4, r1, #0 + cmp r0, #0 + beq _021D9A7E + bl ErrorHandling +_021D9A7E: + ldr r0, _021D9B08 ; =0x000006A8 + mov r1, #0xf + ldr r0, [r5, r0] + bl FUN_02019620 + ldr r2, _021D9B0C ; =0x00000151 + mov r0, #0 + mov r1, #0x1a + mov r3, #0xd + bl FUN_0200A86C + add r1, r4, #0 + add r7, r0, #0 + bl FUN_0200A914 + add r4, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + mov r1, #0xd + bl FUN_020219F4 + mov r1, #0x6d + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + ldr r0, _021D9B10 ; =0x000006C4 + ldr r1, [r5, r0] + ldrb r1, [r1, #0x16] + cmp r1, #0 + bne _021D9ACE + add r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02024FF4 + b _021D9AD0 +_021D9ACE: + mov r0, #1 +_021D9AD0: + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + ldr r0, _021D9B14 ; =0x0001020F + ldr r2, _021D9B08 ; =0x000006A8 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r5, r2] + add r2, #0x28 + ldr r2, [r5, r2] + mov r1, #1 + bl FUN_0201BDE0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r0, _021D9B08 ; =0x000006A8 + ldr r0, [r5, r0] + bl FUN_020191D0 + add r0, r6, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D9B08: .word 0x000006A8 +_021D9B0C: .word 0x00000151 +_021D9B10: .word 0x000006C4 +_021D9B14: .word 0x0001020F + thumb_func_end MOD17_021D9A68 + + thumb_func_start MOD17_021D9B18 +MOD17_021D9B18: ; 0x021D9B18 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6d + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x6d + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + pop {r4, pc} + thumb_func_end MOD17_021D9B18 + + thumb_func_start MOD17_021D9B30 +MOD17_021D9B30: ; 0x021D9B30 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D9B48 ; =0x000006A8 + ldr r0, [r4, r0] + bl FUN_02019570 + ldr r0, _021D9B48 ; =0x000006A8 + ldr r0, [r4, r0] + bl FUN_02019178 + pop {r4, pc} + nop +_021D9B48: .word 0x000006A8 + thumb_func_end MOD17_021D9B30 + + thumb_func_start MOD17_021D9B4C +MOD17_021D9B4C: ; 0x021D9B4C + push {r3, lr} + sub sp, #8 + mov r2, #0x1b + str r2, [sp] + mov r2, #2 + mov r3, #1 + str r2, [sp, #4] + bl MOD17_021D9918 + add sp, #8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021D9B4C + + thumb_func_start MOD17_021D9B64 +MOD17_021D9B64: ; 0x021D9B64 + ldr r3, _021D9B68 ; =MOD17_021D99E0 + bx r3 + .align 2, 0 +_021D9B68: .word MOD17_021D99E0 + thumb_func_end MOD17_021D9B64 + + thumb_func_start MOD17_021D9B6C +MOD17_021D9B6C: ; 0x021D9B6C + ldr r3, _021D9B70 ; =MOD17_021D9B30 + bx r3 + .align 2, 0 +_021D9B70: .word MOD17_021D9B30 + thumb_func_end MOD17_021D9B6C + + thumb_func_start MOD17_021D9B74 +MOD17_021D9B74: ; 0x021D9B74 + push {r4, lr} + sub sp, #8 + mov r2, #0x1b + str r2, [sp] + mov r2, #4 + str r2, [sp, #4] + mov r2, #2 + mov r3, #0x13 + add r4, r0, #0 + bl MOD17_021D9918 + mov r0, #0xd + bl FUN_0200AA80 + ldr r1, _021D9B98 ; =0x000006D4 + str r0, [r4, r1] + add sp, #8 + pop {r4, pc} + .align 2, 0 +_021D9B98: .word 0x000006D4 + thumb_func_end MOD17_021D9B74 + + thumb_func_start MOD17_021D9B9C +MOD17_021D9B9C: ; 0x021D9B9C + ldr r3, _021D9BA0 ; =MOD17_021D9A68 + bx r3 + .align 2, 0 +_021D9BA0: .word MOD17_021D9A68 + thumb_func_end MOD17_021D9B9C + + thumb_func_start MOD17_021D9BA4 +MOD17_021D9BA4: ; 0x021D9BA4 + push {r3, lr} + sub sp, #8 + mov r3, #0 + str r3, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r3, _021D9BC0 ; =0x000006D4 + ldr r0, [r0, r3] + mov r3, #2 + bl FUN_0200AD38 + add sp, #8 + pop {r3, pc} + nop +_021D9BC0: .word 0x000006D4 + thumb_func_end MOD17_021D9BA4 + + thumb_func_start MOD17_021D9BC4 +MOD17_021D9BC4: ; 0x021D9BC4 + ldr r3, _021D9BC8 ; =MOD17_021D9B18 + bx r3 + .align 2, 0 +_021D9BC8: .word MOD17_021D9B18 + thumb_func_end MOD17_021D9BC4 + + thumb_func_start MOD17_021D9BCC +MOD17_021D9BCC: ; 0x021D9BCC + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D9B30 + ldr r0, _021D9BE4 ; =0x000006D4 + ldr r0, [r4, r0] + bl FUN_0200AB18 + ldr r0, _021D9BE4 ; =0x000006D4 + mov r1, #0 + str r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_021D9BE4: .word 0x000006D4 + thumb_func_end MOD17_021D9BCC + + thumb_func_start MOD17_021D9BE8 +MOD17_021D9BE8: ; 0x021D9BE8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xfa + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DA368 + add r1, r0, #0 + ldr r0, _021D9C04 ; =0x00000554 + add r0, r4, r0 + bl MOD17_021DCBD8 + pop {r4, pc} + nop +_021D9C04: .word 0x00000554 + thumb_func_end MOD17_021D9BE8 + + thumb_func_start MOD17_021D9C08 +MOD17_021D9C08: ; 0x021D9C08 + push {r4, lr} + cmp r0, #3 + bhi _021D9C32 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9C1A: ; jump table + .short _021D9C22 - _021D9C1A - 2 ; case 0 + .short _021D9C26 - _021D9C1A - 2 ; case 1 + .short _021D9C2A - _021D9C1A - 2 ; case 2 + .short _021D9C2E - _021D9C1A - 2 ; case 3 +_021D9C22: + mov r4, #5 + b _021D9C36 +_021D9C26: + mov r4, #0xa + b _021D9C36 +_021D9C2A: + mov r4, #0xf + b _021D9C36 +_021D9C2E: + mov r4, #0x14 + b _021D9C36 +_021D9C32: + bl ErrorHandling +_021D9C36: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D9C08 + + thumb_func_start MOD17_021D9C3C +MOD17_021D9C3C: ; 0x021D9C3C + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #0x19 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + add r0, sp, #0 + strb r1, [r0, #0x10] + mov r1, #4 + strb r1, [r0, #0x11] + ldr r0, _021D9CA4 ; =0x000006A4 + ldr r0, [r4, r0] + bl FUN_020146C4 + ldr r0, _021D9CA4 ; =0x000006A4 + add r1, sp, #0 + ldr r0, [r4, r0] + bl FUN_020145C8 + add r0, r4, #0 + mov r1, #2 + bl MOD17_021D9B64 + ldr r0, _021D9CA8 ; =0x04000008 + mov r2, #3 + ldrh r3, [r0] + mov r1, #2 + bic r3, r2 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0, #2] + mov r1, #1 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #2] + ldrh r3, [r0, #4] + mov r1, #3 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #4] + ldrh r1, [r0, #6] + bic r1, r2 + strh r1, [r0, #6] + add sp, #0x14 + pop {r3, r4, pc} + nop +_021D9CA4: .word 0x000006A4 +_021D9CA8: .word 0x04000008 + thumb_func_end MOD17_021D9C3C + + thumb_func_start MOD17_021D9CAC +MOD17_021D9CAC: ; 0x021D9CAC + push {r3, lr} + ldr r1, _021D9CD0 ; =0x000006A4 + ldr r0, [r0, r1] + bl FUN_0201466C + cmp r0, #0 + beq _021D9CC4 + cmp r0, #1 + beq _021D9CC8 + cmp r0, #2 + beq _021D9CCC + pop {r3, pc} +_021D9CC4: + mov r0, #5 + pop {r3, pc} +_021D9CC8: + mov r0, #6 + pop {r3, pc} +_021D9CCC: + mov r0, #7 + pop {r3, pc} + .align 2, 0 +_021D9CD0: .word 0x000006A4 + thumb_func_end MOD17_021D9CAC + + thumb_func_start MOD17_021D9CD4 +MOD17_021D9CD4: ; 0x021D9CD4 + ldr r3, _021D9CDC ; =0x020DF4A4 + mov r1, #0 + mov r2, #0xac + bx r3 + .align 2, 0 +_021D9CDC: .word 0x020DF4A4 + thumb_func_end MOD17_021D9CD4 + + thumb_func_start MOD17_021D9CE0 +MOD17_021D9CE0: ; 0x021D9CE0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #0 + bne _021D9CF0 + bl ErrorHandling +_021D9CF0: + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + lsl r0, r0, #3 + str r4, [r5, r0] + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + lsl r0, r0, #3 + add r0, r5, r0 + str r6, [r0, #4] + add r0, r5, #0 + add r0, #0xa8 + ldr r0, [r0] + add r5, #0xa8 + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021D9CE0 + + thumb_func_start MOD17_021D9D14 +MOD17_021D9D14: ; 0x021D9D14 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0xa8 + ldr r2, [r0] + mov r1, #0 + cmp r2, #0 + ble _021D9D6C +_021D9D22: + lsl r0, r1, #3 + add r7, r6, r0 + ldr r0, [r7, #4] + cmp r0, #1 + bne _021D9D60 + mov r4, #0 + cmp r2, #0 + ble _021D9D58 + add r5, r6, #0 +_021D9D34: + ldr r0, [r5, #4] + cmp r0, #0 + bne _021D9D4A + add r0, r7, #0 + add r1, r5, #0 + bl MOD17_021D9DA4 + cmp r0, #1 + bne _021D9D4A + mov r0, #1 + str r0, [r5, #4] +_021D9D4A: + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #8 + cmp r4, r0 + blt _021D9D34 +_021D9D58: + mov r0, #2 + str r0, [r7, #4] + mov r1, #0 + b _021D9D62 +_021D9D60: + add r1, r1, #1 +_021D9D62: + add r0, r6, #0 + add r0, #0xa8 + ldr r2, [r0] + cmp r1, r2 + blt _021D9D22 +_021D9D6C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D9D14 + + thumb_func_start MOD17_021D9D70 +MOD17_021D9D70: ; 0x021D9D70 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0x15 + blo _021D9D7E + bl ErrorHandling +_021D9D7E: + lsl r0, r5, #3 + ldr r0, [r4, r0] + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021D9D70 + + thumb_func_start MOD17_021D9D84 +MOD17_021D9D84: ; 0x021D9D84 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0x15 + blo _021D9D92 + bl ErrorHandling +_021D9D92: + lsl r0, r5, #3 + add r0, r4, r0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D9DA0 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9DA0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021D9D84 + + thumb_func_start MOD17_021D9DA4 +MOD17_021D9DA4: ; 0x021D9DA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + add r1, sp, #0x28 + add r2, sp, #0x24 + bl MOD17_021DBCC8 + add r0, sp, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, sp, #0x18 + add r3, sp, #0x1c + bl MOD17_021DBC70 + mov r4, #0 + add r6, sp, #0x10 + add r7, sp, #0xc +_021D9DCC: + str r4, [sp] + str r6, [sp, #4] + str r7, [sp, #8] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + bl MOD17_021D9E78 + ldr r0, [r5] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl MOD17_021DBAE8 + cmp r0, #1 + bne _021D9DF2 + add sp, #0x2c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021D9DF2: + add r4, r4, #1 + cmp r4, #0x10 + blt _021D9DCC + mov r0, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D9DA4 + + thumb_func_start MOD17_021D9E00 +MOD17_021D9E00: ; 0x021D9E00 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r4, [r5, #8] + add r6, r0, #0 + add r7, r2, #0 + cmp r4, r5 + beq _021D9E24 +_021D9E0E: + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D9E1E + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + bl MOD17_021D9CE0 +_021D9E1E: + ldr r4, [r4, #8] + cmp r4, r5 + bne _021D9E0E +_021D9E24: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D9E00 + + thumb_func_start MOD17_021D9E28 +MOD17_021D9E28: ; 0x021D9E28 + push {r3, r4, r5, lr} + ldr r2, _021D9E70 ; =0x000006C4 + mov r1, #0 + ldr r2, [r0, r2] + ldrb r3, [r2, #0x16] + cmp r3, #0 + bne _021D9E40 + ldr r2, _021D9E74 ; =0x00000554 + add r0, r0, r2 + bl MOD17_021DCBEC + pop {r3, r4, r5, pc} +_021D9E40: + ldrb r4, [r2, #0x14] + ldrb r3, [r2, #0x15] + cmp r4, r3 + bne _021D9E6C + add r4, r1, #0 + add r5, r2, #0 +_021D9E4C: + ldrb r3, [r5, #0x10] + cmp r3, #1 + bne _021D9E54 + add r1, r1, #1 +_021D9E54: + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #4 + blt _021D9E4C + ldrb r2, [r2, #0x17] + cmp r2, r1 + bgt _021D9E6C + ldr r1, _021D9E74 ; =0x00000554 + add r0, r0, r1 + mov r1, #0 + bl MOD17_021DCBEC +_021D9E6C: + pop {r3, r4, r5, pc} + nop +_021D9E70: .word 0x000006C4 +_021D9E74: .word 0x00000554 + thumb_func_end MOD17_021D9E28 + + thumb_func_start MOD17_021D9E78 +MOD17_021D9E78: ; 0x021D9E78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + str r1, [sp] + add r7, r2, #0 + add r0, r3, #0 + sub r0, r0, r7 + mov r1, #3 + str r3, [sp, #4] + ldr r4, [sp, #0x2c] + ldr r5, [sp, #0x30] + bl _u32_div_f + add r1, r7, r0 + lsl r0, r0, #1 + add r0, r7, r0 + str r0, [sp, #8] + ldr r0, [sp] + str r1, [sp, #0xc] + sub r0, r0, r6 + mov r1, #3 + bl _u32_div_f + add r2, r6, r0 + lsl r0, r0, #1 + ldr r1, [sp, #0x28] + add r0, r6, r0 + cmp r1, #0xf + bhi _021D9F7A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D9EBE: ; jump table + .short _021D9EDE - _021D9EBE - 2 ; case 0 + .short _021D9EE6 - _021D9EBE - 2 ; case 1 + .short _021D9EEE - _021D9EBE - 2 ; case 2 + .short _021D9EF6 - _021D9EBE - 2 ; case 3 + .short _021D9F00 - _021D9EBE - 2 ; case 4 + .short _021D9F0A - _021D9EBE - 2 ; case 5 + .short _021D9F14 - _021D9EBE - 2 ; case 6 + .short _021D9F1E - _021D9EBE - 2 ; case 7 + .short _021D9F2A - _021D9EBE - 2 ; case 8 + .short _021D9F34 - _021D9EBE - 2 ; case 9 + .short _021D9F3E - _021D9EBE - 2 ; case 10 + .short _021D9F48 - _021D9EBE - 2 ; case 11 + .short _021D9F54 - _021D9EBE - 2 ; case 12 + .short _021D9F5E - _021D9EBE - 2 ; case 13 + .short _021D9F68 - _021D9EBE - 2 ; case 14 + .short _021D9F72 - _021D9EBE - 2 ; case 15 +_021D9EDE: + str r7, [r4] + add sp, #0x10 + str r6, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9EE6: + str r7, [r4] + add sp, #0x10 + str r2, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9EEE: + str r7, [r4] + add sp, #0x10 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9EF6: + ldr r0, [sp] + str r7, [r4] + add sp, #0x10 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F00: + ldr r0, [sp, #0xc] + add sp, #0x10 + str r0, [r4] + str r6, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F0A: + ldr r0, [sp, #0xc] + add sp, #0x10 + str r0, [r4] + str r2, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F14: + ldr r1, [sp, #0xc] + add sp, #0x10 + str r1, [r4] + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F1E: + ldr r0, [sp, #0xc] + str r0, [r4] + ldr r0, [sp] + add sp, #0x10 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F2A: + ldr r0, [sp, #8] + add sp, #0x10 + str r0, [r4] + str r6, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F34: + ldr r0, [sp, #8] + add sp, #0x10 + str r0, [r4] + str r2, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F3E: + ldr r1, [sp, #8] + add sp, #0x10 + str r1, [r4] + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F48: + ldr r0, [sp, #8] + str r0, [r4] + ldr r0, [sp] + add sp, #0x10 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F54: + ldr r0, [sp, #4] + add sp, #0x10 + str r0, [r4] + str r6, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F5E: + ldr r0, [sp, #4] + add sp, #0x10 + str r0, [r4] + str r2, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F68: + ldr r1, [sp, #4] + add sp, #0x10 + str r1, [r4] + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021D9F72: + ldr r0, [sp, #4] + str r0, [r4] + ldr r0, [sp] + str r0, [r5] +_021D9F7A: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021D9E78 + + thumb_func_start MOD17_021D9F80 +MOD17_021D9F80: ; 0x021D9F80 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1] + mov r2, #0 + str r0, [r4, #0x2c] + ldr r0, [r1, #4] + str r0, [r4, #0x30] + ldr r0, [r1, #8] + str r0, [r4, #0x34] + ldr r0, [r1, #0xc] + str r0, [r4, #0x38] + ldr r0, [r1, #0x10] + str r0, [r4, #0x3c] + ldr r0, [r1, #0x14] + str r0, [r4, #0x40] + ldr r0, [r1, #0x18] + str r0, [r4, #0x44] + str r2, [r4, #0x74] + ldr r0, [r1, #0x1c] + str r0, [r4] + add r0, r4, #4 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x14 + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r2, [r4, #0x24] + ldr r0, [r1, #0x20] + add r1, r4, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r1, #0x78 + mov r2, #3 + bl MOD17_021DBA30 + add r4, #0x14 + add r1, r4, #0 + bl MOD17_021DBA90 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D9F80 + + thumb_func_start MOD17_021D9FD4 +MOD17_021D9FD4: ; 0x021D9FD4 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021DA058 + add r0, r4, #0 + bl MOD17_021DA100 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x88 + bl Call_FillMemWithValue + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021D9FD4 + + thumb_func_start MOD17_021D9FF0 +MOD17_021D9FF0: ; 0x021D9FF0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [sp, #0x20] + add r6, r1, #0 + str r0, [sp] + add r5, r2, #0 + add r0, r4, #0 + add r7, r3, #0 + ldr r1, [r4, #0x3c] + add r0, #0x78 + add r2, r6, #0 + add r3, r5, #0 + bl MOD17_021DB700 + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x78 + bl MOD17_021DB7D8 + add r4, #0x78 + ldr r2, [sp, #0x18] + add r0, r4, #0 + add r1, r7, #0 + bl MOD17_021DB7F4 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021D9FF0 + + thumb_func_start MOD17_021DA024 +MOD17_021DA024: ; 0x021DA024 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + str r3, [sp] + add r5, r1, #0 + add r4, r2, #0 + ldr r1, [r6, #0x3c] + add r0, #0x78 + add r2, r5, #0 + add r3, r4, #0 + bl MOD17_021DB700 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD17_021DA024 + + thumb_func_start MOD17_021DA040 +MOD17_021DA040: ; 0x021DA040 + ldr r3, _021DA04C ; =MOD17_021DBA90 + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2, #0x20] + bx r3 + nop +_021DA04C: .word MOD17_021DBA90 + thumb_func_end MOD17_021DA040 + + thumb_func_start MOD17_021DA050 +MOD17_021DA050: ; 0x021DA050 + ldr r3, _021DA054 ; =MOD17_021DBAA0 + bx r3 + .align 2, 0 +_021DA054: .word MOD17_021DBAA0 + thumb_func_end MOD17_021DA050 + + thumb_func_start MOD17_021DA058 +MOD17_021DA058: ; 0x021DA058 + ldr r3, _021DA060 ; =MOD17_021DB7C0 + add r0, #0x78 + bx r3 + nop +_021DA060: .word MOD17_021DB7C0 + thumb_func_end MOD17_021DA058 + + thumb_func_start MOD17_021DA064 +MOD17_021DA064: ; 0x021DA064 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r4, r0, #0 + ldr r5, [r4, #0x24] + ldr r0, [r4, #0x28] + cmp r5, r0 + bge _021DA0BE + ldr r0, [r4, #0x44] + str r0, [sp] + ldr r0, [r4, #0x2c] + str r0, [sp, #4] + ldr r5, [r4, #0x30] + lsl r0, r1, #2 + ldr r0, [r5, r0] + str r0, [sp, #8] + ldr r0, [r4, #0x34] + ldr r0, [r0] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + str r1, [sp, #0x18] + str r0, [sp, #0xc] + ldr r0, [r4, #0x38] + ldrb r0, [r0, r1] + str r0, [sp, #0x1c] + add r0, sp, #0 + bl MOD17_021D7520 + ldr r1, [sp, #0x30] + add r5, r0, #0 + bl MOD17_021D766C + ldr r0, [r4] + add r1, r5, #0 + mov r2, #0 + bl MOD17_021DBA30 + add r1, r4, #4 + bl MOD17_021DBA90 + ldr r0, [r4, #0x24] + add sp, #0x20 + add r0, r0, #1 + str r0, [r4, #0x24] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA0BE: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DA064 + + thumb_func_start MOD17_021DA0C4 +MOD17_021DA0C4: ; 0x021DA0C4 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r3, r2, #0 + ldr r5, [r4, #0x24] + ldr r2, [r4, #0x28] + cmp r5, r2 + bge _021DA0E2 + mov r2, #1 + bl MOD17_021DA454 + ldr r0, [r4, #0x24] + add r0, r0, #1 + str r0, [r4, #0x24] + mov r0, #1 + pop {r3, r4, r5, pc} +_021DA0E2: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DA0C4 + + thumb_func_start MOD17_021DA0E8 +MOD17_021DA0E8: ; 0x021DA0E8 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl MOD17_021DBAA0 + ldr r0, [r4, #0x24] + sub r0, r0, #1 + str r0, [r4, #0x24] + bpl _021DA0FE + bl ErrorHandling +_021DA0FE: + pop {r4, pc} + thumb_func_end MOD17_021DA0E8 + + thumb_func_start MOD17_021DA100 +MOD17_021DA100: ; 0x021DA100 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl MOD17_021DBAB0 + add r0, r4, #0 + add r0, #0x14 + bl MOD17_021DBAB0 + mov r0, #0 + str r0, [r4, #0x24] + pop {r4, pc} + thumb_func_end MOD17_021DA100 + + thumb_func_start MOD17_021DA118 +MOD17_021DA118: ; 0x021DA118 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r5, #4 + add r4, r1, #0 + add r6, r2, #0 + bl MOD17_021DBC38 + add r5, #0x14 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD17_021DBC38 + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DA118 + + thumb_func_start MOD17_021DA134 +MOD17_021DA134: ; 0x021DA134 + ldr r3, _021DA13C ; =MOD17_021DBC38 + add r0, #0x14 + bx r3 + nop +_021DA13C: .word MOD17_021DBC38 + thumb_func_end MOD17_021DA134 + + thumb_func_start MOD17_021DA140 +MOD17_021DA140: ; 0x021DA140 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + neg r4, r2 + neg r7, r1 + add r0, r5, #4 + add r1, r7, #0 + add r2, r4, #0 + add r6, r3, #0 + bl MOD17_021DBC38 + ldr r2, [sp, #0x18] + add r0, r5, #4 + add r1, r6, #0 + bl MOD17_021DBC38 + add r0, r5, #0 + add r0, #0x14 + add r1, r7, #0 + add r2, r4, #0 + bl MOD17_021DBC38 + add r5, #0x14 + ldr r2, [sp, #0x18] + add r0, r5, #0 + add r1, r6, #0 + bl MOD17_021DBC38 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DA140 + + thumb_func_start MOD17_021DA178 +MOD17_021DA178: ; 0x021DA178 + ldr r3, _021DA180 ; =MOD17_021DA184 + mov r1, #0 + mvn r1, r1 + bx r3 + .align 2, 0 +_021DA180: .word MOD17_021DA184 + thumb_func_end MOD17_021DA178 + + thumb_func_start MOD17_021DA184 +MOD17_021DA184: ; 0x021DA184 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r7, #0 + ldr r4, [r7, #0x1c] + add r6, #0x14 + add r5, r1, #0 + cmp r4, r6 + beq _021DA1B2 +_021DA194: + ldr r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4] + bne _021DA1A4 + add r1, r5, #0 + bl MOD17_021D766C + b _021DA1AA +_021DA1A4: + add r1, r5, #0 + bl MOD17_021DB7D8 +_021DA1AA: + ldr r4, [r4, #8] + sub r5, r5, #1 + cmp r4, r6 + bne _021DA194 +_021DA1B2: + ldr r4, [r7, #0xc] + add r6, r7, #4 + sub r5, #8 + cmp r4, r6 + beq _021DA1DA +_021DA1BC: + ldr r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4] + bne _021DA1CC + add r1, r5, #0 + bl MOD17_021D766C + b _021DA1D2 +_021DA1CC: + add r1, r5, #0 + bl MOD17_021DB7D8 +_021DA1D2: + ldr r4, [r4, #8] + sub r5, r5, #1 + cmp r4, r6 + bne _021DA1BC +_021DA1DA: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DA184 + + thumb_func_start MOD17_021DA1DC +MOD17_021DA1DC: ; 0x021DA1DC + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r7, #0 + ldr r4, [r7, #0x1c] + add r6, #0x14 + add r5, r1, #0 + cmp r4, r6 + beq _021DA218 +_021DA1EC: + ldr r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4] + bne _021DA204 + bl MOD17_021D7678 + add r1, r0, #0 + ldr r0, [r4] + add r1, r1, r5 + bl MOD17_021D766C + b _021DA212 +_021DA204: + bl MOD17_021DB7E8 + add r1, r0, #0 + ldr r0, [r4] + add r1, r1, r5 + bl MOD17_021DB7D8 +_021DA212: + ldr r4, [r4, #8] + cmp r4, r6 + bne _021DA1EC +_021DA218: + ldr r4, [r7, #0xc] + add r6, r7, #4 + cmp r4, r6 + beq _021DA24C +_021DA220: + ldr r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4] + bne _021DA238 + bl MOD17_021D7678 + add r1, r0, #0 + ldr r0, [r4] + add r1, r1, r5 + bl MOD17_021D766C + b _021DA246 +_021DA238: + bl MOD17_021DB7E8 + add r1, r0, #0 + ldr r0, [r4] + add r1, r1, r5 + bl MOD17_021DB7D8 +_021DA246: + ldr r4, [r4, #8] + cmp r4, r6 + bne _021DA220 +_021DA24C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA1DC + + thumb_func_start MOD17_021DA250 +MOD17_021DA250: ; 0x021DA250 + push {r3, lr} + mov r1, #0x12 + add r0, sp, #0 + strb r1, [r0] + mov r1, #0x8f + strb r1, [r0, #1] + mov r1, #0x8a + strb r1, [r0, #2] + mov r1, #0xf6 + strb r1, [r0, #3] + add r0, sp, #0 + bl FUN_02020A40 + pop {r3, pc} + thumb_func_end MOD17_021DA250 + + thumb_func_start MOD17_021DA26C +MOD17_021DA26C: ; 0x021DA26C + push {r3, lr} + mov r3, #0x12 + add r0, sp, #0 + strb r3, [r0] + mov r3, #0x8f + strb r3, [r0, #1] + mov r3, #0x8a + strb r3, [r0, #2] + mov r3, #0xf6 + strb r3, [r0, #3] + add r0, sp, #0 + bl FUN_02020AE8 + pop {r3, pc} + thumb_func_end MOD17_021DA26C + + thumb_func_start MOD17_021DA288 +MOD17_021DA288: ; 0x021DA288 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r5, [r0, #0x1c] + str r0, [sp] + str r0, [sp, #4] + add r0, #0x14 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + str r0, [sp, #4] + cmp r5, r0 + beq _021DA2BE +_021DA2A0: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD17_021DBB1C + cmp r0, #1 + bne _021DA2B6 + add sp, #0xc + add r0, r5, #0 + pop {r4, r5, r6, r7, pc} +_021DA2B6: + ldr r5, [r5, #8] + ldr r0, [sp, #4] + cmp r5, r0 + bne _021DA2A0 +_021DA2BE: + ldr r0, [sp] + ldr r5, [r0, #0xc] + add r0, r0, #4 + str r0, [sp, #8] + cmp r5, r0 + beq _021DA2E8 +_021DA2CA: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD17_021DBB1C + cmp r0, #1 + bne _021DA2E0 + add sp, #0xc + add r0, r5, #0 + pop {r4, r5, r6, r7, pc} +_021DA2E0: + ldr r5, [r5, #8] + ldr r0, [sp, #8] + cmp r5, r0 + bne _021DA2CA +_021DA2E8: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA288 + + thumb_func_start MOD17_021DA2F0 +MOD17_021DA2F0: ; 0x021DA2F0 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5, #0x40] + add r4, r1, #0 + str r0, [sp] + mov r0, #0x19 + lsl r1, r4, #2 + str r0, [sp, #4] + add r0, r1, #0 + add r0, #0x86 + str r0, [sp, #8] + add r0, r1, #0 + add r0, #0x87 + str r0, [sp, #0xc] + mov r0, #0x88 + str r0, [sp, #0x14] + mov r0, #0x10 + str r0, [sp, #0x18] + mov r0, #2 + str r0, [sp, #0x1c] + mov r0, #1 + add r1, #0x88 + str r1, [sp, #0x10] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x28] + add r0, r5, #0 + add r0, #0x48 + add r1, sp, #0 + str r2, [sp, #0x2c] + bl MOD17_021DBD04 + str r4, [r5, #0x74] + add sp, #0x30 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DA2F0 + + thumb_func_start MOD17_021DA33C +MOD17_021DA33C: ; 0x021DA33C + ldr r3, _021DA344 ; =MOD17_021DBD4C + add r0, #0x48 + bx r3 + nop +_021DA344: .word MOD17_021DBD4C + thumb_func_end MOD17_021DA33C + + thumb_func_start MOD17_021DA348 +MOD17_021DA348: ; 0x021DA348 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x78] + add r4, r1, #0 + mov r1, #0 + add r6, r2, #0 + bl FUN_0200782C + str r0, [r4] + ldr r0, [r5, #0x78] + mov r1, #1 + bl FUN_0200782C + str r0, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DA348 + + thumb_func_start MOD17_021DA368 +MOD17_021DA368: ; 0x021DA368 + ldr r0, [r0, #0x24] + bx lr + thumb_func_end MOD17_021DA368 + + thumb_func_start MOD17_021DA36C +MOD17_021DA36C: ; 0x021DA36C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + ldr r6, [r7, #0x1c] + mov r4, #0 + add r7, #0x14 + str r1, [sp] + str r2, [sp, #4] + add r5, r4, #0 + cmp r6, r7 + beq _021DA3CA +_021DA382: + add r0, r6, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DA528 + cmp r4, #0 + bge _021DA394 + neg r1, r4 + b _021DA396 +_021DA394: + add r1, r4, #0 +_021DA396: + ldr r0, [sp, #0xc] + cmp r0, #0 + bge _021DA3A0 + neg r2, r0 + b _021DA3A2 +_021DA3A0: + add r2, r0, #0 +_021DA3A2: + cmp r2, r1 + ble _021DA3A8 + add r4, r0, #0 +_021DA3A8: + cmp r5, #0 + bge _021DA3B0 + neg r1, r5 + b _021DA3B2 +_021DA3B0: + add r1, r5, #0 +_021DA3B2: + ldr r0, [sp, #8] + cmp r0, #0 + bge _021DA3BC + neg r2, r0 + b _021DA3BE +_021DA3BC: + add r2, r0, #0 +_021DA3BE: + cmp r2, r1 + ble _021DA3C4 + add r5, r0, #0 +_021DA3C4: + ldr r6, [r6, #8] + cmp r6, r7 + bne _021DA382 +_021DA3CA: + ldr r0, [sp] + str r4, [r0] + ldr r0, [sp, #4] + str r5, [r0] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA36C + + thumb_func_start MOD17_021DA3D8 +MOD17_021DA3D8: ; 0x021DA3D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + ldr r4, [r0, #0x1c] + add r7, #0x14 + str r0, [sp] + add r6, r1, #0 + cmp r4, r7 + beq _021DA436 + asr r0, r6, #0xa + mov r1, #0x1f + and r0, r1 + str r0, [sp, #0xc] + asr r0, r6, #5 + and r0, r1 + str r0, [sp, #8] + add r0, r6, #0 + and r0, r1 + str r0, [sp, #4] +_021DA3FE: + ldr r0, [r4, #4] + cmp r0, #0 + bne _021DA410 + ldr r0, [r4] + add r1, r6, #0 + ldr r0, [r0, #4] + bl FUN_02013F0C + b _021DA430 +_021DA410: + ldr r5, [r4] + ldr r2, [sp, #0xc] + ldr r0, [r5] + mov r1, #0x18 + bl FUN_02007558 + ldr r0, [r5] + ldr r2, [sp, #8] + mov r1, #0x19 + bl FUN_02007558 + ldr r0, [r5] + ldr r2, [sp, #4] + mov r1, #0x1a + bl FUN_02007558 +_021DA430: + ldr r4, [r4, #8] + cmp r4, r7 + bne _021DA3FE +_021DA436: + ldr r0, [sp] + ldr r4, [r0, #0xc] + add r5, r0, #4 + cmp r4, r5 + beq _021DA450 +_021DA440: + ldr r0, [r4] + add r1, r6, #0 + ldr r0, [r0, #4] + bl FUN_02013F0C + ldr r4, [r4, #8] + cmp r4, r5 + bne _021DA440 +_021DA450: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DA3D8 + + thumb_func_start MOD17_021DA454 +MOD17_021DA454: ; 0x021DA454 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + str r0, [sp, #0xc] + str r2, [sp, #0x14] + str r1, [sp, #0x10] + add r0, r1, #0 + add r1, sp, #0x4c + add r2, sp, #0x48 + add r4, r3, #0 + bl MOD17_021DBBB8 + ldr r0, [sp, #0x10] + add r1, sp, #0x44 + add r2, sp, #0x40 + bl MOD17_021DBC08 + ldr r0, [sp, #0x10] + add r1, sp, #0x3c + add r2, sp, #0x38 + bl MOD17_021DBC20 + mov r0, #0x76 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r5, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x4c] + ldr r1, [sp, #0x44] + str r0, [sp, #0x24] + add r0, r0, r1 + ldr r6, [sp, #0x3c] + ldr r1, [sp, #0x40] + sub r0, r0, r6 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x38] + str r0, [sp, #0x28] + add r0, r0, r1 + sub r0, r0, r7 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r4, r5, #0 + str r0, [sp, #0x2c] + add r0, #0x78 + str r0, [sp, #0x2c] +_021DA4AE: + str r4, [sp] + add r0, sp, #0x34 + str r0, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + ldr r0, [sp, #0x28] + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, r0, r7 + add r2, r2, r6 + bl MOD17_021D9E78 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x30] + ldr r3, [sp, #0x20] + bl MOD17_021DB8F8 + add r4, r4, #1 + orr r5, r0 + cmp r4, #0x10 + blt _021DA4AE + cmp r5, #0 + beq _021DA504 + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _021DA4F6 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, #0x14 + str r1, [sp, #0xc] + bl MOD17_021DBA90 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} +_021DA4F6: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [r1, #0x20] + bl MOD17_021DBA90 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} +_021DA504: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _021DA518 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r1, #4 + bl MOD17_021DBA90 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} +_021DA518: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [r1, #0x10] + bl MOD17_021DBA90 + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA454 + + thumb_func_start MOD17_021DA528 +MOD17_021DA528: ; 0x021DA528 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r1, sp, #0x14 + add r2, sp, #0x10 + bl MOD17_021DBC08 + add r0, r6, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DBBB8 + add r0, r6, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBC20 + ldr r1, [sp, #4] + ldr r0, [sp, #0xc] + mov r2, #0x8a + add r3, r0, r1 + sub r6, r2, r3 + ldr r2, [sp, #0x14] + ldr r7, [sp, #8] + add r0, r0, r2 + sub r3, r0, r1 + ldr r2, [sp] + mov r0, #0x12 + add r1, r7, r2 + sub r0, r0, r1 + ldr r1, [sp, #0x10] + sub r3, #0xf6 + add r1, r7, r1 + sub r2, r1, r2 + sub r2, #0x8f + cmp r6, #0 + ble _021DA57A + str r6, [r5] + b _021DA588 +_021DA57A: + cmp r3, #0 + ble _021DA584 + neg r1, r3 + str r1, [r5] + b _021DA588 +_021DA584: + mov r1, #0 + str r1, [r5] +_021DA588: + cmp r0, #0 + ble _021DA592 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021DA592: + cmp r2, #0 + ble _021DA59E + neg r0, r2 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021DA59E: + mov r0, #0 + str r0, [r4] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA528 + + thumb_func_start MOD17_021DA5A8 +MOD17_021DA5A8: ; 0x021DA5A8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + str r1, [r5, #0x44] + ldr r1, [r4, #4] + str r1, [r5, #0x48] + ldr r1, [r4, #8] + str r1, [r5, #0x4c] + ldr r1, [r4, #0xc] + str r1, [r5, #0x50] + ldr r1, [r4, #0x10] + str r1, [r5, #0x54] + ldr r1, [r4, #0x14] + str r1, [r5, #0x58] + ldr r1, [r4, #0x18] + str r1, [r5, #8] + ldr r1, [r4, #0x28] + str r1, [r5, #4] + mov r1, #0 + bl MOD17_021DA9AC + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021DAAC8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DA5A8 + + thumb_func_start MOD17_021DA5E0 +MOD17_021DA5E0: ; 0x021DA5E0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD17_021DA818 + add r5, r6, #0 + mov r4, #0 + add r5, #0xc +_021DA5EE: + add r0, r5, #0 + bl MOD17_021DAB8C + add r4, r4, #1 + add r5, #0xc + cmp r4, #4 + blt _021DA5EE + add r0, r6, #0 + mov r1, #0 + mov r2, #0x8c + bl Call_FillMemWithValue + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DA5E0 + + thumb_func_start MOD17_021DA608 +MOD17_021DA608: ; 0x021DA608 + push {r3, lr} + cmp r0, #0 + beq _021DA618 + cmp r0, #1 + beq _021DA688 + cmp r0, #2 + beq _021DA696 + pop {r3, pc} +_021DA618: + cmp r1, #5 + bgt _021DA620 + mov r0, #0 + pop {r3, pc} +_021DA620: + cmp r1, #0xb + bgt _021DA628 + mov r0, #1 + pop {r3, pc} +_021DA628: + cmp r1, #0x11 + bgt _021DA630 + mov r0, #2 + pop {r3, pc} +_021DA630: + cmp r1, #0x15 + bgt _021DA638 + mov r0, #3 + pop {r3, pc} +_021DA638: + cmp r1, #0x1c + bgt _021DA640 + mov r0, #4 + pop {r3, pc} +_021DA640: + cmp r1, #0x21 + bgt _021DA648 + mov r0, #5 + pop {r3, pc} +_021DA648: + cmp r1, #0x26 + bgt _021DA650 + mov r0, #6 + pop {r3, pc} +_021DA650: + cmp r1, #0x2a + bgt _021DA658 + mov r0, #7 + pop {r3, pc} +_021DA658: + cmp r1, #0x31 + bgt _021DA660 + mov r0, #8 + pop {r3, pc} +_021DA660: + cmp r1, #0x37 + bgt _021DA668 + mov r0, #9 + pop {r3, pc} +_021DA668: + cmp r1, #0x3c + bgt _021DA670 + mov r0, #0xa + pop {r3, pc} +_021DA670: + cmp r1, #0x47 + bgt _021DA678 + mov r0, #0xb + pop {r3, pc} +_021DA678: + cmp r1, #0x5b + bgt _021DA680 + mov r0, #0xc + pop {r3, pc} +_021DA680: + cmp r1, #0x63 + bgt _021DA6A2 + mov r0, #0xd + pop {r3, pc} +_021DA688: + add r0, r2, #0 + bl MOD17_021DB014 + mov r1, #9 + bl _s32_div_f + pop {r3, pc} +_021DA696: + add r0, r2, #0 + bl MOD17_021DB014 + mov r1, #9 + bl _s32_div_f +_021DA6A2: + pop {r3, pc} + thumb_func_end MOD17_021DA608 + + thumb_func_start MOD17_021DA6A4 +MOD17_021DA6A4: ; 0x021DA6A4 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + cmp r0, #0 + beq _021DA6B8 + cmp r0, #1 + beq _021DA6EA + cmp r0, #2 + beq _021DA6EA + pop {r3, r4, r5, pc} +_021DA6B8: + mov r0, #0xa + str r0, [r5] + mov r0, #0x12 + str r0, [r4] + bl FUN_0201BA60 + ldr r2, [sp, #0x10] + mov r1, #0x6c + sub r1, r1, r2 + bl _u32_div_f + ldr r0, [r5] + add r0, r0, r1 + str r0, [r5] + bl FUN_0201BA60 + ldr r2, [sp, #0x14] + mov r1, #0x7d + sub r1, r1, r2 + bl _u32_div_f + ldr r0, [r4] + add r0, r0, r1 + str r0, [r4] + pop {r3, r4, r5, pc} +_021DA6EA: + ldr r0, [sp, #0x18] + bl MOD17_021DB014 + add r1, r5, #0 + add r2, r4, #0 + bl MOD17_021DAC68 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DA6A4 + + thumb_func_start MOD17_021DA6FC +MOD17_021DA6FC: ; 0x021DA6FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + add r5, r0, #0 + ldr r0, [r5, #0x58] + add r4, r2, #0 + str r4, [sp, #0x40] + str r0, [sp, #0x28] + ldr r0, [r5, #0x44] + add r6, r1, #0 + mov r1, #0 + str r0, [sp, #0x2c] + str r1, [sp, #0x38] + str r1, [sp, #0x3c] + cmp r6, #0 + beq _021DA724 + cmp r6, #1 + beq _021DA730 + cmp r6, #2 + beq _021DA73E + b _021DA74C +_021DA724: + ldr r0, [r5, #0x50] + str r4, [sp, #0xc] + ldrb r0, [r0, r4] + add r7, r1, #0 + str r0, [sp, #0x44] + b _021DA750 +_021DA730: + add r0, r4, #0 + str r0, [sp, #0xc] + add r0, #0x64 + str r0, [sp, #0xc] + add r7, r4, #1 + str r1, [sp, #0x44] + b _021DA750 +_021DA73E: + add r0, r4, #0 + str r0, [sp, #0xc] + add r0, #0x64 + str r0, [sp, #0xc] + add r7, r4, #1 + str r1, [sp, #0x44] + b _021DA750 +_021DA74C: + bl ErrorHandling +_021DA750: + ldr r0, [sp, #0xc] + ldr r1, [r5, #0x48] + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r1, r7, #2 + str r0, [sp, #0x30] + ldr r2, [r5, #0x4c] + cmp r0, #0 + ldr r1, [r2, r1] + str r1, [sp, #0x34] + bne _021DA76A + bl ErrorHandling +_021DA76A: + ldr r0, [sp, #0x34] + cmp r0, #0 + bne _021DA774 + bl ErrorHandling +_021DA774: + ldr r2, [r5, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD17_021DA608 + add r7, r0, #0 + add r0, sp, #0x28 + bl MOD17_021D7520 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + ldr r1, [sp, #0x10] + add r2, r6, #0 + bl MOD17_021DBA30 + mov r1, #0xc + mul r1, r6 + add r1, r5, r1 + ldr r2, [r1, #0xc] + lsl r1, r7, #4 + add r1, r2, r1 + ldr r1, [r1, #0xc] + str r0, [sp, #0x14] + bl MOD17_021DBA90 + ldr r0, [sp, #0x14] + add r1, sp, #0x1c + add r2, sp, #0x18 + bl MOD17_021DBC08 + ldr r0, [sp, #0x1c] + add r1, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x18] + add r2, sp, #0x24 + str r0, [sp, #4] + ldr r0, [r5, #4] + add r3, sp, #0x20 + str r0, [sp, #8] + add r0, r6, #0 + bl MOD17_021DA6A4 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + bl MOD17_021DBB68 + ldr r1, [sp, #0x10] + add r0, r5, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD17_021DAC40 + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA6FC + + thumb_func_start MOD17_021DA7E4 +MOD17_021DA7E4: ; 0x021DA7E4 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #0xc + add r5, r0, #0 + mul r1, r4 + add r7, r3, #0 + add r1, r5, r1 + add r6, r2, #0 + ldr r2, [r1, #0xc] + lsl r1, r6, #4 + add r0, r7, #0 + add r1, r2, r1 + bl MOD17_021DBA90 + ldr r1, [r7] + add r0, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD17_021DAC40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA7E4 + + thumb_func_start MOD17_021DA810 +MOD17_021DA810: ; 0x021DA810 + ldr r3, _021DA814 ; =MOD17_021DBAA0 + bx r3 + .align 2, 0 +_021DA814: .word MOD17_021DBAA0 + thumb_func_end MOD17_021DA810 + + thumb_func_start MOD17_021DA818 +MOD17_021DA818: ; 0x021DA818 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r7, #0 +_021DA81E: + ldr r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _021DA83A + add r4, r6, #0 +_021DA828: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD17_021DBAB0 + ldr r0, [r5, #0x10] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blt _021DA828 +_021DA83A: + add r7, r7, #1 + add r5, #0xc + cmp r7, #3 + blt _021DA81E + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DA818 + + thumb_func_start MOD17_021DA844 +MOD17_021DA844: ; 0x021DA844 + push {r4, r5, r6, lr} + mov r5, #0 + mvn r5, r5 + bl MOD17_021DABB4 + add r6, r0, #0 + ldr r4, [r6, #8] + cmp r4, r6 + beq _021DA86C +_021DA856: + ldr r0, [r4, #4] + cmp r0, #2 + bhi _021DA864 + ldr r0, [r4] + add r1, r5, #0 + bl MOD17_021D766C +_021DA864: + ldr r4, [r4, #8] + sub r5, r5, #1 + cmp r4, r6 + bne _021DA856 +_021DA86C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DA844 + + thumb_func_start MOD17_021DA870 +MOD17_021DA870: ; 0x021DA870 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + ldr r1, [r5, #0x3c] + add r4, r2, #0 + cmp r1, #0 + bne _021DA8A8 + ldr r1, [r5] + mov r2, #0xc + mul r2, r1 + str r4, [sp] + add r2, r5, r2 + ldr r2, [r2, #0x14] + add r3, r6, #0 + bl MOD17_021DACA4 + mov r0, #0xc + mul r0, r6 + str r6, [r5] + add r0, r5, r0 + str r4, [r0, #0x14] + add r0, r5, #0 + bl MOD17_021DA844 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021DA8A8: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DA870 + + thumb_func_start MOD17_021DA8B0 +MOD17_021DA8B0: ; 0x021DA8B0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r1, [sp, #4] + str r0, [sp] + str r2, [sp, #8] + bl MOD17_021DAA7C + add r7, r0, #0 + ldr r0, [sp, #4] + mov r1, #0xc + mul r1, r0 + ldr r0, [sp] + mov r4, #1 + add r6, r0, r1 + ldr r0, [r6, #0x10] + cmp r0, #1 + ble _021DA912 +_021DA8D2: + ldr r0, [sp, #8] + cmp r0, #0 + bne _021DA8E4 + ldr r1, [r6, #0x10] + add r0, r4, r7 + bl _s32_div_f + add r5, r1, #0 + b _021DA8EC +_021DA8E4: + sub r5, r7, r4 + bpl _021DA8EC + ldr r0, [r6, #0x10] + add r5, r5, r0 +_021DA8EC: + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r5, #0 + bl MOD17_021DABDC + ldr r1, [r0, #8] + cmp r1, r0 + beq _021DA90A + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r5, #0 + bl MOD17_021DA870 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_021DA90A: + ldr r0, [r6, #0x10] + add r4, r4, #1 + cmp r4, r0 + blt _021DA8D2 +_021DA912: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DA8B0 + + thumb_func_start MOD17_021DA918 +MOD17_021DA918: ; 0x021DA918 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #0 + add r5, r0, #0 + add r6, r2, #0 + bl MOD17_021DAB38 + mov r0, #0xc + mul r0, r4 + str r4, [r5] + add r0, r5, r0 + str r6, [r0, #0x14] + add r0, r5, #0 + mov r1, #1 + bl MOD17_021DAB38 + add r0, r5, #0 + bl MOD17_021DA844 + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DA918 + + thumb_func_start MOD17_021DA940 +MOD17_021DA940: ; 0x021DA940 + push {r3, lr} + mov r1, #0x12 + add r0, sp, #0 + strb r1, [r0] + mov r1, #0x8f + strb r1, [r0, #1] + mov r1, #0xa + strb r1, [r0, #2] + mov r1, #0x76 + strb r1, [r0, #3] + add r0, sp, #0 + bl FUN_02020A40 + pop {r3, pc} + thumb_func_end MOD17_021DA940 + + thumb_func_start MOD17_021DA95C +MOD17_021DA95C: ; 0x021DA95C + push {r3, lr} + mov r3, #0x12 + add r0, sp, #0 + strb r3, [r0] + mov r3, #0x8f + strb r3, [r0, #1] + mov r3, #0xa + strb r3, [r0, #2] + mov r3, #0x76 + strb r3, [r0, #3] + add r0, sp, #0 + bl FUN_02020AE8 + pop {r3, pc} + thumb_func_end MOD17_021DA95C + + thumb_func_start MOD17_021DA978 +MOD17_021DA978: ; 0x021DA978 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + bl MOD17_021DABB4 + add r5, r0, #0 + ldr r4, [r5, #8] + cmp r4, r5 + beq _021DA9A6 +_021DA98C: + ldr r3, [sp] + add r0, r4, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD17_021DBB1C + cmp r0, #1 + bne _021DA9A0 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DA9A0: + ldr r4, [r4, #8] + cmp r4, r5 + bne _021DA98C +_021DA9A6: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DA978 + + thumb_func_start MOD17_021DA9AC +MOD17_021DA9AC: ; 0x021DA9AC + push {r3, r4, r5, lr} + sub sp, #0x30 + add r5, r0, #0 + ldr r0, [r5, #0x54] + add r4, r1, #0 + str r0, [sp] + mov r0, #0x19 + lsl r1, r4, #1 + str r0, [sp, #4] + add r0, r1, #0 + add r0, #0x81 + str r0, [sp, #8] + mov r0, #0x85 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x14] + mov r0, #0x81 + str r0, [sp, #0x18] + mov r0, #3 + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + mov r0, #2 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x28] + mov r0, #0xe + add r1, #0x82 + str r0, [sp, #0x2c] + add r0, r5, #0 + str r1, [sp, #0x10] + add r0, #0x5c + add r1, sp, #0 + bl MOD17_021DBD04 + str r4, [r5, #0x40] + add sp, #0x30 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DA9AC + + thumb_func_start MOD17_021DA9F8 +MOD17_021DA9F8: ; 0x021DA9F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + ldr r0, [r5, #0x54] + add r4, r1, #0 + str r0, [sp, #8] + mov r0, #0x19 + lsl r1, r4, #1 + str r0, [sp, #0xc] + add r0, r1, #0 + add r0, #0x81 + str r0, [sp, #0x10] + mov r0, #0x85 + str r0, [sp, #0x14] + mov r0, #8 + add r1, #0x82 + str r0, [sp, #0x1c] + mov r0, #0x81 + str r1, [sp, #0x18] + str r0, [sp, #0x20] + mov r0, #3 + mov r1, #2 + str r0, [sp, #0x24] + mov r0, #1 + str r1, [sp, #0x2c] + mov r7, #0 + mov r1, #0xe + str r0, [sp, #0x28] + str r7, [sp, #0x30] + str r1, [sp, #0x34] + tst r0, r2 + beq _021DAA3A + mov r7, #0x70 +_021DAA3A: + mov r0, #2 + tst r0, r2 + beq _021DAA44 + mov r6, #0x81 + b _021DAA46 +_021DAA44: + mov r6, #0 +_021DAA46: + ldr r0, [sp, #0x50] + str r3, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x5c + add r1, sp, #8 + add r2, r7, #0 + add r3, r6, #0 + bl MOD17_021DBE3C + str r4, [r5, #0x40] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DA9F8 + + thumb_func_start MOD17_021DAA60 +MOD17_021DAA60: ; 0x021DAA60 + ldr r3, _021DAA68 ; =MOD17_021DBD4C + add r0, #0x5c + bx r3 + nop +_021DAA68: .word MOD17_021DBD4C + thumb_func_end MOD17_021DAA60 + + thumb_func_start MOD17_021DAA6C +MOD17_021DAA6C: ; 0x021DAA6C + push {r4, lr} + add r4, r0, #0 + bne _021DAA76 + bl ErrorHandling +_021DAA76: + ldr r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DAA6C + + thumb_func_start MOD17_021DAA7C +MOD17_021DAA7C: ; 0x021DAA7C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _021DAA8C + bl ErrorHandling +_021DAA8C: + mov r0, #0xc + mul r0, r4 + add r3, r5, r0 + add r3, #0xc + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #8] + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD17_021DAA7C + + thumb_func_start MOD17_021DAAA4 +MOD17_021DAAA4: ; 0x021DAAA4 + push {r4, lr} + add r4, r3, #0 + bl MOD17_021DABDC + ldr r2, [sp, #8] + add r1, r4, #0 + bl MOD17_021DBC38 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DAAA4 + + thumb_func_start MOD17_021DAAB8 +MOD17_021DAAB8: ; 0x021DAAB8 + ldr r0, [r0, #0x3c] + cmp r0, #0 + bne _021DAAC2 + mov r0, #1 + bx lr +_021DAAC2: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD17_021DAAB8 + + thumb_func_start MOD17_021DAAC8 +MOD17_021DAAC8: ; 0x021DAAC8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #0x1c] + add r5, r0, #0 + add r0, #0xc + bl MOD17_021DAB48 + mov r0, #0 + str r0, [r5] + ldr r0, [r5, #0xc] + mov r1, #1 + bl MOD17_021DAB04 + add r0, r5, #0 + ldr r1, [r4, #0x20] + add r0, #0x18 + bl MOD17_021DAB48 + add r0, r5, #0 + ldr r1, [r4, #0x24] + add r0, #0x24 + bl MOD17_021DAB48 + add r5, #0x30 + add r0, r5, #0 + mov r1, #1 + bl MOD17_021DAB48 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DAAC8 + + thumb_func_start MOD17_021DAB04 +MOD17_021DAB04: ; 0x021DAB04 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r4, [r5, #8] + add r6, r1, #0 + cmp r4, r5 + beq _021DAB24 +_021DAB10: + ldr r0, [r4, #4] + cmp r0, #2 + bhi _021DAB1E + ldr r0, [r4] + add r1, r6, #0 + bl MOD17_021D7660 +_021DAB1E: + ldr r4, [r4, #8] + cmp r4, r5 + bne _021DAB10 +_021DAB24: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DAB04 + + thumb_func_start MOD17_021DAB28 +MOD17_021DAB28: ; 0x021DAB28 + push {r4, lr} + add r4, r3, #0 + bl MOD17_021DABDC + add r1, r4, #0 + bl MOD17_021DAB04 + pop {r4, pc} + thumb_func_end MOD17_021DAB28 + + thumb_func_start MOD17_021DAB38 +MOD17_021DAB38: ; 0x021DAB38 + push {r4, lr} + add r4, r1, #0 + bl MOD17_021DABB4 + add r1, r4, #0 + bl MOD17_021DAB04 + pop {r4, pc} + thumb_func_end MOD17_021DAB38 + + thumb_func_start MOD17_021DAB48 +MOD17_021DAB48: ; 0x021DAB48 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r0, #0xe + lsl r1, r4, #4 + bl FUN_02016998 + str r0, [r5] + str r4, [r5, #4] + mov r6, #0 + str r6, [r5, #8] + ldr r0, [r5, #4] + cmp r0, #0 + ble _021DAB88 + add r4, r6, #0 + add r7, r6, #0 +_021DAB68: + ldr r0, [r5] + add r1, r7, #0 + add r0, r0, r4 + str r0, [r0, #8] + ldr r0, [r5] + add r0, r0, r4 + str r0, [r0, #0xc] + ldr r0, [r5] + add r0, r0, r4 + bl MOD17_021DAB04 + ldr r0, [r5, #4] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blt _021DAB68 +_021DAB88: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DAB48 + + thumb_func_start MOD17_021DAB8C +MOD17_021DAB8C: ; 0x021DAB8C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] + pop {r4, pc} + thumb_func_end MOD17_021DAB8C + + thumb_func_start MOD17_021DABB4 +MOD17_021DABB4: ; 0x021DABB4 + push {r3} + sub sp, #0xc + ldr r2, [r0] + mov r1, #0xc + mul r1, r2 + add r3, r0, r1 + add r3, #0xc + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #8] + ldr r1, [sp] + lsl r0, r0, #4 + add r0, r1, r0 + add sp, #0xc + pop {r3} + bx lr + .align 2, 0 + thumb_func_end MOD17_021DABB4 + + thumb_func_start MOD17_021DABDC +MOD17_021DABDC: ; 0x021DABDC + push {r4} + sub sp, #0xc + mov r3, #0xc + mul r3, r1 + add r4, r0, r3 + add r4, #0xc + ldmia r4!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldr r1, [sp] + lsl r0, r2, #4 + add r0, r1, r0 + add sp, #0xc + pop {r4} + bx lr + .align 2, 0 + thumb_func_end MOD17_021DABDC + + thumb_func_start MOD17_021DAC00 +MOD17_021DAC00: ; 0x021DAC00 + push {r4, lr} + mov r4, #0 + bl MOD17_021DABDC + ldr r1, [r0, #8] + cmp r1, r0 + beq _021DAC16 +_021DAC0E: + ldr r1, [r1, #8] + add r4, r4, #1 + cmp r1, r0 + bne _021DAC0E +_021DAC16: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DAC00 + + thumb_func_start MOD17_021DAC1C +MOD17_021DAC1C: ; 0x021DAC1C + push {r3, r4, r5, lr} + add r5, r3, #0 + mov r4, #0 + bl MOD17_021DABDC + ldr r1, [r0, #8] + cmp r1, r0 + beq _021DAC3C +_021DAC2C: + cmp r4, r5 + bne _021DAC34 + add r0, r1, #0 + pop {r3, r4, r5, pc} +_021DAC34: + ldr r1, [r1, #8] + add r4, r4, #1 + cmp r1, r0 + bne _021DAC2C +_021DAC3C: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DAC1C + + thumb_func_start MOD17_021DAC40 +MOD17_021DAC40: ; 0x021DAC40 + push {r4, lr} + ldr r4, [r0] + cmp r4, r2 + bne _021DAC54 + mov r4, #0xc + mul r4, r2 + add r0, r0, r4 + ldr r0, [r0, #0x14] + cmp r3, r0 + beq _021DAC5E +_021DAC54: + add r0, r1, #0 + mov r1, #0 + bl MOD17_021D7660 + pop {r4, pc} +_021DAC5E: + add r0, r1, #0 + mov r1, #1 + bl MOD17_021D7660 + pop {r4, pc} + thumb_func_end MOD17_021DAC40 + + thumb_func_start MOD17_021DAC68 +MOD17_021DAC68: ; 0x021DAC68 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #9 + add r4, r2, #0 + bl _s32_div_f + add r7, r1, #0 + add r0, r7, #0 + mov r1, #3 + bl _s32_div_f + add r6, r0, #0 + add r0, r7, #0 + mov r1, #3 + bl _s32_div_f + add r0, r6, #1 + lsl r2, r0, #3 + lsl r0, r6, #5 + add r0, r2, r0 + add r0, #0x10 + str r0, [r4] + add r0, r1, #1 + lsl r2, r0, #3 + mov r0, #0x18 + mul r0, r1 + add r0, r2, r0 + add r0, #8 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DAC68 + + thumb_func_start MOD17_021DACA4 +MOD17_021DACA4: ; 0x021DACA4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + ldr r0, _021DAD18 ; =MOD17_021DAD1C + mov r1, #0x30 + mov r2, #0 + mov r3, #0xd + bl FUN_020061E8 + bl FUN_0201B6C8 + add r4, r0, #0 + str r5, [r4] + str r6, [r4, #4] + ldr r0, [sp] + str r7, [r4, #8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x18] + add r1, r6, #0 + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0x1c] + add r0, r5, #0 + add r2, r7, #0 + bl MOD17_021DAC00 + str r0, [r4, #0x20] + ldr r1, [sp] + ldr r2, [sp, #0x18] + add r0, r5, #0 + bl MOD17_021DAC00 + str r0, [r4, #0x24] + ldr r1, [r4, #0x20] + add r2, r1, r0 + mov r1, #0xc + mov r0, #0xd + mul r1, r2 + str r2, [r4, #0x2c] + bl FUN_02016998 + str r0, [r4, #0x28] + cmp r0, #0 + bne _021DAD04 + bl ErrorHandling +_021DAD04: + ldr r3, [r4, #0x2c] + mov r2, #0xc + ldr r0, [r4, #0x28] + mov r1, #0 + mul r2, r3 + bl Call_FillMemWithValue + mov r0, #1 + str r0, [r5, #0x3c] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DAD18: .word MOD17_021DAD1C + thumb_func_end MOD17_021DACA4 + + thumb_func_start MOD17_021DAD1C +MOD17_021DAD1C: ; 0x021DAD1C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #4 + bls _021DAD2C + b _021DAE74 +_021DAD2C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAD38: ; jump table + .short _021DAD42 - _021DAD38 - 2 ; case 0 + .short _021DAD96 - _021DAD38 - 2 ; case 1 + .short _021DADE2 - _021DAD38 - 2 ; case 2 + .short _021DAE28 - _021DAD38 - 2 ; case 3 + .short _021DAE40 - _021DAD38 - 2 ; case 4 +_021DAD42: + mov r0, #0x83 + mvn r0, r0 + str r0, [sp] + ldr r0, [r4] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x10] + mov r3, #0 + bl MOD17_021DAAA4 + ldr r0, [r4] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x10] + mov r3, #1 + bl MOD17_021DAB28 + mov r0, #0 + str r0, [r4, #0x14] + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x14 + str r1, [sp] + ldr r1, [r0, #0x40] + add r1, r1, #1 + lsr r3, r1, #0x1f + lsl r2, r1, #0x1f + sub r2, r2, r3 + mov r1, #0x1f + ror r2, r1 + add r1, r3, r2 + mov r2, #2 + mov r3, #5 + bl MOD17_021DA9F8 + ldr r0, [r4, #0x20] + mov r1, #1 + bl MOD17_021DAF30 + str r0, [r4, #0x18] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + b _021DAE78 +_021DAD96: + ldr r0, [r4, #0x18] + mov r6, #0 + cmp r0, #0 + ble _021DADCA + add r5, r4, #0 + add r5, #0x20 +_021DADA2: + ldr r0, [r4, #0x20] + sub r0, r0, #1 + bmi _021DADC2 + ldr r0, [r5] + sub r0, r0, #1 + str r0, [r5] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0x20] + bl MOD17_021DAC1C + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + bl MOD17_021DAE84 +_021DADC2: + ldr r0, [r4, #0x18] + add r6, r6, #1 + cmp r6, r0 + blt _021DADA2 +_021DADCA: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _021DAE78 + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD17_021DAF30 + str r0, [r4, #0x18] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + b _021DAE78 +_021DADE2: + ldr r0, [r4, #0x18] + mov r6, #0 + cmp r0, #0 + ble _021DAE16 + add r5, r4, #0 + add r5, #0x24 +_021DADEE: + ldr r0, [r4, #0x24] + sub r0, r0, #1 + bmi _021DAE0E + ldr r0, [r5] + sub r0, r0, #1 + str r0, [r5] + ldr r0, [r4] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x24] + bl MOD17_021DAC1C + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x2c] + bl MOD17_021DAE84 +_021DAE0E: + ldr r0, [r4, #0x18] + add r6, r6, #1 + cmp r6, r0 + blt _021DADEE +_021DAE16: + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _021DAE78 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x18] + b _021DAE78 +_021DAE28: + ldr r0, [r4, #0x18] + add r0, r0, #1 + str r0, [r4, #0x18] + cmp r0, #3 + ble _021DAE78 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021DAE78 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + b _021DAE78 +_021DAE40: + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + mov r3, #0 + bl MOD17_021DAB28 + mov r0, #0x83 + mvn r0, r0 + str r0, [sp] + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + mov r3, #0 + bl MOD17_021DAAA4 + ldr r0, [r4] + mov r1, #0 + str r1, [r0, #0x3c] + ldr r0, [r4, #0x28] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200621C + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021DAE74: + bl ErrorHandling +_021DAE78: + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + bl MOD17_021DAEC4 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD17_021DAD1C + + thumb_func_start MOD17_021DAE84 +MOD17_021DAE84: ; 0x021DAE84 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + bl MOD17_021DAE9C + str r4, [r0] + mov r1, #3 + str r1, [r0, #4] + mov r1, #0x2c + str r1, [r0, #8] + pop {r4, pc} + thumb_func_end MOD17_021DAE84 + + thumb_func_start MOD17_021DAE9C +MOD17_021DAE9C: ; 0x021DAE9C + push {r3, r4} + mov r3, #0 + cmp r1, #0 + ble _021DAEBE + add r4, r0, #0 +_021DAEA6: + ldr r2, [r4] + cmp r2, #0 + bne _021DAEB6 + mov r1, #0xc + mul r1, r3 + add r0, r0, r1 + pop {r3, r4} + bx lr +_021DAEB6: + add r3, r3, #1 + add r4, #0xc + cmp r3, r1 + blt _021DAEA6 +_021DAEBE: + mov r0, #0 + pop {r3, r4} + bx lr + thumb_func_end MOD17_021DAE9C + + thumb_func_start MOD17_021DAEC4 +MOD17_021DAEC4: ; 0x021DAEC4 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _021DAEE4 +_021DAED0: + ldr r0, [r5] + cmp r0, #0 + beq _021DAEDC + add r0, r5, #0 + bl MOD17_021DAEE8 +_021DAEDC: + add r4, r4, #1 + add r5, #0xc + cmp r4, r6 + blt _021DAED0 +_021DAEE4: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DAEC4 + + thumb_func_start MOD17_021DAEE8 +MOD17_021DAEE8: ; 0x021DAEE8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4] + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBBB8 + ldr r1, [sp] + ldr r0, [r4, #8] + add r2, r1, r0 + str r2, [sp] + ldr r0, [r4] + ldr r1, [sp, #4] + bl MOD17_021DBB68 + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _021DAF2C + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + strb r0, [r4, #4] + strb r0, [r4, #5] + strb r0, [r4, #6] + strb r0, [r4, #7] + strb r0, [r4, #8] + strb r0, [r4, #9] + strb r0, [r4, #0xa] + strb r0, [r4, #0xb] +_021DAF2C: + add sp, #8 + pop {r4, pc} + thumb_func_end MOD17_021DAEE8 + + thumb_func_start MOD17_021DAF30 +MOD17_021DAF30: ; 0x021DAF30 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl _s32_div_f + sub r0, r4, r1 + add r0, r5, r0 + add r1, r4, #0 + bl _s32_div_f + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DAF30 + + thumb_func_start MOD17_021DAF48 +MOD17_021DAF48: ; 0x021DAF48 + add r3, r0, #0 + mov r2, #0x1c + mov r1, #0 +_021DAF4E: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021DAF4E + ldr r1, _021DAF60 ; =MOD17_021DAFA0 + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + bx lr + .align 2, 0 +_021DAF60: .word MOD17_021DAFA0 + thumb_func_end MOD17_021DAF48 + + thumb_func_start MOD17_021DAF64 +MOD17_021DAF64: ; 0x021DAF64 + push {r4, lr} + ldr r1, _021DAF9C ; =0x021C48F8 + add r4, r0, #0 + ldrh r2, [r1, #0x20] + cmp r2, #0 + beq _021DAF76 + ldr r1, [r4, #4] + blx r1 + b _021DAF8C +_021DAF76: + ldrh r1, [r1, #0x22] + cmp r1, #0 + beq _021DAF82 + ldr r1, [r4, #0xc] + blx r1 + b _021DAF8C +_021DAF82: + ldrb r1, [r4, #0x18] + cmp r1, #0 + beq _021DAF8C + ldr r1, [r4, #8] + blx r1 +_021DAF8C: + ldr r0, _021DAF9C ; =0x021C48F8 + ldrh r1, [r0, #0x1c] + strh r1, [r4, #0x14] + ldrh r1, [r0, #0x1e] + strh r1, [r4, #0x16] + ldrh r0, [r0, #0x22] + strb r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 +_021DAF9C: .word 0x021C48F8 + thumb_func_end MOD17_021DAF64 + + thumb_func_start MOD17_021DAFA0 +MOD17_021DAFA0: ; 0x021DAFA0 + bx lr + .align 2, 0 + thumb_func_end MOD17_021DAFA0 + + thumb_func_start MOD17_021DAFA4 +MOD17_021DAFA4: ; 0x021DAFA4 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + mov r4, #0 + add r5, r7, #0 +_021DAFAE: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02027114 + add r4, r4, #1 + stmia r5!, {r0} + cmp r4, #0x64 + blt _021DAFAE + mov r0, #0x19 + mov r3, #0 + add r2, r7, #0 + mov r1, #0x12 + lsl r0, r0, #4 +_021DAFC8: + add r3, r3, #1 + str r1, [r2, r0] + add r2, r2, #4 + cmp r3, #0x12 + blt _021DAFC8 + mov r5, #0x19 + mov r4, #0 + lsl r5, r5, #4 +_021DAFD8: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202714C + cmp r0, #0x12 + beq _021DAFEA + lsl r0, r0, #2 + add r0, r7, r0 + str r4, [r0, r5] +_021DAFEA: + add r4, r4, #1 + cmp r4, #0x12 + blt _021DAFD8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DAFA4 + + thumb_func_start MOD17_021DAFF4 +MOD17_021DAFF4: ; 0x021DAFF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #0x64 + blo _021DB002 + bl ErrorHandling +_021DB002: + lsl r0, r5, #2 + ldr r0, [r4, r0] + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DAFF4 + + thumb_func_start MOD17_021DB008 +MOD17_021DB008: ; 0x021DB008 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bx lr + thumb_func_end MOD17_021DB008 + + thumb_func_start MOD17_021DB014 +MOD17_021DB014: ; 0x021DB014 + push {r3, r4} + mov r2, #0x19 + mov r4, #0 + lsl r2, r2, #4 +_021DB01C: + ldr r3, [r0, r2] + cmp r1, r3 + bne _021DB028 + add r0, r4, #0 + pop {r3, r4} + bx lr +_021DB028: + add r4, r4, #1 + add r0, r0, #4 + cmp r4, #0x12 + blt _021DB01C + add r0, r4, #0 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD17_021DB014 + + thumb_func_start MOD17_021DB038 +MOD17_021DB038: ; 0x021DB038 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD17_021DAF48 + mov r0, #0xd + mov r1, #0x34 + bl FUN_02016998 + str r0, [r5] + mov r1, #0 + mov r2, #0x34 + bl Call_FillMemWithValue + ldr r1, [r5] + ldr r0, [sp, #0x18] + str r4, [r1, #4] + str r6, [r1, #8] + str r7, [r1] + str r0, [r1, #0xc] + ldr r0, [sp, #0x1c] + str r0, [r1, #0x2c] + ldr r0, _021DB07C ; =MOD17_021DB0A0 + str r0, [r5, #4] + ldr r0, _021DB080 ; =MOD17_021DB210 + str r0, [r5, #8] + ldr r0, _021DB084 ; =MOD17_021DB3A4 + str r0, [r5, #0xc] + ldr r0, _021DB088 ; =MOD17_021DB08C + str r0, [r5, #0x10] + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB07C: .word MOD17_021DB0A0 +_021DB080: .word MOD17_021DB210 +_021DB084: .word MOD17_021DB3A4 +_021DB088: .word MOD17_021DB08C + thumb_func_end MOD17_021DB038 + + thumb_func_start MOD17_021DB08C +MOD17_021DB08C: ; 0x021DB08C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + add r0, r4, #0 + bl MOD17_021DAF48 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DB08C + + thumb_func_start MOD17_021DB0A0 +MOD17_021DB0A0: ; 0x021DB0A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5] + ldr r0, [r4, #4] + bl MOD17_021DA250 + cmp r0, #0 + beq _021DB122 + ldr r3, [r4] + ldr r0, [r4, #4] + ldr r3, [r3, #0x30] + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DA288 + add r6, r0, #0 + beq _021DB0D2 + ldr r0, [r6, #4] + cmp r0, #3 + bne _021DB0D2 + ldr r0, [r4, #0x2c] + cmp r0, #0 + bne _021DB0D2 + mov r6, #0 +_021DB0D2: + cmp r6, #0 + beq _021DB15E + ldr r0, [r6, #4] + cmp r0, #0 + bne _021DB0E8 + ldr r0, [r4, #4] + add r1, r6, #0 + bl MOD17_021DA0E8 + mov r7, #0 + b _021DB104 +_021DB0E8: + add r0, r6, #0 + bl MOD17_021DA050 + ldr r0, [r6] + bl MOD17_021DB7E8 + add r1, r4, #0 + add r2, r4, #0 + add r7, r0, #0 + add r0, r6, #0 + add r1, #0x24 + add r2, #0x28 + bl MOD17_021DBBB8 +_021DB104: + ldr r0, [r4, #4] + bl MOD17_021DA178 + ldr r0, [sp, #8] + add r1, r6, #0 + str r0, [sp] + str r7, [sp, #4] + ldr r3, [sp, #0xc] + add r0, r4, #0 + mov r2, #1 + bl MOD17_021DB4D8 + bl MOD17_021D7A7C + b _021DB15E +_021DB122: + ldr r0, [r4, #8] + bl MOD17_021DA940 + cmp r0, #0 + beq _021DB15E + ldr r3, [r4] + ldr r0, [r4, #8] + ldr r3, [r3, #0x30] + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DA978 + add r6, r0, #0 + beq _021DB15E + bl MOD17_021DA810 + ldr r0, [r4, #8] + bl MOD17_021DA844 + ldr r0, [sp, #8] + mov r2, #0 + str r0, [sp] + str r2, [sp, #4] + ldr r3, [sp, #0xc] + add r0, r4, #0 + add r1, r6, #0 + bl MOD17_021DB4D8 + bl MOD17_021D7A7C +_021DB15E: + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _021DB1A8 + ldr r1, [r1, #4] + ldr r0, _021DB1AC ; =0x000005EB + cmp r1, #0 + beq _021DB176 + cmp r1, #1 + beq _021DB180 + cmp r1, #3 + beq _021DB192 + b _021DB19A +_021DB176: + ldr r1, _021DB1B0 ; =MOD17_021DB210 + str r1, [r5, #8] + ldr r1, _021DB1B4 ; =MOD17_021DB3A4 + str r1, [r5, #0xc] + b _021DB19A +_021DB180: + ldr r0, _021DB1B8 ; =MOD17_021DB1D0 + str r0, [r5, #8] + ldr r0, _021DB1BC ; =MOD17_021DB1CC + str r0, [r5, #0xc] + add r0, r5, #0 + bl MOD17_021DB4AC + ldr r0, _021DB1C0 ; =0x0000067E + b _021DB19A +_021DB192: + ldr r1, _021DB1C4 ; =MOD17_021DB3D4 + str r1, [r5, #8] + ldr r1, _021DB1C8 ; =MOD17_021DB404 + str r1, [r5, #0xc] +_021DB19A: + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020054C8 + add r0, r4, #0 + bl MOD17_021DB680 +_021DB1A8: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB1AC: .word 0x000005EB +_021DB1B0: .word MOD17_021DB210 +_021DB1B4: .word MOD17_021DB3A4 +_021DB1B8: .word MOD17_021DB1D0 +_021DB1BC: .word MOD17_021DB1CC +_021DB1C0: .word 0x0000067E +_021DB1C4: .word MOD17_021DB3D4 +_021DB1C8: .word MOD17_021DB404 + thumb_func_end MOD17_021DB0A0 + + thumb_func_start MOD17_021DB1CC +MOD17_021DB1CC: ; 0x021DB1CC + bx lr + .align 2, 0 + thumb_func_end MOD17_021DB1CC + + thumb_func_start MOD17_021DB1D0 +MOD17_021DB1D0: ; 0x021DB1D0 + push {r4, lr} + sub sp, #8 + ldr r4, [r0] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DB20A + ldr r0, [r0, #4] + cmp r0, #1 + beq _021DB1E6 + bl ErrorHandling +_021DB1E6: + ldr r0, [r4, #0x10] + mov r2, #0x1c + ldr r0, [r0, #4] + mov r3, #0x1e + str r0, [sp] + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + mov r1, #4 + str r0, [sp, #4] + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + add r0, r4, #0 + bl MOD17_021DB59C + add r0, r4, #0 + bl MOD17_021DB534 +_021DB20A: + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DB1D0 + + thumb_func_start MOD17_021DB210 +MOD17_021DB210: ; 0x021DB210 + push {r4, r5, r6, lr} + sub sp, #0x28 + add r6, r0, #0 + ldr r4, [r6] + ldr r1, [r4, #0x10] + cmp r1, #0 + bne _021DB220 + b _021DB38E +_021DB220: + add r1, sp, #0x18 + str r1, [sp] + add r1, sp, #0x24 + add r2, sp, #0x20 + add r3, sp, #0x1c + bl MOD17_021DB588 + ldr r0, [r4, #4] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x24] + bl MOD17_021DA26C + add r5, r0, #0 + ldr r0, [r4, #4] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + bl MOD17_021DA26C + add r5, r5, r0 + ldr r0, [r4, #4] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + bl MOD17_021DA26C + add r5, r5, r0 + ldr r0, [r4, #4] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x20] + bl MOD17_021DA26C + add r0, r5, r0 + cmp r0, #4 + blt _021DB2C2 + ldr r2, [r4] + ldr r0, [r4, #4] + ldr r1, [r4, #0x10] + ldr r2, [r2, #0x30] + bl MOD17_021DA0C4 + cmp r0, #0 + bne _021DB2AC + mov r0, #0x1c + ldrsh r0, [r4, r0] + str r0, [sp, #0xc] + mov r0, #0x1e + ldrsh r0, [r4, r0] + str r0, [sp, #8] + ldr r0, _021DB394 ; =0x00000683 + bl FUN_020054C8 + ldr r0, [r4, #0xc] + ldr r2, _021DB398 ; =0x00000151 + mov r1, #0x1a + mov r3, #3 + bl MOD17_021DCB48 + ldr r0, [r4, #0x10] + mov r1, #4 + ldr r0, [r0, #4] + str r0, [sp] + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + str r0, [sp, #4] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD17_021DB59C + b _021DB388 +_021DB2AC: + ldr r0, [r4, #4] + bl MOD17_021DA178 + bl MOD17_021D7A4C + mov r0, #0 + str r0, [r4, #0x30] + ldr r0, _021DB39C ; =0x000005EA + bl FUN_020054C8 + b _021DB388 +_021DB2C2: + ldr r0, [r4, #0x10] + add r1, sp, #0x24 + ldr r5, [r0] + add r0, sp, #0x18 + str r0, [sp] + add r0, r6, #0 + add r2, sp, #0x20 + add r3, sp, #0x1c + bl MOD17_021DB548 + ldr r0, [r4, #8] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x24] + bl MOD17_021DA95C + add r6, r0, #0 + ldr r0, [r4, #8] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x20] + bl MOD17_021DA95C + add r0, r6, r0 + cmp r0, #2 + bge _021DB340 + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #1 + bne _021DB32C + ldr r0, [r4, #0x10] + add r1, sp, #0x14 + add r2, sp, #0x10 + bl MOD17_021DBC08 + bl FUN_0201BA60 + ldr r2, [sp, #0x14] + mov r1, #0x6c + sub r1, r1, r2 + bl _u32_div_f + add r1, #0xa + str r1, [sp, #0xc] + bl FUN_0201BA60 + ldr r2, [sp, #0x10] + mov r1, #0x7d + sub r1, r1, r2 + bl _u32_div_f + add r1, #0x12 + str r1, [sp, #8] + b _021DB338 +_021DB32C: + mov r0, #0x1c + ldrsh r0, [r4, r0] + str r0, [sp, #0xc] + mov r0, #0x1e + ldrsh r0, [r4, r0] + str r0, [sp, #8] +_021DB338: + ldr r0, _021DB394 ; =0x00000683 + bl FUN_020054C8 + b _021DB350 +_021DB340: + ldr r0, [r4, #0x10] + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DBBB8 + ldr r0, _021DB3A0 ; =0x000005EB + bl FUN_020054C8 +_021DB350: + add r0, r4, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #1 + bne _021DB36E + ldr r0, [r4, #0x10] + ldr r2, [r4, #8] + ldr r0, [r0, #4] + ldr r1, [r5] + ldr r2, [r2, #4] + bl MOD17_021DA608 + add r1, r4, #0 + add r1, #0x21 + strb r0, [r1] +_021DB36E: + ldr r0, [r4, #0x10] + mov r1, #4 + ldr r0, [r0, #4] + str r0, [sp] + add r0, r4, #0 + add r0, #0x21 + ldrb r0, [r0] + str r0, [sp, #4] + ldr r2, [sp, #0xc] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD17_021DB59C +_021DB388: + add r0, r4, #0 + bl MOD17_021DB534 +_021DB38E: + add sp, #0x28 + pop {r4, r5, r6, pc} + nop +_021DB394: .word 0x00000683 +_021DB398: .word 0x00000151 +_021DB39C: .word 0x000005EA +_021DB3A0: .word 0x000005EB + thumb_func_end MOD17_021DB210 + + thumb_func_start MOD17_021DB3A4 +MOD17_021DB3A4: ; 0x021DB3A4 + push {r4, lr} + ldr r2, [r0] + ldr r0, [r2, #0x10] + cmp r0, #0 + beq _021DB3C8 + ldr r3, _021DB3CC ; =0x021C48F8 + ldr r1, _021DB3D0 ; =0x0000FFFF + ldrh r4, [r3, #0x1c] + cmp r4, r1 + beq _021DB3C8 + beq _021DB3C8 + ldrh r3, [r3, #0x1e] + ldr r1, [r2, #0x14] + ldr r2, [r2, #0x18] + sub r1, r4, r1 + sub r2, r3, r2 + bl MOD17_021DBB68 +_021DB3C8: + pop {r4, pc} + nop +_021DB3CC: .word 0x021C48F8 +_021DB3D0: .word 0x0000FFFF + thumb_func_end MOD17_021DB3A4 + + thumb_func_start MOD17_021DB3D4 +MOD17_021DB3D4: ; 0x021DB3D4 + push {r4, lr} + ldr r4, [r0] + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _021DB3FE + ldr r0, [r4, #4] + bl MOD17_021DA040 + ldr r0, [r4, #4] + bl MOD17_021DA178 + bl MOD17_021D7A4C + mov r0, #0 + str r0, [r4, #0x30] + ldr r0, _021DB400 ; =0x000005EB + bl FUN_020054C8 + add r0, r4, #0 + bl MOD17_021DB534 +_021DB3FE: + pop {r4, pc} + .align 2, 0 +_021DB400: .word 0x000005EB + thumb_func_end MOD17_021DB3D4 + + thumb_func_start MOD17_021DB404 +MOD17_021DB404: ; 0x021DB404 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [r0] + str r0, [sp] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DB49E + ldr r1, _021DB4A4 ; =0x021C48F8 + ldrh r2, [r1, #0x1c] + ldr r1, _021DB4A8 ; =0x0000FFFF + cmp r2, r1 + beq _021DB49E + beq _021DB49E + add r1, sp, #8 + add r2, sp, #4 + bl MOD17_021DBC20 + ldr r0, [r4, #0x10] + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD17_021DBC08 + ldr r0, _021DB4A4 ; =0x021C48F8 + ldr r1, [r4, #0x14] + ldrh r2, [r0, #0x1c] + ldr r3, [sp, #0xc] + sub r5, r2, r1 + ldrh r1, [r0, #0x1e] + ldr r0, [r4, #0x18] + ldr r2, [sp, #4] + sub r6, r1, r0 + sub r3, r3, r2 + ldr r1, [sp, #8] + ldr r0, [sp, #0x10] + str r3, [sp, #0xc] + sub r0, r0, r1 + add r3, r5, r1 + add r7, r6, r2 + str r0, [sp, #0x10] + cmp r3, #0x8a + bgt _021DB45C + mov r0, #0x8a + sub r5, r0, r1 + b _021DB466 +_021DB45C: + add r1, r5, r0 + cmp r1, #0xf6 + blt _021DB466 + mov r1, #0xf6 + sub r5, r1, r0 +_021DB466: + cmp r7, #0x12 + bgt _021DB470 + mov r0, #0x12 + sub r6, r0, r2 + b _021DB47C +_021DB470: + ldr r1, [sp, #0xc] + add r0, r6, r1 + cmp r0, #0x8f + blt _021DB47C + mov r0, #0x8f + sub r6, r0, r1 +_021DB47C: + ldr r0, [sp] + add r1, r5, #0 + add r2, r6, #0 + bl MOD17_021DB6B4 + ldr r0, [r4, #4] + add r1, sp, #8 + add r2, sp, #4 + bl MOD17_021DA36C + ldr r1, [sp, #8] + ldr r2, [sp, #4] + ldr r0, [sp] + add r1, r5, r1 + add r2, r6, r2 + bl MOD17_021DB6B4 +_021DB49E: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DB4A4: .word 0x021C48F8 +_021DB4A8: .word 0x0000FFFF + thumb_func_end MOD17_021DB404 + + thumb_func_start MOD17_021DB4AC +MOD17_021DB4AC: ; 0x021DB4AC + push {r3, r4, r5, lr} + ldr r4, [r0] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DB4D4 + ldr r0, [r0, #4] + cmp r0, #1 + beq _021DB4C0 + bl ErrorHandling +_021DB4C0: + ldr r0, [r4, #0x10] + ldr r5, [r0] + ldr r0, [r4, #4] + bl MOD17_021DA33C + ldr r0, [r4, #4] + ldr r1, [r5] + mov r2, #0xe + bl MOD17_021DA2F0 +_021DB4D4: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DB4AC + + thumb_func_start MOD17_021DB4D8 +MOD17_021DB4D8: ; 0x021DB4D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + add r7, r3, #0 + bl MOD17_021DBBB8 + str r4, [r5, #0x10] + ldr r0, [sp, #4] + strh r0, [r5, #0x1c] + ldr r0, [sp] + strh r0, [r5, #0x1e] + add r0, r5, #0 + add r0, #0x20 + strb r6, [r0] + ldr r0, [sp, #0x20] + str r7, [r5, #0x14] + str r0, [r5, #0x18] + cmp r6, #0 + bne _021DB51A + ldr r1, [r5, #0x10] + ldr r0, [r5, #8] + ldr r1, [r1, #4] + bl MOD17_021DAA7C + add r1, r5, #0 + add r1, #0x21 + strb r0, [r1] + b _021DB522 +_021DB51A: + add r0, r5, #0 + mov r1, #0 + add r0, #0x21 + strb r1, [r0] +_021DB522: + mov r0, #1 + str r0, [r5, #0x30] + ldr r1, [sp, #0x24] + add r0, r4, #0 + bl MOD17_021DBAD0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DB4D8 + + thumb_func_start MOD17_021DB534 +MOD17_021DB534: ; 0x021DB534 + mov r2, #0 + str r2, [r0, #0x10] + strh r2, [r0, #0x1c] + add r1, r0, #0 + strh r2, [r0, #0x1e] + add r1, #0x20 + strb r2, [r1] + add r0, #0x21 + strb r2, [r0] + bx lr + thumb_func_end MOD17_021DB534 + + thumb_func_start MOD17_021DB548 +MOD17_021DB548: ; 0x021DB548 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [r0] + add r5, r1, #0 + ldr r0, [r4, #0x10] + add r6, r2, #0 + add r1, sp, #0xc + add r2, sp, #8 + add r7, r3, #0 + bl MOD17_021DBC08 + ldr r0, [r4, #0x10] + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBBB8 + ldr r0, [sp] + str r0, [r5] + ldr r1, [sp] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [r6] + ldr r0, [sp, #4] + str r0, [r7] + ldr r1, [sp, #4] + ldr r0, [sp, #0xc] + add r1, r1, r0 + ldr r0, [sp, #0x28] + str r1, [r0] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DB548 + + thumb_func_start MOD17_021DB588 +MOD17_021DB588: ; 0x021DB588 + push {r3, r4, lr} + sub sp, #4 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl MOD17_021DBC70 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD17_021DB588 + + thumb_func_start MOD17_021DB59C +MOD17_021DB59C: ; 0x021DB59C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + ldr r0, _021DB60C ; =MOD17_021DB610 + mov r1, #0x2c + mov r2, #0 + mov r3, #0xd + bl FUN_020061E8 + bl FUN_0201B6C8 + add r4, r0, #0 + ldr r0, [r5, #8] + add r1, sp, #8 + str r0, [r4] + ldr r0, [r5, #0x10] + add r2, sp, #4 + str r0, [r4, #4] + str r6, [r4, #0x20] + ldr r0, [sp] + str r7, [r4, #0x10] + str r0, [r4, #0x14] + ldr r0, [sp, #0x20] + str r0, [r4, #0x18] + ldr r0, [sp, #0x24] + str r0, [r4, #0x1c] + ldr r0, [r5, #8] + add r0, #0x3c + str r0, [r4, #0x24] + add r0, r5, #0 + add r0, #0x30 + str r0, [r4, #0x28] + ldr r0, [r5, #0x10] + bl MOD17_021DBBB8 + ldr r1, [r4, #0x10] + ldr r0, [sp, #8] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #8] + ldr r1, [r4, #0x14] + ldr r0, [sp, #4] + sub r0, r1, r0 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021DB60C: .word MOD17_021DB610 + thumb_func_end MOD17_021DB59C + + thumb_func_start MOD17_021DB610 +MOD17_021DB610: ; 0x021DB610 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x24] + ldr r0, [r0] + cmp r0, #1 + beq _021DB67C + ldr r0, [r4, #4] + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBBB8 + ldr r1, [sp, #4] + ldr r0, [r4, #8] + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, [sp] + ldr r0, [r4, #0xc] + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #0x20] + sub r0, r0, #1 + str r0, [r4, #0x20] + ldr r0, [r4, #4] + bpl _021DB674 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + bl MOD17_021DBB68 + ldr r0, [r4] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x1c] + ldr r3, [r4, #4] + bl MOD17_021DA7E4 + ldr r0, [r4] + bl MOD17_021DA844 + ldr r0, [r4, #0x28] + ldr r0, [r0] + cmp r0, #0 + bne _021DB66A + bl MOD17_021D7A4C +_021DB66A: + add r0, r5, #0 + bl FUN_0200621C + add sp, #8 + pop {r3, r4, r5, pc} +_021DB674: + ldr r1, [sp, #4] + ldr r2, [sp] + bl MOD17_021DBB68 +_021DB67C: + add sp, #8 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DB610 + + thumb_func_start MOD17_021DB680 +MOD17_021DB680: ; 0x021DB680 + push {r3, lr} + ldr r3, [r0, #0x10] + ldr r1, [r3, #4] + cmp r1, #0 + bne _021DB69A + ldr r3, [r3] + ldr r0, [r0, #0xc] + ldr r2, _021DB6B0 ; =0x00000152 + ldr r3, [r3] + mov r1, #0x1a + bl MOD17_021DCB48 + pop {r3, pc} +_021DB69A: + cmp r1, #1 + bne _021DB6AE + ldr r3, [r3] + mov r2, #0x55 + ldr r0, [r0, #0xc] + ldr r3, [r3] + mov r1, #0x1a + lsl r2, r2, #2 + bl MOD17_021DCB48 +_021DB6AE: + pop {r3, pc} + .align 2, 0 +_021DB6B0: .word 0x00000152 + thumb_func_end MOD17_021DB680 + + thumb_func_start MOD17_021DB6B4 +MOD17_021DB6B4: ; 0x021DB6B4 + push {r4, r5, r6, lr} + ldr r4, [r0] + add r5, r1, #0 + ldr r0, [r4, #0x10] + add r6, r2, #0 + bl MOD17_021DBB68 + ldr r1, [r4, #0x24] + ldr r2, [r4, #0x28] + ldr r0, [r4, #4] + sub r1, r5, r1 + sub r2, r6, r2 + bl MOD17_021DA134 + str r5, [r4, #0x24] + str r6, [r4, #0x28] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DB6B4 + + thumb_func_start MOD17_021DB6D8 +MOD17_021DB6D8: ; 0x021DB6D8 + push {r3, r4, lr} + sub sp, #4 + mov r2, #0 + str r2, [sp] + add r4, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #2] + mov r3, #0xe + bl FUN_02006C98 + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x76 + bl MOD17_021D7A2C + ldr r0, [r0, #0x14] + bl FUN_02008A74 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD17_021DB6D8 + + thumb_func_start MOD17_021DB700 +MOD17_021DB700: ; 0x021DB700 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r2, #0 + add r5, r0, #0 + add r7, r1, #0 + add r6, r3, #0 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r0, r6, #0 + add r1, r4, #0 + mov r2, #2 + bl FUN_02068B68 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r7, #0 + add r1, r6, #0 + mov r2, #0xc0 + mov r3, #0x38 + bl FUN_020073A0 + str r0, [r5] + add r0, r5, #0 + add r1, sp, #0x18 + add r2, sp, #0x14 + bl MOD17_021DB878 + ldr r1, [sp, #0x18] + mov r2, #0x38 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [sp, #0x14] + sub r0, r2, r0 + strb r0, [r5, #4] + ldr r0, [sp, #0x14] + mov r1, #0xc0 + add r0, #0x38 + strb r0, [r5, #5] + ldr r0, [sp, #0x18] + sub r0, r1, r0 + strb r0, [r5, #6] + ldr r0, [sp, #0x18] + add r0, #0xc0 + strb r0, [r5, #7] + ldr r0, [sp, #0x14] + str r0, [sp] + ldr r3, [sp, #0x18] + add r0, r5, #4 + bl MOD17_021DB9B8 + add r0, r4, #0 + mov r1, #2 + bl FUN_02068E14 + mov r2, #0 + str r2, [sp] + add r7, r0, #0 + ldrh r0, [r6] + ldrh r1, [r6, #2] + ldr r3, [sp, #0x30] + bl FUN_02006C98 + add r1, sp, #0x10 + add r6, r0, #0 + bl FUN_020B0088 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x14] + bl FUN_02008A74 + ldr r1, [sp, #0x10] + ldr r0, [r1, #0x14] + ldrh r1, [r1, #2] + lsl r1, r1, #3 + bl MOD17_021DB96C + strb r0, [r5, #8] + add r0, r6, #0 + strb r7, [r5, #9] + bl FUN_02016A18 + str r4, [r5, #0xc] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DB700 + + thumb_func_start MOD17_021DB7C0 +MOD17_021DB7C0: ; 0x021DB7C0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02007534 + mov r1, #0x10 + mov r0, #0 +_021DB7CE: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021DB7CE + pop {r4, pc} + thumb_func_end MOD17_021DB7C0 + + thumb_func_start MOD17_021DB7D8 +MOD17_021DB7D8: ; 0x021DB7D8 + ldr r3, _021DB7E4 ; =0x02007559 + add r2, r1, #0 + ldr r0, [r0] + mov r1, #2 + bx r3 + nop +_021DB7E4: .word 0x02007559 + thumb_func_end MOD17_021DB7D8 + + thumb_func_start MOD17_021DB7E8 +MOD17_021DB7E8: ; 0x021DB7E8 + ldr r3, _021DB7F0 ; =0x0200782D + ldr r0, [r0] + mov r1, #2 + bx r3 + .align 2, 0 +_021DB7F0: .word 0x0200782D + thumb_func_end MOD17_021DB7E8 + + thumb_func_start MOD17_021DB7F4 +MOD17_021DB7F4: ; 0x021DB7F4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD17_021DB878 + ldr r0, [r5] + mov r1, #0 + add r2, r4, #0 + bl FUN_02007558 + ldr r0, [r5] + mov r1, #1 + add r2, r6, #0 + bl FUN_02007558 + ldr r1, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + ldr r1, [sp, #8] + str r2, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [sp, #8] + str r2, [sp] + ldr r3, [sp, #8] + add r0, r5, #4 + add r1, r4, #0 + add r2, r6, #0 + bl MOD17_021DB9B8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD17_021DB7F4 + + thumb_func_start MOD17_021DB840 +MOD17_021DB840: ; 0x021DB840 + ldr r3, _021DB848 ; =0x02020A41 + add r0, r0, #4 + bx r3 + nop +_021DB848: .word 0x02020A41 + thumb_func_end MOD17_021DB840 + + thumb_func_start MOD17_021DB84C +MOD17_021DB84C: ; 0x021DB84C + ldr r3, _021DB854 ; =0x02020AE9 + add r0, r0, #4 + bx r3 + nop +_021DB854: .word 0x02020AE9 + thumb_func_end MOD17_021DB84C + + thumb_func_start MOD17_021DB858 +MOD17_021DB858: ; 0x021DB858 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + mov r1, #0 + add r6, r2, #0 + bl FUN_0200782C + str r0, [r4] + ldr r0, [r5] + mov r1, #1 + bl FUN_0200782C + str r0, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DB858 + + thumb_func_start MOD17_021DB878 +MOD17_021DB878: ; 0x021DB878 + mov r0, #0x50 + str r0, [r1] + str r0, [r2] + bx lr + thumb_func_end MOD17_021DB878 + + thumb_func_start MOD17_021DB880 +MOD17_021DB880: ; 0x021DB880 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD17_021DB840 + cmp r0, #0 + bne _021DB89A + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DB89A: + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DB858 + add r0, r5, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DB878 + ldr r1, [sp, #0xc] + ldr r2, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + sub r1, r2, r0 + ldr r3, [sp, #8] + ldr r0, [sp] + lsr r2, r3, #0x1f + add r2, r3, r2 + asr r2, r2, #1 + sub r0, r0, r2 + str r0, [sp] + ldr r0, _021DB8F4 ; =0x021C48F8 + str r1, [sp, #4] + ldrh r2, [r0, #0x1c] + mov r3, #0 + sub r1, r2, r1 + str r1, [r4] + ldrh r1, [r0, #0x1e] + ldr r0, [sp] + sub r2, r1, r0 + str r2, [r6] + ldr r1, [r4] + add r0, r7, #0 + bl MOD17_021D7B0C + cmp r0, #0 + bne _021DB8EE + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB8EE: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DB8F4: .word 0x021C48F8 + thumb_func_end MOD17_021DB880 + + thumb_func_start MOD17_021DB8F8 +MOD17_021DB8F8: ; 0x021DB8F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD17_021DB84C + cmp r0, #0 + bne _021DB912 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021DB912: + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DB858 + add r0, r5, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DB878 + ldr r1, [sp, #0xc] + ldr r2, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + sub r1, r2, r0 + ldr r3, [sp, #8] + str r1, [sp, #4] + lsr r2, r3, #0x1f + add r2, r3, r2 + ldr r0, [sp] + asr r2, r2, #1 + sub r0, r0, r2 + str r0, [sp] + sub r2, r6, r0 + sub r1, r4, r1 + add r0, r7, #0 + mov r3, #0 + bl MOD17_021D7B0C + cmp r0, #0 + bne _021DB958 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB958: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DB8F8 + + thumb_func_start MOD17_021DB960 +MOD17_021DB960: ; 0x021DB960 + ldrb r3, [r0, #8] + str r3, [r1] + ldrb r0, [r0, #9] + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DB960 + + thumb_func_start MOD17_021DB96C +MOD17_021DB96C: ; 0x021DB96C + push {r4, r5, r6, r7} + mov ip, r0 + add r7, r1, #0 + mov r2, #0 +_021DB974: + mov r3, #0 + add r4, r3, #0 +_021DB978: + add r1, r2, r4 + lsr r0, r1, #0x1f + lsl r6, r1, #0x1f + sub r6, r6, r0 + mov r5, #0x1f + ror r6, r5 + add r5, r0, r6 + lsl r6, r5, #2 + mov r5, #0xf + add r0, r1, r0 + lsl r5, r6 + asr r1, r0, #1 + mov r0, ip + lsl r5, r5, #0x18 + ldrsb r0, [r0, r1] + lsr r5, r5, #0x18 + tst r0, r5 + beq _021DB9A2 + add r0, r2, #0 + pop {r4, r5, r6, r7} + bx lr +_021DB9A2: + add r3, r3, #1 + add r4, r4, r7 + cmp r3, #0x50 + blt _021DB978 + add r2, r2, #1 + cmp r2, #0x50 + blt _021DB974 + mov r0, #0x50 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + thumb_func_end MOD17_021DB96C + + thumb_func_start MOD17_021DB9B8 +MOD17_021DB9B8: ; 0x021DB9B8 + push {r3, r4} + ldr r4, [sp, #8] + sub r4, r2, r4 + bmi _021DB9C2 + b _021DB9C4 +_021DB9C2: + mov r4, #0 +_021DB9C4: + strb r4, [r0] + ldr r4, [sp, #8] + add r2, r2, r4 + cmp r2, #0xbf + bgt _021DB9D0 + b _021DB9D2 +_021DB9D0: + mov r2, #0xbf +_021DB9D2: + strb r2, [r0, #1] + sub r2, r1, r3 + bmi _021DB9DA + b _021DB9DC +_021DB9DA: + mov r2, #0 +_021DB9DC: + add r1, r1, r3 + strb r2, [r0, #2] + cmp r1, #0xff + bgt _021DB9EA + strb r1, [r0, #3] + pop {r3, r4} + bx lr +_021DB9EA: + mov r1, #0xff + strb r1, [r0, #3] + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD17_021DB9B8 + + thumb_func_start MOD17_021DB9F4 +MOD17_021DB9F4: ; 0x021DB9F4 + push {r4, r5, r6, lr} + add r6, r1, #0 + lsl r4, r6, #4 + add r5, r0, #0 + add r0, r2, #0 + add r1, r4, #0 + bl FUN_02016998 + str r0, [r5] + cmp r0, #0 + bne _021DBA0E + bl ErrorHandling +_021DBA0E: + ldr r0, [r5] + mov r1, #0 + add r2, r4, #0 + bl Call_FillMemWithValue + str r6, [r5, #4] + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DB9F4 + + thumb_func_start MOD17_021DBA1C +MOD17_021DBA1C: ; 0x021DBA1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DBA1C + + thumb_func_start MOD17_021DBA30 +MOD17_021DBA30: ; 0x021DBA30 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r6, r1, #0 + add r7, r2, #0 + cmp r0, #0 + bne _021DBA42 + bl ErrorHandling +_021DBA42: + ldr r0, [r5, #4] + cmp r0, #0 + bne _021DBA4C + bl ErrorHandling +_021DBA4C: + ldr r2, [r5, #4] + mov r4, #0 + cmp r2, #0 + ble _021DBA64 + ldr r1, [r5] +_021DBA56: + ldr r0, [r1] + cmp r0, #0 + beq _021DBA64 + add r4, r4, #1 + add r1, #0x10 + cmp r4, r2 + blt _021DBA56 +_021DBA64: + cmp r2, r4 + bgt _021DBA6C + bl ErrorHandling +_021DBA6C: + ldr r0, [r5] + lsl r1, r4, #4 + str r6, [r0, r1] + ldr r0, [r5] + add r0, r0, r1 + str r7, [r0, #4] + ldr r0, [r5] + add r0, r0, r1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DBA30 + + thumb_func_start MOD17_021DBA80 +MOD17_021DBA80: ; 0x021DBA80 + mov r2, #0x10 + mov r1, #0 +_021DBA84: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021DBA84 + bx lr + .align 2, 0 + thumb_func_end MOD17_021DBA80 + + thumb_func_start MOD17_021DBA90 +MOD17_021DBA90: ; 0x021DBA90 + ldr r2, [r1, #8] + str r2, [r0, #8] + ldr r2, [r1, #8] + str r0, [r2, #0xc] + str r1, [r0, #0xc] + str r0, [r1, #8] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DBA90 + + thumb_func_start MOD17_021DBAA0 +MOD17_021DBAA0: ; 0x021DBAA0 + ldr r2, [r0, #8] + ldr r1, [r0, #0xc] + str r2, [r1, #8] + ldr r1, [r0, #0xc] + ldr r0, [r0, #8] + str r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DBAA0 + + thumb_func_start MOD17_021DBAB0 +MOD17_021DBAB0: ; 0x021DBAB0 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r4, [r6, #8] + cmp r4, r6 + beq _021DBACE +_021DBABA: + add r0, r4, #0 + ldr r5, [r4, #8] + bl MOD17_021DBAA0 + add r0, r4, #0 + bl MOD17_021DBA80 + add r4, r5, #0 + cmp r5, r6 + bne _021DBABA +_021DBACE: + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DBAB0 + + thumb_func_start MOD17_021DBAD0 +MOD17_021DBAD0: ; 0x021DBAD0 + push {r3, lr} + ldr r2, [r0, #4] + ldr r0, [r0] + cmp r2, #3 + bge _021DBAE0 + bl MOD17_021D766C + pop {r3, pc} +_021DBAE0: + bl MOD17_021DB7D8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021DBAD0 + + thumb_func_start MOD17_021DBAE8 +MOD17_021DBAE8: ; 0x021DBAE8 + push {r3, lr} + ldr r3, [r0, #4] + ldr r0, [r0] + cmp r3, #3 + bge _021DBB06 + mov r3, #0 + mvn r3, r3 + cmp r1, r3 + bne _021DBB00 + bl MOD17_021D7544 + pop {r3, pc} +_021DBB00: + bl MOD17_021D75DC + pop {r3, pc} +_021DBB06: + mov r3, #0 + mvn r3, r3 + cmp r1, r3 + bne _021DBB14 + bl MOD17_021DB840 + pop {r3, pc} +_021DBB14: + bl MOD17_021DB84C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021DBAE8 + + thumb_func_start MOD17_021DBB1C +MOD17_021DBB1C: ; 0x021DBB1C + push {r4, lr} + ldr r4, [r0, #4] + cmp r4, #0 + bne _021DBB32 + ldr r0, [r0] + ldr r4, [r0] + lsl r4, r4, #2 + ldr r3, [r3, r4] + bl MOD17_021D7554 + pop {r4, pc} +_021DBB32: + cmp r4, #1 + bne _021DBB46 + ldr r0, [r0] + ldr r4, [r0] + add r4, #0x64 + lsl r4, r4, #2 + ldr r3, [r3, r4] + bl MOD17_021D7554 + pop {r4, pc} +_021DBB46: + cmp r4, #2 + ldr r0, [r0] + bne _021DBB5A + ldr r4, [r0] + add r4, #0x64 + lsl r4, r4, #2 + ldr r3, [r3, r4] + bl MOD17_021D7554 + pop {r4, pc} +_021DBB5A: + mov r4, #0x76 + lsl r4, r4, #2 + ldr r3, [r3, r4] + bl MOD17_021DB880 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DBB1C + + thumb_func_start MOD17_021DBB68 +MOD17_021DBB68: ; 0x021DBB68 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + ldr r1, [r0, #4] + add r4, r2, #0 + cmp r1, #3 + bge _021DBB88 + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + ldr r0, [r0] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl MOD17_021D75F4 + add sp, #8 + pop {r4, r5, r6, pc} +_021DBB88: + ldr r6, [r0] + add r1, sp, #4 + add r0, r6, #0 + add r2, sp, #0 + bl MOD17_021DB878 + ldr r1, [sp, #4] + ldr r2, [sp] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + lsr r0, r2, #0x1f + add r0, r2, r0 + asr r2, r0, #1 + str r1, [sp, #4] + str r2, [sp] + add r0, r6, #0 + add r1, r5, r1 + add r2, r4, r2 + bl MOD17_021DB7F4 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DBB68 + + thumb_func_start MOD17_021DBBB8 +MOD17_021DBBB8: ; 0x021DBBB8 + push {r4, r5, r6, lr} + sub sp, #8 + ldr r3, [r0, #4] + add r5, r1, #0 + add r4, r2, #0 + cmp r3, #3 + bge _021DBBD0 + ldr r0, [r0] + bl MOD17_021D7600 + add sp, #8 + pop {r4, r5, r6, pc} +_021DBBD0: + ldr r6, [r0] + add r0, r6, #0 + bl MOD17_021DB858 + add r0, r6, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DB878 + ldr r1, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r2, r0, #1 + ldr r1, [sp] + str r2, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [sp] + ldr r0, [r5] + sub r0, r0, r2 + str r0, [r5] + ldr r1, [r4] + ldr r0, [sp] + sub r0, r1, r0 + str r0, [r4] + add sp, #8 + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DBBB8 + + thumb_func_start MOD17_021DBC08 +MOD17_021DBC08: ; 0x021DBC08 + push {r3, lr} + ldr r3, [r0, #4] + ldr r0, [r0] + cmp r3, #3 + bge _021DBC18 + bl MOD17_021D7630 + pop {r3, pc} +_021DBC18: + bl MOD17_021DB878 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021DBC08 + + thumb_func_start MOD17_021DBC20 +MOD17_021DBC20: ; 0x021DBC20 + push {r3, lr} + ldr r3, [r0, #4] + ldr r0, [r0] + cmp r3, #3 + bge _021DBC30 + bl MOD17_021D7684 + pop {r3, pc} +_021DBC30: + bl MOD17_021DB960 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021DBC20 + + thumb_func_start MOD17_021DBC38 +MOD17_021DBC38: ; 0x021DBC38 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r4, [r5, #8] + add r6, r1, #0 + add r7, r2, #0 + cmp r4, r5 + beq _021DBC6A +_021DBC48: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBBB8 + ldr r0, [sp, #4] + add r1, r0, r6 + ldr r0, [sp] + str r1, [sp, #4] + add r2, r0, r7 + str r2, [sp] + add r0, r4, #0 + bl MOD17_021DBB68 + ldr r4, [r4, #8] + cmp r4, r5 + bne _021DBC48 +_021DBC6A: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DBC38 + + thumb_func_start MOD17_021DBC70 +MOD17_021DBC70: ; 0x021DBC70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r1, sp, #0x14 + add r2, sp, #0x10 + add r7, r3, #0 + bl MOD17_021DBC08 + add r0, r5, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DBBB8 + add r0, r5, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBC20 + ldr r1, [sp, #8] + ldr r0, [sp] + add r0, r1, r0 + str r0, [r4] + ldr r1, [sp, #8] + ldr r0, [sp, #0x10] + add r1, r1, r0 + ldr r0, [sp] + sub r0, r1, r0 + str r0, [r6] + ldr r1, [sp, #0xc] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [r7] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, r1, r0 + ldr r0, [sp, #4] + sub r1, r1, r0 + ldr r0, [sp, #0x30] + str r1, [r0] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DBC70 + + thumb_func_start MOD17_021DBCC8 +MOD17_021DBCC8: ; 0x021DBCC8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r1, sp, #0xc + add r2, sp, #8 + bl MOD17_021DBC08 + add r0, r6, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD17_021DBBB8 + ldr r1, [sp, #0xc] + ldr r2, [sp, #4] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, r2, r0 + str r0, [r5] + ldr r1, [sp, #8] + ldr r2, [sp] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + add r0, r2, r0 + str r0, [r4] + add sp, #0x10 + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DBCC8 + + thumb_func_start MOD17_021DBD04 +MOD17_021DBD04: ; 0x021DBD04 + add r2, r0, #0 + ldr r0, [r1] + str r0, [r2] + ldr r3, [r1, #0x14] + asr r0, r3, #2 + lsr r0, r0, #0x1d + add r0, r3, r0 + asr r0, r0, #3 + str r0, [r2, #0xc] + ldr r3, [r1, #0x18] + asr r0, r3, #2 + lsr r0, r0, #0x1d + add r0, r3, r0 + asr r0, r0, #3 + str r0, [r2, #0x10] + ldr r0, [r1, #0x1c] + ldr r3, _021DBD48 ; =MOD17_021DBEE8 + str r0, [r2, #0x1c] + ldr r0, [r1, #0x24] + str r0, [r2, #0x20] + ldr r0, [r1, #0x20] + str r0, [r2, #0x24] + ldr r0, [r1, #0x28] + str r0, [r2, #0x28] + ldr r0, [r1, #4] + str r0, [r2, #4] + ldr r0, [r1, #0x10] + str r0, [r2, #8] + add r0, r1, #0 + add r1, r2, #0 + add r1, #0x14 + add r2, #0x18 + bx r3 + nop +_021DBD48: .word MOD17_021DBEE8 + thumb_func_end MOD17_021DBD04 + + thumb_func_start MOD17_021DBD4C +MOD17_021DBD4C: ; 0x021DBD4C + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x1c] + ldr r0, [r4] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x2c + bl Call_FillMemWithValue + pop {r4, pc} + thumb_func_end MOD17_021DBD4C + + thumb_func_start MOD17_021DBD68 +MOD17_021DBD68: ; 0x021DBD68 + ldr r2, [r1] + str r2, [r0] + ldr r2, [r1, #4] + str r2, [r0, #4] + ldr r2, [r1, #8] + str r2, [r0, #8] + mov r2, #0 + str r2, [r0, #0xc] + str r2, [r0, #0x10] + ldr r1, [r1, #0xc] + str r1, [r0, #0x14] + bx lr + thumb_func_end MOD17_021DBD68 + + thumb_func_start MOD17_021DBD80 +MOD17_021DBD80: ; 0x021DBD80 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r1, r0, r1 + str r1, [r5, #0xc] + ldr r0, [r5, #8] + cmp r1, r0 + ble _021DBDE4 + mov r2, #0 + str r2, [r5, #0xc] + ldr r0, [r5, #0x10] + cmp r0, #0 + bne _021DBDA4 + ldr r1, [r5, #4] + mov r0, #1 + str r0, [r5, #0x10] + b _021DBDAA +_021DBDA4: + ldr r0, [r5] + ldr r1, [r0, #8] + str r2, [r5, #0x10] +_021DBDAA: + ldr r0, [r5, #0x14] + mov r2, #0 + str r0, [sp] + ldr r0, [r5] + add r3, sp, #0x14 + ldr r0, [r0, #4] + bl FUN_02006BDC + ldr r3, [r5] + add r4, r0, #0 + ldr r0, [r3, #0x18] + str r0, [sp] + ldr r0, [r3, #0xc] + str r0, [sp, #4] + ldr r0, [r3, #0x10] + str r0, [sp, #8] + ldr r0, [r3, #0x28] + str r0, [sp, #0xc] + ldr r0, [r3, #0x20] + str r0, [sp, #0x10] + ldr r0, [r3] + ldr r1, [r3, #0x1c] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x14] + bl MOD17_021DC004 + add r0, r4, #0 + bl FUN_02016A18 +_021DBDE4: + add sp, #0x18 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DBD80 + + thumb_func_start MOD17_021DBDE8 +MOD17_021DBDE8: ; 0x021DBDE8 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r1, [r5] + ldr r0, [r5, #0x14] + mov r2, #0 + str r0, [sp] + ldr r0, [r1, #4] + ldr r1, [r1, #8] + add r3, sp, #0x14 + bl FUN_02006BDC + ldr r3, [r5] + add r4, r0, #0 + ldr r0, [r3, #0x18] + str r0, [sp] + ldr r0, [r3, #0xc] + str r0, [sp, #4] + ldr r0, [r3, #0x10] + str r0, [sp, #8] + ldr r0, [r3, #0x28] + str r0, [sp, #0xc] + ldr r0, [r3, #0x20] + str r0, [sp, #0x10] + ldr r0, [r3] + ldr r1, [r3, #0x1c] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x14] + bl MOD17_021DC004 + add r0, r4, #0 + bl FUN_02016A18 + mov r1, #0x18 + mov r0, #0 +_021DBE2E: + strb r0, [r5] + add r5, r5, #1 + sub r1, r1, #1 + bne _021DBE2E + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DBDE8 + + thumb_func_start MOD17_021DBE3C +MOD17_021DBE3C: ; 0x021DBE3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r5, r1, #0 + str r2, [sp] + str r3, [sp, #4] + ldr r0, _021DBEC4 ; =MOD17_021DBF94 + mov r1, #0x4c + mov r2, #0 + mov r3, #0xd + bl FUN_020061E8 + bl FUN_0201B6C8 + add r4, r0, #0 + str r6, [r4] + add r7, r5, #0 + add r3, r4, #4 + mov r2, #6 +_021DBE62: + ldmia r7!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021DBE62 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x20] + str r0, [r4, #0x34] + ldr r0, [sp] + str r1, [r4, #0x38] + bl _s32_div_f + str r0, [r4, #0x3c] + ldr r0, [sp, #4] + ldr r1, [sp, #0x20] + bl _s32_div_f + str r0, [r4, #0x40] + ldr r0, [r6] + ldr r1, [r6, #0x1c] + bl FUN_02017B48 + str r0, [r4, #0x44] + ldr r0, [r6] + ldr r1, [r6, #0x1c] + bl FUN_02017B54 + str r0, [r4, #0x48] + mov r0, #0x80 + str r0, [r5, #0x28] + mov r0, #5 + str r0, [r5, #0x24] + ldr r1, [r5, #0x14] + ldr r0, [sp] + sub r0, r1, r0 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r0, [sp, #4] + sub r0, r1, r0 + str r0, [r5, #0x18] + mov r0, #0xe + mov r1, #0 + str r0, [r5, #0x2c] + add r0, r5, #0 + add r2, r1, #0 + bl MOD17_021DBEE8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DBEC4: .word MOD17_021DBF94 + thumb_func_end MOD17_021DBE3C + + thumb_func_start MOD17_021DBEC8 +MOD17_021DBEC8: ; 0x021DBEC8 + push {r3, r4} + ldr r2, [r0, #8] + add r0, #0xc + lsr r4, r2, #1 + mov r3, #0 + cmp r4, #0 + ble _021DBEE4 +_021DBED6: + ldrh r2, [r0] + add r3, r3, #1 + add r2, r2, r1 + strh r2, [r0] + add r0, r0, #2 + cmp r3, r4 + blt _021DBED6 +_021DBEE4: + pop {r3, r4} + bx lr + thumb_func_end MOD17_021DBEC8 + + thumb_func_start MOD17_021DBEE8 +MOD17_021DBEE8: ; 0x021DBEE8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0x14] + add r6, r2, #0 + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r0, r0, #3 + ldr r1, [r5, #0x18] + str r0, [sp, #0x18] + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r0, r0, #3 + str r0, [sp, #0x14] + ldr r0, [r5, #0x28] + str r0, [sp] + ldr r0, [r5, #0x2c] + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r1, [r5, #8] + ldr r2, [r5] + ldr r3, [r5, #0x1c] + bl MOD17_021DC084 + ldr r0, [r5, #0x1c] + cmp r0, #4 + bge _021DBF28 + mov r2, #0 + b _021DBF2A +_021DBF28: + mov r2, #4 +_021DBF2A: + ldr r0, [r5, #0x20] + lsl r0, r0, #5 + str r0, [sp] + ldr r0, [r5, #0x2c] + str r0, [sp, #4] + ldr r3, [r5, #0x24] + ldr r0, [r5, #4] + ldr r1, [r5, #0xc] + lsl r3, r3, #5 + bl MOD17_021DC0D4 + ldr r0, [r5, #0x2c] + mov r2, #0 + str r0, [sp] + ldr r0, [r5, #4] + ldr r1, [r5, #0x10] + add r3, sp, #0x24 + bl FUN_02006BDC + ldr r2, [sp, #0x24] + str r0, [sp, #0x20] + ldrh r0, [r2] + lsr r7, r0, #3 + ldrh r0, [r2, #2] + add r3, r7, #0 + lsr r0, r0, #3 + str r0, [sp, #0x1c] + str r0, [sp] + ldr r0, [sp, #0x18] + str r0, [sp, #4] + ldr r0, [sp, #0x14] + str r0, [sp, #8] + ldr r0, [r5, #0x28] + str r0, [sp, #0xc] + ldr r0, [r5, #0x24] + str r0, [sp, #0x10] + ldr r0, [r5] + ldr r1, [r5, #0x1c] + bl MOD17_021DC004 + ldr r0, [sp, #0x20] + bl FUN_02016A18 + cmp r4, #0 + beq _021DBF86 + str r7, [r4] +_021DBF86: + cmp r6, #0 + beq _021DBF8E + ldr r0, [sp, #0x1c] + str r0, [r6] +_021DBF8E: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DBEE8 + + thumb_func_start MOD17_021DBF94 +MOD17_021DBF94: ; 0x021DBF94 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x38] + sub r0, r0, #1 + str r0, [r4, #0x38] + ldr r1, [r4] + bmi _021DBFC8 + ldr r0, [r1] + ldr r1, [r1, #0x1c] + ldr r3, [r4, #0x3c] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + mov r2, #2 + bl FUN_0201AEE4 + ldr r1, [r4] + ldr r3, [r4, #0x40] + ldr r0, [r1] + ldr r1, [r1, #0x1c] + mov r2, #5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AEE4 + pop {r3, r4, r5, pc} +_021DBFC8: + ldr r0, [r1] + ldr r1, [r1, #0x1c] + ldr r3, [r4, #0x44] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_0201AEE4 + ldr r1, [r4] + ldr r3, [r4, #0x48] + ldr r0, [r1] + ldr r1, [r1, #0x1c] + mov r2, #3 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AEE4 + ldr r0, [r4] + add r1, r4, #4 + bl MOD17_021DBD04 + ldr r1, [r4, #0x34] + cmp r1, #0 + beq _021DBFFC + mov r0, #1 + str r0, [r1] +_021DBFFC: + add r0, r5, #0 + bl FUN_0200621C + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DBF94 + + thumb_func_start MOD17_021DC004 +MOD17_021DC004: ; 0x021DC004 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r1, #0 + add r4, r2, #0 + add r7, r0, #0 + ldr r1, [sp, #0x3c] + add r0, r4, #0 + add r6, r3, #0 + bl MOD17_021DBEC8 + ldr r1, [sp, #0x30] + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + str r0, [sp] + ldr r3, [sp, #0x38] + str r2, [sp, #4] + add r4, #0xc + lsl r3, r3, #0x18 + str r4, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, [sp, #0x34] + lsl r1, r5, #0x18 + lsl r2, r2, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x34] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x40] + ldr r3, [sp, #0x38] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r1, r5, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + str r0, [sp, #8] + add r0, r7, #0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020186B4 + lsl r1, r5, #0x18 + add r0, r7, #0 + lsr r1, r1, #0x18 + bl FUN_0201AC68 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DC004 + + thumb_func_start MOD17_021DC084 +MOD17_021DC084: ; 0x021DC084 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp, #4] + ldr r0, [sp, #0x24] + mov r1, #0x14 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021DC0A0: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DC0A0 + ldr r0, [sp, #0x24] + ldr r1, [sp, #4] + str r0, [sp] + add r0, r7, #0 + mov r2, #0 + add r3, r4, #4 + bl FUN_02006BB0 + str r0, [r4, #8] + str r5, [r4] + ldr r0, [sp, #0x20] + str r6, [r4, #0xc] + str r0, [r4, #0x10] + ldr r0, _021DC0D0 ; =MOD17_021DC11C + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA98 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC0D0: .word MOD17_021DC11C + thumb_func_end MOD17_021DC084 + + thumb_func_start MOD17_021DC0D4 +MOD17_021DC0D4: ; 0x021DC0D4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + str r1, [sp] + ldr r0, [sp, #0x1c] + mov r1, #0x14 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_021DC0EE: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021DC0EE + ldr r1, [sp] + ldr r3, [sp, #0x1c] + add r0, r7, #0 + add r2, r4, #0 + bl FUN_02006C08 + str r0, [r4, #4] + str r5, [r4, #8] + ldr r0, [sp, #0x18] + str r6, [r4, #0xc] + str r0, [r4, #0x10] + ldr r0, _021DC118 ; =MOD17_021DC158 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA98 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC118: .word MOD17_021DC158 + thumb_func_end MOD17_021DC0D4 + + thumb_func_start MOD17_021DC11C +MOD17_021DC11C: ; 0x021DC11C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + bl DC_FlushRange + ldr r3, [r4, #4] + ldr r0, [r4, #0x10] + str r0, [sp] + ldr r1, [r4, #0xc] + ldr r2, [r3, #0x14] + lsl r1, r1, #0x18 + ldr r0, [r4] + ldr r3, [r3, #0x10] + lsr r1, r1, #0x18 + bl FUN_02017E14 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DC11C + + thumb_func_start MOD17_021DC158 +MOD17_021DC158: ; 0x021DC158 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + ldr r1, [r4, #0x10] + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [r4, #8] + cmp r0, #0 + bne _021DC17C + ldr r0, [r4] + ldr r1, [r4, #0xc] + ldr r0, [r0, #0xc] + ldr r2, [r4, #0x10] + bl GX_LoadBGPltt + b _021DC18C +_021DC17C: + cmp r0, #4 + bne _021DC18C + ldr r0, [r4] + ldr r1, [r4, #0xc] + ldr r0, [r0, #0xc] + ldr r2, [r4, #0x10] + bl GXS_LoadBGPltt +_021DC18C: + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DC158 + + thumb_func_start MOD17_021DC1A0 +MOD17_021DC1A0: ; 0x021DC1A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _021DC1AE + bl ErrorHandling +_021DC1AE: + cmp r4, #0 + bne _021DC1B6 + bl ErrorHandling +_021DC1B6: + ldr r0, [r4] + bl FUN_0201FE94 + str r0, [r5] + cmp r0, #0 + bne _021DC1C6 + bl ErrorHandling +_021DC1C6: + ldr r0, [r4, #0xc] + str r0, [r5, #4] + ldr r0, [r4, #8] + str r0, [r5, #8] + ldr r0, [r4, #4] + cmp r0, #0 + beq _021DC1D8 + str r0, [r5, #0xc] + pop {r3, r4, r5, pc} +_021DC1D8: + ldr r0, _021DC1E0 ; =MOD17_021DC2DC + str r0, [r5, #0xc] + pop {r3, r4, r5, pc} + nop +_021DC1E0: .word MOD17_021DC2DC + thumb_func_end MOD17_021DC1A0 + + thumb_func_start MOD17_021DC1E4 +MOD17_021DC1E4: ; 0x021DC1E4 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r1, #0 + add r5, r0, #0 + bl MOD17_021DC1A0 + ldr r0, [r4, #0x14] + str r0, [sp] + ldr r0, [r4, #0x10] + str r0, [sp, #4] + ldr r0, [r4] + ldr r0, [r0] + str r0, [sp, #8] + ldr r0, [r4, #0x18] + str r0, [sp, #0xc] + ldr r0, [r5] + str r0, [sp, #0x10] + ldr r0, [r4, #0x24] + str r0, [sp, #0x14] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x18] + ldr r0, [r4, #0x20] + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + str r0, [sp, #0x24] + ldr r0, [r4] + ldr r0, [r0, #0x28] + str r0, [sp, #0x28] + ldr r0, [r4] + ldr r0, [r0, #0x2c] + str r0, [sp, #0x2c] + add r0, sp, #0 + bl FUN_020117E8 + str r0, [r5, #0x10] + add sp, #0x30 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DC1E4 + + thumb_func_start MOD17_021DC230 +MOD17_021DC230: ; 0x021DC230 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201FFC8 + mov r1, #0x10 + mov r0, #0 +_021DC23E: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021DC23E + pop {r4, pc} + thumb_func_end MOD17_021DC230 + + thumb_func_start MOD17_021DC248 +MOD17_021DC248: ; 0x021DC248 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021DC230 + ldr r0, [r4, #0x10] + bl FUN_02011870 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DC248 + + thumb_func_start MOD17_021DC264 +MOD17_021DC264: ; 0x021DC264 + push {r3, lr} + ldr r2, [r0, #4] + cmp r1, r2 + bne _021DC272 + ldr r1, [r0, #8] + ldr r2, [r0, #0xc] + blx r2 +_021DC272: + pop {r3, pc} + thumb_func_end MOD17_021DC264 + + thumb_func_start MOD17_021DC274 +MOD17_021DC274: ; 0x021DC274 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r4, #2 + add r5, #0x20 +_021DC280: + cmp r4, r7 + beq _021DC28C + add r0, r5, #0 + bl MOD17_021DC2EC + b _021DC2B0 +_021DC28C: + cmp r6, #0 + bne _021DC29E + add r0, r5, #0 + bl MOD17_021DC2F8 + ldr r0, _021DC2BC ; =0x0000067D + bl FUN_020054C8 + b _021DC2B0 +_021DC29E: + cmp r6, #2 + bne _021DC2AA + add r0, r5, #0 + bl MOD17_021DC2E0 + b _021DC2B0 +_021DC2AA: + add r0, r5, #0 + bl MOD17_021DC2F8 +_021DC2B0: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #3 + ble _021DC280 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC2BC: .word 0x0000067D + thumb_func_end MOD17_021DC274 + + thumb_func_start MOD17_021DC2C0 +MOD17_021DC2C0: ; 0x021DC2C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _021DC2D2 + bl ErrorHandling +_021DC2D2: + str r7, [r5, #4] + str r6, [r5, #8] + str r4, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DC2C0 + + thumb_func_start MOD17_021DC2DC +MOD17_021DC2DC: ; 0x021DC2DC + bx lr + .align 2, 0 + thumb_func_end MOD17_021DC2DC + + thumb_func_start MOD17_021DC2E0 +MOD17_021DC2E0: ; 0x021DC2E0 + ldr r3, _021DC2E8 ; =0x02020209 + ldr r0, [r0] + mov r1, #2 + bx r3 + .align 2, 0 +_021DC2E8: .word 0x02020209 + thumb_func_end MOD17_021DC2E0 + + thumb_func_start MOD17_021DC2EC +MOD17_021DC2EC: ; 0x021DC2EC + ldr r3, _021DC2F4 ; =0x02020209 + ldr r0, [r0] + mov r1, #0 + bx r3 + .align 2, 0 +_021DC2F4: .word 0x02020209 + thumb_func_end MOD17_021DC2EC + + thumb_func_start MOD17_021DC2F8 +MOD17_021DC2F8: ; 0x021DC2F8 + ldr r3, _021DC300 ; =0x02020209 + ldr r0, [r0] + mov r1, #1 + bx r3 + .align 2, 0 +_021DC300: .word 0x02020209 + thumb_func_end MOD17_021DC2F8 + + thumb_func_start MOD17_021DC304 +MOD17_021DC304: ; 0x021DC304 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #1 + mov r1, #0xd + bl FUN_02011744 + str r0, [r5, #0x64] + add r0, r4, #0 + bl MOD17_021DC760 + mov r0, #0x90 + str r0, [sp] + mov r0, #0x28 + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + mov r3, #0x30 + bl MOD17_021DC628 + mov r0, #0x28 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x6c + mov r1, #0 + mov r2, #0x30 + mov r3, #0x98 + bl MOD17_021DC748 + mov r0, #0x90 + str r0, [sp] + mov r0, #0x28 + str r0, [sp, #4] + mov r0, #0x20 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x10 + mov r1, #1 + add r2, r4, #0 + mov r3, #8 + bl MOD17_021DC628 + mov r0, #0x28 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x6c + mov r1, #1 + mov r2, #8 + mov r3, #0x98 + bl MOD17_021DC748 + mov r0, #0x90 + str r0, [sp] + mov r0, #0x2a + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x20 + mov r1, #2 + add r2, r4, #0 + mov r3, #0x60 + bl MOD17_021DC628 + mov r0, #0x2a + str r0, [sp] + mov r0, #0x22 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x6c + mov r1, #2 + mov r2, #0x60 + mov r3, #0x9c + bl MOD17_021DC748 + mov r0, #0x90 + str r0, [sp] + mov r0, #0x2a + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x30 + mov r1, #3 + add r2, r4, #0 + mov r3, #0x88 + bl MOD17_021DC628 + mov r0, #0x2a + str r0, [sp] + mov r0, #0x22 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x6c + mov r1, #3 + mov r2, #0x88 + mov r3, #0x9c + bl MOD17_021DC748 + mov r0, #2 + mov r1, #0xe + bl FUN_02002C50 + mov r0, #9 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + ldr r2, _021DC460 ; =0x00000151 + add r0, r4, #0 + mov r1, #0x1a + mov r3, #0 + bl MOD17_021DC880 + add r6, r0, #0 + str r6, [sp] + mov r0, #0xb8 + str r0, [sp, #4] + mov r0, #0x90 + str r0, [sp, #8] + mov r0, #0x48 + str r0, [sp, #0xc] + mov r0, #0x2a + str r0, [sp, #0x10] + add r0, r5, #0 + ldr r3, [r5, #0x64] + add r0, #0x40 + mov r1, #4 + add r2, r4, #0 + bl MOD17_021DC698 + mov r0, #0x48 + str r0, [sp] + mov r0, #0x22 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x6c + mov r1, #4 + mov r2, #0xb8 + mov r3, #0x9c + bl MOD17_021DC748 + add r0, r6, #0 + bl MOD17_021DC8F8 + mov r0, #2 + bl FUN_02002CF8 + mov r0, #1 + str r0, [r5, #0x60] + add r0, r4, #0 + bl MOD17_021DC7E0 + add r0, r5, #0 + add r0, #0x20 + bl MOD17_021DC2E0 + mov r0, #0xd + str r0, [sp] + add r0, r5, #0 + ldr r2, _021DC464 ; =MOD17_021DC570 + add r0, #0x6c + mov r1, #5 + add r3, r5, #0 + bl FUN_020220C4 + str r0, [r5, #0x68] + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021DC460: .word 0x00000151 +_021DC464: .word MOD17_021DC570 + thumb_func_end MOD17_021DC304 + + thumb_func_start MOD17_021DC468 +MOD17_021DC468: ; 0x021DC468 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r4, #0 +_021DC470: + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021D79D8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021D79EC + add r0, r4, #0 + bl FUN_0201D324 + add r4, r4, #1 + cmp r4, #5 + blt _021DC470 + mov r0, #0 + bl FUN_0201E1C8 + mov r0, #1 + bl FUN_0201E1C8 + mov r5, #0 + add r4, r6, #0 +_021DC49C: + add r0, r4, #0 + bl MOD17_021DC230 + add r5, r5, #1 + add r4, #0x10 + cmp r5, #4 + blt _021DC49C + add r0, r6, #0 + add r0, #0x54 + bl FUN_0201D5E8 + add r0, r6, #0 + add r0, #0x40 + bl MOD17_021DC248 + ldr r0, [r6, #0x64] + bl FUN_020117BC + ldr r0, [r6, #0x68] + bl FUN_0202212C + mov r0, #0 + str r0, [r6, #0x68] + pop {r4, r5, r6, pc} + thumb_func_end MOD17_021DC468 + + thumb_func_start MOD17_021DC4CC +MOD17_021DC4CC: ; 0x021DC4CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + cmp r0, #0 + bne _021DC4DA + bl ErrorHandling +_021DC4DA: + ldr r0, [r4, #0x68] + bl FUN_02022144 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DC4CC + + thumb_func_start MOD17_021DC4E4 +MOD17_021DC4E4: ; 0x021DC4E4 + push {r4, lr} + add r4, r0, #0 + add r0, #0x40 + mov r1, #3 + bl MOD17_021DC808 + add r0, r4, #0 + add r0, #0x40 + mov r1, #3 + bl MOD17_021DC82C + add r0, r4, #0 + mov r1, #2 + mov r2, #3 + bl MOD17_021DC274 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DC4E4 + + thumb_func_start MOD17_021DC508 +MOD17_021DC508: ; 0x021DC508 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 + add r5, r0, #0 +_021DC514: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD17_021DC904 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #4 + blt _021DC514 + ldr r0, [sp] + add r1, r6, #0 + add r0, #0x40 + add r2, r7, #0 + str r0, [sp] + bl MOD17_021DC940 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DC508 + + thumb_func_start MOD17_021DC538 +MOD17_021DC538: ; 0x021DC538 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _021DC54A + bl ErrorHandling +_021DC54A: + cmp r4, #4 + bge _021DC55E + lsl r0, r4, #4 + ldr r3, [sp, #0x18] + add r0, r5, r0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD17_021DC2C0 + pop {r3, r4, r5, r6, r7, pc} +_021DC55E: + add r5, #0x40 + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD17_021DC2C0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DC538 + + thumb_func_start MOD17_021DC570 +MOD17_021DC570: ; 0x021DC570 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + cmp r6, #4 + bhi _021DC618 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DC588: ; jump table + .short _021DC592 - _021DC588 - 2 ; case 0 + .short _021DC5AE - _021DC588 - 2 ; case 1 + .short _021DC5D0 - _021DC588 - 2 ; case 2 + .short _021DC5D0 - _021DC588 - 2 ; case 3 + .short _021DC5E6 - _021DC588 - 2 ; case 4 +_021DC592: + add r0, r4, #0 + bl MOD17_021DC808 + ldr r1, _021DC620 ; =0x00000681 + add r0, r4, #0 + mov r2, #0 + add r3, r5, #0 + bl MOD17_021DC870 + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DC264 + pop {r4, r5, r6, pc} +_021DC5AE: + add r0, r4, #0 + add r0, #0x10 + bl MOD17_021DC808 + add r0, r4, #0 + ldr r1, _021DC620 ; =0x00000681 + add r0, #0x10 + mov r2, #0 + add r3, r5, #0 + bl MOD17_021DC870 + add r4, #0x10 + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DC264 + pop {r4, r5, r6, pc} +_021DC5D0: + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD17_021DC274 + lsl r0, r6, #4 + add r0, r4, r0 + add r1, r5, #0 + bl MOD17_021DC264 + pop {r4, r5, r6, pc} +_021DC5E6: + ldr r0, [r4, #0x60] + cmp r0, #1 + bne _021DC61C + add r0, r4, #0 + add r0, #0x40 + bl MOD17_021DC808 + add r0, r4, #0 + add r0, #0x40 + add r1, r5, #0 + bl MOD17_021DC82C + add r0, r4, #0 + ldr r1, _021DC624 ; =0x000005E2 + add r0, #0x40 + mov r2, #0 + add r3, r5, #0 + bl MOD17_021DC870 + add r4, #0x40 + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DC264 + pop {r4, r5, r6, pc} +_021DC618: + bl ErrorHandling +_021DC61C: + pop {r4, r5, r6, pc} + nop +_021DC620: .word 0x00000681 +_021DC624: .word 0x000005E2 + thumb_func_end MOD17_021DC570 + + thumb_func_start MOD17_021DC628 +MOD17_021DC628: ; 0x021DC628 + push {r4, r5, r6, lr} + sub sp, #0x90 + add r6, r0, #0 + mov r0, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + add r5, r2, #0 + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r0, [r5, #0x40] + add r4, r3, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x44] + add r3, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r5, #0x48] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x4c] + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r0, sp, #0x5c + bl FUN_02008AA4 + ldr r0, [r5, #0x3c] + mov r2, #0 + mov r1, #1 + str r0, [sp, #0x2c] + add r0, sp, #0x5c + str r0, [sp, #0x30] + lsl r0, r4, #0xc + str r0, [sp, #0x34] + ldr r0, [sp, #0xa0] + str r1, [sp, #0x54] + lsl r0, r0, #0xc + str r0, [sp, #0x38] + mov r0, #2 + str r0, [sp, #0x50] + mov r0, #0xe + str r0, [sp, #0x58] + add r0, sp, #0x2c + str r0, [sp, #0x80] + str r1, [sp, #0x8c] + add r0, r6, #0 + add r1, sp, #0x80 + str r2, [sp, #0x3c] + str r2, [sp, #0x84] + str r2, [sp, #0x88] + bl MOD17_021DC1A0 + add sp, #0x90 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DC628 + + thumb_func_start MOD17_021DC698 +MOD17_021DC698: ; 0x021DC698 + push {r4, r5, r6, lr} + sub sp, #0xa8 + add r5, r0, #0 + mov r0, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + add r4, r2, #0 + str r0, [sp, #8] + mov r2, #0 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + ldr r0, [r4, #0x40] + add r6, r3, #0 + str r0, [sp, #0x14] + ldr r0, [r4, #0x44] + add r3, r1, #0 + str r0, [sp, #0x18] + ldr r0, [r4, #0x48] + str r0, [sp, #0x1c] + ldr r0, [r4, #0x4c] + str r0, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + add r0, sp, #0x5c + bl FUN_02008AA4 + ldr r0, [r4, #0x3c] + mov r1, #2 + str r0, [sp, #0x2c] + add r0, sp, #0x5c + str r0, [sp, #0x30] + ldr r0, [sp, #0xbc] + mov r2, #0xe + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [sp, #0xc0] + str r1, [sp, #0x50] + mov r1, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x38] + mov r0, #0 + str r2, [sp, #0x58] + add r2, sp, #0x2c + str r0, [sp, #0x3c] + str r0, [sp, #0x84] + str r0, [sp, #0x88] + ldr r0, [sp, #0xb8] + str r1, [sp, #0x54] + str r0, [sp, #0x90] + mov r0, #0x10 + str r0, [sp, #0x9c] + mov r0, #0x13 + str r2, [sp, #0x80] + str r1, [sp, #0x8c] + str r6, [sp, #0x94] + str r0, [sp, #0xa0] + ldr r0, [r4, #0x44] + bl FUN_020094F0 + mov r1, #0 + bl FUN_02009E54 + str r0, [sp, #0x98] + ldr r0, [sp, #0xb8] + mov r1, #1 + mov r2, #0xd + bl FUN_02011898 + mov r1, #1 + add r3, r5, #0 + add r2, r1, #0 + add r3, #0x14 + bl FUN_0201D568 + cmp r0, #0 + bne _021DC736 + bl ErrorHandling +_021DC736: + ldr r0, [r5, #0x18] + add r1, sp, #0x80 + str r0, [sp, #0xa4] + add r0, r5, #0 + bl MOD17_021DC1E4 + add sp, #0xa8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DC698 + + thumb_func_start MOD17_021DC748 +MOD17_021DC748: ; 0x021DC748 + lsl r1, r1, #2 + strb r3, [r0, r1] + add r1, r0, r1 + ldr r0, [sp, #4] + strb r2, [r1, #2] + add r0, r3, r0 + strb r0, [r1, #1] + ldr r0, [sp] + add r0, r2, r0 + strb r0, [r1, #3] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DC748 + + thumb_func_start MOD17_021DC760 +MOD17_021DC760: ; 0x021DC760 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x6b + mov r4, #0 + str r0, [sp, #0xc] + mov r7, #0x6a + mov r6, #0x69 +_021DC770: + mov r0, #1 + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, r5, #0 + mov r1, #0x19 + mov r3, #0 + str r4, [sp, #4] + bl MOD17_021D7934 + add r0, r5, #0 + mov r1, #0x19 + add r2, r7, #0 + mov r3, #0 + str r4, [sp] + bl MOD17_021D7978 + add r0, r5, #0 + mov r1, #0x19 + add r2, r6, #0 + mov r3, #0 + str r4, [sp] + bl MOD17_021D7994 + ldr r0, [sp, #0xc] + add r4, r4, #1 + add r0, r0, #3 + str r0, [sp, #0xc] + add r7, r7, #3 + add r6, r6, #3 + cmp r4, #5 + blt _021DC770 + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r3, #0 + add r0, r5, #0 + mov r1, #0x19 + mov r2, #0x68 + str r3, [sp, #8] + bl MOD17_021D7954 + mov r1, #1 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r5, #0 + mov r1, #0x19 + mov r2, #0x78 + mov r3, #0 + bl MOD17_021D7954 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DC760 + + thumb_func_start MOD17_021DC7E0 +MOD17_021DC7E0: ; 0x021DC7E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021DC7E6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021D79B0 + add r4, r4, #1 + cmp r4, #5 + blt _021DC7E6 + add r0, r5, #0 + mov r1, #0 + bl MOD17_021D79C4 + add r0, r5, #0 + mov r1, #1 + bl MOD17_021D79C4 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DC7E0 + + thumb_func_start MOD17_021DC808 +MOD17_021DC808: ; 0x021DC808 + push {r3, lr} + cmp r1, #0 + bne _021DC814 + bl MOD17_021DC2F8 + pop {r3, pc} +_021DC814: + cmp r1, #2 + bne _021DC81E + bl MOD17_021DC2E0 + pop {r3, pc} +_021DC81E: + cmp r1, #1 + beq _021DC826 + cmp r1, #3 + bne _021DC82A +_021DC826: + bl MOD17_021DC2EC +_021DC82A: + pop {r3, pc} + thumb_func_end MOD17_021DC808 + + thumb_func_start MOD17_021DC82C +MOD17_021DC82C: ; 0x021DC82C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _021DC848 + ldr r0, [r5, #0x10] + mov r1, #0x10 + mov r2, #0xf + bl FUN_020118C4 + ldr r0, [r5, #0x10] + mov r1, #4 + bl FUN_02011A60 + pop {r3, r4, r5, pc} +_021DC848: + cmp r4, #1 + bne _021DC856 + ldr r0, [r5, #0x10] + mov r1, #0x10 + mov r2, #0x13 + bl FUN_020118C4 +_021DC856: + cmp r4, #3 + bne _021DC86C + ldr r0, [r5, #0x10] + mov r1, #0x10 + mov r2, #0x13 + bl FUN_020118C4 + ldr r0, [r5, #0x10] + mov r1, #3 + bl FUN_02011A60 +_021DC86C: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DC82C + + thumb_func_start MOD17_021DC870 +MOD17_021DC870: ; 0x021DC870 + push {r3, lr} + cmp r3, r2 + bne _021DC87E + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + bl FUN_020054C8 +_021DC87E: + pop {r3, pc} + thumb_func_end MOD17_021DC870 + + thumb_func_start MOD17_021DC880 +MOD17_021DC880: ; 0x021DC880 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r3, #0 + mov r0, #0 + mov r3, #0xd + bl FUN_0200A86C + add r6, r0, #0 + bne _021DC898 + bl ErrorHandling +_021DC898: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #0xe + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + bl FUN_0201901C + mov r0, #0 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + str r0, [sp] + str r0, [sp, #4] + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r5, #0x38] + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020190EC + mov r3, #0 + str r3, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021DC8F4 ; =0x00010203 + mov r1, #2 + str r0, [sp, #8] + add r0, r4, #0 + add r2, r7, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DC8F4: .word 0x00010203 + thumb_func_end MOD17_021DC880 + + thumb_func_start MOD17_021DC8F8 +MOD17_021DC8F8: ; 0x021DC8F8 + ldr r3, _021DC900 ; =0x020191A5 + mov r1, #1 + bx r3 + nop +_021DC900: .word 0x020191A5 + thumb_func_end MOD17_021DC8F8 + + thumb_func_start MOD17_021DC904 +MOD17_021DC904: ; 0x021DC904 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0 + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + lsl r0, r4, #0xc + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + lsl r0, r6, #0xc + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5] + add r1, r7, #0 + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DC904 + + thumb_func_start MOD17_021DC940 +MOD17_021DC940: ; 0x021DC940 + push {r4, lr} + add r4, r0, #0 + bl MOD17_021DC904 + ldr r0, [r4, #0x10] + bl FUN_02011938 + pop {r4, pc} + thumb_func_end MOD17_021DC940 + + thumb_func_start MOD17_021DC950 +MOD17_021DC950: ; 0x021DC950 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + add r6, r2, #0 + mov r1, #1 + add r5, r0, #0 + tst r1, r6 + beq _021DC96A + mov r2, #0x52 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue +_021DC96A: + mov r0, #2 + tst r0, r6 + beq _021DC978 + ldr r1, [r4] + add r0, r5, #0 + bl MOD17_021DCC00 +_021DC978: + mov r0, #4 + add r1, r6, #0 + tst r1, r0 + beq _021DC99C + mov r1, #0x1b + str r1, [sp] + str r0, [sp, #4] + mov r0, #0x1f + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r5, #0 + ldr r1, [r4] + add r0, #0x2c + mov r2, #2 + mov r3, #0x13 + bl MOD17_021DCC68 +_021DC99C: + mov r0, #8 + tst r0, r6 + beq _021DC9B0 + add r0, r5, #0 + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0x10] + add r0, #0x38 + bl MOD17_021DCE34 +_021DC9B0: + mov r0, #0x10 + tst r0, r6 + beq _021DC9CC + ldr r0, [r4] + str r0, [sp] + ldr r0, [r4, #0x20] + str r0, [sp, #4] + add r0, r5, #0 + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0x1c] + add r0, #0xa0 + bl MOD17_021DD074 +_021DC9CC: + mov r0, #0x20 + tst r0, r6 + beq _021DCA42 + mov r0, #0x1b + str r0, [sp] + mov r2, #2 + str r2, [sp, #4] + mov r0, #0x8b + str r0, [sp, #8] + mov r3, #1 + str r3, [sp, #0xc] + add r0, #0xa9 + ldr r1, [r4] + add r0, r5, r0 + bl MOD17_021DCC68 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xf + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _021DCA7C ; =0x0001020F + mov r1, #0x1a + str r0, [sp, #8] + mov r0, #0xff + str r0, [sp, #0xc] + add r0, #0x35 + ldr r0, [r5, r0] + ldr r2, [r4, #0x14] + mov r3, #6 + bl MOD17_021DCD80 + mov r0, #0x48 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021DCA7C ; =0x0001020F + mov r1, #0x1a + str r0, [sp, #8] + mov r0, #0xff + str r0, [sp, #0xc] + add r0, #0x35 + ldr r0, [r5, r0] + ldr r2, [r4, #0x14] + ldr r3, [r4, #0x18] + bl MOD17_021DCD80 + mov r0, #0x4d + lsl r0, r0, #2 + mov r2, #1 + ldr r0, [r5, r0] + mov r1, #0 + add r3, r2, #0 + bl FUN_0200D0BC +_021DCA42: + ldr r0, [r4, #4] + str r0, [r5, #0x30] + ldr r0, [r4, #8] + str r0, [r5, #0x34] + ldr r0, [r4] + ldr r1, [r4, #0xc] + bl MOD17_021DCC38 + ldr r0, [r4, #0xc] + bl FUN_02025084 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_02024FF4 + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + sub r0, #8 + ldr r0, [r5, r0] + sub r1, #8 + orr r0, r6 + str r0, [r5, r1] + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021DCA7C: .word 0x0001020F + thumb_func_end MOD17_021DC950 + + thumb_func_start MOD17_021DCA80 +MOD17_021DCA80: ; 0x021DCA80 + push {r4, lr} + mov r1, #0x4e + add r4, r0, #0 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r1, #2 + tst r1, r2 + beq _021DCAA0 + bl MOD17_021DCCD8 + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #2 + bic r2, r0 + str r2, [r4, r1] +_021DCAA0: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r0, #4 + tst r0, r1 + beq _021DCABE + ldr r0, [r4, #0x2c] + bl MOD17_021DCCE0 + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #4 + bic r2, r0 + str r2, [r4, r1] +_021DCABE: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r0, #8 + tst r0, r1 + beq _021DCAE0 + add r0, r4, #0 + ldr r1, [r4, #0x34] + add r0, #0x38 + bl MOD17_021DCF30 + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #8 + bic r2, r0 + str r2, [r4, r1] +_021DCAE0: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r0, #0x10 + tst r0, r1 + beq _021DCB02 + add r0, r4, #0 + ldr r1, [r4, #0x34] + add r0, #0xa0 + bl MOD17_021DD178 + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #0x10 + bic r2, r0 + str r2, [r4, r1] +_021DCB02: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r2, [r4, r0] + mov r1, #0x20 + tst r1, r2 + beq _021DCB22 + sub r0, r0, #4 + ldr r0, [r4, r0] + bl MOD17_021DCCE0 + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #0x20 + bic r2, r0 + str r2, [r4, r1] +_021DCB22: + mov r2, #0x52 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + pop {r4, pc} + thumb_func_end MOD17_021DCA80 + + thumb_func_start MOD17_021DCB30 +MOD17_021DCB30: ; 0x021DCB30 + push {r3, lr} + mov r1, #0x4e + lsl r1, r1, #2 + ldr r2, [r0, r1] + mov r1, #0x10 + tst r1, r2 + beq _021DCB44 + add r0, #0xa0 + bl MOD17_021DD1AC +_021DCB44: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021DCB30 + + thumb_func_start MOD17_021DCB48 +MOD17_021DCB48: ; 0x021DCB48 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x4e + lsl r0, r0, #2 + add r4, r1, #0 + ldr r1, [r5, r0] + mov r0, #4 + add r6, r2, #0 + add r7, r3, #0 + tst r0, r1 + bne _021DCB64 + bl ErrorHandling +_021DCB64: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0xff + str r0, [sp, #8] + ldr r0, [r5, #0x2c] + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD17_021DCCEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DCB48 + + thumb_func_start MOD17_021DCB80 +MOD17_021DCB80: ; 0x021DCB80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x4e + lsl r0, r0, #2 + add r4, r1, #0 + ldr r1, [r5, r0] + mov r0, #4 + add r6, r2, #0 + add r7, r3, #0 + tst r0, r1 + bne _021DCB9C + bl ErrorHandling +_021DCB9C: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r5, r0] + add r0, r0, #4 + str r1, [sp, #8] + add r0, r5, r0 + str r0, [sp, #0xc] + ldr r0, [r5, #0x2c] + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD17_021DCD34 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DCB80 + + thumb_func_start MOD17_021DCBC0 +MOD17_021DCBC0: ; 0x021DCBC0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x51 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + pop {r4, pc} + thumb_func_end MOD17_021DCBC0 + + thumb_func_start MOD17_021DCBD8 +MOD17_021DCBD8: ; 0x021DCBD8 + ldr r3, _021DCBE0 ; =MOD17_021DCEE8 + add r0, #0x38 + bx r3 + nop +_021DCBE0: .word MOD17_021DCEE8 + thumb_func_end MOD17_021DCBD8 + + thumb_func_start MOD17_021DCBE4 +MOD17_021DCBE4: ; 0x021DCBE4 + add r0, #0xbc + ldr r0, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DCBE4 + + thumb_func_start MOD17_021DCBEC +MOD17_021DCBEC: ; 0x021DCBEC + add r0, #0xc0 + str r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DCBEC + + thumb_func_start MOD17_021DCBF4 +MOD17_021DCBF4: ; 0x021DCBF4 + ldr r3, _021DCBFC ; =MOD17_021DD454 + add r0, #0xd0 + bx r3 + nop +_021DCBFC: .word MOD17_021DD454 + thumb_func_end MOD17_021DCBF4 + + thumb_func_start MOD17_021DCC00 +MOD17_021DCC00: ; 0x021DCC00 + push {r3, lr} + sub sp, #0x30 + str r1, [sp] + mov r1, #0x19 + str r1, [sp, #4] + mov r1, #0xe0 + str r1, [sp, #8] + mov r1, #0xe1 + str r1, [sp, #0xc] + mov r2, #0 + mov r1, #0xe2 + str r1, [sp, #0x10] + mov r1, #4 + str r1, [sp, #0x1c] + mov r1, #1 + str r1, [sp, #0x20] + mov r1, #0xe + str r1, [sp, #0x2c] + add r1, sp, #0 + str r2, [sp, #0x14] + str r2, [sp, #0x18] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + bl MOD17_021DBD04 + add sp, #0x30 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD17_021DCC00 + + thumb_func_start MOD17_021DCC38 +MOD17_021DCC38: ; 0x021DCC38 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, r1, #0 + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xe + mov r2, #1 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #5 + add r3, r2, #0 + bl FUN_0200CD68 + mov r0, #4 + mov r1, #0x40 + mov r2, #0xe + bl FUN_02002EEC + add sp, #8 + pop {r4, pc} + thumb_func_end MOD17_021DCC38 + + thumb_func_start MOD17_021DCC68 +MOD17_021DCC68: ; 0x021DCC68 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r3, #0 + mov r0, #0xe + mov r1, #1 + add r4, r2, #0 + bl FUN_02018FF4 + str r0, [r5] + bl FUN_0201901C + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x28] + lsl r3, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + mov r2, #5 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + lsr r3, r3, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r1, [r5] + add r0, r7, #0 + bl FUN_02019064 + ldr r0, [r5] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x34] + cmp r0, #0 + beq _021DCCCC + mov r2, #1 + ldr r0, [r5] + mov r1, #0 + add r3, r2, #0 + bl FUN_0200D0BC +_021DCCCC: + ldr r0, [r5] + bl FUN_020191D0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DCC68 + + thumb_func_start MOD17_021DCCD8 +MOD17_021DCCD8: ; 0x021DCCD8 + ldr r3, _021DCCDC ; =MOD17_021DBD4C + bx r3 + .align 2, 0 +_021DCCDC: .word MOD17_021DBD4C + thumb_func_end MOD17_021DCCD8 + + thumb_func_start MOD17_021DCCE0 +MOD17_021DCCE0: ; 0x021DCCE0 + ldr r3, _021DCCE8 ; =0x020191A5 + mov r1, #1 + bx r3 + nop +_021DCCE8: .word 0x020191A5 + thumb_func_end MOD17_021DCCE0 + + thumb_func_start MOD17_021DCCEC +MOD17_021DCCEC: ; 0x021DCCEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0xf + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02019620 + ldr r0, [sp, #0x28] + add r1, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, _021DCD30 ; =0x0001020F + add r3, r7, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x30] + str r0, [sp, #0xc] + add r0, r5, #0 + bl MOD17_021DCD80 + mov r2, #1 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + add r3, r2, #0 + bl FUN_0200D0BC + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DCD30: .word 0x0001020F + thumb_func_end MOD17_021DCCEC + + thumb_func_start MOD17_021DCD34 +MOD17_021DCD34: ; 0x021DCD34 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #0xf + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02019620 + ldr r0, [sp, #0x28] + add r1, r4, #0 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, _021DCD7C ; =0x0001020F + add r3, r7, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + str r0, [sp, #0x10] + add r0, r5, #0 + bl MOD17_021DCDD4 + mov r2, #1 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0 + add r3, r2, #0 + bl FUN_0200D0BC + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DCD7C: .word 0x0001020F + thumb_func_end MOD17_021DCD34 + + thumb_func_start MOD17_021DCD80 +MOD17_021DCD80: ; 0x021DCD80 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + add r4, r3, #0 + mov r0, #0 + mov r3, #0xd + bl FUN_0200A86C + add r5, r0, #0 + bne _021DCD98 + bl ErrorHandling +_021DCD98: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [sp, #0x2c] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x28] + add r2, r4, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + bl FUN_0201BDE0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DCD80 + + thumb_func_start MOD17_021DCDD4 +MOD17_021DCDD4: ; 0x021DCDD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r4, [sp, #0x38] + add r7, r0, #0 + ldr r0, [r4] + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp, #0x10] + cmp r0, #0 + beq _021DCDEC + bl ErrorHandling +_021DCDEC: + mov r0, #0 + add r1, r5, #0 + add r2, r6, #0 + mov r3, #0xd + bl FUN_0200A86C + add r5, r0, #0 + bne _021DCE00 + bl ErrorHandling +_021DCE00: + ldr r1, [sp, #0x10] + add r0, r5, #0 + bl FUN_0200A914 + str r0, [r4] + ldr r0, [sp, #0x2c] + ldr r3, [sp, #0x28] + str r0, [sp] + ldr r0, [sp, #0x34] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x30] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r4] + add r0, r7, #0 + bl FUN_0201BDE0 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DCDD4 + + thumb_func_start MOD17_021DCE34 +MOD17_021DCE34: ; 0x021DCE34 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r5, r1, #0 + mov r1, #0x67 + str r1, [sp] + mov r1, #0xe1 + str r1, [sp, #4] + mov r1, #0x66 + str r1, [sp, #8] + mov r1, #0x65 + str r1, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + mov r1, #0x7d + add r4, r2, #0 + lsl r1, r1, #4 + str r3, [sp, #0x1c] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + add r1, r4, #0 + mov r2, #0xe + mov r3, #0x19 + bl MOD17_021DCF54 + ldr r0, [sp, #0x18] + add r1, r4, #0 + add r2, sp, #0x48 + mov r3, #0 + bl MOD17_021DD014 + add r0, sp, #0x48 + str r0, [sp, #0x2c] + mov r0, #2 + str r0, [sp, #0x40] + mov r0, #0 + str r0, [sp, #0x24] + str r0, [sp, #0x3c] + mov r0, #0xe + str r0, [sp, #0x44] + mov r0, #0x68 + ldr r7, [sp, #0x24] + str r5, [sp, #0x28] + str r0, [sp, #0x20] +_021DCE8A: + ldr r0, [sp, #0x20] + mov r6, #0 + str r0, [sp, #0x34] + lsl r1, r0, #0xc + mov r0, #2 + lsl r0, r0, #0x14 + str r1, [sp, #0x34] + add r0, r1, r0 + str r0, [sp, #0x34] + ldr r0, [sp, #0x18] + lsl r1, r7, #2 + mov r4, #0x26 + add r5, r0, r1 +_021DCEA4: + str r4, [sp, #0x30] + lsl r0, r4, #0xc + str r0, [sp, #0x30] + add r0, sp, #0x28 + bl FUN_0201FF84 + mov r1, #1 + str r0, [r5, #0x10] + bl FUN_02020130 + ldr r0, [sp, #0x1c] + add r1, r6, r7 + cmp r1, r0 + blt _021DCEC8 + ldr r0, [r5, #0x10] + mov r1, #0 + bl FUN_020200A0 +_021DCEC8: + add r6, r6, #1 + add r4, #0x12 + add r5, r5, #4 + cmp r6, #0xa + blt _021DCEA4 + ldr r0, [sp, #0x20] + add r7, #0xa + add r0, #0x12 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #2 + blt _021DCE8A + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DCE34 + + thumb_func_start MOD17_021DCEE8 +MOD17_021DCEE8: ; 0x021DCEE8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r6, [r7, #0x60] + add r5, r1, #0 + cmp r6, r5 + bge _021DCF0E + cmp r6, r5 + bge _021DCF2C + lsl r0, r6, #2 + add r4, r7, r0 +_021DCEFC: + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_02020130 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r5 + blt _021DCEFC + b _021DCF2C +_021DCF0E: + cmp r6, r5 + ble _021DCF2C + sub r6, r6, #1 + cmp r6, r5 + blt _021DCF2C + lsl r0, r6, #2 + add r4, r7, r0 +_021DCF1C: + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_02020130 + sub r6, r6, #1 + sub r4, r4, #4 + cmp r6, r5 + bge _021DCF1C +_021DCF2C: + str r5, [r7, #0x60] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DCEE8 + + thumb_func_start MOD17_021DCF30 +MOD17_021DCF30: ; 0x021DCF30 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r4, #0 + add r5, r6, #0 +_021DCF3A: + ldr r0, [r5, #0x10] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x14 + blt _021DCF3A + add r0, r6, #0 + add r1, r7, #0 + bl MOD17_021DCFE0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DCF30 + + thumb_func_start MOD17_021DCF54 +MOD17_021DCF54: ; 0x021DCF54 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r2, #0 + ldr r7, [sp, #0x3c] + ldr r2, [sp, #0x28] + add r5, r0, #0 + add r0, r7, r2 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r4, r1, #0 + str r6, [sp, #8] + ldr r0, [r4] + str r3, [sp, #0x10] + add r1, r3, #0 + mov r3, #0 + bl FUN_02008F34 + str r0, [r5] + bl FUN_02009B04 + ldr r0, [r5] + bl FUN_02009474 + ldr r2, [sp, #0x2c] + ldr r1, [sp, #0x10] + add r0, r7, r2 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r0, [sp, #0x38] + mov r3, #0 + str r0, [sp, #8] + str r6, [sp, #0xc] + ldr r0, [r4, #4] + bl FUN_02008FEC + str r0, [r5, #4] + bl FUN_02009D68 + ldr r0, [r5, #4] + bl FUN_02009474 + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x10] + add r0, r7, r2 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #8] + mov r3, #0 + bl FUN_020090AC + ldr r2, [sp, #0x34] + str r0, [r5, #8] + add r0, r7, r2 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x10] + mov r3, #0 + bl FUN_020090AC + str r0, [r5, #0xc] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DCF54 + + thumb_func_start MOD17_021DCFE0 +MOD17_021DCFE0: ; 0x021DCFE0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_02009C0C + ldr r0, [r5, #4] + bl FUN_02009E04 + ldr r0, [r4] + ldr r1, [r5] + bl FUN_02009490 + ldr r0, [r4, #4] + ldr r1, [r5, #4] + bl FUN_02009490 + ldr r0, [r4, #8] + ldr r1, [r5, #8] + bl FUN_02009490 + ldr r0, [r4, #0xc] + ldr r1, [r5, #0xc] + bl FUN_02009490 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DCFE0 + + thumb_func_start MOD17_021DD014 +MOD17_021DD014: ; 0x021DD014 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r7, r2, #0 + add r6, r3, #0 + bl FUN_02009530 + str r0, [sp, #0x2c] + ldr r0, [r5, #4] + bl FUN_02009530 + str r0, [sp, #0x30] + ldr r0, [r5, #8] + bl FUN_02009530 + str r0, [sp, #0x34] + ldr r0, [r5, #0xc] + bl FUN_02009530 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + ldr r1, [r4] + ldr r2, [sp, #0x30] + str r1, [sp, #0x14] + ldr r1, [r4, #4] + ldr r3, [sp, #0x34] + str r1, [sp, #0x18] + ldr r1, [r4, #8] + str r1, [sp, #0x1c] + ldr r1, [r4, #0xc] + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r1, [sp, #0x2c] + add r0, r7, #0 + bl FUN_02008AA4 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DD014 + + thumb_func_start MOD17_021DD074 +MOD17_021DD074: ; 0x021DD074 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r4, r1, #0 + mov r1, #0xe5 + str r1, [sp] + mov r1, #0xe6 + str r1, [sp, #4] + mov r1, #0xe4 + str r1, [sp, #8] + mov r1, #0xe3 + str r1, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + ldr r1, _021DD170 ; =0x00000BB8 + add r5, r2, #0 + str r3, [sp, #0x18] + str r1, [sp, #0x14] + add r7, r0, #0 + add r1, r5, #0 + mov r2, #0xe + mov r3, #0x19 + bl MOD17_021DCF54 + add r0, r7, #0 + add r1, r5, #0 + add r2, sp, #0x3c + mov r3, #0 + bl MOD17_021DD014 + add r0, sp, #0x3c + str r0, [sp, #0x20] + mov r2, #2 + mov r0, #0xe + mov r1, #0x3a + str r0, [sp, #0x38] + lsl r1, r1, #0xc + lsl r0, r2, #0x14 + mov r6, #0 + str r4, [sp, #0x1c] + str r1, [sp, #0x28] + add r0, r1, r0 + str r2, [sp, #0x34] + str r6, [sp, #0x30] + str r0, [sp, #0x28] + mov r4, #0x67 + add r5, r7, #0 +_021DD0D0: + str r4, [sp, #0x24] + lsl r0, r4, #0xc + str r0, [sp, #0x24] + add r0, sp, #0x1c + bl FUN_0201FF84 + str r0, [r5, #0x10] + add r6, r6, #1 + add r4, #0x18 + add r5, r5, #4 + cmp r6, #2 + blt _021DD0D0 + ldr r0, [sp, #0x18] + mov r1, #0x1e + str r0, [r7, #0x1c] + mul r1, r0 + str r1, [r7, #0x20] + ldr r1, [sp, #0x7c] + str r1, [r7, #0x2c] + str r0, [r1] + ldr r1, [r7, #0x2c] + str r0, [r1, #8] + add r0, r7, #0 + mov r1, #0 + add r0, #0x90 + str r1, [r0] + add r0, r7, #0 + bl MOD17_021DD204 + mov r0, #0xe + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0xc1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r7, #0 + ldr r1, [sp, #0x78] + add r0, #0x18 + mov r2, #0xa + mov r3, #8 + bl MOD17_021DCC68 + ldr r0, [r7, #0x18] + mov r1, #0 + bl FUN_02019620 + mov r0, #0 + str r0, [sp] + mov r3, #4 + ldr r0, _021DD174 ; =0x00010200 + str r3, [sp, #4] + str r0, [sp, #8] + mov r2, #0xff + str r2, [sp, #0xc] + ldr r0, [r7, #0x18] + mov r1, #0x1a + add r2, #0x52 + bl MOD17_021DCD80 + mov r0, #0x48 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _021DD174 ; =0x00010200 + mov r2, #0xff + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r7, #0x18] + mov r1, #0x1a + add r2, #0x52 + mov r3, #5 + bl MOD17_021DCD80 + ldr r0, [r7, #0x18] + bl FUN_020191D0 + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD170: .word 0x00000BB8 +_021DD174: .word 0x00010200 + thumb_func_end MOD17_021DD074 + + thumb_func_start MOD17_021DD178 +MOD17_021DD178: ; 0x021DD178 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x24] + add r4, r1, #0 + cmp r0, #0 + beq _021DD188 + bl FUN_0200CAB4 +_021DD188: + ldr r0, [r5, #0x28] + cmp r0, #0 + beq _021DD192 + bl FUN_0200CAB4 +_021DD192: + add r0, r5, #0 + add r1, r4, #0 + bl MOD17_021DCFE0 + ldr r0, [r5, #0x18] + bl MOD17_021DCCE0 + add r0, r5, #0 + mov r1, #0 + mov r2, #0x94 + bl Call_FillMemWithValue + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DD178 + + thumb_func_start MOD17_021DD1AC +MOD17_021DD1AC: ; 0x021DD1AC + push {r4, lr} + add r4, r0, #0 + bl MOD17_021DD27C + ldr r0, [r4, #0x20] + mov r1, #0x1e + bl _s32_div_f + add r1, r0, #0 + ldr r0, [r4, #0x2c] + bl FUN_02083A34 + add r0, r4, #0 + bl MOD17_021DD1DC + add r0, r4, #0 + bl MOD17_021DD204 + add r4, #0x30 + add r0, r4, #0 + bl MOD17_021DD3BC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD1AC + + thumb_func_start MOD17_021DD1DC +MOD17_021DD1DC: ; 0x021DD1DC + push {r3, lr} + ldr r1, [r0, #0x2c] + ldr r2, [r1] + ldr r1, [r0, #0x1c] + cmp r1, r2 + beq _021DD1FC + str r2, [r0, #0x1c] + cmp r2, #0xa + bgt _021DD1FC + add r1, r0, #0 + add r1, #0x30 + bl MOD17_021DD2E0 + ldr r0, _021DD200 ; =0x00000683 + bl FUN_020054C8 +_021DD1FC: + pop {r3, pc} + nop +_021DD200: .word 0x00000683 + thumb_func_end MOD17_021DD1DC + + thumb_func_start MOD17_021DD204 +MOD17_021DD204: ; 0x021DD204 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #0x1c] + mov r1, #1 + str r0, [sp] + mov r0, #0xa + add r4, r1, #0 + mul r4, r0 + mov r7, #0 + add r5, r6, #0 +_021DD21A: + ldr r0, [sp] + add r1, r4, #0 + bl _s32_div_f + str r0, [sp, #4] + cmp r0, #0xa + ble _021DD22C + bl ErrorHandling +_021DD22C: + ldr r0, [r5, #0x10] + ldr r1, [sp, #4] + bl FUN_02020130 + ldr r0, [sp, #4] + add r1, r0, #0 + ldr r0, [sp] + mul r1, r4 + sub r0, r0, r1 + str r0, [sp] + add r0, r4, #0 + mov r1, #0xa + bl _s32_div_f + add r4, r0, #0 + add r0, r6, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + bne _021DD26E + ldr r0, [r6, #0x1c] + cmp r0, #0xa + bgt _021DD26E + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_0202027C + cmp r7, #1 + bne _021DD26E + add r1, r6, #0 + add r1, #0x90 + mov r0, #1 + str r0, [r1] +_021DD26E: + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #2 + blt _021DD21A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DD204 + + thumb_func_start MOD17_021DD27C +MOD17_021DD27C: ; 0x021DD27C + ldr r1, [r0, #0x20] + sub r1, r1, #1 + bmi _021DD284 + str r1, [r0, #0x20] +_021DD284: + bx lr + .align 2, 0 + thumb_func_end MOD17_021DD27C + + thumb_func_start MOD17_021DD288 +MOD17_021DD288: ; 0x021DD288 + str r1, [r0] + str r1, [r0, #4] + sub r1, r2, r1 + str r1, [r0, #8] + str r3, [r0, #0x10] + mov r1, #0 + str r1, [r0, #0xc] + bx lr + thumb_func_end MOD17_021DD288 + + thumb_func_start MOD17_021DD298 +MOD17_021DD298: ; 0x021DD298 + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4, #0xc] + ldr r0, [r4, #8] + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + ldr r1, [r4, #0x10] + lsl r1, r1, #0xc + bl FX_Div + ldr r1, [r4, #4] + add r0, r0, r1 + str r0, [r4] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r0, r0, #1 + cmp r0, r1 + bgt _021DD2D8 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_021DD2D8: + str r1, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD298 + + thumb_func_start MOD17_021DD2E0 +MOD17_021DD2E0: ; 0x021DD2E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + mov r1, #0x3a + mov r0, #2 + lsl r1, r1, #0xc + lsl r0, r0, #0x14 + ldr r4, [sp, #4] + str r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r4, #0 + ldr r6, [sp] + mov r7, #0 + mov r5, #0x67 + str r0, [sp, #8] +_021DD302: + ldr r0, [r6, #0x10] + mov r1, #2 + str r0, [r4, #4] + bl FUN_020200EC + ldr r2, [sp, #8] + str r5, [sp, #0xc] + lsl r0, r5, #0xc + add r2, #0xc + add r3, sp, #0xc + str r0, [sp, #0xc] + ldmia r3!, {r0, r1} + str r2, [sp, #8] + stmia r2!, {r0, r1} + ldr r0, [r3] + add r7, r7, #1 + str r0, [r2] + add r6, r6, #4 + add r4, r4, #4 + add r5, #0x18 + cmp r7, #2 + blt _021DD302 + ldr r0, [sp] + ldr r1, [r0, #0x1c] + mov r0, #0xa + sub r0, r0, r1 + cmp r0, #0 + ble _021DD35C + lsl r0, r0, #0xc + ldr r2, _021DD3B8 ; =0x00000266 + asr r1, r0, #0x1f + mov r3, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r4, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r4, #0xc + orr r1, r0 + lsl r0, r2, #1 + add r4, r1, r0 + b _021DD360 +_021DD35C: + mov r4, #1 + lsl r4, r4, #0xc +_021DD360: + ldr r0, [sp, #4] + mov r2, #1 + add r0, #0x24 + add r1, r4, #0 + lsl r2, r2, #0xc + mov r3, #0x10 + bl MOD17_021DD288 + mov r2, #6 + asr r1, r4, #0x1f + add r0, r4, #0 + lsl r2, r2, #0xe + mov r3, #0 + bl _ll_mul + mov r3, #2 + mov r2, #0 + lsl r3, r3, #0xa + add r3, r0, r3 + adc r1, r2 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + mov r0, #6 + lsl r0, r0, #0xe + sub r4, r1, r0 + ldr r0, [sp, #4] + add r1, r4, #0 + add r0, #0x38 + mov r3, #0x10 + bl MOD17_021DD288 + ldr r0, [sp, #4] + add r1, r4, #0 + add r0, #0x4c + mov r2, #0 + mov r3, #0x10 + bl MOD17_021DD288 + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021DD3B8: .word 0x00000266 + thumb_func_end MOD17_021DD2E0 + + thumb_func_start MOD17_021DD3BC +MOD17_021DD3BC: ; 0x021DD3BC + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021DD44E + add r0, r5, #0 + add r0, #0x24 + bl MOD17_021DD298 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x38 + bl MOD17_021DD298 + add r0, r5, #0 + add r0, #0x4c + bl MOD17_021DD298 + ldr r0, [r5, #0x24] + add r1, sp, #0xc + str r0, [sp, #0xc] + ldr r0, [r5, #0x24] + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + str r0, [sp, #0x14] + ldr r0, [r5, #4] + bl FUN_02020064 + ldr r0, [r5, #8] + add r1, sp, #0xc + bl FUN_02020064 + add r6, r5, #0 + add r6, #0xc + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r5, #0x38] + sub r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r5, #0x4c] + sub r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5, #4] + add r1, r2, #0 + bl FUN_02020044 + add r6, r5, #0 + add r6, #0x18 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r1, [sp, #4] + ldr r0, [r5, #0x4c] + sub r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5, #8] + add r1, r2, #0 + bl FUN_02020044 + cmp r4, #0 + beq _021DD44E + mov r0, #0 + str r0, [r5] +_021DD44E: + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DD3BC + + thumb_func_start MOD17_021DD454 +MOD17_021DD454: ; 0x021DD454 + ldr r0, [r0] + cmp r0, #1 + beq _021DD45E + mov r0, #1 + bx lr +_021DD45E: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD17_021DD454 + + thumb_func_start MOD17_021DD464 +MOD17_021DD464: ; 0x021DD464 + push {r3, lr} + sub sp, #0x10 + add r3, r1, #0 + stmia r0!, {r1} + add r3, #0x48 + str r3, [sp] + ldr r1, [r1, #0x74] + lsl r1, r1, #2 + add r1, #0x89 + str r1, [sp, #4] + mov r1, #0x10 + str r1, [sp, #8] + add r1, sp, #0 + str r2, [sp, #0xc] + bl MOD17_021DBD68 + add sp, #0x10 + pop {r3, pc} + thumb_func_end MOD17_021DD464 + + thumb_func_start MOD17_021DD488 +MOD17_021DD488: ; 0x021DD488 + ldr r3, _021DD490 ; =MOD17_021DBD80 + add r0, r0, #4 + mov r1, #1 + bx r3 + .align 2, 0 +_021DD490: .word MOD17_021DBD80 + thumb_func_end MOD17_021DD488 + + thumb_func_start MOD17_021DD494 +MOD17_021DD494: ; 0x021DD494 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl MOD17_021DBDE8 + mov r1, #0x1c + mov r0, #0 +_021DD4A2: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021DD4A2 + pop {r4, pc} + thumb_func_end MOD17_021DD494 + + thumb_func_start MOD17_021DD4AC +MOD17_021DD4AC: ; 0x021DD4AC + push {r3, r4, lr} + sub sp, #0x6c + add r2, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + add r1, r2, #0 + bl MOD17_021DD9E8 + add r0, sp, #0 + add r1, r4, #0 + bl MOD17_021DD9FC + add r0, sp, #0 + bl MOD17_021DD6DC + add sp, #0x6c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD4AC + + thumb_func_start MOD17_021DD4D0 +MOD17_021DD4D0: ; 0x021DD4D0 + push {r3, r4, lr} + sub sp, #0x6c + add r2, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + add r1, r2, #0 + bl MOD17_021DD9E8 + add r0, sp, #0 + add r1, r4, #0 + bl MOD17_021DDA44 + add r0, sp, #0 + bl MOD17_021DD6DC + add sp, #0x6c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD4D0 + + thumb_func_start MOD17_021DD4F4 +MOD17_021DD4F4: ; 0x021DD4F4 + push {r3, r4, lr} + sub sp, #0x6c + add r2, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + add r1, r2, #0 + bl MOD17_021DD9E8 + add r0, sp, #0 + add r1, r4, #0 + bl MOD17_021DDA44 + add r0, sp, #0 + bl MOD17_021DD778 + add sp, #0x6c + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD4F4 + + thumb_func_start MOD17_021DD518 +MOD17_021DD518: ; 0x021DD518 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x95 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #1 + bne _021DD52E + sub r0, #0x48 + add r0, r4, r0 + bl MOD17_021DD488 +_021DD52E: + mov r0, #0x96 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021DD53E + add r0, r4, #0 + bl MOD17_021DD838 +_021DD53E: + pop {r4, pc} + thumb_func_end MOD17_021DD518 + + thumb_func_start MOD17_021DD540 +MOD17_021DD540: ; 0x021DD540 + push {r4, lr} + mov r1, #0x95 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + beq _021DD552 + bl MOD17_021DD984 +_021DD552: + add r0, r4, #0 + bl MOD17_021DD968 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl MOD17_021D750C + mov r0, #6 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] + sub r0, #8 + add r0, r4, r0 + bl MOD17_021DBA1C + add r0, r4, #0 + bl MOD17_021DD86C + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD540 + + thumb_func_start MOD17_021DD58C +MOD17_021DD58C: ; 0x021DD58C + ldr r3, _021DD590 ; =MOD17_021D7C1C + bx r3 + .align 2, 0 +_021DD590: .word MOD17_021D7C1C + thumb_func_end MOD17_021DD58C + + thumb_func_start MOD17_021DD594 +MOD17_021DD594: ; 0x021DD594 + mov r2, #0x96 + lsl r2, r2, #2 + str r1, [r0, r2] + bx lr + thumb_func_end MOD17_021DD594 + + thumb_func_start MOD17_021DD59C +MOD17_021DD59C: ; 0x021DD59C + str r1, [r0, #0x1c] + bx lr + thumb_func_end MOD17_021DD59C + + thumb_func_start MOD17_021DD5A0 +MOD17_021DD5A0: ; 0x021DD5A0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r2, #0 + mov r2, #0x61 + add r4, r1, #0 + lsl r2, r2, #2 + add r5, r0, #0 + add r1, r2, #0 + add r0, r5, r2 + str r6, [sp] + add r1, #0xac + add r2, #0xb0 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + add r3, r4, #0 + bl MOD17_021DA140 + mov r0, #0x95 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021DD5E8 + mov r3, #0x88 + ldr r0, [r5, #0x38] + mov r1, #2 + mov r2, #0 + sub r3, r3, r4 + bl FUN_020179E0 + mov r3, #0x10 + ldr r0, [r5, #0x38] + mov r1, #2 + mov r2, #3 + sub r3, r3, r6 + bl FUN_020179E0 +_021DD5E8: + mov r0, #0x23 + lsl r0, r0, #4 + str r4, [r5, r0] + add r0, r0, #4 + str r6, [r5, r0] + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DD5A0 + + thumb_func_start MOD17_021DD5F8 +MOD17_021DD5F8: ; 0x021DD5F8 + mov r3, #0x8e + lsl r3, r3, #2 + str r1, [r0, r3] + add r1, r3, #4 + str r2, [r0, r1] + bx lr + thumb_func_end MOD17_021DD5F8 + + thumb_func_start MOD17_021DD604 +MOD17_021DD604: ; 0x021DD604 + mov r2, #9 + lsl r2, r2, #6 + strh r1, [r0, r2] + bx lr + thumb_func_end MOD17_021DD604 + + thumb_func_start MOD17_021DD60C +MOD17_021DD60C: ; 0x021DD60C + push {r3, r4} + mov r4, #0x91 + lsl r4, r4, #2 + str r1, [r0, r4] + add r1, r4, #4 + str r2, [r0, r1] + add r4, #8 + str r3, [r0, r4] + pop {r3, r4} + bx lr + thumb_func_end MOD17_021DD60C + + thumb_func_start MOD17_021DD620 +MOD17_021DD620: ; 0x021DD620 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x7f + lsl r0, r0, #2 + add r4, r1, #0 + add r6, r2, #0 + add r0, r5, r0 + add r1, sp, #8 + add r2, sp, #4 + bl MOD17_021DB878 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r5, r0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD17_021DA348 + mov r0, #0x23 + lsl r0, r0, #4 + ldr r1, [sp, #0x10] + ldr r2, [r5, r0] + sub r1, r4, r1 + add r0, r0, #4 + add r7, r2, r1 + ldr r1, [r5, r0] + ldr r0, [sp, #0xc] + sub r0, r6, r0 + add r0, r1, r0 + str r0, [sp] + ldr r2, [sp] + add r0, r5, #0 + add r1, r7, #0 + bl MOD17_021DD5A0 + ldr r2, [sp] + add r0, r5, #0 + sub r1, r4, r7 + sub r2, r6, r2 + bl MOD17_021DD5F8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DD620 + + thumb_func_start MOD17_021DD678 +MOD17_021DD678: ; 0x021DD678 + push {r4, r5, r6, lr} + add r4, r2, #0 + mov r2, #0x92 + add r5, r0, #0 + mov r0, #0x28 + lsl r2, r2, #2 + sub r0, r0, r3 + ldr r2, [r5, r2] + lsl r0, r0, #0xc + add r6, r1, #0 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + add r2, r0, #0 + add r0, r5, #0 + mov r5, #2 + add r3, r1, #0 + add r1, r6, #0 + mov r6, #0 + lsl r5, r5, #0xa + add r5, r2, r5 + adc r3, r6 + lsl r2, r3, #0x14 + lsr r3, r5, #0xc + orr r3, r2 + asr r2, r3, #0xc + sub r2, r4, r2 + bl MOD17_021DD620 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD17_021DD678 + + thumb_func_start MOD17_021DD6B8 +MOD17_021DD6B8: ; 0x021DD6B8 + mov r2, #0x25 + lsl r2, r2, #4 + strh r1, [r0, r2] + sub r2, #0xcc + ldr r3, _021DD6C8 ; =MOD17_021DA3D8 + add r0, r0, r2 + bx r3 + nop +_021DD6C8: .word MOD17_021DA3D8 + thumb_func_end MOD17_021DD6B8 + + thumb_func_start MOD17_021DD6CC +MOD17_021DD6CC: ; 0x021DD6CC + mov r2, #0x61 + lsl r2, r2, #2 + ldr r3, _021DD6D8 ; =MOD17_021DA1DC + add r0, r0, r2 + bx r3 + nop +_021DD6D8: .word MOD17_021DA1DC + thumb_func_end MOD17_021DD6CC + + thumb_func_start MOD17_021DD6DC +MOD17_021DD6DC: ; 0x021DD6DC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0x97 + ldr r0, [r5, #0x68] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x97 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x8b + ldr r1, [r5, #0x68] + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [r5, #0x68] + bl FUN_020669C0 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5] + ldr r1, [r4, r1] + bl FUN_02027CB8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD7F4 + ldr r1, [r5, #0x58] + ldr r2, [r5, #0x68] + add r0, r4, #0 + bl MOD17_021D7B94 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r2, [r5, #0x68] + add r0, r4, r0 + mov r1, #0x15 + bl MOD17_021DB9F4 + ldr r1, [r5, #0x68] + mov r0, #0x14 + bl MOD17_021D74E0 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD88C + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD954 + mov r1, #0x83 + lsl r1, r1, #2 + add r0, r4, r1 + sub r1, #0x88 + ldr r2, [r5, #0x68] + add r1, r4, r1 + bl MOD17_021DD464 + mov r0, #0x95 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD994 + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DD6DC + + thumb_func_start MOD17_021DD778 +MOD17_021DD778: ; 0x021DD778 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #0x97 + ldr r0, [r5, #0x68] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x97 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x8b + ldr r1, [r5, #0x68] + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [r5, #0x68] + bl FUN_020669C0 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5] + ldr r1, [r4, r1] + bl FUN_02027CB8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD7F4 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r2, [r5, #0x68] + add r0, r4, r0 + mov r1, #0x15 + bl MOD17_021DB9F4 + ldr r1, [r5, #0x68] + mov r0, #0x14 + bl MOD17_021D74E0 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD88C + mov r0, #0x95 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r1, #1 + add r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + add r1, r5, #0 + bl MOD17_021DD994 + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD17_021DD778 + + thumb_func_start MOD17_021DD7F4 +MOD17_021DD7F4: ; 0x021DD7F4 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r1, #0 + ldr r1, _021DD834 ; =0x000002CE + add r5, r0, #0 + str r1, [sp] + mov r1, #0x76 + str r1, [sp, #4] + mov r1, #0x13 + str r1, [sp, #8] + ldr r1, [r4, #0x68] + str r1, [sp, #0xc] + ldr r2, [r4, #0x68] + add r1, sp, #0 + bl MOD17_021D7B68 + ldr r3, [r4, #0x68] + add r0, r5, #0 + add r1, sp, #0x10 + add r2, r4, #0 + bl MOD17_021DDA8C + add r0, r5, #0 + add r1, sp, #0x10 + bl MOD17_021D78A0 + add r0, sp, #0x10 + bl MOD17_021D7A24 + add sp, #0x28 + pop {r3, r4, r5, pc} + nop +_021DD834: .word 0x000002CE + thumb_func_end MOD17_021DD7F4 + + thumb_func_start MOD17_021DD838 +MOD17_021DD838: ; 0x021DD838 + push {r3, r4, lr} + sub sp, #4 + mov r3, #0x91 + lsl r3, r3, #2 + add r1, r0, r3 + str r1, [sp] + add r1, r3, #0 + sub r1, #0x14 + ldr r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xc + ldr r1, [r0, r1] + add r1, r2, r1 + add r2, r3, #0 + sub r2, #0x10 + ldr r4, [r0, r2] + add r2, r3, #0 + sub r2, #8 + sub r3, r3, #4 + ldr r2, [r0, r2] + ldrh r3, [r0, r3] + add r2, r4, r2 + bl MOD17_021D7C28 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD17_021DD838 + + thumb_func_start MOD17_021DD86C +MOD17_021DD86C: ; 0x021DD86C + push {r4, lr} + add r4, r0, #0 + bl MOD17_021D78BC + add r0, r4, #0 + bl MOD17_021D7BE4 + mov r0, #0x95 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021DD88A + add r0, r4, #0 + bl MOD17_021D7C10 +_021DD88A: + pop {r4, pc} + thumb_func_end MOD17_021DD86C + + thumb_func_start MOD17_021DD88C +MOD17_021DD88C: ; 0x021DD88C + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + add r2, sp, #0x28 + mov r0, #0 + add r6, r1, #0 + add r3, r2, #0 + add r1, r0, #0 + stmia r3!, {r0, r1} + stmia r3!, {r0, r1} + stmia r3!, {r0, r1} + stmia r3!, {r0, r1} + str r0, [r3] + ldr r0, [r5] + str r0, [sp, #0x28] + ldr r0, [r5, #4] + str r0, [sp, #0x2c] + ldr r0, [r5, #0x10] + str r0, [sp, #0x30] + ldr r0, [r5, #0x28] + str r0, [sp, #0x34] + ldr r0, [r5, #0x20] + str r0, [sp, #0x38] + ldr r0, [r5, #0x38] + str r0, [sp, #0x3c] + mov r0, #6 + lsl r0, r0, #6 + ldr r1, [r5, r0] + str r1, [sp, #0x40] + add r1, r0, #0 + sub r1, #8 + add r1, r5, r1 + str r1, [sp, #0x44] + mov r1, #0x15 + add r0, r0, #4 + str r1, [sp, #0x48] + add r0, r5, r0 + add r1, r2, #0 + bl MOD17_021D9F80 + ldr r0, [r6] + bl FUN_02027CA8 + add r7, r0, #0 + ldr r0, [r6] + bl FUN_02027CB0 + add r4, r0, #0 + ldr r0, [r6] + bl FUN_02027CA0 + str r4, [sp] + str r0, [sp, #4] + ldr r0, [r6, #0x68] + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [sp, #8] + add r0, r5, r1 + add r1, #0xa4 + ldr r1, [r5, r1] + add r2, sp, #0x18 + add r3, r7, #0 + bl MOD17_021D9FF0 + ldr r0, [r6, #0x54] + mov r7, #0 + cmp r0, #0 + ble _021DD950 + add r4, r6, #0 +_021DD916: + ldr r0, [r4, #4] + bl FUN_02027CF8 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + bl FUN_02027CFC + str r0, [sp, #0x10] + ldr r0, [r4, #4] + bl FUN_02027D00 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + bl FUN_02027D04 + str r0, [sp] + mov r0, #0x61 + lsl r0, r0, #2 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r5, r0 + bl MOD17_021DA064 + ldr r0, [r6, #0x54] + add r7, r7, #1 + add r4, r4, #4 + cmp r7, r0 + blt _021DD916 +_021DD950: + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DD88C + + thumb_func_start MOD17_021DD954 +MOD17_021DD954: ; 0x021DD954 + add r2, r1, #0 + mov r1, #0x61 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r1, [r2, #0x5c] + ldr r3, _021DD964 ; =MOD17_021DA2F0 + ldr r2, [r2, #0x68] + bx r3 + .align 2, 0 +_021DD964: .word MOD17_021DA2F0 + thumb_func_end MOD17_021DD954 + + thumb_func_start MOD17_021DD968 +MOD17_021DD968: ; 0x021DD968 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021DA100 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD17_021D9FD4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DD968 + + thumb_func_start MOD17_021DD984 +MOD17_021DD984: ; 0x021DD984 + mov r1, #0x61 + lsl r1, r1, #2 + ldr r3, _021DD990 ; =MOD17_021DA33C + add r0, r0, r1 + bx r3 + nop +_021DD990: .word MOD17_021DA33C + thumb_func_end MOD17_021DD984 + + thumb_func_start MOD17_021DD994 +MOD17_021DD994: ; 0x021DD994 + push {r3, r4, r5, lr} + add r3, r1, #0 + mov r1, #0x23 + add r4, r0, #0 + mov r2, #0x48 + lsl r1, r1, #4 + str r2, [r4, r1] + mov r5, #0x38 + add r2, r1, #4 + str r5, [r4, r2] + add r2, r1, #0 + add r2, #8 + str r5, [r4, r2] + add r2, r1, #0 + mov r5, #0x40 + add r2, #0xc + str r5, [r4, r2] + lsl r2, r5, #6 + add r5, r1, #0 + add r5, #0x14 + str r2, [r4, r5] + add r5, r1, #0 + add r5, #0x18 + str r2, [r4, r5] + add r5, r1, #0 + add r5, #0x1c + str r2, [r4, r5] + mov r2, #0 + add r1, #0x10 + strh r2, [r4, r1] + ldr r1, [r3, #0x60] + ldr r2, [r3, #0x64] + bl MOD17_021DD5A0 + mov r0, #0x25 + ldr r1, _021DD9E4 ; =0x00007FFF + lsl r0, r0, #4 + strh r1, [r4, r0] + pop {r3, r4, r5, pc} + nop +_021DD9E4: .word 0x00007FFF + thumb_func_end MOD17_021DD994 + + thumb_func_start MOD17_021DD9E8 +MOD17_021DD9E8: ; 0x021DD9E8 + ldr r2, [r1] + str r2, [r0, #0x58] + ldr r2, [r1, #4] + str r2, [r0, #0x60] + ldr r2, [r1, #8] + str r2, [r0, #0x64] + ldr r1, [r1, #0xc] + str r1, [r0, #0x68] + bx lr + .align 2, 0 + thumb_func_end MOD17_021DD9E8 + + thumb_func_start MOD17_021DD9FC +MOD17_021DD9FC: ; 0x021DD9FC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_02027564 + add r6, r5, #0 + str r0, [r5] + mov r4, #0 + str r4, [r5, #0x54] + add r6, #0x54 +_021DDA12: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02027528 + cmp r0, #0 + beq _021DDA34 + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02027590 + ldr r1, [r5, #0x54] + lsl r1, r1, #2 + add r1, r5, r1 + str r0, [r1, #4] + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_021DDA34: + add r4, r4, #1 + cmp r4, #0xa + blt _021DDA12 + add r0, r7, #0 + bl FUN_0202766C + str r0, [r5, #0x5c] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DD9FC + + thumb_func_start MOD17_021DDA44 +MOD17_021DDA44: ; 0x021DDA44 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_02027A94 + add r6, r5, #0 + str r0, [r5] + mov r4, #0 + str r4, [r5, #0x54] + add r6, #0x54 +_021DDA5A: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02027A14 + cmp r0, #0 + beq _021DDA7C + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02027AC4 + ldr r1, [r5, #0x54] + lsl r1, r1, #2 + add r1, r5, r1 + str r0, [r1, #4] + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] +_021DDA7C: + add r4, r4, #1 + cmp r4, #0x14 + blt _021DDA5A + add r0, r7, #0 + bl FUN_02027C28 + str r0, [r5, #0x5c] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DDA44 + + thumb_func_start MOD17_021DDA8C +MOD17_021DDA8C: ; 0x021DDA8C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r7, r3, #0 + add r5, r0, #0 + add r6, r2, #0 + add r0, r4, #0 + add r1, r7, #0 + bl MOD17_021D7AFC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD17_021DDAAC + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD17_021DDA8C + + thumb_func_start MOD17_021DDAAC +MOD17_021DDAAC: ; 0x021DDAAC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r2, #0 + ldr r0, [r0, #0x54] + add r4, r1, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + cmp r0, #0 + ble _021DDB1E + add r6, r2, #0 +_021DDAC6: + ldr r0, [r6, #4] + bl FUN_02027CF8 + add r5, r0, #0 + ldr r0, [r4, #0x10] + add r1, r5, #0 + bl FUN_02020CB0 + cmp r0, #1 + bne _021DDB0C + mov r0, #1 + str r0, [sp] + ldr r3, [sp, #0xc] + mov r0, #0x19 + add r1, r5, #1 + mov r2, #0 + bl FUN_02006C98 + add r7, r0, #0 + ldr r0, [r4, #0x10] + add r1, r7, #0 + add r2, r5, #0 + bl FUN_02020CD4 + ldr r1, [r4] + lsl r5, r5, #3 + add r1, r1, r5 + add r0, r7, #0 + add r1, r1, #4 + bl FUN_020B0088 + ldr r0, [sp, #4] + ldr r1, [r0] + ldr r0, [r4] + str r1, [r0, r5] +_021DDB0C: + ldr r0, [sp, #0x10] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + ldr r1, [r0, #0x54] + ldr r0, [sp, #0x10] + cmp r0, r1 + blt _021DDAC6 +_021DDB1E: + mov r0, #1 + mov r1, #0 + str r0, [sp] + ldr r3, [sp, #0xc] + mov r0, #0x19 + add r2, r1, #0 + bl FUN_02006C98 + add r5, r0, #0 + ldr r0, [r4, #0x14] + add r1, r5, #0 + mov r2, #0 + bl FUN_02020CD4 + ldr r1, [r4, #8] + add r0, r5, #0 + add r1, r1, #4 + bl FUN_020B0138 + ldr r0, [sp, #4] + ldr r1, [r0] + ldr r0, [r4, #8] + str r1, [r0] + ldr r0, [r4, #8] + mov r1, #3 + str r1, [r0, #8] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD17_021DDAAC + + thumb_func_start MOD17_021DDB58 +MOD17_021DDB58: ; 0x021DDB58 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r2, #2 + add r5, r0, #0 + mov r0, #3 + mov r1, #0xd + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r2, #1 + mov r0, #3 + mov r1, #0xe + lsl r2, r2, #0x12 + bl FUN_0201681C + mov r1, #0x65 + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #0xd + bl FUN_02006268 + mov r2, #0x65 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021DDC28 ; =MOD17_021DDD40 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_02015F1C + add r0, r5, #0 + bl FUN_0200628C + add r5, r0, #0 + ldr r0, [r5, #8] + cmp r0, #0 + ldr r0, [r5] + bne _021DDBB4 + ldr r1, [r5, #4] + bl FUN_02027008 + str r0, [r4] + b _021DDBBC +_021DDBB4: + ldr r1, [r5, #4] + bl FUN_02027044 + str r0, [r4, #4] +_021DDBBC: + ldr r0, [r5, #4] + str r0, [r4, #8] + ldr r0, [r5, #8] + str r0, [r4, #0xc] + bl MOD17_021D7794 + ldr r0, _021DDC2C ; =0x021C4918 + mov r1, #0 + strb r1, [r0, #5] + bl FUN_0201E7A0 + add r0, r4, #0 + add r0, #0x14 + mov r1, #0xe + bl MOD17_021D7CC0 + ldr r0, [r4, #0x4c] + str r0, [sp] + mov r0, #0x48 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + cmp r0, #0 + add r0, sp, #0 + bne _021DDBFC + ldr r1, [r4] + bl MOD17_021DD4AC + b _021DDC02 +_021DDBFC: + ldr r1, [r4, #4] + bl MOD17_021DD4D0 +_021DDC02: + str r0, [r4, #0x10] + add r0, r4, #0 + bl MOD17_021DDD54 + add r0, r4, #0 + bl MOD17_021DDDFC + add r0, r4, #0 + bl MOD17_021DDE50 + add r0, r4, #0 + bl MOD17_021DDF1C + add r0, r4, #0 + bl MOD17_021DDFAC + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021DDC28: .word MOD17_021DDD40 +_021DDC2C: .word 0x021C4918 + thumb_func_end MOD17_021DDB58 + + thumb_func_start MOD17_021DDC30 +MOD17_021DDC30: ; 0x021DDC30 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + bl FUN_02006278 + add r5, r0, #0 + bl FUN_020222AC + bl FUN_020B02C8 + ldr r0, [r5, #0x10] + bl MOD17_021DD518 + mov r0, #0 + add r1, r0, #0 + bl FUN_020222B4 + add r5, #0x14 + add r0, r5, #0 + bl MOD17_021D7D00 + ldr r0, [r4] + cmp r0, #5 + bhi _021DDCEA + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021DDC6C: ; jump table + .short _021DDC78 - _021DDC6C - 2 ; case 0 + .short _021DDC7E - _021DDC6C - 2 ; case 1 + .short _021DDC9C - _021DDC6C - 2 ; case 2 + .short _021DDCAC - _021DDC6C - 2 ; case 3 + .short _021DDCBC - _021DDC6C - 2 ; case 4 + .short _021DDCDC - _021DDC6C - 2 ; case 5 +_021DDC78: + add r0, r0, #1 + str r0, [r4] + b _021DDCEA +_021DDC7E: + mov r0, #6 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + mov r0, #0 + mov r1, #5 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDCEA +_021DDC9C: + bl FUN_0200E308 + cmp r0, #0 + beq _021DDCEA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDCEA +_021DDCAC: + ldr r1, _021DDCF0 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + beq _021DDCEA + add r0, r0, #1 + str r0, [r4] + b _021DDCEA +_021DDCBC: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xd + str r0, [sp, #8] + mov r0, #0 + mov r1, #2 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DDCEA +_021DDCDC: + bl FUN_0200E308 + cmp r0, #0 + beq _021DDCEA + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021DDCEA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021DDCF0: .word 0x021C48B8 + thumb_func_end MOD17_021DDC30 + + thumb_func_start MOD17_021DDCF4 +MOD17_021DDCF4: ; 0x021DDCF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl MOD17_021DD540 + add r0, r4, #0 + bl MOD17_021DDEDC + add r0, r4, #0 + bl MOD17_021DDF84 + add r4, #0x14 + add r0, r4, #0 + bl MOD17_021D7CD8 + bl MOD17_021D77B4 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0xd + bl FUN_020168D0 + mov r0, #0xe + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD17_021DDCF4 + + thumb_func_start MOD17_021DDD40 +MOD17_021DDD40: ; 0x021DDD40 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl MOD17_021DD58C + add r4, #0x14 + add r0, r4, #0 + bl MOD17_021D7CF0 + pop {r4, pc} + thumb_func_end MOD17_021DDD40 + + thumb_func_start MOD17_021DDD54 +MOD17_021DDD54: ; 0x021DDD54 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x40 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #0x19 + mov r1, #0x7e + mov r2, #0 + mov r3, #0x60 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r2, [r5, #0x4c] + mov r0, #0x19 + mov r1, #0x7d + mov r3, #1 + bl FUN_0200687C + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _021DDD92 + mov r1, #0x80 + mov r4, #4 + b _021DDD96 +_021DDD92: + mov r1, #0x7f + mov r4, #3 +_021DDD96: + mov r0, #0xe + str r0, [sp] + mov r0, #0x19 + mov r2, #0 + add r3, sp, #0x10 + bl FUN_02006BDC + ldr r2, [sp, #0x10] + mov r3, #0 + str r3, [sp] + add r6, r0, #0 + ldrh r0, [r2] + mov r1, #1 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r2, #2] + add r2, #0xc + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5, #0x4c] + bl FUN_02018148 + ldr r1, [sp, #0x10] + mov r2, #0 + ldrh r0, [r1] + add r3, r2, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp] + ldrh r0, [r1, #2] + mov r1, #1 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [r5, #0x4c] + bl FUN_020186B4 + add r0, r6, #0 + bl FUN_02016A18 + ldr r0, [r5, #0x4c] + mov r1, #1 + bl FUN_0201AC68 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD17_021DDD54 + + thumb_func_start MOD17_021DDDFC +MOD17_021DDDFC: ; 0x021DDDFC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #0xc + add r1, r0, #0 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r2, [r4, #0x4c] + mov r0, #0xc + mov r1, #0xb + mov r3, #4 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xe + str r0, [sp, #0xc] + ldr r2, [r4, #0x4c] + mov r0, #0xc + mov r1, #0xa + mov r3, #4 + bl FUN_0200687C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DDDFC + + thumb_func_start MOD17_021DDE50 +MOD17_021DDE50: ; 0x021DDE50 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x14 + mov r1, #0x19 + mov r2, #0xe9 + mov r3, #0 + bl MOD17_021D7934 + mov r0, #1 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x14 + mov r1, #0x19 + mov r2, #0xea + mov r3, #0 + bl MOD17_021D7954 + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + add r0, r4, #0 + add r0, #0x14 + mov r1, #0x19 + mov r2, #0xe8 + mov r3, #0 + bl MOD17_021D7978 + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + add r0, r4, #0 + add r0, #0x14 + mov r1, #0x19 + mov r2, #0xe7 + mov r3, #0 + bl MOD17_021D7994 + mov r0, #0x64 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0xfa + add r0, #0x14 + lsl r1, r1, #2 + mov r2, #0 + mov r3, #0x90 + bl MOD17_021D78D0 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_02020238 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD17_021DDE50 + + thumb_func_start MOD17_021DDEDC +MOD17_021DDEDC: ; 0x021DDEDC + push {r4, lr} + mov r1, #0xfa + add r4, r0, #0 + add r0, #0x14 + lsl r1, r1, #2 + bl MOD17_021D79B0 + add r0, r4, #0 + mov r1, #0xfa + add r0, #0x14 + lsl r1, r1, #2 + bl MOD17_021D79C4 + add r0, r4, #0 + mov r1, #0xfa + add r0, #0x14 + lsl r1, r1, #2 + bl MOD17_021D79D8 + add r0, r4, #0 + mov r1, #0xfa + add r0, #0x14 + lsl r1, r1, #2 + bl MOD17_021D79EC + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DDEDC + + thumb_func_start MOD17_021DDF1C +MOD17_021DDF1C: ; 0x021DDF1C + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0xe + mov r1, #1 + bl FUN_02018FF4 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r4, r1] + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #5 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r4, #0x4c] + ldr r1, [r4, r1] + mov r2, #3 + mov r3, #0 + bl FUN_02019064 + mov r0, #0 + mov r1, #0xa0 + mov r2, #0xe + bl FUN_02002ED0 + mov r0, #3 + mov r1, #0 + bl FUN_020178BC + mov r0, #0 + mov r1, #2 + bl FUN_020178BC + mov r0, #1 + add r1, r0, #0 + bl FUN_020178BC + mov r1, #3 + ldr r0, [r4, #0x4c] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DDF1C + + thumb_func_start MOD17_021DDF84 +MOD17_021DDF84: ; 0x021DDF84 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02019570 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02019178 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD17_021DDF84 + + thumb_func_start MOD17_021DDFAC +MOD17_021DDFAC: ; 0x021DDFAC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02019620 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021DDFCA + add r0, r4, #0 + bl MOD17_021DDFDC + b _021DDFD0 +_021DDFCA: + add r0, r4, #0 + bl MOD17_021DE0F4 +_021DDFD0: + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_020191D0 + pop {r4, pc} + thumb_func_end MOD17_021DDFAC + + thumb_func_start MOD17_021DDFDC +MOD17_021DDFDC: ; 0x021DDFDC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r2, _021DE0EC ; =0x00000151 + add r5, r0, #0 + mov r0, #0 + mov r1, #0x1a + mov r3, #0xd + bl FUN_0200A86C + str r0, [sp, #0x10] + cmp r0, #0 + bne _021DDFF8 + bl ErrorHandling +_021DDFF8: + mov r0, #0xd + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #5 + bl FUN_02020130 + mov r0, #3 + lsl r0, r0, #0x10 + str r0, [sp, #0x14] + mov r0, #9 + lsl r0, r0, #0x10 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, sp, #0x14 + bl FUN_02020044 + mov r0, #0xc + mov r1, #0xd + bl FUN_020219F4 + add r7, r0, #0 + ldr r0, [r5] + add r1, r7, #0 + bl FUN_02027608 + mov r0, #0 + add r1, r7, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r4, r0, #0 + mov r0, #7 + str r0, [sp] + mov r1, #0 + lsr r3, r4, #0x1f + add r3, r4, r3 + asr r4, r3, #1 + mov r3, #0x80 + ldr r0, _021DE0F0 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r2, r7, #0 + sub r3, r3, r4 + bl FUN_0201BDE0 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [r5] + bl FUN_0202769C + add r2, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200B518 + mov r0, #0xc8 + mov r1, #0xd + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [sp, #0x10] + mov r1, #0x2d + bl FUN_0200A914 + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r1, #0 + ldr r0, _021DE0F0 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r5, r5, #1 + mov r3, #0x80 + add r2, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + add r0, r6, #0 + bl FUN_0200AB18 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DE0EC: .word 0x00000151 +_021DE0F0: .word 0x00010200 + thumb_func_end MOD17_021DDFDC + + thumb_func_start MOD17_021DE0F4 +MOD17_021DE0F4: ; 0x021DE0F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r5, #8] + bl FUN_02020130 + ldr r0, [r5, #4] + bl FUN_02027C58 + add r6, r0, #0 + mov r0, #0xd + bl FUN_0200AA80 + add r7, r0, #0 + mov r0, #0xc8 + mov r1, #0xd + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #8] + bl FUN_02083298 + add r2, r0, #0 + add r0, r7, #0 + mov r1, #0 + bl FUN_0200B2AC + add r0, r6, #0 + bl FUN_02083268 + add r2, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl FUN_0200B278 + ldr r0, [r5, #4] + bl FUN_02027B44 + add r6, r0, #0 + ldr r0, [r5, #4] + add r1, r4, #0 + bl FUN_02027B0C + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, r7, #0 + mov r1, #3 + add r2, r4, #0 + add r3, r6, #0 + bl FUN_0200ABB4 + mov r0, #0xd + bl FUN_020669C0 + add r6, r0, #0 + ldr r0, [r5, #4] + add r1, r6, #0 + bl FUN_02027B78 + add r0, r6, #0 + bl FUN_020690E4 + add r2, r0, #0 + add r0, r7, #0 + mov r1, #4 + bl FUN_0200ACF8 + add r0, r6, #0 + bl FUN_02016A18 + ldr r2, _021DE24C ; =0x00000151 + mov r0, #0 + mov r1, #0x1a + mov r3, #0xd + bl FUN_0200A86C + str r0, [sp, #0x10] + cmp r0, #0 + bne _021DE1A0 + bl ErrorHandling +_021DE1A0: + ldr r0, [sp, #0x10] + mov r1, #0x2b + bl FUN_0200A914 + add r6, r0, #0 + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #7 + str r0, [sp] + mov r1, #0 + lsr r6, r3, #0x1f + add r6, r3, r6 + ldr r0, _021DE250 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + asr r6, r6, #1 + mov r3, #0x80 + add r2, r4, #0 + sub r3, r3, r6 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + mov r1, #0x2c + bl FUN_0200A914 + add r6, r0, #0 + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x1b + str r0, [sp] + mov r1, #0 + ldr r0, _021DE250 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0x19 + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r5, r5, #1 + mov r3, #0x80 + add r2, r4, #0 + sub r3, r3, r5 + bl FUN_0201BDE0 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + add r0, r7, #0 + bl FUN_0200AB18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021DE24C: .word 0x00000151 +_021DE250: .word 0x00010200 + thumb_func_end MOD17_021DE0F4 + + .section .data + ; 0x021DE254 + .incbin "baserom.nds", 0x26AF74, 0x10C diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s new file mode 100644 index 00000000..767c2f6c --- /dev/null +++ b/arm9/modules/18/asm/module_18.s @@ -0,0 +1,46260 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD18_022396A0 +MOD18_022396A0: ; 0x022396A0 + push {r3, r4, r5, r6, r7, lr} + ldr r2, _02239730 ; =0x000008CC + ldr r4, _02239734 ; =0x02251380 + add r3, r2, #0 + mov r1, #0 + mov r0, #0xff + add r3, #8 +_022396AE: + ldr r5, [r4] + add r5, r5, r1 + strb r0, [r5, r2] + ldr r5, [r4] + add r5, r5, r1 + add r1, r1, #1 + strb r0, [r5, r3] + cmp r1, #8 + blt _022396AE + ldr r0, _02239734 ; =0x02251380 + ldr r1, _02239738 ; =0x000009E4 + ldr r2, [r0] + mov r3, #1 + strb r3, [r2, r1] + ldr r4, [r0] + mov r2, #0 + add r3, r1, #1 + strb r2, [r4, r3] + ldr r3, [r0] + mov r4, #0xc4 + add r1, r1, #3 + strb r4, [r3, r1] + mov r3, #0x81 + lsl r3, r3, #4 + add r4, r3, #0 + add r1, r2, #0 + add r5, r2, #0 + add r4, #8 +_022396E6: + ldr r6, [r0] + add r2, r2, #1 + add r6, r6, r1 + str r5, [r6, r3] + ldr r6, [r0] + add r6, r6, r1 + add r1, #0xc + strb r5, [r6, r4] + cmp r2, #8 + blt _022396E6 + ldr r6, _02239734 ; =0x02251380 + mov r7, #0 +_022396FE: + add r0, r5, #0 + mov r1, #0xd + bl _s32_div_f + add r4, r0, #0 + mov r1, #0xd + add r0, r5, #0 + mul r4, r1 + bl _s32_div_f + ldr r0, [r6] + add r5, r5, #1 + add r0, r0, r4 + add r2, r1, r0 + ldr r0, _0223973C ; =0x000008DC + strb r7, [r2, r0] + ldr r0, [r6] + add r0, r0, r4 + add r2, r1, r0 + mov r1, #2 + ldr r0, _02239740 ; =0x0000095E + cmp r5, #0x82 + strb r1, [r2, r0] + blt _022396FE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239730: .word 0x000008CC +_02239734: .word 0x02251380 +_02239738: .word 0x000009E4 +_0223973C: .word 0x000008DC +_02239740: .word 0x0000095E + thumb_func_end MOD18_022396A0 + + thumb_func_start MOD18_02239744 +MOD18_02239744: ; 0x02239744 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r1, _02239834 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + bne _02239830 + mov r2, #0x9f + str r0, [r1] + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + ldr r0, _02239834 ; =0x02251380 + ldr r0, [r0] + add r0, #8 + bl FUN_020312BC + ldr r5, _02239834 ; =0x02251380 + mov r2, #0 + ldr r0, [r5] + ldr r7, _02239838 ; =0x0000020A + str r4, [r0] + ldr r0, _0223983C ; =0x0000FFFF + add r3, r2, #0 + mov r1, #0xff +_02239778: + ldr r4, [r5] + add r2, r2, #1 + add r6, r4, r3 + mov r4, #0x83 + lsl r4, r4, #2 + strb r1, [r6, r4] + ldr r4, [r5] + add r6, r4, r3 + mov r4, #0x82 + lsl r4, r4, #2 + strh r0, [r6, r4] + ldr r4, [r5] + add r4, r4, r3 + add r3, r3, #6 + strh r0, [r4, r7] + cmp r2, #0xfa + blt _02239778 + bl MOD18_022396A0 + ldr r1, _02239834 ; =0x02251380 + mov r3, #0 + mov r0, #0x9e + ldr r2, [r1] + mvn r3, r3 + lsl r0, r0, #4 + str r3, [r2, r0] + ldr r0, [r1] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r4, r0, #0 + bl FUN_02026648 + cmp r0, #0 + beq _02239828 + add r0, r4, #0 + bl FUN_02025D40 + str r0, [sp, #4] + ldr r0, _02239840 ; =0x5D588B65 + mov r5, #0 + str r0, [sp, #8] + ldr r0, _02239844 ; =0x00269EC3 + str r0, [sp, #0xc] +_022397D2: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020265B8 + add r5, r5, #1 + cmp r5, #0xff + blt _022397D2 + mov r5, #0 + add r6, r5, #0 +_022397E4: + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + add r3, r6, #0 + str r6, [sp] + bl FUN_0202630C + add r5, r5, #1 + cmp r5, #0x40 + blt _022397E4 + add r0, sp, #4 + bl MOD18_0223D298 + mov r1, #0xa + bl _s32_div_f + mov r1, #0x18 + sub r6, r1, r0 + mov r5, #0 + cmp r6, #0 + ble _0223981E + add r7, sp, #4 +_02239810: + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_02239994 + add r5, r5, #1 + cmp r5, r6 + blt _02239810 +_0223981E: + add r0, r4, #0 + bl FUN_02026654 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02239828: + bl MOD18_02239D94 + bl MOD18_0223F174 +_02239830: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239834: .word 0x02251380 +_02239838: .word 0x0000020A +_0223983C: .word 0x0000FFFF +_02239840: .word 0x5D588B65 +_02239844: .word 0x00269EC3 + thumb_func_end MOD18_02239744 + + thumb_func_start MOD18_02239848 +MOD18_02239848: ; 0x02239848 + mov r0, #0x9f + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD18_02239848 + + thumb_func_start MOD18_02239850 +MOD18_02239850: ; 0x02239850 + bx lr + .align 2, 0 + thumb_func_end MOD18_02239850 + + thumb_func_start MOD18_02239854 +MOD18_02239854: ; 0x02239854 + bx lr + .align 2, 0 + thumb_func_end MOD18_02239854 + + thumb_func_start MOD18_02239858 +MOD18_02239858: ; 0x02239858 + push {r3, lr} + ldr r0, _022398A8 ; =0x02251380 + ldr r1, [r0] + cmp r1, #0 + beq _022398A4 + ldr r0, _022398AC ; =0x0000087C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239896 + bl FUN_0200CAB4 + ldr r0, _022398A8 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _022398AC ; =0x0000087C + str r2, [r1, r0] + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, _022398A8 ; =0x02251380 + ldr r1, [r0] + ldr r0, _022398B0 ; =0x000007E4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239892 + mov r1, #4 + bl FUN_020021EC +_02239892: + bl FUN_0204F7FC +_02239896: + ldr r0, _022398A8 ; =0x02251380 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _022398A8 ; =0x02251380 + mov r1, #0 + str r1, [r0] +_022398A4: + pop {r3, pc} + nop +_022398A8: .word 0x02251380 +_022398AC: .word 0x0000087C +_022398B0: .word 0x000007E4 + thumb_func_end MOD18_02239858 + + thumb_func_start MOD18_022398B4 +MOD18_022398B4: ; 0x022398B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #2] + bl MOD18_02239DEC + add r4, r0, #0 + add r0, sp, #0 + strb r5, [r0] + beq _022398FE + ldrb r0, [r4, #4] + cmp r0, #0xff + bne _022398FE + add r0, r5, #0 + bl FUN_0204F210 + cmp r0, #0 + beq _022398DC + mov r0, #1 + pop {r3, r4, r5, pc} +_022398DC: + mov r0, #0x40 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + ldr r0, _02239904 ; =0x02251380 + ldr r1, [r0] + lsl r0, r5, #2 + add r1, r1, r0 + ldr r0, _02239908 ; =0x000007E8 + str r4, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_022398FE: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02239904: .word 0x02251380 +_02239908: .word 0x000007E8 + thumb_func_end MOD18_022398B4 + + thumb_func_start MOD18_0223990C +MOD18_0223990C: ; 0x0223990C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02239924 + mov r0, #0 + pop {r4, r5, r6, pc} +_02239924: + ldr r0, _02239990 ; =0x000001DE + cmp r4, r0 + ble _0223992E + mov r0, #0 + pop {r4, r5, r6, pc} +_0223992E: + cmp r5, r0 + ble _02239936 + mov r0, #0 + pop {r4, r5, r6, pc} +_02239936: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223998C + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #1 + bl FUN_0204A6B4 + cmp r0, #0 + bne _02239956 + mov r0, #1 + pop {r4, r5, r6, pc} +_02239956: + add r0, r6, #0 + add r1, r5, #0 + sub r2, r4, #1 + bl FUN_0204A6B4 + cmp r0, #0 + bne _02239968 + mov r0, #1 + pop {r4, r5, r6, pc} +_02239968: + add r0, r6, #0 + add r1, r5, #1 + add r2, r4, #0 + bl FUN_0204A6B4 + cmp r0, #0 + bne _0223997A + mov r0, #1 + pop {r4, r5, r6, pc} +_0223997A: + add r0, r6, #0 + sub r1, r5, #1 + add r2, r4, #0 + bl FUN_0204A6B4 + cmp r0, #0 + bne _0223998C + mov r0, #1 + pop {r4, r5, r6, pc} +_0223998C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02239990: .word 0x000001DE + thumb_func_end MOD18_0223990C + + thumb_func_start MOD18_02239994 +MOD18_02239994: ; 0x02239994 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + ldr r0, _02239BA8 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + str r0, [sp, #0x10] + ldr r0, _02239BA8 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0x28] + bl FUN_020344FC + sub r0, r0, #2 + lsl r0, r0, #0x15 + lsr r6, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0x28] + bl FUN_0203450C + sub r0, r0, #2 + lsl r0, r0, #0x15 + lsr r4, r0, #0x10 +_022399CC: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + cmp r6, #0 + ldr r0, [r5] + bne _022399E2 + lsr r1, r0, #0x10 + b _022399EA +_022399E2: + lsr r1, r0, #0x10 + add r2, r1, #0 + mul r2, r6 + lsr r1, r2, #0x10 +_022399EA: + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r1, #0x20 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #0xc] + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + cmp r4, #0 + ldr r0, [r5] + bne _02239A0A + lsr r0, r0, #0x10 + b _02239A12 +_02239A0A: + lsr r0, r0, #0x10 + add r1, r0, #0 + mul r1, r4 + lsr r0, r1, #0x10 +_02239A12: + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, #0x40 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + ldr r1, [sp, #0xc] + ldr r0, [r0] + add r2, r7, #0 + ldr r0, [r0] + bl MOD18_0223990C + cmp r0, #0 + beq _022399CC + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #6 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r0, #6 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r0, #0 + ble _02239AEE +_02239A54: + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] +_02239A5A: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + lsr r2, r0, #0x10 + mov r1, #0x14 + mul r1, r2 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldr r1, [sp, #0xc] + str r0, [r5] + add r1, r1, r2 + sub r1, #0xa + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #0x14 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r7, r0 + sub r0, #0xa + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + add r1, r4, #0 + ldr r0, [r0] + add r2, r6, #0 + ldr r0, [r0] + bl MOD18_0223990C + cmp r0, #0 + beq _02239AB2 + mov r0, #1 + str r0, [sp, #0x14] + b _02239ABC +_02239AB2: + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0x64 + blt _02239A5A +_02239ABC: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02239AE2 + bl MOD18_02239C58 + cmp r0, #0 + beq _02239AEE + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02239CA0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x10] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02026554 + ldr r1, [sp, #0x24] + strb r0, [r1, #5] +_02239AE2: + ldr r0, [sp, #0x1c] + add r1, r0, #1 + ldr r0, [sp, #0x20] + str r1, [sp, #0x1c] + cmp r1, r0 + blt _02239A54 +_02239AEE: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #6 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #8] + cmp r0, #0 + ble _02239BA2 +_02239B12: + mov r0, #0 + str r0, [sp] +_02239B16: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + lsr r2, r0, #0x10 + mov r1, #0x14 + mul r1, r2 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldr r1, [sp, #0xc] + str r0, [r5] + add r1, r1, r2 + sub r1, #0xa + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #0x14 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r7, r0 + sub r0, #0xa + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + add r1, r6, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + bne _02239B8C + ldr r3, _02239BA8 ; =0x02251380 + add r1, r4, #0 + ldr r4, [r3] + ldr r3, _02239BAC ; =0x000009EC + add r0, r6, #0 + ldrb r3, [r4, r3] + add r2, r5, #0 + bl MOD18_0223F0C8 + cmp r0, #0 + beq _02239B8C + ldr r0, _02239BA8 ; =0x02251380 + ldr r2, [r0] + ldr r0, _02239BAC ; =0x000009EC + ldrb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, r0] + b _02239B96 +_02239B8C: + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #0x64 + blt _02239B16 +_02239B96: + ldr r0, [sp, #4] + add r1, r0, #1 + ldr r0, [sp, #8] + str r1, [sp, #4] + cmp r1, r0 + blt _02239B12 +_02239BA2: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239BA8: .word 0x02251380 +_02239BAC: .word 0x000009EC + thumb_func_end MOD18_02239994 + + thumb_func_start MOD18_02239BB0 +MOD18_02239BB0: ; 0x02239BB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + ldr r0, _02239C54 ; =0x02251380 + str r1, [sp, #4] + ldr r0, [r0] + add r5, r2, #0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + mov r4, #0 + str r0, [sp, #8] + str r4, [sp, #0xc] +_02239BCC: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + lsr r2, r0, #0x10 + mov r1, #0x14 + mul r1, r2 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldr r1, [sp] + str r0, [r5] + add r1, r1, r2 + sub r1, #0xa + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #0x14 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #4] + add r0, r0, r1 + sub r0, #0xa + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, _02239C54 ; =0x02251380 + add r1, r6, #0 + ldr r0, [r0] + add r2, r7, #0 + ldr r0, [r0] + bl MOD18_0223990C + cmp r0, #0 + beq _02239C26 + mov r0, #1 + str r0, [sp, #0xc] + b _02239C2C +_02239C26: + add r4, r4, #1 + cmp r4, #0x64 + blt _02239BCC +_02239C2C: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02239C50 + bl MOD18_02239C58 + cmp r0, #0 + beq _02239C50 + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_02239CA0 + add r4, r0, #0 + ldr r0, [sp, #8] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_02026554 + strb r0, [r4, #5] +_02239C50: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239C54: .word 0x02251380 + thumb_func_end MOD18_02239BB0 + + thumb_func_start MOD18_02239C58 +MOD18_02239C58: ; 0x02239C58 + push {r4, r5, r6, r7} + ldr r1, _02239C94 ; =0x02251380 + ldr r3, _02239C98 ; =0x0000020A + ldr r2, [r1] + ldr r4, _02239C9C ; =0x0000FFFF + mov r0, #0 + add r1, r2, #0 + sub r5, r3, #2 + add r6, r4, #0 +_02239C6A: + ldrh r7, [r1, r5] + cmp r7, r6 + bne _02239C86 + ldrh r7, [r1, r3] + cmp r7, r4 + bne _02239C86 + mov r1, #0x82 + lsl r1, r1, #2 + add r2, r2, r1 + mov r1, #6 + mul r1, r0 + add r0, r2, r1 + pop {r4, r5, r6, r7} + bx lr +_02239C86: + add r0, r0, #1 + add r1, r1, #6 + cmp r0, #0xfa + blt _02239C6A + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02239C94: .word 0x02251380 +_02239C98: .word 0x0000020A +_02239C9C: .word 0x0000FFFF + thumb_func_end MOD18_02239C58 + + thumb_func_start MOD18_02239CA0 +MOD18_02239CA0: ; 0x02239CA0 + push {r3, r4, r5, r6, r7, lr} + mov lr, r1 + mov r1, #0xf + str r0, [sp] + lsl r1, r1, #6 + mov r0, lr + mul r1, r0 + ldr r0, [sp] + mov r6, #0 + add r5, r0, r1 + ldr r0, _02239D80 ; =0x02251380 + mvn r6, r6 + ldr r3, [r0] + mov r2, #0 + mov ip, r3 + lsr r7, r6, #0x10 +_02239CC0: + mov r0, #0x82 + lsl r0, r0, #2 + ldrh r1, [r3, r0] + cmp r1, r7 + beq _02239CE4 + add r0, r0, #2 + ldrh r0, [r3, r0] + ldr r4, _02239D84 ; =0x0000FFFF + cmp r0, r4 + beq _02239CE4 + mov r4, #0xf + lsl r4, r4, #6 + mul r4, r0 + add r0, r1, r4 + cmp r5, r0 + bge _02239D08 + add r6, r2, #0 + b _02239D10 +_02239CE4: + mov r0, #6 + mul r0, r2 + mov r1, ip + add r2, r1, r0 + mov r3, #0x82 + ldr r1, [sp] + lsl r3, r3, #2 + strh r1, [r2, r3] + ldr r4, _02239D80 ; =0x02251380 + add r2, r3, #2 + ldr r1, [r4] + add r5, r1, r0 + mov r1, lr + strh r1, [r5, r2] + ldr r1, [r4] + add r1, r1, r3 + add r0, r1, r0 + pop {r3, r4, r5, r6, r7, pc} +_02239D08: + add r2, r2, #1 + add r3, r3, #6 + cmp r2, #0xfa + blt _02239CC0 +_02239D10: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _02239D6E + mov r1, #0xf8 + cmp r6, #0xf8 + bgt _02239D52 + mov r0, #0x5d + ldr r3, _02239D80 ; =0x02251380 + ldr r7, _02239D88 ; =0x00000213 + lsl r0, r0, #4 +_02239D26: + ldr r2, [r3] + sub r1, r1, #1 + add r5, r2, r0 + mov r2, #0x82 + lsl r2, r2, #2 + ldrh r4, [r5, r2] + add r2, r2, #6 + strh r4, [r5, r2] + ldr r2, [r3] + add r5, r2, r0 + ldr r2, _02239D8C ; =0x0000020A + ldrh r4, [r5, r2] + add r2, r2, #6 + strh r4, [r5, r2] + ldr r2, [r3] + ldr r4, _02239D90 ; =0x0000020D + add r2, r2, r0 + ldrb r4, [r2, r4] + sub r0, r0, #6 + strb r4, [r2, r7] + cmp r1, r6 + bge _02239D26 +_02239D52: + ldr r3, _02239D80 ; =0x02251380 + mov r0, #6 + ldr r1, [r3] + mul r0, r6 + add r4, r1, r0 + mov r2, #0x82 + ldr r1, [sp] + lsl r2, r2, #2 + strh r1, [r4, r2] + ldr r1, [r3] + add r3, r1, r0 + add r1, r2, #2 + mov r0, lr + strh r0, [r3, r1] +_02239D6E: + ldr r0, _02239D80 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #6 + mul r0, r6 + add r0, r1, r0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239D80: .word 0x02251380 +_02239D84: .word 0x0000FFFF +_02239D88: .word 0x00000213 +_02239D8C: .word 0x0000020A +_02239D90: .word 0x0000020D + thumb_func_end MOD18_02239CA0 + + thumb_func_start MOD18_02239D94 +MOD18_02239D94: ; 0x02239D94 + push {r4, r5, r6, lr} + ldr r0, _02239DD4 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + mov r5, #0 +_02239DA6: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020265E0 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_02026600 + add r1, r0, #0 + cmp r4, #0 + beq _02239DCA + cmp r1, #0 + beq _02239DCA + add r0, r4, #0 + bl MOD18_02239CA0 + strb r5, [r0, #5] +_02239DCA: + add r5, r5, #1 + cmp r5, #0xff + blt _02239DA6 + pop {r4, r5, r6, pc} + nop +_02239DD4: .word 0x02251380 + thumb_func_end MOD18_02239D94 + + thumb_func_start MOD18_02239DD8 +MOD18_02239DD8: ; 0x02239DD8 + push {r3, lr} + bl FUN_02031190 + cmp r0, #0 + bne _02239DEA + bl MOD18_0223C9B8 + bl MOD18_0223C898 +_02239DEA: + pop {r3, pc} + thumb_func_end MOD18_02239DD8 + + thumb_func_start MOD18_02239DEC +MOD18_02239DEC: ; 0x02239DEC + push {r4, r5, r6, r7} + ldr r3, _02239E24 ; =0x02251380 + ldr r5, _02239E28 ; =0x0000020A + ldr r4, [r3] + mov r2, #0 + add r3, r4, #0 + sub r6, r5, #2 +_02239DFA: + ldrh r7, [r3, r6] + cmp r0, r7 + bne _02239E16 + ldrh r7, [r3, r5] + cmp r1, r7 + bne _02239E16 + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #6 + mul r0, r2 + add r0, r1, r0 + pop {r4, r5, r6, r7} + bx lr +_02239E16: + add r2, r2, #1 + add r3, r3, #6 + cmp r2, #0xfa + blt _02239DFA + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02239E24: .word 0x02251380 +_02239E28: .word 0x0000020A + thumb_func_end MOD18_02239DEC + + thumb_func_start MOD18_02239E2C +MOD18_02239E2C: ; 0x02239E2C + push {r3, r4, r5, r6, r7, lr} + add r2, r1, #0 + add r6, r1, #0 + str r2, [sp] + add r2, #0x50 + add r4, r0, #0 + add r7, r0, #0 + sub r6, #0x50 + str r2, [sp] + sub r4, #0x50 + add r7, #0x50 + mov r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02239E50 + sub r0, r5, #1 + pop {r3, r4, r5, r6, r7, pc} +_02239E50: + cmp r4, #0x40 + bge _02239E56 + mov r4, #0x40 +_02239E56: + mov r0, #2 + lsl r0, r0, #8 + cmp r7, r0 + ble _02239E60 + add r7, r0, #0 +_02239E60: + cmp r6, #0x20 + bge _02239E66 + mov r6, #0x20 +_02239E66: + mov r1, #0x1e + ldr r0, [sp] + lsl r1, r1, #4 + cmp r0, r1 + ble _02239E72 + str r1, [sp] +_02239E72: + ldr r0, _02239EF4 ; =0x02251380 + mov r2, #0 + ldr r3, [r0] +_02239E78: + ldr r0, _02239EF8 ; =0x0000020A + ldrh r1, [r3, r0] + cmp r1, r6 + blt _02239E96 + ldr r0, [sp] + cmp r1, r0 + bgt _02239E96 + mov r0, #0x82 + lsl r0, r0, #2 + ldrh r0, [r3, r0] + cmp r0, r4 + ble _02239E96 + cmp r0, r7 + bge _02239E96 + add r5, r5, #1 +_02239E96: + add r2, r2, #1 + add r3, r3, #6 + cmp r2, #0xfa + blt _02239E78 + cmp r5, #0 + bne _02239EA8 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_02239EA8: + bl FUN_0201B9EC + add r1, r5, #0 + bl _s32_div_f + ldr r0, _02239EF4 ; =0x02251380 + mov r3, #0 + ldr r2, [r0] + mov ip, r1 + add r5, r3, #0 +_02239EBC: + ldr r0, _02239EF8 ; =0x0000020A + ldrh r1, [r2, r0] + cmp r1, r6 + blt _02239EE4 + ldr r0, [sp] + cmp r1, r0 + bgt _02239EE4 + mov r0, #0x82 + lsl r0, r0, #2 + ldrh r0, [r2, r0] + cmp r0, r4 + ble _02239EE4 + cmp r0, r7 + bge _02239EE4 + mov r0, ip + cmp r3, r0 + bne _02239EE2 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02239EE2: + add r3, r3, #1 +_02239EE4: + add r5, r5, #1 + add r2, r2, #6 + cmp r5, #0xfa + blt _02239EBC + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239EF4: .word 0x02251380 +_02239EF8: .word 0x0000020A + thumb_func_end MOD18_02239E2C + + thumb_func_start MOD18_02239EFC +MOD18_02239EFC: ; 0x02239EFC + push {r4, lr} + add r4, r0, #0 + ldr r0, _02239F2C ; =0x02251380 + ldr r1, [r0] + ldr r0, _02239F30 ; =0x000007E4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239F12 + mov r1, #4 + bl FUN_020021EC +_02239F12: + ldr r1, _02239F2C ; =0x02251380 + ldr r0, _02239F30 ; =0x000007E4 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x98 + str r3, [r1, r0] + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + nop +_02239F2C: .word 0x02251380 +_02239F30: .word 0x000007E4 + thumb_func_end MOD18_02239EFC + + thumb_func_start MOD18_02239F34 +MOD18_02239F34: ; 0x02239F34 + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02239F84 + bl FUN_02030FE0 + cmp r0, #0 + beq _02239F84 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x13 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r2, _02239F88 ; =0x02251380 + mov r1, #0x9e + ldr r3, [r2] + lsl r1, r1, #4 + str r0, [r3, r1] + ldr r1, [r2] + ldr r0, _02239F8C ; =MOD18_02239F98 + mov r2, #0 + bl FUN_0200CA44 + ldr r2, _02239F88 ; =0x02251380 + ldr r1, _02239F90 ; =0x0000087C + ldr r3, [r2] + str r0, [r3, r1] + ldr r2, [r2] + mov r0, #0 + ldr r1, [r2, r1] + ldr r2, _02239F94 ; =MOD18_02239EFC + bl MOD18_0223E688 + bl FUN_0204F7E4 +_02239F84: + pop {r4, pc} + nop +_02239F88: .word 0x02251380 +_02239F8C: .word MOD18_02239F98 +_02239F90: .word 0x0000087C +_02239F94: .word MOD18_02239EFC + thumb_func_end MOD18_02239F34 + + thumb_func_start MOD18_02239F98 +MOD18_02239F98: ; 0x02239F98 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223A044 ; =0x02251380 + ldr r2, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r1, [r2, r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _02239FEA + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223A03E + mov r0, #4 + str r0, [sp] + ldr r0, _0223A044 ; =0x02251380 + ldr r1, _0223A048 ; =0x0224FFE6 + ldr r0, [r0] + ldr r2, _0223A04C ; =0x000003D9 + ldr r0, [r0] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + ldr r2, _0223A044 ; =0x02251380 + ldr r1, _0223A050 ; =0x000007E4 + ldr r3, [r2] + add sp, #8 + str r0, [r3, r1] + mov r3, #0 + mov r0, #0x9e + ldr r1, [r2] + mvn r3, r3 + lsl r0, r0, #4 + str r3, [r1, r0] + pop {r4, pc} +_02239FEA: + ldr r0, _0223A050 ; =0x000007E4 + mov r1, #4 + ldr r0, [r2, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223A03E + cmp r0, #0 + add r0, sp, #4 + bne _0223A008 + mov r1, #1 + strb r1, [r0] + b _0223A010 +_0223A008: + mov r1, #0 + strb r1, [r0] + bl FUN_0204F7FC +_0223A010: + mov r0, #0x41 + add r1, sp, #4 + bl FUN_020311D0 + ldr r0, _0223A044 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223A050 ; =0x000007E4 + str r2, [r1, r0] + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r4, #0 + bl FUN_0200CAB4 + bl MOD18_0223E6A0 + ldr r0, _0223A044 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223A054 ; =0x0000087C + str r2, [r1, r0] +_0223A03E: + add sp, #8 + pop {r4, pc} + nop +_0223A044: .word 0x02251380 +_0223A048: .word 0x0224FFE6 +_0223A04C: .word 0x000003D9 +_0223A050: .word 0x000007E4 +_0223A054: .word 0x0000087C + thumb_func_end MOD18_02239F98 + + thumb_func_start MOD18_0223A058 +MOD18_0223A058: ; 0x0223A058 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _0223A0DC ; =0x02251380 + add r7, r2, #0 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + str r0, [sp] + ldr r0, _0223A0DC ; =0x02251380 + lsl r6, r5, #2 + ldr r1, [r0] + ldr r0, _0223A0E0 ; =0x000007E8 + add r2, r1, r6 + ldr r4, [r2, r0] + add r0, sp, #4 + strb r5, [r0] + ldrb r0, [r7] + cmp r0, #0 + beq _0223A0C4 + cmp r4, #0 + beq _0223A0C4 + ldrb r0, [r4, #4] + cmp r0, #0xff + bne _0223A0D6 + mov r0, #0x42 + add r1, sp, #4 + mov r2, #1 + bl FUN_02030BC4 + mov r0, #0xff + strb r0, [r4, #4] + ldr r0, _0223A0E4 ; =0x0000FFFF + strh r0, [r4] + strh r0, [r4, #2] + ldrb r1, [r4, #5] + ldr r0, [sp] + bl FUN_020265B8 + ldr r1, _0223A0DC ; =0x02251380 + mov r3, #1 + ldr r0, [r1] + add sp, #8 + add r2, r0, r5 + ldr r0, _0223A0E8 ; =0x00000808 + strb r3, [r2, r0] + ldr r1, [r1] + mov r2, #0 + add r1, r1, r6 + sub r0, #0x20 + str r2, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_0223A0C4: + add r2, r1, r5 + ldr r1, _0223A0E8 ; =0x00000808 + mov r0, #0 + strb r0, [r2, r1] + ldr r2, _0223A0DC ; =0x02251380 + sub r1, #0x20 + ldr r2, [r2] + add r2, r2, r6 + str r0, [r2, r1] +_0223A0D6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A0DC: .word 0x02251380 +_0223A0E0: .word 0x000007E8 +_0223A0E4: .word 0x0000FFFF +_0223A0E8: .word 0x00000808 + thumb_func_end MOD18_0223A058 + + thumb_func_start MOD18_0223A0EC +MOD18_0223A0EC: ; 0x0223A0EC + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223A108 + bl FUN_0204F7E4 + ldr r0, _0223A118 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl MOD18_0223AC24 +_0223A108: + ldr r0, _0223A118 ; =0x02251380 + mov r2, #1 + ldr r1, [r0] + ldrb r0, [r4] + add r1, r1, r0 + ldr r0, _0223A11C ; =0x000008C4 + strb r2, [r1, r0] + pop {r4, pc} + .align 2, 0 +_0223A118: .word 0x02251380 +_0223A11C: .word 0x000008C4 + thumb_func_end MOD18_0223A0EC + + thumb_func_start MOD18_0223A120 +MOD18_0223A120: ; 0x0223A120 + ldr r1, _0223A130 ; =0x02251380 + mov r2, #0 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _0223A134 ; =0x00000808 + strb r2, [r1, r0] + bx lr + nop +_0223A130: .word 0x02251380 +_0223A134: .word 0x00000808 + thumb_func_end MOD18_0223A120 + + thumb_func_start MOD18_0223A138 +MOD18_0223A138: ; 0x0223A138 + push {r3, lr} + add r1, sp, #0 + strb r0, [r1] + ldrb r0, [r2] + strb r0, [r1, #1] + ldrb r0, [r2, #1] + strb r0, [r1, #2] + mov r0, #0x45 + add r1, sp, #0 + bl FUN_02030C4C + pop {r3, pc} + thumb_func_end MOD18_0223A138 + + thumb_func_start MOD18_0223A150 +MOD18_0223A150: ; 0x0223A150 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223A150 + + thumb_func_start MOD18_0223A154 +MOD18_0223A154: ; 0x0223A154 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldrb r4, [r5] + bl FUN_02031190 + cmp r4, r0 + beq _0223A17A + ldr r1, _0223A17C ; =0x02251380 + ldrb r3, [r5, #1] + ldr r0, [r1] + add r2, r0, r4 + ldr r0, _0223A180 ; =0x000008CC + strb r3, [r2, r0] + ldr r2, [r1] + ldrb r1, [r5] + ldrb r3, [r5, #2] + add r0, #8 + add r1, r2, r1 + strb r3, [r1, r0] +_0223A17A: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223A17C: .word 0x02251380 +_0223A180: .word 0x000008CC + thumb_func_end MOD18_0223A154 + + thumb_func_start MOD18_0223A184 +MOD18_0223A184: ; 0x0223A184 + mov r0, #3 + bx lr + thumb_func_end MOD18_0223A184 + + thumb_func_start MOD18_0223A188 +MOD18_0223A188: ; 0x0223A188 + push {r3, r4, r5, lr} + sub sp, #0xa8 + ldr r5, _0223A2A4 ; =0x02250080 + add r4, r0, #0 + add r3, sp, #0x80 + mov r2, #5 +_0223A194: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223A194 + add r0, sp, #0x80 + bl FUN_0201E66C + ldr r5, _0223A2A8 ; =0x02250000 + add r3, sp, #0x70 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0223A2AC ; =0x02250010 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0223A2B0 ; =0x0225002C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _0223A2B4 ; =0x02250048 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _0223A2B8 ; =0x02250064 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x1d + bl FUN_02017F18 + add sp, #0xa8 + pop {r3, r4, r5, pc} + nop +_0223A2A4: .word 0x02250080 +_0223A2A8: .word 0x02250000 +_0223A2AC: .word 0x02250010 +_0223A2B0: .word 0x0225002C +_0223A2B4: .word 0x02250048 +_0223A2B8: .word 0x02250064 + thumb_func_end MOD18_0223A188 + + thumb_func_start MOD18_0223A2BC +MOD18_0223A2BC: ; 0x0223A2BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r7, r3, #0 + cmp r4, #0 + beq _0223A2DE + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + b _0223A2EE +_0223A2DE: + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 +_0223A2EE: + cmp r7, #0 + beq _0223A30A + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02020130 + ldr r0, _0223A3C8 ; =0x000006A4 + bl FUN_020054C8 + b _0223A33C +_0223A30A: + cmp r4, #0 + beq _0223A326 + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #3 + bl FUN_02020130 + ldr r0, _0223A3CC ; =0x000006A2 + bl FUN_020054C8 + b _0223A33C +_0223A326: + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #4 + bl FUN_02020130 + ldr r0, _0223A3D0 ; =0x000006A3 + bl FUN_020054C8 +_0223A33C: + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + add r5, #8 + lsl r0, r5, #0xc + add r6, #8 + str r0, [sp] + lsl r0, r6, #0xc + str r0, [sp, #4] + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0223A3BE + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_02020130 + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 +_0223A3BE: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223A3C4: .word 0x02251380 +_0223A3C8: .word 0x000006A4 +_0223A3CC: .word 0x000006A2 +_0223A3D0: .word 0x000006A3 + thumb_func_end MOD18_0223A2BC + + thumb_func_start MOD18_0223A3D4 +MOD18_0223A3D4: ; 0x0223A3D4 + push {r4, r5, r6, lr} + sub sp, #0x10 + mov r1, #0 + add r5, r0, #0 + mov r0, #0x3a + add r2, r1, #0 + bl FUN_0200433C + bl MOD18_022396A0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r2, #5 + mov r0, #3 + mov r1, #0x1d + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r0, #0x1d + bl FUN_02016B94 + add r4, r0, #0 + ldr r0, _0223A4CC ; =0x02251380 + add r1, r4, #0 + ldr r0, [r0] + str r4, [r0, #4] + ldr r0, _0223A4D0 ; =MOD18_0223C6CC + bl FUN_02015F10 + bl MOD18_0223D638 + add r1, r4, #0 + bl MOD18_0224DBB0 + add r0, r4, #0 + bl MOD18_0223A188 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + mov r0, #0x1d + str r0, [sp, #4] + ldr r2, _0223A4D4 ; =0x000001E2 + add r0, r4, #0 + mov r1, #3 + mov r3, #0xa + bl FUN_0200CD68 + mov r0, #0x60 + str r0, [sp] + mov r0, #0x1d + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x34 + mov r1, #1 + add r3, r2, #0 + bl FUN_02006930 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + mov r0, #0x34 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r6, r0, #0 + str r3, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + mov r0, #0x34 + mov r1, #2 + add r2, r4, #0 + bl FUN_020068C8 + mov r3, #0x80 + str r3, [sp] + mov r0, #0x1d + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD18_0223AF48 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0223A4CC: .word 0x02251380 +_0223A4D0: .word MOD18_0223C6CC +_0223A4D4: .word 0x000001E2 + thumb_func_end MOD18_0223A3D4 + + thumb_func_start MOD18_0223A4D8 +MOD18_0223A4D8: ; 0x0223A4D8 + push {r3, lr} + sub sp, #0x10 + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B9BC + ldr r0, _0223A55C ; =0x02251380 + mov r1, #1 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_02017CD0 + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B480 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r2, _0223A55C ; =0x02251380 + mov r0, #0x37 + ldr r2, [r2] + mov r1, #9 + ldr r2, [r2, #4] + mov r3, #2 + bl FUN_0200687C + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B6A4 + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #3 + mov r1, #0 + bl FUN_020178BC + bl MOD18_0223C37C + bl MOD18_0223C570 + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223BB7C + add sp, #0x10 + pop {r3, pc} + nop +_0223A55C: .word 0x02251380 + thumb_func_end MOD18_0223A4D8 + + thumb_func_start MOD18_0223A560 +MOD18_0223A560: ; 0x0223A560 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #0 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #1 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #3 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009C0C + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x5b + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009C0C + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009E04 + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009E04 + mov r6, #0 + ldr r7, _0223A648 ; =0x02251380 + add r4, r6, #0 +_0223A5D2: + ldr r0, [r7] + add r1, r0, r4 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02008E2C + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0223A5D2 + mov r4, #0 + add r6, r4, #0 +_0223A5EC: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _0223A5F8 + bl FUN_02016A18 + str r6, [r5, #0x18] +_0223A5F8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223A5EC + ldr r0, _0223A648 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, _0223A648 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #4] + mov r0, #0x1d + bl FUN_020168D0 + bl MOD18_0223D638 + ldr r1, _0223A648 ; =0x02251380 + ldr r1, [r1] + ldr r1, [r1] + ldr r1, [r1, #8] + bl MOD18_0224DBB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A648: .word 0x02251380 + thumb_func_end MOD18_0223A560 + + thumb_func_start MOD18_0223A64C +MOD18_0223A64C: ; 0x0223A64C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0x10] + cmp r0, #0x1b + bls _0223A65E + b _0223AC10 +_0223A65E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223A66A: ; jump table + .short _0223A6A2 - _0223A66A - 2 ; case 0 + .short _0223A6BE - _0223A66A - 2 ; case 1 + .short _0223A6E6 - _0223A66A - 2 ; case 2 + .short _0223A704 - _0223A66A - 2 ; case 3 + .short _0223A71C - _0223A66A - 2 ; case 4 + .short _0223A72C - _0223A66A - 2 ; case 5 + .short _0223A73A - _0223A66A - 2 ; case 6 + .short _0223A780 - _0223A66A - 2 ; case 7 + .short _0223A79A - _0223A66A - 2 ; case 8 + .short _0223A7AC - _0223A66A - 2 ; case 9 + .short _0223A7DE - _0223A66A - 2 ; case 10 + .short _0223A81E - _0223A66A - 2 ; case 11 + .short _0223A844 - _0223A66A - 2 ; case 12 + .short _0223A87E - _0223A66A - 2 ; case 13 + .short _0223A8A2 - _0223A66A - 2 ; case 14 + .short _0223A8E4 - _0223A66A - 2 ; case 15 + .short _0223A934 - _0223A66A - 2 ; case 16 + .short _0223A958 - _0223A66A - 2 ; case 17 + .short _0223A9A8 - _0223A66A - 2 ; case 18 + .short _0223A9DC - _0223A66A - 2 ; case 19 + .short _0223AA08 - _0223A66A - 2 ; case 20 + .short _0223AA4C - _0223A66A - 2 ; case 21 + .short _0223AAD6 - _0223A66A - 2 ; case 22 + .short _0223AB28 - _0223A66A - 2 ; case 23 + .short _0223AB58 - _0223A66A - 2 ; case 24 + .short _0223AB94 - _0223A66A - 2 ; case 25 + .short _0223ABAC - _0223A66A - 2 ; case 26 + .short _0223ABDC - _0223A66A - 2 ; case 27 +_0223A6A2: + mov r0, #0 + bl MOD18_02247970 + bl MOD18_0223CC80 + bl FUN_0204CC48 + bl MOD18_022451BC + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A6BE: + ldr r0, [r5, #0x68] + bl MOD18_0224484C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x12 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A6E6: + bl FUN_0200E308 + cmp r0, #0 + beq _0223A7E8 + ldr r0, [r5, #0x68] + cmp r0, #0 + bne _0223A7E8 + add r0, r5, #0 + bl FUN_02037394 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A704: + add r0, r5, #0 + bl FUN_0203739C + cmp r0, #0 + bne _0223A7E8 + bl FUN_02033ED0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A71C: + add r0, r4, #0 + bl MOD18_0223A3D4 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A72C: + bl MOD18_0223A4D8 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A73A: + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + mov r1, #0x11 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A780: + bl FUN_0200E308 + cmp r0, #0 + beq _0223A7E8 + mov r0, #0 + str r0, [r4, #8] + ldr r0, _0223AB00 ; =0x00000621 + bl FUN_020054C8 + mov r0, #8 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A79A: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x14 + ble _0223A7E8 + mov r0, #9 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A7AC: + bl MOD18_0223D638 + ldr r2, [r4, #0xc] + mov r1, #0 + bl MOD18_0224DE5C + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3e + add r3, r2, #0 + bl MOD18_0224DCD8 + ldr r1, _0223AB04 ; =0x02251380 + add sp, #0xc + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A7DE: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x50 + bgt _0223A7EA +_0223A7E8: + b _0223AC10 +_0223A7EA: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r5, r0, #0 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + bl FUN_02026620 + cmp r0, #0 + beq _0223A816 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A816: + mov r0, #0xd + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A81E: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x55 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223AB04 ; =0x02251380 + add sp, #0xc + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A844: + ldr r0, _0223AB04 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223A922 + ldr r0, _0223AB08 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223A86C + ldr r0, _0223AB0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223A922 +_0223A86C: + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A87E: + add r0, r4, #0 + bl MOD18_0223C1F0 + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223C078 + add r0, r4, #0 + bl MOD18_0223B2D4 + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223A8A2: + add r0, r4, #0 + bl MOD18_0223B2D4 + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + bne _0223A922 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x40 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223AB04 ; =0x02251380 + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, _0223AB10 ; =0x000005E3 + bl FUN_020054C8 + mov r0, #0x3c + str r0, [r4, #0x4c] + mov r0, #0xf + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A8E4: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + ldr r0, _0223AB04 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223A922 + ldr r0, [r4, #0x4c] + sub r0, r0, #1 + str r0, [r4, #0x4c] + ldr r0, _0223AB08 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223A924 + ldr r0, _0223AB0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0223A924 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _0223A924 +_0223A922: + b _0223AC10 +_0223A924: + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0x10 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A934: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add r0, r4, #0 + bl MOD18_0223BEE4 + cmp r0, #0 + beq _0223A950 + mov r0, #0x11 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A950: + mov r0, #0x12 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A958: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + ldr r0, _0223AB04 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223AA5A + ldr r0, _0223AB08 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223A98A + ldr r0, _0223AB0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223AA5A +_0223A98A: + add r0, r4, #0 + bl MOD18_0223BF84 + cmp r0, #0 + beq _0223A9A0 + mov r0, #0x3c + str r0, [r4, #0x4c] + mov r0, #0xf + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A9A0: + mov r0, #0x10 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A9A8: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A9DC: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + bl FUN_0200E308 + cmp r0, #0 + beq _0223AA5A + bl FUN_02033ED0 + add r0, r4, #0 + bl MOD18_0223A560 + add r0, r5, #0 + bl FUN_0204649C + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AA08: + add r0, r5, #0 + bl FUN_020464A4 + cmp r0, #0 + beq _0223AA5A + add r0, r5, #0 + bl MOD18_02244824 + str r0, [r5, #0x68] + bl FUN_02033E74 + bl FUN_0204F7E4 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x13 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AA4C: + mov r0, #0 + bl FUN_0200E394 + bl FUN_0200E308 + cmp r0, #0 + bne _0223AA5C +_0223AA5A: + b _0223AC10 +_0223AA5C: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F45E8 + mov r3, #0x80 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x10] + ldr r2, _0223AB14 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + bl FUN_0204CC9C + bl MOD18_022451EC + bl MOD18_0223CC94 + add r1, r4, #0 + mov r0, #0x43 + add r1, #0x50 + bl FUN_020311D0 + bl FUN_0204F7FC + ldr r0, _0223AB04 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x22 + lsl r0, r0, #6 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + mov r0, #1 + bl MOD18_02247970 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223AAD6: + ldr r1, _0223AB04 ; =0x02251380 + ldr r0, _0223AB18 ; =0x000009E8 + ldr r2, [r1] + mov r3, #1 + strb r3, [r2, r0] + ldr r2, [r4, #8] + sub r2, r2, #1 + str r2, [r4, #8] + bne _0223AAF2 + ldr r1, [r1] + mov r2, #0x64 + strb r2, [r1, r0] + mov r0, #0x17 + str r0, [r4] +_0223AAF2: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223C078 + ldr r0, _0223AB04 ; =0x02251380 + b _0223AB1C + .align 2, 0 +_0223AB00: .word 0x00000621 +_0223AB04: .word 0x02251380 +_0223AB08: .word 0x021C48F8 +_0223AB0C: .word 0x021C48B8 +_0223AB10: .word 0x000005E3 +_0223AB14: .word 0x000003D9 +_0223AB18: .word 0x000009E8 +_0223AB1C: + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223AB28: + ldr r0, _0223AC14 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + mov r0, #0xf + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + mov r1, #2 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0223AC18 ; =0x000006A1 + bl FUN_020054C8 + mov r0, #0x18 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AB58: + bl FUN_0200E308 + cmp r0, #0 + beq _0223AB86 + mov r6, #0 + ldr r7, _0223AC14 ; =0x02251380 + add r5, r6, #0 +_0223AB66: + ldr r0, [r7] + add r1, r0, r5 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _0223AB66 + mov r0, #0x19 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AB86: + ldr r0, _0223AC14 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223AB94: + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + mov r3, #7 + str r0, [sp] + bl FUN_0200A208 + mov r0, #0x1a + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223ABAC: + mov r0, #0 + bl FUN_0200E388 + mov r0, #0 + bl FUN_0200E394 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3f + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223AC14 ; =0x02251380 + add sp, #0xc + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0x3c + str r0, [r4, #0x4c] + mov r0, #0xf + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223ABDC: + ldr r0, _0223AC14 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223AC10 + ldr r0, _0223AC1C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223AC04 + ldr r0, _0223AC20 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223AC10 +_0223AC04: + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0x13 + str r0, [r4] +_0223AC10: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223AC14: .word 0x02251380 +_0223AC18: .word 0x000006A1 +_0223AC1C: .word 0x021C48F8 +_0223AC20: .word 0x021C48B8 + thumb_func_end MOD18_0223A64C + + thumb_func_start MOD18_0223AC24 +MOD18_0223AC24: ; 0x0223AC24 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xb + bl FUN_02029160 + add r1, r0, #0 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + mov r2, #1 + bl FUN_02028AD4 + mov r0, #0xb + mov r1, #0x54 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x54 + bl MI_CpuFill8 + str r5, [r4, #0x10] + ldr r0, [r5, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205EDBC + ldr r0, _0223AC78 ; =MOD18_0223A64C + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _0223AC7C ; =0x02251380 + ldr r2, [r1] + mov r1, #0x22 + lsl r1, r1, #6 + str r0, [r2, r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223AC78: .word MOD18_0223A64C +_0223AC7C: .word 0x02251380 + thumb_func_end MOD18_0223AC24 + + thumb_func_start MOD18_0223AC80 +MOD18_0223AC80: ; 0x0223AC80 + ldr r0, _0223ACA0 ; =0x02251380 + mov r2, #0 + ldr r3, [r0] + mov r0, #0x81 + lsl r0, r0, #4 +_0223AC8A: + ldr r1, [r3, r0] + cmp r1, #0 + bne _0223AC94 + mov r0, #1 + bx lr +_0223AC94: + add r2, r2, #1 + add r3, #0xc + cmp r2, #8 + blt _0223AC8A + mov r0, #0 + bx lr + .align 2, 0 +_0223ACA0: .word 0x02251380 + thumb_func_end MOD18_0223AC80 + + thumb_func_start MOD18_0223ACA4 +MOD18_0223ACA4: ; 0x0223ACA4 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + ldr r2, _0223AD10 ; =0x02251380 + mov r3, #0x81 + ldr r2, [r2] + mov ip, r1 + mov r1, #0 + add r5, r2, #0 + lsl r3, r3, #4 +_0223ACB6: + ldr r4, [r5, r3] + cmp r4, #0 + bne _0223AD00 + add r4, r0, #0 + mov r3, #0x14 + mul r4, r3 + ldr r3, _0223AD14 ; =0x02250B30 + mov r0, #0xc + mul r0, r1 + add r5, r3, r4 + mov r3, #0x81 + add r2, r2, r0 + lsl r3, r3, #4 + str r5, [r2, r3] + ldr r2, _0223AD18 ; =0x02250B3E + ldrb r6, [r2, r4] + ldr r4, _0223AD10 ; =0x02251380 + ldr r2, [r4] + add r5, r2, r0 + add r2, r3, #4 + strb r6, [r5, r2] + ldr r2, [r4] + mov r6, ip + add r5, r2, r0 + add r2, r3, #5 + strb r6, [r5, r2] + ldr r2, [r4] + add r5, r2, r0 + add r2, r3, #6 + strb r7, [r5, r2] + ldr r2, [r4] + mov r5, #0 + add r0, r2, r0 + add r3, #8 + strb r5, [r0, r3] + add r0, r1, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223AD00: + add r1, r1, #1 + add r5, #0xc + cmp r1, #8 + blt _0223ACB6 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223AD10: .word 0x02251380 +_0223AD14: .word 0x02250B30 +_0223AD18: .word 0x02250B3E + thumb_func_end MOD18_0223ACA4 + + thumb_func_start MOD18_0223AD1C +MOD18_0223AD1C: ; 0x0223AD1C + push {r3, r4} + ldr r3, [r0] + cmp r3, #0 + bne _0223AD2A + mov r0, #1 + pop {r3, r4} + bx lr +_0223AD2A: + lsr r4, r1, #0x1f + add r4, r1, r4 + ldrb r0, [r0, #0xc] + asr r1, r4, #1 + lsr r4, r2, #0x1f + add r4, r2, r4 + asr r2, r4, #1 + lsr r0, r0, #1 + mul r0, r2 + add r0, r1, r0 + ldrb r0, [r3, r0] + cmp r0, #0x6f + beq _0223AD4A + mov r0, #1 + pop {r3, r4} + bx lr +_0223AD4A: + mov r0, #0 + pop {r3, r4} + bx lr + thumb_func_end MOD18_0223AD1C + + thumb_func_start MOD18_0223AD50 +MOD18_0223AD50: ; 0x0223AD50 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp] + str r1, [sp, #4] + add r6, r2, #0 + bl MOD18_0223AC80 + cmp r0, #0 + bne _0223AD68 + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223AD68: + ldr r0, [sp] + mov r1, #0x14 + mul r1, r0 + str r1, [sp, #0xc] + ldr r1, _0223AE74 ; =0x02250B3C + ldr r0, [sp, #0xc] + ldrb r0, [r1, r0] + lsr r1, r0, #1 + ldr r0, [sp, #4] + add r0, r0, r1 + str r0, [sp, #0x1c] + ldr r1, _0223AE78 ; =0x02250B3D + ldr r0, [sp, #0xc] + ldrb r0, [r1, r0] + lsr r0, r0, #1 + add r7, r6, r0 + ldr r0, [sp, #0x1c] + cmp r0, #0xd + ble _0223AD94 + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223AD94: + cmp r7, #0xa + ble _0223AD9E + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223AD9E: + ldr r0, [sp, #4] + str r0, [sp, #0x10] + add r1, r0, #0 + ldr r0, [sp, #0x1c] + cmp r1, r0 + bge _0223AE02 + mov r0, #0xd + mul r0, r6 + str r0, [sp, #0x20] +_0223ADB0: + add r4, r6, #0 + cmp r6, r7 + bge _0223ADF6 + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + ldr r5, [sp, #0x20] + sub r0, r1, r0 + lsl r0, r0, #1 + str r0, [sp, #0x14] +_0223ADC2: + ldr r1, _0223AE7C ; =0x02250B30 + ldr r0, [sp, #0xc] + sub r2, r4, r6 + add r0, r1, r0 + ldr r1, [sp, #0x14] + lsl r2, r2, #1 + bl MOD18_0223AD1C + cmp r0, #0 + beq _0223ADEE + ldr r0, _0223AE80 ; =0x02251380 + ldr r1, [r0] + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r1, r5, r0 + ldr r0, _0223AE84 ; =0x000008DC + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223ADEE + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223ADEE: + add r4, r4, #1 + add r5, #0xd + cmp r4, r7 + blt _0223ADC2 +_0223ADF6: + ldr r0, [sp, #0x10] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [sp, #0x10] + cmp r1, r0 + blt _0223ADB0 +_0223AE02: + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r6, #0 + bl MOD18_0223ACA4 + ldr r1, [sp, #4] + str r1, [sp, #8] + add r2, r1, #0 + ldr r1, [sp, #0x1c] + cmp r2, r1 + bge _0223AE6E + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x28] + mov r0, #0xd + mul r0, r6 + str r0, [sp, #0x24] +_0223AE24: + add r5, r6, #0 + cmp r6, r7 + bge _0223AE62 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r4, [sp, #0x24] + sub r0, r1, r0 + lsl r0, r0, #1 + str r0, [sp, #0x18] +_0223AE36: + ldr r1, _0223AE7C ; =0x02250B30 + ldr r0, [sp, #0xc] + sub r2, r5, r6 + add r0, r1, r0 + ldr r1, [sp, #0x18] + lsl r2, r2, #1 + bl MOD18_0223AD1C + cmp r0, #0 + beq _0223AE5A + ldr r0, _0223AE80 ; =0x02251380 + ldr r1, [r0] + ldr r0, [sp, #8] + add r0, r0, r1 + add r2, r4, r0 + ldr r1, [sp, #0x28] + ldr r0, _0223AE84 ; =0x000008DC + strb r1, [r2, r0] +_0223AE5A: + add r5, r5, #1 + add r4, #0xd + cmp r5, r7 + blt _0223AE36 +_0223AE62: + ldr r0, [sp, #8] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [sp, #8] + cmp r1, r0 + blt _0223AE24 +_0223AE6E: + mov r0, #1 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223AE74: .word 0x02250B3C +_0223AE78: .word 0x02250B3D +_0223AE7C: .word 0x02250B30 +_0223AE80: .word 0x02251380 +_0223AE84: .word 0x000008DC + thumb_func_end MOD18_0223AD50 + + thumb_func_start MOD18_0223AE88 +MOD18_0223AE88: ; 0x0223AE88 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223AED0 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + add r6, r0, #0 + bl FUN_02026CC4 + bl FUN_02025C38 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02024DA0 + bl FUN_02024CA4 + mov r1, #0 + cmp r0, #0 + beq _0223AEB6 + ldrh r0, [r5, #8] + b _0223AEB8 +_0223AEB6: + ldrh r0, [r5, #4] +_0223AEB8: + add r0, r1, r0 + cmp r4, #0 + beq _0223AECC + ldrb r1, [r5, #0xe] + cmp r1, #6 + bne _0223AEC6 + add r0, #0x21 +_0223AEC6: + cmp r1, #1 + bne _0223AECC + add r0, #0x42 +_0223AECC: + pop {r4, r5, r6, pc} + nop +_0223AED0: .word 0x02251380 + thumb_func_end MOD18_0223AE88 + + thumb_func_start MOD18_0223AED4 +MOD18_0223AED4: ; 0x0223AED4 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r5, _0223AEF8 ; =0x02250B30 + add r6, r4, #0 +_0223AEDC: + ldrb r0, [r5, #0xe] + cmp r0, #0x3c + beq _0223AEF2 + add r0, r5, #0 + bl MOD18_0223AE88 + add r6, r6, #1 + add r4, r4, r0 + add r5, #0x14 + cmp r6, #0x55 + blo _0223AEDC +_0223AEF2: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_0223AEF8: .word 0x02250B30 + thumb_func_end MOD18_0223AED4 + + thumb_func_start MOD18_0223AEFC +MOD18_0223AEFC: ; 0x0223AEFC + push {r4, r5, r6, lr} + ldr r5, _0223AF28 ; =0x02250B30 + add r6, r0, #0 + mov r4, #0 +_0223AF04: + ldrb r0, [r5, #0xe] + cmp r0, #0x3c + beq _0223AF20 + add r0, r5, #0 + bl MOD18_0223AE88 + sub r6, r6, r0 + bpl _0223AF18 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_0223AF18: + add r4, r4, #1 + add r5, #0x14 + cmp r4, #0x55 + blo _0223AF04 +_0223AF20: + bl ErrorHandling + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223AF28: .word 0x02250B30 + thumb_func_end MOD18_0223AEFC + + thumb_func_start MOD18_0223AF2C +MOD18_0223AF2C: ; 0x0223AF2C + mov r0, #0 + ldr r3, _0223AF44 ; =0x02250B30 + add r2, r0, #0 +_0223AF32: + ldrb r1, [r3, #0xe] + cmp r1, #0x3c + blo _0223AF3A + add r0, r0, #1 +_0223AF3A: + add r2, r2, #1 + add r3, #0x14 + cmp r2, #0x55 + blo _0223AF32 + bx lr + .align 2, 0 +_0223AF44: .word 0x02250B30 + thumb_func_end MOD18_0223AF2C + + thumb_func_start MOD18_0223AF48 +MOD18_0223AF48: ; 0x0223AF48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp] + ldr r0, _0223B1A0 ; =0x02251380 + str r1, [sp, #4] + ldr r0, [r0] + str r2, [sp, #8] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + str r0, [sp, #0x38] + bl MOD18_0223AED4 + str r0, [sp, #0x1c] + bl MOD18_0223AF2C + str r0, [sp, #0x28] + ldr r0, _0223B1A0 ; =0x02251380 + ldr r4, [r0] + add r5, r4, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #8] + str r3, [r5, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #3 + mov r3, #0 + bl _ll_mul + ldr r0, [sp, #8] + add r1, r1, #2 + str r1, [r0, #0xc] + ldr r0, [sp, #0x38] + bl FUN_02026620 + cmp r0, #0 + beq _0223AFB0 + ldr r0, [sp, #8] + mov r1, #3 + str r1, [r0, #0xc] +_0223AFB0: + ldr r0, [sp, #8] + mov r4, #0 + ldr r0, [r0, #0xc] + cmp r0, #0 + ble _0223B0BA + add r7, sp, #0x48 + str r4, [sp, #0x20] +_0223AFBE: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r6, [r0] + add r5, r6, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r6, #8] + ldr r3, [r5, #4] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + add r0, r0, r2 + str r0, [r6, #8] + adc r1, r3 + ldr r0, [sp, #0x1c] + str r1, [r5, #4] + cmp r0, #0 + bne _0223AFEC + ldr r1, [r5, #4] + b _0223AFF8 +_0223AFEC: + ldr r0, [r5, #4] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + mov r1, #0 + bl _ll_mul +_0223AFF8: + add r0, r1, #0 + bl MOD18_0223AEFC + mov r1, #0x14 + str r0, [sp, #0x30] + mul r1, r0 + ldr r0, _0223B1A4 ; =0x02250B30 + add r0, r0, r1 + ldrb r5, [r0, #0xe] + ldr r0, [sp, #0x38] + add r1, r5, #0 + bl FUN_02026688 + cmp r0, #0 + beq _0223B0B2 + cmp r5, #0x2c + blt _0223B042 + cmp r5, #0x3b + bgt _0223B042 + mov r3, #0 + add r2, r3, #0 + str r5, [r7] + cmp r4, #0 + ble _0223B03C + add r6, sp, #0x48 + mov r0, #1 +_0223B02C: + ldr r1, [r6] + cmp r5, r1 + bne _0223B034 + add r3, r0, #0 +_0223B034: + add r2, r2, #1 + add r6, r6, #4 + cmp r2, r4 + blt _0223B02C +_0223B03C: + cmp r3, #0 + bne _0223B0B2 + b _0223B046 +_0223B042: + mov r0, #0x1c + str r0, [r7] +_0223B046: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r5, [r0] + add r6, r5, #0 + add r6, #8 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + ldr r0, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r0, r3 + adc r2, r1 + str r0, [r5, #8] + str r2, [r6, #4] + add r0, r2, #0 + mov r1, #0 + mov r2, #0xd + mov r3, #0 + bl _ll_mul + add r6, r5, #0 + add r6, #8 + str r1, [sp, #0x18] + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + ldr r0, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r0, r3 + adc r2, r1 + str r0, [r5, #8] + str r2, [r6, #4] + add r0, r2, #0 + mov r1, #0 + mov r2, #0xa + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x18] + bl MOD18_0223AD50 + cmp r0, #0 + beq _0223B0B2 + add r7, r7, #4 + add r4, r4, #1 +_0223B0B2: + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + cmp r4, r0 + blt _0223AFBE +_0223B0BA: + ldr r0, [sp, #0x38] + bl FUN_02026620 + cmp r0, #0 + bne _0223B18E + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + mov r1, #0x55 + sub r0, r1, r0 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] +_0223B0DA: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r6, [r0] + add r5, r6, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r6, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + str r0, [r6, #8] + adc r3, r1 + ldr r0, [sp, #0x28] + str r3, [r5, #4] + cmp r0, #0 + ldr r0, [r5, #4] + bne _0223B106 + str r0, [sp, #0x10] + b _0223B112 +_0223B106: + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + bl _ll_mul + str r1, [sp, #0x10] +_0223B112: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r5, [r0] + add r6, r5, #0 + add r6, #8 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + ldr r1, [sp, #0x40] + str r3, [r6, #4] + add r0, r3, #0 + mov r2, #0xd + mov r3, #0 + bl _ll_mul + add r6, r5, #0 + add r6, #8 + add r7, r1, #0 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r2 + adc r1, r3 + str r0, [r5, #8] + str r1, [r6, #4] + add r0, r1, #0 + ldr r1, [sp, #0x44] + mov r2, #0xa + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x24] + add r0, r1, r0 + add r1, r7, #0 + bl MOD18_0223AD50 + cmp r0, #0 + beq _0223B180 + add r4, r4, #1 +_0223B180: + cmp r4, #0xc + bgt _0223B18E + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, #0x64 + blt _0223B0DA +_0223B18E: + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD18_0223B454 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B1A0: .word 0x02251380 +_0223B1A4: .word 0x02250B30 + thumb_func_end MOD18_0223AF48 + + thumb_func_start MOD18_0223B1A8 +MOD18_0223B1A8: ; 0x0223B1A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + ldr r0, _0223B2D0 ; =0x02251380 + str r1, [sp, #0x10] + ldr r1, [r0] + mov r0, #0x81 + lsl r0, r0, #4 + add r5, r1, r0 + mov r0, #0xc + add r6, r4, #0 + mul r6, r0 + add r0, r5, r6 + str r0, [sp, #0x38] + ldr r0, [sp, #0x10] + mov r1, #1 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + bl FUN_0201886C + ldr r1, [r5, r6] + str r0, [sp, #0x34] + ldr r0, [sp, #0x38] + ldrb r2, [r1, #0xd] + ldrb r0, [r0, #5] + add r6, r4, #0 + lsl r7, r0, #1 + ldr r0, [sp, #0x38] + ldrb r0, [r0, #6] + lsl r0, r0, #1 + str r0, [sp, #0x30] + ldrb r0, [r1, #0xc] + add r0, r7, r0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x30] + add r0, r0, r2 + str r0, [sp, #0x28] + ldr r0, [sp, #0x18] + ldr r0, [r0, #0xc] + cmp r4, r0 + blt _0223B1FC + mov r6, #4 +_0223B1FC: + cmp r4, r0 + blt _0223B218 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x1d + str r0, [sp, #4] + add r3, r6, #3 + ldrh r1, [r1, #0x12] + mov r0, #0x37 + mov r2, #0 + lsl r3, r3, #5 + bl FUN_02006930 + b _0223B248 +_0223B218: + ldr r5, [sp, #0x18] + ldrh r1, [r1, #0x12] + lsl r4, r4, #2 + add r5, #0x28 + mov r0, #0x37 + add r2, r5, r4 + mov r3, #0x1d + bl FUN_02006C08 + ldr r1, [sp, #0x18] + add r1, r1, r4 + str r0, [r1, #0x18] + ldr r0, [r5, r4] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [r5, r4] + add r1, r6, #3 + ldr r0, [r0, #0xc] + lsl r1, r1, #5 + mov r2, #0x20 + bl GX_LoadBGPltt +_0223B248: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x38] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r1, [r1] + ldr r2, [sp, #0x10] + ldrh r1, [r1, #0x10] + mov r0, #0x37 + mov r3, #1 + bl FUN_0200687C + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r0, [sp, #0x24] + add r1, r0, #0 + ldr r0, [sp, #0x28] + cmp r1, r0 + bge _0223B2CA + add r0, r6, #3 + lsl r1, r0, #0xc + ldr r0, [sp, #0x14] + add r6, r0, r1 + lsl r0, r7, #1 + str r0, [sp, #0x3c] +_0223B280: + ldr r0, [sp, #0x2c] + add r4, r7, #0 + cmp r7, r0 + bge _0223B2BE + ldr r0, [sp, #0x24] + add r0, r0, #4 + lsl r1, r0, #6 + ldr r0, [sp, #0x34] + add r1, r0, r1 + ldr r0, [sp, #0x3c] + add r5, r1, r0 + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x30] + sub r0, r1, r0 + str r0, [sp, #0x1c] +_0223B29E: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x1c] + ldr r0, [r0] + sub r1, r4, r7 + add r6, r6, #1 + bl MOD18_0223AD1C + cmp r0, #0 + beq _0223B2B4 + sub r0, r6, #1 + strh r0, [r5] +_0223B2B4: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, r0 + blt _0223B29E +_0223B2BE: + ldr r0, [sp, #0x24] + add r1, r0, #1 + ldr r0, [sp, #0x28] + str r1, [sp, #0x24] + cmp r1, r0 + blt _0223B280 +_0223B2CA: + ldr r0, [sp, #0x20] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B2D0: .word 0x02251380 + thumb_func_end MOD18_0223B1A8 + + thumb_func_start MOD18_0223B2D4 +MOD18_0223B2D4: ; 0x0223B2D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp] + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x10] +_0223B2E6: + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x38] + cmp r0, #1 + bne _0223B3DA + ldr r0, _0223B440 ; =0x000006A7 + bl FUN_020054C8 + mov r0, #0 + mov r4, #0 + str r4, [sp, #0x18] + str r0, [sp, #0x20] + str r0, [sp, #0x24] +_0223B2FE: + ldr r0, _0223B444 ; =0x02251380 + ldr r5, [r0] + ldr r0, [sp, #0x10] + add r6, r5, #0 + add r1, r0, r5 + mov r0, #0x81 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r6, #8 + ldrb r0, [r0, #0xc] + str r1, [sp, #0xc] + ldr r1, [r6, #0xc] + lsl r7, r0, #3 + ldr r0, [r6, #8] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + add r2, r1, #0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + str r0, [r5, #8] + str r1, [r6, #4] + cmp r7, #0 + ldr r0, [r6, #4] + bne _0223B33C + str r0, [sp, #8] + b _0223B348 +_0223B33C: + ldr r1, [sp, #0x20] + add r2, r7, #0 + mov r3, #0 + bl _ll_mul + str r1, [sp, #8] +_0223B348: + mov r0, #0x81 + ldr r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r6, r5, #0 + ldrb r0, [r0, #0xd] + add r6, #8 + ldr r1, [r6, #0xc] + lsl r7, r0, #3 + ldr r0, [r6, #8] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + add r2, r1, #0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + str r0, [r5, #8] + str r1, [r6, #4] + cmp r7, #0 + bne _0223B37C + ldr r1, [r6, #4] + b _0223B388 +_0223B37C: + ldr r0, [r6, #4] + ldr r1, [sp, #0x24] + add r2, r7, #0 + mov r3, #0 + bl _ll_mul +_0223B388: + ldr r0, _0223B444 ; =0x02251380 + ldr r3, [sp, #0xc] + ldr r2, [r0] + ldr r0, _0223B448 ; =0x00000815 + ldr r5, [sp, #0xc] + ldrb r0, [r3, r0] + lsl r3, r0, #4 + ldr r0, [sp, #8] + add r0, r0, r3 + ldr r3, _0223B44C ; =0x00000816 + lsl r0, r0, #0xc + ldrb r3, [r5, r3] + lsl r3, r3, #4 + str r0, [sp, #0x28] + add r0, r1, r3 + add r0, #0x20 + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + mov r0, #0x7f + add r1, r2, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp, #0x18] + add r1, #8 + bl FUN_02020130 + ldr r0, _0223B444 ; =0x02251380 + ldr r0, [r0] + add r1, r0, r4 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x28 + bl FUN_02020044 + ldr r0, [sp, #0x18] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #3 + blt _0223B2FE +_0223B3DA: + ldr r0, [sp, #0x14] + add r0, r0, #4 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r0, #0xc + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #4 + bge _0223B3F2 + b _0223B2E6 +_0223B3F2: + mov r5, #0 + ldr r4, _0223B450 ; =0x022511F0 + mov r7, #0x20 + add r6, r5, #0 +_0223B3FA: + ldr r0, [sp] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _0223B430 + ldr r1, [sp] + ldr r1, [r1, #0x28] + ldr r3, [r1, #0xc] + add r1, r4, r0 + sub r1, r1, #1 + ldrb r2, [r1] + cmp r2, #0xff + bne _0223B418 + ldr r0, [sp] + str r6, [r0, #0x38] + b _0223B430 +_0223B418: + add r1, r0, #1 + ldr r0, [sp] + cmp r2, #0xfe + str r1, [r0, #0x38] + beq _0223B430 + lsl r0, r2, #1 + add r1, r5, #3 + add r0, r3, r0 + lsl r1, r1, #5 + add r2, r7, #0 + bl GX_LoadBGPltt +_0223B430: + ldr r0, [sp] + add r5, r5, #1 + add r0, r0, #4 + str r0, [sp] + cmp r5, #4 + blt _0223B3FA + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B440: .word 0x000006A7 +_0223B444: .word 0x02251380 +_0223B448: .word 0x00000815 +_0223B44C: .word 0x00000816 +_0223B450: .word 0x022511F0 + thumb_func_end MOD18_0223B2D4 + + thumb_func_start MOD18_0223B454 +MOD18_0223B454: ; 0x0223B454 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r4, #0 + str r3, [sp] + ldr r5, _0223B47C ; =0x00000269 + cmp r6, #0 + ble _0223B47A +_0223B464: + ldr r3, [sp] + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD18_0223B1A8 + lsr r0, r0, #5 + add r4, r4, #1 + add r5, r5, r0 + cmp r4, r6 + blt _0223B464 +_0223B47A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B47C: .word 0x00000269 + thumb_func_end MOD18_0223B454 + + thumb_func_start MOD18_0223B480 +MOD18_0223B480: ; 0x0223B480 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + mov r0, #0 + str r0, [sp, #0xc] +_0223B488: + ldr r0, _0223B694 ; =0x02251380 + ldr r4, [r0] + add r5, r4, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #8] + str r3, [r5, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0x15 + mov r3, #0 + bl _ll_mul + add r5, r4, #0 + add r5, #8 + str r1, [sp, #0x20] + sub r1, #8 + str r1, [sp, #0x20] + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #8] + str r3, [r5, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0x12 + mov r3, #0 + bl _ll_mul + sub r5, r1, #5 + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #8 + add r1, r5, #0 + str r5, [sp, #0x10] + str r0, [sp, #0x14] + cmp r1, r0 + bge _0223B548 + add r0, r5, #0 + ldr r3, [sp, #0x20] + mov r1, #0xd + add r6, r0, #0 + mul r6, r1 + add r3, #8 +_0223B500: + cmp r5, #0xa + bge _0223B53E + cmp r5, #0 + blt _0223B53E + ldr r4, [sp, #0x20] + add r0, r4, #0 + cmp r0, r3 + bge _0223B53E + ldr r0, [sp, #0x10] + sub r0, r5, r0 + lsl r1, r0, #3 + ldr r0, _0223B698 ; =0x02250AF0 + add r7, r0, r1 +_0223B51A: + cmp r4, #0xd + bge _0223B538 + cmp r4, #0 + blt _0223B538 + ldr r0, [sp, #0x20] + sub r0, r4, r0 + ldrb r2, [r7, r0] + cmp r2, #0 + beq _0223B538 + ldr r0, _0223B694 ; =0x02251380 + ldr r0, [r0] + add r0, r6, r0 + add r1, r4, r0 + ldr r0, _0223B69C ; =0x0000095E + strb r2, [r1, r0] +_0223B538: + add r4, r4, #1 + cmp r4, r3 + blt _0223B51A +_0223B53E: + ldr r0, [sp, #0x14] + add r5, r5, #1 + add r6, #0xd + cmp r5, r0 + blt _0223B500 +_0223B548: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0xa + blt _0223B488 + mov r0, #0 + str r0, [sp, #4] +_0223B556: + ldr r0, _0223B694 ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + str r3, [r4, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0x12 + mov r3, #0 + bl _ll_mul + add r6, r5, #0 + add r6, #8 + sub r4, r1, #5 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + str r3, [r6, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0xf + mov r3, #0 + bl _ll_mul + sub r0, r1, #5 + str r0, [sp] + ldr r3, [sp] + mov r0, #1 + str r0, [sp, #8] + add r0, r3, #0 + add r0, r0, #5 + add r1, r3, #0 + str r0, [sp, #0x18] + cmp r1, r0 + bge _0223B61A + mov r1, #0xd + add r0, r3, #0 + mul r1, r0 + ldr r7, _0223B69C ; =0x0000095E + add r1, r5, r1 + add r0, r4, #5 +_0223B5CE: + cmp r3, #0xa + bge _0223B610 + cmp r3, #0 + blt _0223B610 + add r5, r4, #0 + cmp r4, r0 + bge _0223B60A + ldr r2, [sp] + sub r2, r3, r2 + lsl r6, r2, #3 + ldr r2, _0223B698 ; =0x02250AF0 + add r2, r2, r6 +_0223B5E6: + cmp r5, #0xd + bge _0223B604 + cmp r5, #0 + blt _0223B604 + sub r6, r5, r4 + ldrb r6, [r2, r6] + cmp r6, #0 + beq _0223B604 + add r6, r1, r5 + ldrb r6, [r6, r7] + cmp r6, #4 + bhs _0223B604 + mov r2, #0 + str r2, [sp, #8] + b _0223B60A +_0223B604: + add r5, r5, #1 + cmp r5, r0 + blt _0223B5E6 +_0223B60A: + ldr r2, [sp, #8] + cmp r2, #0 + beq _0223B61A +_0223B610: + ldr r2, [sp, #0x18] + add r3, r3, #1 + add r1, #0xd + cmp r3, r2 + blt _0223B5CE +_0223B61A: + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223B684 + ldr r0, [sp] + ldr r1, [sp] + str r0, [sp, #0x1c] + add r0, r0, #5 + mov ip, r0 + cmp r1, r0 + bge _0223B684 + ldr r0, [sp] + mov r1, #0xd + add r3, r0, #0 + mul r3, r1 + add r6, r4, #5 +_0223B638: + ldr r0, [sp, #0x1c] + cmp r0, #0xa + bge _0223B676 + cmp r0, #0 + blt _0223B676 + add r5, r4, #0 + cmp r4, r6 + bge _0223B676 + ldr r1, [sp] + sub r1, r0, r1 + lsl r0, r1, #2 + add r1, r1, r0 + ldr r0, _0223B6A0 ; =0x02250ABA + add r7, r0, r1 +_0223B654: + cmp r5, #0xd + bge _0223B670 + cmp r5, #0 + blt _0223B670 + sub r0, r5, r4 + ldrb r2, [r7, r0] + cmp r2, #0 + beq _0223B670 + ldr r0, _0223B694 ; =0x02251380 + ldr r0, [r0] + add r0, r3, r0 + add r1, r5, r0 + ldr r0, _0223B69C ; =0x0000095E + strb r2, [r1, r0] +_0223B670: + add r5, r5, #1 + cmp r5, r6 + blt _0223B654 +_0223B676: + ldr r0, [sp, #0x1c] + mov r1, ip + add r0, r0, #1 + add r3, #0xd + str r0, [sp, #0x1c] + cmp r0, r1 + blt _0223B638 +_0223B684: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #0xf + bge _0223B690 + b _0223B556 +_0223B690: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B694: .word 0x02251380 +_0223B698: .word 0x02250AF0 +_0223B69C: .word 0x0000095E +_0223B6A0: .word 0x02250ABA + thumb_func_end MOD18_0223B480 + + thumb_func_start MOD18_0223B6A4 +MOD18_0223B6A4: ; 0x0223B6A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #2 + str r0, [sp] + bl FUN_0201886C + str r0, [sp, #8] + mov r2, #0 + mov r0, #4 + mov ip, r2 + str r0, [sp, #4] +_0223B6BA: + ldr r0, [sp, #4] + mov r6, #0 + lsl r3, r0, #5 +_0223B6C0: + ldr r0, _0223B728 ; =0x02251380 + lsl r7, r3, #1 + ldr r0, [r0] + ldr r4, _0223B72C ; =0x00002001 + add r0, r2, r0 + add r1, r6, r0 + ldr r0, _0223B730 ; =0x0000095E + add r6, r6, #1 + ldrb r0, [r1, r0] + add r3, r3, #2 + lsl r1, r0, #2 + ldr r0, _0223B734 ; =0x02250AD4 + ldr r1, [r0, r1] + ldr r0, [sp, #8] + ldrb r5, [r1] + add r0, r0, r7 + add r5, r5, r4 + ldr r4, [sp, #8] + strh r5, [r4, r7] + ldrb r5, [r1, #1] + ldr r4, _0223B72C ; =0x00002001 + add r4, r5, r4 + strh r4, [r0, #2] + ldrb r5, [r1, #2] + ldr r4, _0223B72C ; =0x00002001 + add r4, r5, r4 + add r5, r0, #0 + add r5, #0x40 + strh r4, [r5] + ldrb r4, [r1, #3] + ldr r1, _0223B72C ; =0x00002001 + add r0, #0x42 + add r1, r4, r1 + strh r1, [r0] + cmp r6, #0xd + blt _0223B6C0 + ldr r0, [sp, #4] + add r2, #0xd + add r0, r0, #2 + str r0, [sp, #4] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0xa + blt _0223B6BA + ldr r0, [sp] + mov r1, #2 + bl FUN_02017CD0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223B728: .word 0x02251380 +_0223B72C: .word 0x00002001 +_0223B730: .word 0x0000095E +_0223B734: .word 0x02250AD4 + thumb_func_end MOD18_0223B6A4 + + thumb_func_start MOD18_0223B738 +MOD18_0223B738: ; 0x0223B738 + ldr r2, _0223B76C ; =0x02251380 + mov r3, #0xd + ldr r2, [r2] + mul r3, r1 + add r1, r2, r3 + add r0, r1, r0 + ldr r1, _0223B770 ; =0x000008DC + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B750 + mov r0, #0 + bx lr +_0223B750: + sub r3, r0, #1 + mov r0, #0xc + mul r0, r3 + add r0, r2, r0 + sub r1, #0xc8 + ldrb r0, [r0, r1] + cmp r0, #0 + beq _0223B768 + cmp r0, #0x3c + bge _0223B768 + mov r0, #1 + bx lr +_0223B768: + mov r0, #0 + bx lr + .align 2, 0 +_0223B76C: .word 0x02251380 +_0223B770: .word 0x000008DC + thumb_func_end MOD18_0223B738 + + thumb_func_start MOD18_0223B774 +MOD18_0223B774: ; 0x0223B774 + ldr r2, _0223B7A4 ; =0x02251380 + mov r3, #0xd + ldr r2, [r2] + mul r3, r1 + add r1, r2, r3 + add r0, r1, r0 + ldr r1, _0223B7A8 ; =0x000008DC + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B78C + mov r0, #0 + bx lr +_0223B78C: + sub r3, r0, #1 + mov r0, #0xc + mul r0, r3 + add r0, r2, r0 + sub r1, #0xc8 + ldrb r0, [r0, r1] + cmp r0, #0x3c + blo _0223B7A0 + mov r0, #1 + bx lr +_0223B7A0: + mov r0, #0 + bx lr + .align 2, 0 +_0223B7A4: .word 0x02251380 +_0223B7A8: .word 0x000008DC + thumb_func_end MOD18_0223B774 + + thumb_func_start MOD18_0223B7AC +MOD18_0223B7AC: ; 0x0223B7AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r2, [sp, #4] + asr r2, r0, #3 + lsr r2, r2, #0x1c + add r2, r0, r2 + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + mov r5, #0 + sub r0, r0, #2 + asr r7, r2, #4 + add r6, r5, #0 + str r3, [sp, #8] + str r0, [sp, #0xc] + cmp r7, #0 + blt _0223B7DC + cmp r7, #0xd + bge _0223B7DC + cmp r0, #0 + blt _0223B7DC + cmp r0, #0xa + blt _0223B7DE +_0223B7DC: + b _0223B92A +_0223B7DE: + add r4, r0, #0 + mov r1, #0xd + ldr r0, _0223B930 ; =0x02251380 + mul r4, r1 + ldr r1, [r0] + ldr r0, _0223B934 ; =0x0000095E + add r0, r1, r0 + add r1, r0, r4 + ldrb r0, [r1, r7] + cmp r0, #0 + beq _0223B7F8 + sub r0, r0, #1 + strb r0, [r1, r7] +_0223B7F8: + ldr r0, _0223B930 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223B934 ; =0x0000095E + add r0, r1, r0 + add r1, r0, r4 + ldrb r0, [r1, r7] + cmp r0, #0 + beq _0223B80C + sub r0, r0, #1 + strb r0, [r1, r7] +_0223B80C: + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD18_0223B774 + cmp r0, #0 + beq _0223B82A + ldr r0, _0223B930 ; =0x02251380 + ldr r0, [r0] + add r0, r0, r4 + add r1, r0, r7 + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B82A + mov r5, #1 +_0223B82A: + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD18_0223B738 + cmp r0, #0 + beq _0223B84E + ldr r0, _0223B930 ; =0x02251380 + ldr r0, [r0] + add r0, r0, r4 + add r1, r0, r7 + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B84E + ldr r0, [sp, #8] + mov r1, #0xf + mov r6, #1 + str r1, [r0, #0x14] +_0223B84E: + ldr r1, [sp, #0xc] + ldr r2, [sp, #4] + add r1, r1, #2 + lsl r0, r7, #4 + lsl r1, r1, #4 + add r3, r5, #0 + str r6, [sp] + bl MOD18_0223A2BC + cmp r5, #0 + bne _0223B92A + ldr r0, [sp, #4] + cmp r0, #0 + bne _0223B8B6 + ldr r4, _0223B938 ; =0x022511D4 + ldr r5, _0223B93C ; =0x02250860 + mov r3, #0 +_0223B870: + mov r0, #0 + ldrsb r1, [r4, r0] + ldr r0, [sp, #0xc] + add r2, r0, r1 + mov r0, #0 + ldrsb r0, [r5, r0] + add r1, r7, r0 + cmp r2, #0 + blt _0223B8AC + cmp r2, #0xa + bge _0223B8AC + cmp r1, #0 + blt _0223B8AC + cmp r1, #0xd + bge _0223B8AC + ldr r0, _0223B930 ; =0x02251380 + mov r6, #0xd + ldr r0, [r0] + mul r6, r2 + add r0, r0, r6 + add r0, r0, r1 + ldr r1, _0223B934 ; =0x0000095E + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223B8AC + ldr r1, _0223B934 ; =0x0000095E + ldrb r1, [r0, r1] + sub r2, r1, #1 + ldr r1, _0223B934 ; =0x0000095E + strb r2, [r0, r1] +_0223B8AC: + add r3, r3, #1 + add r4, r4, #1 + add r5, r5, #1 + cmp r3, #4 + blt _0223B870 +_0223B8B6: + mov r0, #0 + ldr r2, _0223B940 ; =0x022511EC + ldr r3, _0223B944 ; =0x022511D8 + mov ip, r0 +_0223B8BE: + mov r0, #0 + ldrsb r1, [r2, r0] + ldr r0, [sp, #0xc] + add r0, r0, r1 + mov r1, #0 + ldrsb r1, [r3, r1] + add r5, r7, r1 + cmp r0, #0 + blt _0223B91C + cmp r0, #0xa + bge _0223B91C + cmp r5, #0 + blt _0223B91C + cmp r5, #0xd + bge _0223B91C + add r4, r0, #0 + ldr r0, _0223B930 ; =0x02251380 + mov r1, #0xd + ldr r0, [r0] + mul r4, r1 + add r0, r0, r4 + add r6, r0, r5 + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r6, r0] + cmp r0, #0 + beq _0223B8FC + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r6, r0] + sub r1, r0, #1 + ldr r0, _0223B934 ; =0x0000095E + strb r1, [r6, r0] +_0223B8FC: + ldr r0, [sp, #4] + cmp r0, #0 + bne _0223B91C + ldr r0, _0223B930 ; =0x02251380 + ldr r1, _0223B934 ; =0x0000095E + ldr r0, [r0] + add r0, r0, r4 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223B91C + ldr r1, _0223B934 ; =0x0000095E + ldrb r1, [r0, r1] + sub r4, r1, #1 + ldr r1, _0223B934 ; =0x0000095E + strb r4, [r0, r1] +_0223B91C: + mov r0, ip + add r0, r0, #1 + add r2, r2, #1 + add r3, r3, #1 + mov ip, r0 + cmp r0, #4 + blt _0223B8BE +_0223B92A: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B930: .word 0x02251380 +_0223B934: .word 0x0000095E +_0223B938: .word 0x022511D4 +_0223B93C: .word 0x02250860 +_0223B940: .word 0x022511EC +_0223B944: .word 0x022511D8 + thumb_func_end MOD18_0223B7AC + + thumb_func_start MOD18_0223B948 +MOD18_0223B948: ; 0x0223B948 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + ldrb r1, [r6, #1] + str r2, [sp] + ldrb r2, [r6, #3] + mov ip, r1 + mov r1, #0 + mov lr, r1 + mov r1, ip + str r3, [sp, #4] + cmp r1, r2 + bge _0223B9B6 + mov r1, ip + cmp r1, r2 + bge _0223B9B6 + mov r1, lr + str r1, [sp, #8] + mov r1, ip + mov r7, #0x3f + lsl r5, r1, #5 + lsl r7, r7, #0xa +_0223B974: + ldr r2, [sp] + ldr r1, [sp, #8] + add r3, r2, r1 + ldrb r2, [r6] + ldrb r1, [r6, #2] + cmp r2, r1 + bge _0223B998 +_0223B982: + add r1, r2, r5 + lsl r1, r1, #1 + ldrh r4, [r0, r1] + add r2, r2, #1 + and r4, r7 + add r4, r3, r4 + strh r4, [r0, r1] + ldrb r1, [r6, #2] + add r3, r3, #1 + cmp r2, r1 + blt _0223B982 +_0223B998: + mov r1, ip + add r1, r1, #1 + mov ip, r1 + ldr r2, [sp, #8] + ldr r1, [sp, #4] + add r5, #0x20 + add r1, r2, r1 + str r1, [sp, #8] + mov r1, lr + add r1, r1, #1 + mov lr, r1 + ldrb r2, [r6, #3] + mov r1, ip + cmp r1, r2 + blt _0223B974 +_0223B9B6: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0223B948 + + thumb_func_start MOD18_0223B9BC +MOD18_0223B9BC: ; 0x0223B9BC + push {r4, lr} + ldr r3, _0223B9E0 ; =0x02251380 + ldr r2, _0223B9E4 ; =0x000009E6 + ldr r4, [r3] + mov r1, #1 + strb r1, [r4, r2] + ldr r3, [r3] + sub r2, r2, #2 + strb r1, [r3, r2] + bl FUN_0201886C + ldr r1, _0223B9E8 ; =0x02250874 + mov r2, #0x30 + mov r3, #0x36 + bl MOD18_0223B948 + pop {r4, pc} + nop +_0223B9E0: .word 0x02251380 +_0223B9E4: .word 0x000009E6 +_0223B9E8: .word 0x02250874 + thumb_func_end MOD18_0223B9BC + + thumb_func_start MOD18_0223B9EC +MOD18_0223B9EC: ; 0x0223B9EC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r3, #0 + add r5, r0, #0 + cmp r4, #2 + blt _0223BA24 + bne _0223BA36 + cmp r1, #0xd6 + ble _0223BA24 + cmp r1, #0xfc + bge _0223BA24 + cmp r2, #0x2b + ble _0223BA1C + cmp r2, #0x6e + bge _0223BA1C + ldr r2, _0223BB40 ; =0x02251380 + ldr r1, _0223BB44 ; =0x000009E6 + ldr r3, [r2] + mov r0, #0 + strb r0, [r3, r1] + ldr r2, [r2] + sub r1, r1, #2 + strb r0, [r2, r1] + b _0223BA36 +_0223BA1C: + cmp r2, #0x72 + ble _0223BA24 + cmp r2, #0xae + blt _0223BA26 +_0223BA24: + b _0223BB3C +_0223BA26: + ldr r2, _0223BB40 ; =0x02251380 + ldr r1, _0223BB44 ; =0x000009E6 + ldr r3, [r2] + mov r0, #1 + strb r0, [r3, r1] + ldr r2, [r2] + sub r1, r1, #2 + strb r0, [r2, r1] +_0223BA36: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201886C + ldr r1, _0223BB40 ; =0x02251380 + add r6, r0, #0 + ldr r2, [r1] + ldr r1, _0223BB44 ; =0x000009E6 + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223BA52 + cmp r1, #1 + beq _0223BAC4 + b _0223BB34 +_0223BA52: + cmp r4, #2 + bne _0223BA74 + ldr r1, _0223BB48 ; =0x02250878 + mov r2, #0x18 + mov r3, #0x36 + bl MOD18_0223B948 + ldr r1, _0223BB4C ; =0x02250874 + add r0, r6, #0 + mov r2, #0x24 + mov r3, #0x36 + bl MOD18_0223B948 + ldr r0, _0223BB50 ; =0x000005DC + bl FUN_020054C8 + b _0223BA82 +_0223BA74: + cmp r4, #3 + bne _0223BA82 + ldr r1, _0223BB48 ; =0x02250878 + mov r2, #0x1e + mov r3, #0x36 + bl MOD18_0223B948 +_0223BA82: + cmp r4, #2 + bne _0223BB34 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #6 + bl FUN_02020130 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x3a + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + b _0223BB34 +_0223BAC4: + cmp r4, #2 + bne _0223BAE6 + ldr r1, _0223BB48 ; =0x02250878 + mov r2, #0x12 + mov r3, #0x36 + bl MOD18_0223B948 + ldr r1, _0223BB4C ; =0x02250874 + add r0, r6, #0 + mov r2, #0x2a + mov r3, #0x36 + bl MOD18_0223B948 + ldr r0, _0223BB50 ; =0x000005DC + bl FUN_020054C8 + b _0223BAF4 +_0223BAE6: + cmp r4, #3 + bne _0223BAF4 + ldr r1, _0223BB4C ; =0x02250874 + mov r2, #0x30 + mov r3, #0x36 + bl MOD18_0223B948 +_0223BAF4: + cmp r4, #2 + bne _0223BB34 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #7 + bl FUN_02020130 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x3a + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #0x26 + lsl r0, r0, #0xe + str r0, [sp, #4] + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 +_0223BB34: + add r0, r5, #0 + mov r1, #1 + bl FUN_02017CD0 +_0223BB3C: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223BB40: .word 0x02251380 +_0223BB44: .word 0x000009E6 +_0223BB48: .word 0x02250878 +_0223BB4C: .word 0x02250874 +_0223BB50: .word 0x000005DC + thumb_func_end MOD18_0223B9EC + + thumb_func_start MOD18_0223BB54 +MOD18_0223BB54: ; 0x0223BB54 + ldr r1, _0223BB74 ; =0x02251380 + ldr r2, [r1] + ldr r1, _0223BB78 ; =0x000009E7 + ldrb r2, [r2, r1] + asr r1, r2, #1 + lsr r1, r1, #0x1e + add r1, r2, r1 + asr r1, r1, #2 + lsl r1, r1, #2 + add r1, #0x10 + lsl r1, r1, #0xc + str r1, [r0] + mov r1, #1 + lsl r1, r1, #0x10 + str r1, [r0, #4] + bx lr + .align 2, 0 +_0223BB74: .word 0x02251380 +_0223BB78: .word 0x000009E7 + thumb_func_end MOD18_0223BB54 + + thumb_func_start MOD18_0223BB7C +MOD18_0223BB7C: ; 0x0223BB7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r1, _0223BC44 ; =0x02251380 + str r0, [sp] + ldr r2, [r1] + ldr r1, _0223BC48 ; =0x000009E7 + ldrb r4, [r2, r1] + mov r1, #0 + bl FUN_0201886C + add r5, r0, #0 + asr r0, r4, #1 + lsr r0, r0, #0x1e + add r0, r4, r0 + asr r0, r0, #2 + lsl r4, r0, #2 + add r0, sp, #4 + bl MOD18_0223BB54 + add r0, r4, #0 + mov r1, #0x18 + bl _s32_div_f + ldr r0, _0223BC44 ; =0x02251380 + ldr r2, [r0] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r2, r0] + asr r2, r1, #1 + lsr r2, r2, #0x1e + add r2, r1, r2 + asr r2, r2, #2 + mov r1, #6 + sub r1, r1, r2 + bl FUN_02020130 + add r4, #8 + mov r0, #0xd0 + sub r1, r0, r4 + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r7, r0, #3 + mov r4, #0 + cmp r7, #0 + ble _0223BC38 +_0223BBD8: + mov r0, #0x19 + sub r0, r0, r4 + lsl r6, r0, #1 + add r0, r4, #0 + mov r1, #3 + bl _s32_div_f + add r0, r1, #0 + mov r1, #0x3f + ldrh r2, [r5, r6] + lsl r1, r1, #0xa + and r1, r2 + add r1, #0xb + sub r1, r1, r0 + strh r1, [r5, r6] + mov r1, #0x39 + sub r1, r1, r4 + lsl r1, r1, #1 + mov r2, #0x3f + ldrh r3, [r5, r1] + lsl r2, r2, #0xa + and r2, r3 + add r2, #0x41 + sub r2, r2, r0 + strh r2, [r5, r1] + mov r1, #0x59 + sub r1, r1, r4 + lsl r1, r1, #1 + mov r2, #0x3f + ldrh r3, [r5, r1] + lsl r2, r2, #0xa + and r2, r3 + add r2, #0x77 + sub r2, r2, r0 + strh r2, [r5, r1] + mov r1, #0x79 + sub r1, r1, r4 + lsl r1, r1, #1 + mov r2, #0x3f + ldrh r3, [r5, r1] + lsl r2, r2, #0xa + add r4, r4, #1 + and r2, r3 + add r2, #0xad + sub r0, r2, r0 + strh r0, [r5, r1] + cmp r4, r7 + blt _0223BBD8 +_0223BC38: + ldr r0, [sp] + mov r1, #0 + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223BC44: .word 0x02251380 +_0223BC48: .word 0x000009E7 + thumb_func_end MOD18_0223BB7C + + thumb_func_start MOD18_0223BC4C +MOD18_0223BC4C: ; 0x0223BC4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 + str r0, [sp] + str r5, [sp, #4] +_0223BC56: + ldr r0, _0223BCF4 ; =0x02251380 + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _0223BCF8 ; =0x000008CC + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _0223BCDA + ldr r0, _0223BCFC ; =0x000008D4 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _0223BCDA + bl FUN_02031190 + bl FUN_0204E3EC + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E440 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E35C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0204E3A4 + add r1, r4, #0 + sub r1, #0xa + cmp r7, r1 + ble _0223BCDA + add r4, #0xa + cmp r7, r4 + bge _0223BCDA + add r1, r6, #0 + sub r1, #0xa + cmp r0, r1 + ble _0223BCDA + add r6, #0xa + cmp r0, r6 + bge _0223BCDA + ldr r0, _0223BCF4 ; =0x02251380 + ldr r1, _0223BCFC ; =0x000008D4 + ldr r0, [r0] + ldr r3, [sp] + add r2, r0, r5 + ldr r0, _0223BCF8 ; =0x000008CC + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + mov r2, #1 + bl MOD18_0223B7AC + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223BCF4 ; =0x02251380 + mov r1, #0xff + ldr r0, [r0] + add r2, r0, r5 + ldr r0, _0223BCF8 ; =0x000008CC + strb r1, [r2, r0] + ldr r0, _0223BCF4 ; =0x02251380 + ldr r0, [r0] + add r2, r0, r5 + ldr r0, _0223BCFC ; =0x000008D4 + strb r1, [r2, r0] +_0223BCDA: + add r5, r5, #1 + cmp r5, #8 + blt _0223BC56 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0223BCF0 + ldr r0, _0223BCF4 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B6A4 +_0223BCF0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223BCF4: .word 0x02251380 +_0223BCF8: .word 0x000008CC +_0223BCFC: .word 0x000008D4 + thumb_func_end MOD18_0223BC4C + + thumb_func_start MOD18_0223BD00 +MOD18_0223BD00: ; 0x0223BD00 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BD88 + cmp r6, #6 + beq _0223BD1C + cmp r6, #7 + beq _0223BD1C + sub r0, r6, #1 + cmp r0, #1 + bhi _0223BD42 +_0223BD1C: + ldr r0, _0223BD8C ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + mov r0, #0 + str r3, [r4, #4] + add r4, r0, #1 + b _0223BD6C +_0223BD42: + ldr r0, _0223BD8C ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + add r0, r3, r0 + adc r2, r1 + str r0, [r5, #8] + mov r1, #0 + lsr r0, r2, #0x1e + lsl r1, r1, #2 + orr r1, r0 + str r2, [r4, #4] + add r4, r1, #1 +_0223BD6C: + sub r0, r6, #6 + cmp r0, #4 + bhi _0223BD74 + add r4, #0xa +_0223BD74: + ldr r0, _0223BD90 ; =0x000009E7 + mov r1, #0x27 + ldrb r5, [r5, r0] + add r0, r5, #0 + bl _s32_div_f + add r4, r4, r0 + cmp r5, #0 + beq _0223BD88 + add r4, r4, #5 +_0223BD88: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BD8C: .word 0x02251380 +_0223BD90: .word 0x000009E7 + thumb_func_end MOD18_0223BD00 + + thumb_func_start MOD18_0223BD94 +MOD18_0223BD94: ; 0x0223BD94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223BDDC ; =0x02251380 + add r4, r1, #0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CB4 + ldr r0, _0223BDDC ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BDCC + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02249450 + pop {r4, r5, r6, pc} +_0223BDCC: + add r0, r5, #0 + bl MOD18_02249480 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_02026664 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BDDC: .word 0x02251380 + thumb_func_end MOD18_0223BD94 + + thumb_func_start MOD18_0223BDE0 +MOD18_0223BDE0: ; 0x0223BDE0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0223BE24 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r5, r0, #0 + add r0, r4, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BE10 + add r0, r5, #0 + bl FUN_02026050 + cmp r0, #0x28 + beq _0223BE0C + mov r0, #1 + pop {r3, r4, r5, pc} +_0223BE0C: + mov r0, #0 + pop {r3, r4, r5, pc} +_0223BE10: + add r0, r5, #0 + bl FUN_0202616C + cmp r0, #0x28 + beq _0223BE1E + mov r0, #1 + pop {r3, r4, r5, pc} +_0223BE1E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0223BE24: .word 0x02251380 + thumb_func_end MOD18_0223BDE0 + + thumb_func_start MOD18_0223BE28 +MOD18_0223BE28: ; 0x0223BE28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #1 + mov lr, r0 + ldr r0, [r4, #0xc] + mov r2, #0 + cmp r0, #0 + ble _0223BE48 + add r3, sp, #0 + mov r1, #1 +_0223BE3E: + stmia r3!, {r1} + ldr r0, [r4, #0xc] + add r2, r2, #1 + cmp r2, r0 + blt _0223BE3E +_0223BE48: + mov r0, #0 + mov ip, r0 + ldr r0, _0223BED4 ; =0x02251380 + mov r6, #0 + ldr r3, [r0] + add r7, sp, #0 +_0223BE54: + mov r2, #0 +_0223BE56: + ldr r0, _0223BED8 ; =0x000008DC + add r1, r3, r2 + ldrb r0, [r1, r0] + ldr r5, [r4, #0xc] + cmp r0, r5 + bgt _0223BE76 + cmp r0, #0 + beq _0223BE76 + ldr r5, _0223BEDC ; =0x0000095E + ldrb r1, [r1, r5] + cmp r1, #0 + beq _0223BE76 + lsl r0, r0, #2 + add r0, r7, r0 + sub r0, r0, #4 + str r6, [r0] +_0223BE76: + add r2, r2, #1 + cmp r2, #0xd + blt _0223BE56 + mov r0, ip + add r0, r0, #1 + add r3, #0xd + mov ip, r0 + cmp r0, #0xa + blt _0223BE54 + ldr r0, [r4, #0xc] + mov r3, #0 + cmp r0, #0 + ble _0223BECC + add r0, sp, #0 + add r1, r3, #0 + add r2, r4, #0 + mov r7, #1 +_0223BE98: + ldr r5, [r0] + cmp r5, #0 + bne _0223BEA4 + mov r5, #0 + mov lr, r5 + b _0223BEBE +_0223BEA4: + ldr r5, _0223BED4 ; =0x02251380 + ldr r5, [r5] + add r6, r5, r1 + ldr r5, _0223BEE0 ; =0x00000818 + ldrb r5, [r6, r5] + cmp r5, #0 + bne _0223BEBE + ldr r5, _0223BED4 ; =0x02251380 + str r7, [r2, #0x38] + ldr r5, [r5] + add r6, r5, r1 + ldr r5, _0223BEE0 ; =0x00000818 + strb r7, [r6, r5] +_0223BEBE: + ldr r5, [r4, #0xc] + add r3, r3, #1 + add r0, r0, #4 + add r1, #0xc + add r2, r2, #4 + cmp r3, r5 + blt _0223BE98 +_0223BECC: + mov r0, lr + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223BED4: .word 0x02251380 +_0223BED8: .word 0x000008DC +_0223BEDC: .word 0x0000095E +_0223BEE0: .word 0x00000818 + thumb_func_end MOD18_0223BE28 + + thumb_func_start MOD18_0223BEE4 +MOD18_0223BEE4: ; 0x0223BEE4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5, #0xc] + mov r0, #0 + cmp r1, #0 + ble _0223BF74 + ldr r2, _0223BF78 ; =0x02251380 + ldr r3, _0223BF7C ; =0x00000818 + ldr r2, [r2] + add r6, r2, #0 +_0223BEF8: + ldrb r4, [r6, r3] + cmp r4, #1 + bne _0223BF6C + add r4, r0, #0 + mov r1, #0xc + mul r4, r1 + ldr r0, _0223BF80 ; =0x00000814 + add r1, r2, r4 + ldrb r0, [r1, r0] + bl MOD18_0223BD00 + str r0, [r5, #0x48] + bl MOD18_0223D638 + ldr r1, _0223BF78 ; =0x02251380 + ldr r1, [r1] + add r2, r1, r4 + ldr r1, _0223BF80 ; =0x00000814 + ldrb r1, [r2, r1] + bl MOD18_0224DDD0 + ldr r0, _0223BF78 ; =0x02251380 + ldr r0, [r0] + add r1, r0, r4 + ldr r0, _0223BF80 ; =0x00000814 + ldrb r0, [r1, r0] + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BF44 + mov r4, #0x45 + bl MOD18_0223D638 + ldr r2, [r5, #0x48] + mov r1, #1 + bl MOD18_0224DEA4 + b _0223BF50 +_0223BF44: + mov r4, #0x11 + bl MOD18_0223D638 + mov r1, #2 + bl MOD18_0224DF54 +_0223BF50: + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223BF78 ; =0x02251380 + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, pc} +_0223BF6C: + add r0, r0, #1 + add r6, #0xc + cmp r0, r1 + blt _0223BEF8 +_0223BF74: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BF78: .word 0x02251380 +_0223BF7C: .word 0x00000818 +_0223BF80: .word 0x00000814 + thumb_func_end MOD18_0223BEE4 + + thumb_func_start MOD18_0223BF84 +MOD18_0223BF84: ; 0x0223BF84 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _0223C070 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CB4 + add r7, r0, #0 + ldr r0, _0223C070 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + ldr r5, [r4, #0xc] + mov r2, #0 + cmp r5, #0 + ble _0223C06A + ldr r0, _0223C070 ; =0x02251380 + ldr r6, [r0] + ldr r0, _0223C074 ; =0x00000818 + add r3, r6, #0 +_0223BFB2: + ldrb r1, [r3, r0] + cmp r1, #1 + bne _0223C062 + mov r0, #0xc + mul r0, r2 + ldr r1, _0223C074 ; =0x00000818 + mov r3, #0 + add r2, r6, r0 + strb r3, [r2, r1] + ldr r2, _0223C070 ; =0x02251380 + ldr r2, [r2] + add r2, r2, r0 + sub r0, r1, #4 + ldrb r5, [r2, r0] + add r0, r5, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BFE2 + add r0, r7, #0 + mov r1, #1 + bl FUN_02026A0C + b _0223C032 +_0223BFE2: + ldr r0, _0223C070 ; =0x02251380 + add r1, r5, #0 + ldr r0, [r0] + mov r2, #1 + ldr r0, [r0] + bl FUN_0206151C + cmp r5, #0x17 + blt _0223BFF8 + cmp r5, #0x1d + blt _0223C000 +_0223BFF8: + add r0, r5, #0 + sub r0, #0x24 + cmp r0, #1 + bhi _0223C02A +_0223C000: + add r0, r7, #0 + mov r1, #1 + bl FUN_02026A58 + ldr r0, _0223C070 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r6, r0, #0 + bl FUN_0205F740 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_0205F750 + b _0223C032 +_0223C02A: + add r0, r7, #0 + mov r1, #1 + bl FUN_02026A9C +_0223C032: + add r0, r5, #0 + bl MOD18_0223BDE0 + cmp r0, #0 + beq _0223C046 + ldr r1, [r4, #0x48] + add r0, r5, #0 + bl MOD18_0223BD94 + b _0223C06A +_0223C046: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x41 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223C070 ; =0x02251380 + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223C062: + add r2, r2, #1 + add r3, #0xc + cmp r2, r5 + blt _0223BFB2 +_0223C06A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C070: .word 0x02251380 +_0223C074: .word 0x00000818 + thumb_func_end MOD18_0223BF84 + + thumb_func_start MOD18_0223C078 +MOD18_0223C078: ; 0x0223C078 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _0223C178 ; =0x02251380 + ldr r4, [r0] + ldr r0, _0223C17C ; =0x000009E8 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223C174 + sub r0, r0, #1 + ldrb r1, [r4, r0] + mov r0, #0xc4 + sub r6, r0, r1 + add r0, r6, #0 + mov r1, #0x32 + bl _s32_div_f + add r7, r0, #0 + ldr r0, _0223C17C ; =0x000009E8 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldr r0, _0223C178 ; =0x02251380 + mov r1, #0xf + ldr r5, [r0] + add r0, r6, #0 + bl _s32_div_f + ldr r1, _0223C17C ; =0x000009E8 + ldrb r2, [r5, r1] + cmp r2, r0 + ble _0223C0CA + mov r2, #0 + add r0, r1, #2 + strb r2, [r5, r0] + ldr r0, _0223C178 ; =0x02251380 + ldr r3, [r0] + add r0, r1, #2 + ldrsb r2, [r3, r0] + add r0, r1, #1 + strb r2, [r3, r0] + b _0223C146 +_0223C0CA: + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + str r3, [r4, #4] + add r6, r7, #3 + bne _0223C0EE + ldr r1, [r4, #4] + b _0223C0FA +_0223C0EE: + ldr r0, [r4, #4] + mov r1, #0 + mov r3, #0 + add r2, r6, #0 + bl _ll_mul +_0223C0FA: + add r2, r7, #3 + lsr r0, r2, #0x1f + add r0, r2, r0 + asr r7, r0, #1 + ldr r0, _0223C180 ; =0x000009E9 + sub r1, r1, r7 + strb r1, [r5, r0] + ldr r0, _0223C178 ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + add r0, r0, r2 + adc r1, r3 + str r0, [r5, #8] + str r1, [r4, #4] + cmp r6, #0 + bne _0223C134 + ldr r1, [r4, #4] + b _0223C140 +_0223C134: + ldr r0, [r4, #4] + mov r1, #0 + mov r3, #0 + add r2, r6, #0 + bl _ll_mul +_0223C140: + ldr r0, _0223C184 ; =0x000009EA + sub r1, r1, r7 + strb r1, [r5, r0] +_0223C146: + add r0, sp, #0 + bl MOD18_0223BB54 + ldr r0, _0223C178 ; =0x02251380 + ldr r1, _0223C180 ; =0x000009E9 + ldr r0, [r0] + ldr r3, [sp] + ldrsb r2, [r0, r1] + add r1, r1, #1 + lsl r2, r2, #0xc + sub r2, r3, r2 + str r2, [sp] + ldrsb r1, [r0, r1] + ldr r2, [sp, #4] + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [sp, #4] + mov r1, #0x7b + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, sp, #0 + bl FUN_02020044 +_0223C174: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C178: .word 0x02251380 +_0223C17C: .word 0x000009E8 +_0223C180: .word 0x000009E9 +_0223C184: .word 0x000009EA + thumb_func_end MOD18_0223C078 + + thumb_func_start MOD18_0223C188 +MOD18_0223C188: ; 0x0223C188 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223C1E0 ; =0x02251380 + ldr r4, [r0] + ldr r0, _0223C1E4 ; =0x000009E8 + ldrb r6, [r4, r0] + cmp r6, #0 + beq _0223C1DE + sub r0, r0, #1 + ldrb r1, [r4, r0] + mov r0, #0xc4 + sub r0, r0, r1 + mov r1, #0xa + bl _s32_div_f + cmp r6, r0 + ble _0223C1B0 + ldr r0, _0223C1E4 ; =0x000009E8 + mov r1, #0 + strb r1, [r4, r0] +_0223C1B0: + ldr r7, _0223C1E0 ; =0x02251380 + mov r4, #0 +_0223C1B4: + ldr r6, [r7] + ldr r3, _0223C1E8 ; =0x000009E9 + lsl r1, r4, #0x18 + ldrsb r3, [r6, r3] + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_020179E0 + lsl r1, r4, #0x18 + ldr r6, [r7] + ldr r3, _0223C1EC ; =0x000009EA + add r0, r5, #0 + ldrsb r3, [r6, r3] + lsr r1, r1, #0x18 + mov r2, #3 + bl FUN_020179E0 + add r4, r4, #1 + cmp r4, #3 + blt _0223C1B4 +_0223C1DE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C1E0: .word 0x02251380 +_0223C1E4: .word 0x000009E8 +_0223C1E8: .word 0x000009E9 +_0223C1EC: .word 0x000009EA + thumb_func_end MOD18_0223C188 + + thumb_func_start MOD18_0223C1F0 +MOD18_0223C1F0: ; 0x0223C1F0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r6, r0, #0 + ldr r0, _0223C338 ; =0x02251380 + ldr r2, [r0] + ldr r0, _0223C33C ; =0x000009E5 + ldrb r1, [r2, r0] + cmp r1, #1 + bne _0223C216 + mov r1, #0 + strb r1, [r2, r0] +_0223C216: + ldr r1, _0223C340 ; =0x021C48F8 + ldrh r0, [r1, #0x20] + cmp r0, #0 + beq _0223C29A + ldrh r0, [r1, #0x1c] + cmp r0, #0xd0 + bhs _0223C28C + ldrh r1, [r1, #0x1e] + cmp r1, #0x20 + blo _0223C28C + add r2, sp, #0 + strb r0, [r2] + strb r1, [r2, #1] + ldr r2, _0223C338 ; =0x02251380 + ldr r3, [r2] + ldr r2, _0223C344 ; =0x000009E4 + ldrb r2, [r3, r2] + add r3, r5, #0 + bl MOD18_0223B7AC + ldr r0, _0223C338 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C344 ; =0x000009E4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223C24E + mov r4, #4 + b _0223C250 +_0223C24E: + mov r4, #8 +_0223C250: + mov r0, #0x44 + add r1, sp, #0 + bl FUN_020311D0 + ldr r0, _0223C338 ; =0x02251380 + ldr r1, _0223C348 ; =0x000009E7 + ldr r0, [r0] + ldrb r2, [r0, r1] + cmp r2, r4 + ble _0223C268 + sub r2, r2, r4 + b _0223C26A +_0223C268: + mov r2, #0 +_0223C26A: + strb r2, [r0, r1] + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B6A4 + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223BB7C + ldr r0, _0223C338 ; =0x02251380 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223C34C ; =0x000009E8 + strb r2, [r1, r0] + b _0223C29A +_0223C28C: + cmp r0, #0xd0 + blo _0223C29A + ldr r0, _0223C338 ; =0x02251380 + mov r2, #2 + ldr r1, [r0] + ldr r0, _0223C33C ; =0x000009E5 + strb r2, [r1, r0] +_0223C29A: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _0223C2AC + sub r0, r0, #1 + str r0, [r5, #0x14] + bne _0223C2AC + ldr r0, _0223C350 ; =0x000006A5 + bl FUN_020054C8 +_0223C2AC: + ldr r0, _0223C338 ; =0x02251380 + ldr r2, _0223C340 ; =0x021C48F8 + ldr r3, [r0] + ldr r4, _0223C33C ; =0x000009E5 + ldr r0, [r3, #4] + ldrh r1, [r2, #0x1c] + ldrh r2, [r2, #0x1e] + ldrb r3, [r3, r4] + bl MOD18_0223B9EC + ldr r0, _0223C338 ; =0x02251380 + ldr r2, [r0] + add r0, r4, #0 + ldrb r1, [r2, r0] + cmp r1, #2 + blo _0223C2D0 + add r1, r1, #1 + strb r1, [r2, r0] +_0223C2D0: + add r0, r5, #0 + bl MOD18_0223BC4C + add r0, r5, #0 + bl MOD18_0223BE28 + cmp r0, #0 + beq _0223C30A + add r0, r6, #0 + bl FUN_02026634 + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x1e + bl FUN_0202A170 + mov r0, #0xe + str r0, [r5] + mov r0, #0x19 + str r0, [r5, #8] + mov r0, #1 + add r5, #0x50 + add sp, #4 + strb r0, [r5] + pop {r3, r4, r5, r6, pc} +_0223C30A: + ldr r0, _0223C338 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C348 ; =0x000009E7 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223C332 + add r0, r6, #0 + bl FUN_02026634 + add r0, r5, #0 + mov r1, #0 + add r0, #0x50 + strb r1, [r0] + mov r0, #0x2d + str r0, [r5, #8] + mov r0, #0x16 + str r0, [r5] + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0223C332: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223C338: .word 0x02251380 +_0223C33C: .word 0x000009E5 +_0223C340: .word 0x021C48F8 +_0223C344: .word 0x000009E4 +_0223C348: .word 0x000009E7 +_0223C34C: .word 0x000009E8 +_0223C350: .word 0x000006A5 + thumb_func_end MOD18_0223C1F0 + + thumb_func_start MOD18_0223C354 +MOD18_0223C354: ; 0x0223C354 + push {r3, r4} + ldr r3, _0223C374 ; =0x02251380 + ldr r2, _0223C378 ; =0x000009EB + ldr r4, [r3] + ldrb r1, [r4, r2] + lsl r1, r1, #2 + add r4, r4, r1 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [r3] + ldrb r0, [r1, r2] + add r0, r0, #1 + strb r0, [r1, r2] + pop {r3, r4} + bx lr + .align 2, 0 +_0223C374: .word 0x02251380 +_0223C378: .word 0x000009EB + thumb_func_end MOD18_0223C354 + + thumb_func_start MOD18_0223C37C +MOD18_0223C37C: ; 0x0223C37C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _0223C568 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + strb r2, [r1, r0] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7c + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x1f + str r3, [sp, #0xc] + mov r2, #0x1d + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + bl MOD18_0223C680 + ldr r1, _0223C568 ; =0x02251380 + mov r0, #0x1a + ldr r1, [r1] + mov r2, #0x1d + add r1, #0x24 + bl FUN_02008C9C + ldr r1, _0223C568 ; =0x02251380 + ldr r2, [r1] + str r0, [r2, #0x20] + ldr r0, [r1] + mov r2, #6 + add r0, #0x24 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r4, #0 + mov r7, #0x53 + ldr r6, _0223C568 ; =0x02251380 + add r5, r4, #0 + lsl r7, r7, #2 +_0223C3D6: + mov r0, #2 + add r1, r4, #0 + mov r2, #0x1d + bl FUN_02008DEC + ldr r1, [r6] + add r4, r4, #1 + add r1, r1, r5 + add r5, r5, #4 + str r0, [r1, r7] + cmp r4, #4 + blt _0223C3D6 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #6 + ldr r1, [r0] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_02008F34 + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009A50 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #7 + ldr r1, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_02008FEC + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #5 + ldr r1, [r0] + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #4 + ldr r1, [r0] + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #3 + ldr r1, [r0] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + mov r3, #0 + bl FUN_02008F34 + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009A50 + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r0, _0223C568 ; =0x02251380 + mov r3, #0 + ldr r1, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x34 + bl FUN_02008FEC + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + mov r0, #1 + str r0, [sp] + mov r2, #2 + str r2, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r3, #0 + ldr r1, [r0] + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + mov r2, #1 + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r3, #0 + ldr r1, [r0] + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223C568: .word 0x02251380 +_0223C56C: .word 0x000009EB + thumb_func_end MOD18_0223C37C + + thumb_func_start MOD18_0223C570 +MOD18_0223C570: ; 0x0223C570 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + mov r7, #0 + str r7, [sp, #0x30] + str r7, [sp, #0x2c] +_0223C57A: + ldr r0, _0223C67C ; =0x02251380 + mov r3, #0x53 + ldr r1, [r0] + mov r0, #0 + str r7, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r1, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r1, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r1, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r1, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r1, r1, r3 + ldr r0, [sp, #0x30] + add r2, r7, #0 + add r0, r1, r0 + add r1, r7, #0 + add r3, r7, #0 + bl FUN_02008AA4 + ldr r6, _0223C67C ; =0x02251380 + mov r2, #2 + ldr r1, [r6] + lsl r2, r2, #0x10 + ldr r0, [r1, #0x20] + str r0, [sp, #0x34] + mov r0, #0x1a + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, [sp, #0x30] + str r2, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x38] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x40] + lsr r0, r2, #5 + mov r1, #0 + str r1, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + str r0, [sp, #0x50] + add r0, sp, #0x34 + strh r1, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x5c] + mov r0, #0x1d + str r0, [sp, #0x60] + mov r0, #0xf + lsl r0, r0, #0x10 + str r1, [sp, #0x58] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + cmp r7, #0 + bne _0223C634 + mov r4, #2 + mov r5, #8 +_0223C60C: + add r0, sp, #0x34 + bl FUN_0201FE94 + ldr r1, [r6] + add r2, r1, r5 + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r6] + add r1, r0, r5 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + ble _0223C60C +_0223C634: + add r0, sp, #0x34 + bl FUN_0201FE94 + ldr r2, _0223C67C ; =0x02251380 + ldr r1, [sp, #0x2c] + ldr r3, [r2] + add r3, r3, r1 + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r3, r1] + ldr r2, [r2] + ldr r0, [sp, #0x2c] + add r0, r2, r0 + ldr r0, [r0, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, [sp, #0x30] + add r7, r7, #1 + add r0, #0x24 + str r0, [sp, #0x30] + ldr r0, [sp, #0x2c] + add r0, r0, #4 + str r0, [sp, #0x2c] + cmp r7, #2 + blt _0223C57A + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C67C: .word 0x02251380 + thumb_func_end MOD18_0223C570 + + thumb_func_start MOD18_0223C680 +MOD18_0223C680: ; 0x0223C680 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0223C6C0 ; =0x0224FFF0 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r1, _0223C6C4 ; =0x00200010 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_0201D060 + mov r0, #0x14 + mov r1, #0x1d + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + ldr r1, _0223C6C8 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + add sp, #0x10 + pop {r4, pc} + nop +_0223C6C0: .word 0x0224FFF0 +_0223C6C4: .word 0x00200010 +_0223C6C8: .word 0x00100010 + thumb_func_end MOD18_0223C680 + + thumb_func_start MOD18_0223C6CC +MOD18_0223C6CC: ; 0x0223C6CC + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223C188 + add r0, r4, #0 + bl FUN_0201AB60 + bl FUN_0201C30C + bl FUN_02009F80 + pop {r4, pc} + thumb_func_end MOD18_0223C6CC + + thumb_func_start MOD18_0223C6E4 +MOD18_0223C6E4: ; 0x0223C6E4 + push {r3, lr} + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD18_02239DEC + cmp r0, #0 + beq _0223C6FA + mov r0, #1 + pop {r3, pc} +_0223C6FA: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223C6E4 + + thumb_func_start MOD18_0223C700 +MOD18_0223C700: ; 0x0223C700 + ldr r1, _0223C718 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C714 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C71C ; =0x00000888 + add r1, r2, r1 + ldrh r0, [r1, r0] + bx lr +_0223C714: + mov r0, #0 + bx lr + .align 2, 0 +_0223C718: .word 0x02251380 +_0223C71C: .word 0x00000888 + thumb_func_end MOD18_0223C700 + + thumb_func_start MOD18_0223C720 +MOD18_0223C720: ; 0x0223C720 + ldr r1, _0223C738 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C734 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C73C ; =0x0000088A + add r1, r2, r1 + ldrh r0, [r1, r0] + bx lr +_0223C734: + mov r0, #0 + bx lr + .align 2, 0 +_0223C738: .word 0x02251380 +_0223C73C: .word 0x0000088A + thumb_func_end MOD18_0223C720 + + thumb_func_start MOD18_0223C740 +MOD18_0223C740: ; 0x0223C740 + push {r4, lr} + ldr r1, _0223C76C ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C766 + ldr r1, _0223C770 ; =0x00000884 + ldr r4, [r2, r1] + cmp r4, #0 + beq _0223C766 + ldr r1, _0223C774 ; =0x000005DE + ldrh r1, [r4, r1] + add r0, r1, r0 + mov r1, #0x53 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + ldrh r0, [r4, r0] + pop {r4, pc} +_0223C766: + mov r0, #0 + pop {r4, pc} + nop +_0223C76C: .word 0x02251380 +_0223C770: .word 0x00000884 +_0223C774: .word 0x000005DE + thumb_func_end MOD18_0223C740 + + thumb_func_start MOD18_0223C778 +MOD18_0223C778: ; 0x0223C778 + push {r4, lr} + ldr r1, _0223C7A4 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C7A0 + ldr r1, _0223C7A8 ; =0x00000884 + ldr r4, [r2, r1] + cmp r4, #0 + beq _0223C7A0 + ldr r1, _0223C7AC ; =0x000005DE + ldrh r1, [r4, r1] + add r0, r1, r0 + mov r1, #0x53 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #2] + pop {r4, pc} +_0223C7A0: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0223C7A4: .word 0x02251380 +_0223C7A8: .word 0x00000884 +_0223C7AC: .word 0x000005DE + thumb_func_end MOD18_0223C778 + + thumb_func_start MOD18_0223C7B0 +MOD18_0223C7B0: ; 0x0223C7B0 + push {r4, lr} + ldr r0, _0223C7D0 ; =0x000005DE + add r4, r1, #0 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r1, [r4, r0] + cmp r1, #0x53 + bls _0223C7CE + add r0, #0x43 + bl FUN_020054C8 + ldr r0, _0223C7D0 ; =0x000005DE + mov r1, #0 + strh r1, [r4, r0] +_0223C7CE: + pop {r4, pc} + .align 2, 0 +_0223C7D0: .word 0x000005DE + thumb_func_end MOD18_0223C7B0 + + thumb_func_start MOD18_0223C7D4 +MOD18_0223C7D4: ; 0x0223C7D4 + push {r4, lr} + ldr r0, _0223C834 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C838 ; =0x00000884 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223C7E6 + bl ErrorHandling +_0223C7E6: + ldr r0, _0223C834 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C83C ; =0x00000878 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223C7F6 + bl ErrorHandling +_0223C7F6: + mov r1, #0x5e + mov r0, #0xb + lsl r1, r1, #4 + bl FUN_020169D8 + mov r2, #0x5e + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x47 + bl FUN_020311DC + ldr r0, _0223C840 ; =0x000005DE + mov r1, #0x49 + strh r1, [r4, r0] + ldr r0, _0223C834 ; =0x02251380 + mov r2, #0x64 + ldr r1, [r0] + ldr r0, _0223C838 ; =0x00000884 + str r4, [r1, r0] + ldr r0, _0223C844 ; =MOD18_0223C7B0 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _0223C834 ; =0x02251380 + ldr r2, [r1] + ldr r1, _0223C83C ; =0x00000878 + str r0, [r2, r1] + pop {r4, pc} + .align 2, 0 +_0223C834: .word 0x02251380 +_0223C838: .word 0x00000884 +_0223C83C: .word 0x00000878 +_0223C840: .word 0x000005DE +_0223C844: .word MOD18_0223C7B0 + thumb_func_end MOD18_0223C7D4 + + thumb_func_start MOD18_0223C848 +MOD18_0223C848: ; 0x0223C848 + push {r3, lr} + ldr r0, _0223C878 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C87C ; =0x00000878 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223C876 + bl FUN_0200CAB4 + ldr r0, _0223C878 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C880 ; =0x00000884 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _0223C878 ; =0x02251380 + ldr r0, _0223C87C ; =0x00000878 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0xc + str r3, [r1, r0] +_0223C876: + pop {r3, pc} + .align 2, 0 +_0223C878: .word 0x02251380 +_0223C87C: .word 0x00000878 +_0223C880: .word 0x00000884 + thumb_func_end MOD18_0223C848 + + thumb_func_start MOD18_0223C884 +MOD18_0223C884: ; 0x0223C884 + ldr r1, _0223C894 ; =0x02251380 + mov r2, #1 + ldr r1, [r1] + add r1, r1, r0 + mov r0, #0x87 + lsl r0, r0, #4 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223C894: .word 0x02251380 + thumb_func_end MOD18_0223C884 + + thumb_func_start MOD18_0223C898 +MOD18_0223C898: ; 0x0223C898 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 +_0223C89E: + ldr r0, _0223C908 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x87 + add r7, r1, r5 + lsl r0, r0, #4 + ldrb r0, [r7, r0] + sub r4, r0, #1 + cmp r0, #0 + beq _0223C8FE + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #6 + mul r0, r4 + add r6, r1, r0 + ldr r0, _0223C90C ; =0x0000FFFF + add r1, r0, #0 +_0223C8C0: + ldrh r3, [r6] + cmp r3, r1 + beq _0223C8EE + ldrh r2, [r6, #2] + cmp r2, r0 + beq _0223C8EE + add r0, sp, #0 + strh r3, [r0] + ldrh r1, [r6, #2] + strh r1, [r0, #2] + strb r5, [r0, #4] + mov r0, #0x48 + add r1, sp, #0 + bl FUN_02030C4C + ldr r0, _0223C908 ; =0x02251380 + add r2, r4, #3 + ldr r0, [r0] + add r1, r0, r5 + mov r0, #0x87 + lsl r0, r0, #4 + strb r2, [r1, r0] + b _0223C8FE +_0223C8EE: + add r4, r4, #3 + add r6, #0x12 + cmp r4, #0xfa + blt _0223C8C0 + mov r1, #0x87 + lsl r1, r1, #4 + mov r0, #0 + strb r0, [r7, r1] +_0223C8FE: + add r5, r5, #1 + cmp r5, #8 + blt _0223C89E + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C908: .word 0x02251380 +_0223C90C: .word 0x0000FFFF + thumb_func_end MOD18_0223C898 + + thumb_func_start MOD18_0223C910 +MOD18_0223C910: ; 0x0223C910 + push {r3, r4, r5, lr} + ldr r0, _0223C9A4 ; =0x02251380 + add r5, r2, #0 + ldr r2, [r0] + cmp r2, #0 + beq _0223C9A0 + ldrb r1, [r5, #4] + mov r0, #0xf + add r4, r1, #0 + and r4, r0 + ldr r0, _0223C9A8 ; =0x00000884 + ldr r0, [r2, r0] + cmp r0, #0 + bne _0223C960 + bl FUN_02031190 + cmp r4, r0 + bne _0223C9A0 + ldrb r0, [r5, #4] + asr r1, r0, #4 + mov r0, #0xf + add r3, r1, #0 + and r3, r0 + cmp r3, #0 + ble _0223C9A0 + cmp r3, #8 + bgt _0223C9A0 + ldr r1, _0223C9A4 ; =0x02251380 + add r0, r5, #0 + ldr r2, [r1] + ldr r1, _0223C9AC ; =0x00000888 + add r4, r2, r1 + sub r1, r3, #1 + mov r2, #6 + add r3, r1, #0 + mul r3, r2 + add r1, r4, r3 + bl MI_CpuCopy8 + pop {r3, r4, r5, pc} +_0223C960: + bl FUN_02031190 + cmp r4, r0 + bne _0223C9A0 + ldr r0, _0223C9A4 ; =0x02251380 + mov r2, #6 + ldr r1, [r0] + ldr r0, _0223C9A8 ; =0x00000884 + ldr r4, [r1, r0] + ldr r1, _0223C9B0 ; =0x000005DC + add r0, r5, #0 + ldrb r1, [r4, r1] + add r3, r1, #0 + mul r3, r2 + add r1, r4, r3 + bl MI_CpuCopy8 + ldr r2, _0223C9A4 ; =0x02251380 + ldr r0, _0223C9A8 ; =0x00000884 + ldr r1, [r2] + ldr r4, [r1, r0] + ldr r1, _0223C9B0 ; =0x000005DC + ldrb r3, [r4, r1] + add r3, r3, #1 + strb r3, [r4, r1] + ldr r2, [r2] + ldr r2, [r2, r0] + ldrb r0, [r2, r1] + cmp r0, #0xfa + blo _0223C9A0 + mov r0, #0 + strb r0, [r2, r1] +_0223C9A0: + pop {r3, r4, r5, pc} + nop +_0223C9A4: .word 0x02251380 +_0223C9A8: .word 0x00000884 +_0223C9AC: .word 0x00000888 +_0223C9B0: .word 0x000005DC + thumb_func_end MOD18_0223C910 + + thumb_func_start MOD18_0223C9B4 +MOD18_0223C9B4: ; 0x0223C9B4 + mov r0, #6 + bx lr + thumb_func_end MOD18_0223C9B4 + + thumb_func_start MOD18_0223C9B8 +MOD18_0223C9B8: ; 0x0223C9B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r4, _0223CA6C ; =0x02251380 + mov r5, #0 + add r7, sp, #0 +_0223C9C2: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _0223CA62 + add r0, r5, #0 + bl FUN_0204F6B4 + cmp r0, #0 + ldr r0, [r4] + beq _0223C9E4 + add r2, r0, r5 + ldr r0, _0223CA70 ; =0x000008B8 + mov r1, #0 + strb r1, [r2, r0] + b _0223CA62 +_0223C9E4: + ldr r1, _0223CA70 ; =0x000008B8 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0x1c + bhs _0223CA62 + ldr r1, _0223CA70 ; =0x000008B8 + ldrb r1, [r0, r1] + add r2, r1, #1 + ldr r1, _0223CA70 ; =0x000008B8 + strb r2, [r0, r1] + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _0223CA70 ; =0x000008B8 + ldrb r0, [r1, r0] + cmp r0, #0x14 + blo _0223CA62 + add r0, r5, #0 + bl FUN_0204E544 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E598 + add r1, r0, #0 + lsl r0, r6, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD18_02239E2C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223CA62 + mov r2, #0x82 + ldr r1, [r4] + lsl r2, r2, #2 + add r3, r1, r2 + mov r2, #6 + mul r2, r0 + add r0, r3, r2 + ldrh r3, [r3, r2] + ldr r2, _0223CA74 ; =0x0000FFFF + cmp r3, r2 + beq _0223CA62 + ldrh r3, [r0, #2] + cmp r3, r2 + beq _0223CA62 + add r2, r1, r5 + ldr r1, _0223CA70 ; =0x000008B8 + ldrb r1, [r2, r1] + sub r1, #0x13 + lsl r1, r1, #4 + add r1, r5, r1 + strb r1, [r7, #4] + ldrh r1, [r0] + strh r1, [r7] + ldrh r0, [r0, #2] + add r1, sp, #0 + strh r0, [r7, #2] + mov r0, #0x48 + bl FUN_02030C4C +_0223CA62: + add r5, r5, #1 + cmp r5, #8 + blt _0223C9C2 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CA6C: .word 0x02251380 +_0223CA70: .word 0x000008B8 +_0223CA74: .word 0x0000FFFF + thumb_func_end MOD18_0223C9B8 + + thumb_func_start MOD18_0223CA78 +MOD18_0223CA78: ; 0x0223CA78 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _0223CAC4 ; =0x02251380 + add r5, r0, #0 + ldr r0, [r6] + cmp r0, #0 + bne _0223CA88 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CA88: + mov r4, #0 + add r7, r4, #0 +_0223CA8C: + ldr r0, [r6] + add r1, r0, r4 + ldr r0, _0223CAC8 ; =0x000008C4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223CAB8 + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [r6] + add r3, r5, #0 + add r2, r1, r4 + ldr r1, _0223CAC8 ; =0x000008C4 + strb r7, [r2, r1] + add r1, r7, #0 + mov r2, #0x69 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223CAB8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223CAB8: + add r4, r4, #1 + cmp r4, #8 + blt _0223CA8C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CAC4: .word 0x02251380 +_0223CAC8: .word 0x000008C4 + thumb_func_end MOD18_0223CA78 + + thumb_func_start MOD18_0223CACC +MOD18_0223CACC: ; 0x0223CACC + push {r3, lr} + ldr r0, _0223CAE4 ; =0x02251380 + ldr r1, [r0] + cmp r1, #0 + beq _0223CAE2 + ldr r0, _0223CAE8 ; =0x000008C4 + mov r2, #8 + add r0, r1, r0 + mov r1, #0 + bl MI_CpuFill8 +_0223CAE2: + pop {r3, pc} + .align 2, 0 +_0223CAE4: .word 0x02251380 +_0223CAE8: .word 0x000008C4 + thumb_func_end MOD18_0223CACC + + thumb_func_start MOD18_0223CAEC +MOD18_0223CAEC: ; 0x0223CAEC + ldr r1, _0223CB00 ; =0x02251380 + ldr r1, [r1] + cmp r1, #0 + beq _0223CAFC + add r1, r1, r0 + ldr r0, _0223CB04 ; =0x00000808 + ldrb r0, [r1, r0] + bx lr +_0223CAFC: + mov r0, #0 + bx lr + .align 2, 0 +_0223CB00: .word 0x02251380 +_0223CB04: .word 0x00000808 + thumb_func_end MOD18_0223CAEC + + thumb_func_start MOD18_0223CB08 +MOD18_0223CB08: ; 0x0223CB08 + ldr r1, _0223CB1C ; =0x02251380 + ldr r1, [r1] + cmp r1, #0 + beq _0223CB18 + add r1, r1, r0 + ldr r0, _0223CB20 ; =0x00000808 + mov r2, #0 + strb r2, [r1, r0] +_0223CB18: + bx lr + nop +_0223CB1C: .word 0x02251380 +_0223CB20: .word 0x00000808 + thumb_func_end MOD18_0223CB08 + + thumb_func_start MOD18_0223CB24 +MOD18_0223CB24: ; 0x0223CB24 + ldr r0, _0223CB40 ; =0x02251380 + ldr r1, [r0] + cmp r1, #0 + beq _0223CB3A + mov r0, #0x22 + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223CB3A + mov r0, #1 + bx lr +_0223CB3A: + mov r0, #0 + bx lr + nop +_0223CB40: .word 0x02251380 + thumb_func_end MOD18_0223CB24 + + thumb_func_start MOD18_0223CB44 +MOD18_0223CB44: ; 0x0223CB44 + ldr r2, _0223CB54 ; =0x02251380 + ldr r2, [r2] + cmp r2, #0 + beq _0223CB52 + add r2, r2, r0 + ldr r0, _0223CB58 ; =0x00000808 + strb r1, [r2, r0] +_0223CB52: + bx lr + .align 2, 0 +_0223CB54: .word 0x02251380 +_0223CB58: .word 0x00000808 + thumb_func_end MOD18_0223CB44 + + thumb_func_start MOD18_0223CB5C +MOD18_0223CB5C: ; 0x0223CB5C + ldr r3, _0223CB60 ; =0x0204F7FD + bx r3 + .align 2, 0 +_0223CB60: .word 0x0204F7FD + thumb_func_end MOD18_0223CB5C + + thumb_func_start MOD18_0223CB64 +MOD18_0223CB64: ; 0x0223CB64 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0 + ble _0223CB88 + bl MOD18_0223D638 + mov r1, #0 + add r2, r4, #0 + bl MOD18_0224DEA4 + bl MOD18_0223D638 + ldr r3, _0223CB90 ; =MOD18_0223CB5C + mov r1, #0x4b + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223CB88: + bl MOD18_0223CB5C + pop {r4, pc} + nop +_0223CB90: .word MOD18_0223CB5C + thumb_func_end MOD18_0223CB64 + + thumb_func_start MOD18_0223CB94 +MOD18_0223CB94: ; 0x0223CB94 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, _0223CC20 ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + bne _0223CC1E + ldr r2, _0223CC24 ; =0x000004DC + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _0223CC20 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CC28 ; =0x000004C8 + str r4, [r1, r0] + add r0, r4, #0 + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + ldr r7, _0223CC20 ; =0x02251384 + add r6, r0, #0 + add r5, r4, #0 +_0223CBC4: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020264F0 + ldr r1, [r7] + add r1, r1, r5 + strb r0, [r1, #6] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020264FC + ldr r1, [r7] + strh r0, [r1, r5] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202651C + ldr r1, [r7] + add r1, r1, r5 + strh r0, [r1, #2] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202653C + ldr r1, [r7] + add r1, r1, r5 + strb r0, [r1, #4] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026548 + ldr r1, [r7] + add r1, r1, r5 + strb r0, [r1, #5] + ldr r0, [r7] + add r0, r0, r5 + ldrb r1, [r0, #6] + cmp r1, #0 + beq _0223CC16 + bl MOD18_0223CD74 +_0223CC16: + add r4, r4, #1 + add r5, #8 + cmp r4, #0x64 + blt _0223CBC4 +_0223CC1E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CC20: .word 0x02251384 +_0223CC24: .word 0x000004DC +_0223CC28: .word 0x000004C8 + thumb_func_end MOD18_0223CB94 + + thumb_func_start MOD18_0223CC2C +MOD18_0223CC2C: ; 0x0223CC2C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _0223CC70 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CC74 ; =0x000004C8 + ldr r0, [r1, r0] + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + ldr r7, _0223CC70 ; =0x02251384 + add r6, r0, #0 + add r5, r4, #0 +_0223CC48: + ldr r3, [r7] + add r2, r4, #0 + add r1, r3, r5 + ldrh r0, [r1, #2] + str r0, [sp] + ldrb r0, [r1, #4] + str r0, [sp, #4] + ldrb r0, [r1, #5] + str r0, [sp, #8] + ldrb r1, [r1, #6] + ldrh r3, [r3, r5] + add r0, r6, #0 + bl FUN_0202649C + add r4, r4, #1 + add r5, #8 + cmp r4, #0x64 + blt _0223CC48 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223CC70: .word 0x02251384 +_0223CC74: .word 0x000004C8 + thumb_func_end MOD18_0223CC2C + + thumb_func_start MOD18_0223CC78 +MOD18_0223CC78: ; 0x0223CC78 + ldr r0, _0223CC7C ; =0x000004DC + bx lr + .align 2, 0 +_0223CC7C: .word 0x000004DC + thumb_func_end MOD18_0223CC78 + + thumb_func_start MOD18_0223CC80 +MOD18_0223CC80: ; 0x0223CC80 + ldr r0, _0223CC8C ; =0x02251384 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223CC90 ; =0x000004DA + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223CC8C: .word 0x02251384 +_0223CC90: .word 0x000004DA + thumb_func_end MOD18_0223CC80 + + thumb_func_start MOD18_0223CC94 +MOD18_0223CC94: ; 0x0223CC94 + ldr r0, _0223CCA0 ; =0x02251384 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223CCA4 ; =0x000004DA + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223CCA0: .word 0x02251384 +_0223CCA4: .word 0x000004DA + thumb_func_end MOD18_0223CC94 + + thumb_func_start MOD18_0223CCA8 +MOD18_0223CCA8: ; 0x0223CCA8 + push {r3, lr} + ldr r0, _0223CCC0 ; =0x02251384 + ldr r0, [r0] + cmp r0, #0 + beq _0223CCBC + bl FUN_02016A18 + ldr r0, _0223CCC0 ; =0x02251384 + mov r1, #0 + str r1, [r0] +_0223CCBC: + pop {r3, pc} + nop +_0223CCC0: .word 0x02251384 + thumb_func_end MOD18_0223CCA8 + + thumb_func_start MOD18_0223CCC4 +MOD18_0223CCC4: ; 0x0223CCC4 + push {r3, r4, r5, lr} + ldr r3, _0223CD34 ; =0x02251384 + ldr r2, _0223CD38 ; =0x000004DA + ldr r0, [r3] + ldrb r1, [r0, r2] + cmp r1, #0 + bne _0223CD32 + sub r1, r2, #6 + ldr r1, [r0, r1] + add r4, r1, #1 + sub r1, r2, #6 + str r4, [r0, r1] + ldr r3, [r3] + add r0, r1, #0 + ldr r1, [r3, r0] + mov r0, #0x7d + lsl r0, r0, #4 + cmp r1, r0 + blt _0223CCF0 + mov r1, #0 + sub r0, r2, #6 + str r1, [r3, r0] +_0223CCF0: + ldr r0, _0223CD34 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CD3C ; =0x000004D4 + ldr r4, [r1, r0] + mov r1, #0x14 + add r0, r4, #0 + bl _s32_div_f + cmp r1, #0xa + bne _0223CD32 + add r0, r4, #0 + mov r1, #0x14 + bl _s32_div_f + add r5, r0, #0 + bl MOD18_0223D1B8 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_0223D1D8 + add r2, r0, #0 + cmp r4, #0 + beq _0223CD32 + cmp r2, #0 + beq _0223CD32 + ldr r0, _0223CD34 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CD40 ; =0x000004C8 + ldr r0, [r1, r0] + add r1, r4, #0 + bl MOD05_021E5D0C +_0223CD32: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CD34: .word 0x02251384 +_0223CD38: .word 0x000004DA +_0223CD3C: .word 0x000004D4 +_0223CD40: .word 0x000004C8 + thumb_func_end MOD18_0223CCC4 + + thumb_func_start MOD18_0223CD44 +MOD18_0223CD44: ; 0x0223CD44 + push {r3, r4} + ldr r3, _0223CD70 ; =0x02251384 + lsl r1, r1, #2 + ldr r2, [r3] + add r4, r2, r1 + mov r2, #0x32 + lsl r2, r2, #4 + ldr r4, [r4, r2] + cmp r4, #0 + bne _0223CD5E + mov r0, #0 + pop {r3, r4} + bx lr +_0223CD5E: + ldrh r4, [r4] + strh r4, [r0] + ldr r3, [r3] + add r1, r3, r1 + ldr r1, [r1, r2] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + pop {r3, r4} + bx lr + .align 2, 0 +_0223CD70: .word 0x02251384 + thumb_func_end MOD18_0223CD44 + + thumb_func_start MOD18_0223CD74 +MOD18_0223CD74: ; 0x0223CD74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldrh r0, [r0] + add r1, sp, #4 + strh r0, [r1] + ldr r0, [sp] + ldrh r0, [r0, #2] + strh r0, [r1, #2] + ldr r1, _0223CDD4 ; =MOD18_0223CD44 + mov r0, #0x64 + bl MOD18_0223DC7C + add r0, sp, #4 + bl MOD18_0223DC28 + add r4, r0, #0 + cmp r4, #0x64 + blt _0223CD9E + bl ErrorHandling +_0223CD9E: + mov r5, #0x63 + cmp r4, #0x63 + bge _0223CDBE + mov r7, #0xc7 + lsl r7, r7, #2 + ldr r1, _0223CDD8 ; =0x02251384 + lsl r6, r5, #2 + add r0, r7, #4 +_0223CDAE: + ldr r2, [r1] + sub r5, r5, #1 + add r3, r2, r6 + ldr r2, [r3, r7] + sub r6, r6, #4 + str r2, [r3, r0] + cmp r5, r4 + bgt _0223CDAE +_0223CDBE: + ldr r0, _0223CDD8 ; =0x02251384 + ldr r1, [r0] + lsl r0, r4, #2 + add r2, r1, r0 + mov r1, #0x32 + ldr r0, [sp] + lsl r1, r1, #4 + str r0, [r2, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CDD4: .word MOD18_0223CD44 +_0223CDD8: .word 0x02251384 + thumb_func_end MOD18_0223CD74 + + thumb_func_start MOD18_0223CDDC +MOD18_0223CDDC: ; 0x0223CDDC + push {r4, r5, r6, lr} + ldr r0, _0223CE10 ; =0x02251384 + mov r2, #0x32 + ldr r0, [r0] + lsl r2, r2, #4 + add r0, r0, r2 + mov r1, #0 + lsr r2, r2, #1 + bl MI_CpuFill8 + mov r4, #0 + ldr r6, _0223CE10 ; =0x02251384 + add r5, r4, #0 +_0223CDF6: + ldr r0, [r6] + add r0, r0, r5 + ldrb r1, [r0, #6] + cmp r1, #0 + beq _0223CE04 + bl MOD18_0223CD74 +_0223CE04: + add r4, r4, #1 + add r5, #8 + cmp r4, #0x64 + blt _0223CDF6 + pop {r4, r5, r6, pc} + nop +_0223CE10: .word 0x02251384 + thumb_func_end MOD18_0223CDDC + + thumb_func_start MOD18_0223CE14 +MOD18_0223CE14: ; 0x0223CE14 + mov r2, #0 +_0223CE16: + ldrb r1, [r0, #6] + cmp r1, #0 + beq _0223CE26 + add r2, r2, #1 + add r0, #8 + cmp r2, #0x64 + blt _0223CE16 + mov r0, #0 +_0223CE26: + bx lr + thumb_func_end MOD18_0223CE14 + + thumb_func_start MOD18_0223CE28 +MOD18_0223CE28: ; 0x0223CE28 + bx lr + .align 2, 0 + thumb_func_end MOD18_0223CE28 + + thumb_func_start MOD18_0223CE2C +MOD18_0223CE2C: ; 0x0223CE2C + push {r3, lr} + add r2, sp, #0 + strh r0, [r2] + strh r1, [r2, #2] + ldr r1, _0223CE60 ; =MOD18_0223CD44 + mov r0, #0x64 + bl MOD18_0223DC7C + add r0, sp, #0 + bl MOD18_0223DBBC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223CE4E + mov r0, #0 + pop {r3, pc} +_0223CE4E: + ldr r1, _0223CE64 ; =0x02251384 + lsl r0, r0, #2 + ldr r1, [r1] + add r1, r1, r0 + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r1, r0] + pop {r3, pc} + nop +_0223CE60: .word MOD18_0223CD44 +_0223CE64: .word 0x02251384 + thumb_func_end MOD18_0223CE2C + + thumb_func_start MOD18_0223CE68 +MOD18_0223CE68: ; 0x0223CE68 + push {r3, r4, r5, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, r5 + bne _0223CF1C + bl FUN_0204E4D4 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E50C + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223CE2C + add r4, r0, #0 + beq _0223CF1C + bl FUN_0204F7E4 + ldrb r2, [r4, #4] + ldrb r1, [r4, #5] + ldrb r0, [r4, #6] + add r1, r2, r1 + bl MOD18_02249450 + cmp r0, #0 + beq _0223CF0E + ldr r0, _0223CF20 ; =0x02251384 + ldrb r2, [r4, #6] + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _0223CF24 ; =0x000004CC + strb r2, [r1, r0] + ldr r0, _0223CF28 ; =0x000005E3 + bl FUN_020054C8 + ldrb r1, [r4, #4] + ldrb r0, [r4, #5] + mov r5, #0x63 + add r0, r1, r0 + cmp r0, #0x63 + bge _0223CEC4 + add r5, r0, #0 +_0223CEC4: + bl MOD18_0223D638 + mov r1, #1 + add r2, r5, #0 + bl MOD18_0224DEA4 + bl MOD18_0223D638 + ldrb r2, [r4, #6] + mov r1, #2 + bl MOD18_0224DF2C + ldrb r5, [r4, #5] + ldrb r1, [r4, #4] + add r0, r5, r1 + cmp r0, #0x63 + ble _0223CEEA + mov r0, #0x63 + sub r5, r0, r1 +_0223CEEA: + bl MOD18_0223D638 + ldr r3, _0223CF2C ; =MOD18_0223CB64 + mov r1, #0x45 + mov r2, #1 + str r5, [sp] + bl MOD18_0224DCF0 + bl MOD18_0223D638 + bl MOD18_0224DD10 + add r0, r4, #0 + bl MOD18_0223D0E8 + bl MOD18_0223CC2C + pop {r3, r4, r5, pc} +_0223CF0E: + bl MOD18_0223D638 + ldr r3, _0223CF30 ; =MOD18_0223CB5C + mov r1, #0x53 + mov r2, #1 + bl MOD18_0224DCB8 +_0223CF1C: + pop {r3, r4, r5, pc} + nop +_0223CF20: .word 0x02251384 +_0223CF24: .word 0x000004CC +_0223CF28: .word 0x000005E3 +_0223CF2C: .word MOD18_0223CB64 +_0223CF30: .word MOD18_0223CB5C + thumb_func_end MOD18_0223CE68 + + thumb_func_start MOD18_0223CF34 +MOD18_0223CF34: ; 0x0223CF34 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0] + bx lr + thumb_func_end MOD18_0223CF34 + + thumb_func_start MOD18_0223CF3C +MOD18_0223CF3C: ; 0x0223CF3C + push {r3, r4, r5, r6} + ldrh r6, [r0, #2] + mov r2, #0 + ldrh r3, [r0] + cmp r6, #0 + blt _0223CF96 + add r5, r2, #0 +_0223CF4A: + sub r4, r3, r5 + cmp r4, #0 + ble _0223CF54 + add r3, r4, #0 + b _0223CF8E +_0223CF54: + cmp r3, #0 + beq _0223CF5A + sub r3, r3, #1 +_0223CF5A: + lsl r4, r2, #1 + cmp r3, r4 + bge _0223CF64 + sub r5, r2, r3 + b _0223CF68 +_0223CF64: + add r5, r2, r4 + sub r5, r3, r5 +_0223CF68: + cmp r3, r2 + blt _0223CF7E + lsl r6, r2, #1 + add r6, r2, r6 + cmp r3, r6 + bge _0223CF78 + sub r3, r4, r3 + b _0223CF7E +_0223CF78: + lsl r2, r2, #2 + neg r2, r2 + add r3, r2, r3 +_0223CF7E: + strh r3, [r1] + strh r5, [r1, #2] + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223CF8E: + add r2, r2, #1 + add r5, r5, #4 + cmp r2, r6 + ble _0223CF4A +_0223CF96: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + thumb_func_end MOD18_0223CF3C + + thumb_func_start MOD18_0223CF9C +MOD18_0223CF9C: ; 0x0223CF9C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + add r6, r2, #0 + add r1, sp, #0xc + add r7, r3, #0 + strh r6, [r1] + strh r7, [r1, #2] + ldr r0, [sp] + strb r5, [r1, #4] + strb r0, [r1, #6] + ldr r0, [sp, #8] + strb r0, [r1, #5] + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0223CFDA + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x54 + add r3, r2, #0 + bl MOD18_0224DCB8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223CFDA: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0204D76C + cmp r0, #0 + beq _0223CFF8 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x37 + add r3, r2, #0 + bl MOD18_0224DCB8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223CFF8: + ldr r0, _0223D0DC ; =0x02251384 + add r2, r7, #0 + ldr r1, [r0] + ldr r0, _0223D0E0 ; =0x000004C8 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223D01E + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3c + add r3, r2, #0 + bl MOD18_0224DCB8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223D01E: + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_0223CE2C + add r4, r0, #0 + add r0, sp, #0xc + beq _0223D076 + ldrb r1, [r4, #6] + ldrb r0, [r0, #6] + cmp r1, r0 + bne _0223D066 + ldrb r0, [r4, #4] + str r0, [sp, #4] + cmp r0, r5 + ble _0223D04A + add r0, r5, #0 + mov r1, #5 + bl _s32_div_f + ldr r1, [sp, #4] + add r0, r1, r0 + b _0223D052 +_0223D04A: + mov r1, #5 + bl _s32_div_f + add r0, r5, r0 +_0223D052: + add r0, r0, #1 + strb r0, [r4, #4] + ldrb r0, [r4, #4] + cmp r0, #0x63 + bls _0223D060 + mov r0, #0x63 + strb r0, [r4, #4] +_0223D060: + mov r0, #1 + str r0, [sp, #8] + b _0223D07E +_0223D066: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3b + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0223D07E +_0223D076: + bl MOD18_0223D14C + mov r0, #1 + str r0, [sp, #8] +_0223D07E: + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223D0D8 + bl MOD18_0223D638 + ldr r2, [sp] + mov r1, #0 + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r1, #1 + add r2, r5, #0 + bl MOD18_0224DEA4 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3a + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, [sp] + bl MOD18_02249E98 + ldr r0, _0223D0E4 ; =0x00000631 + bl FUN_020054C8 + ldr r0, _0223D0DC ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D0E0 ; =0x000004C8 + ldr r0, [r1, r0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDCC + ldr r0, _0223D0DC ; =0x02251384 + add r2, r7, #0 + ldr r1, [r0] + ldr r0, _0223D0E0 ; =0x000004C8 + ldr r0, [r1, r0] + add r1, r6, #0 + bl MOD05_021E5D0C +_0223D0D8: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D0DC: .word 0x02251384 +_0223D0E0: .word 0x000004C8 +_0223D0E4: .word 0x00000631 + thumb_func_end MOD18_0223CF9C + + thumb_func_start MOD18_0223D0E8 +MOD18_0223D0E8: ; 0x0223D0E8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0223D144 ; =0x02251384 + mov r1, #0 + ldr r0, [r0] + mvn r1, r1 + mov r4, #0 +_0223D0F6: + cmp r0, r6 + bne _0223D0FE + add r1, r4, #0 + b _0223D106 +_0223D0FE: + add r4, r4, #1 + add r0, #8 + cmp r4, #0x64 + blt _0223D0F6 +_0223D106: + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _0223D112 + bl ErrorHandling +_0223D112: + cmp r4, #0x63 + bge _0223D132 + ldr r7, _0223D144 ; =0x02251384 + lsl r5, r4, #3 +_0223D11A: + add r0, r4, #1 + ldr r1, [r7] + lsl r0, r0, #3 + add r0, r1, r0 + add r1, r1, r5 + mov r2, #8 + bl MI_CpuCopy8 + add r4, r4, #1 + add r5, #8 + cmp r4, #0x63 + blt _0223D11A +_0223D132: + ldr r0, _0223D144 ; =0x02251384 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223D148 ; =0x0000031E + strb r2, [r1, r0] + add r0, r6, #0 + bl MOD18_0223CDDC + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D144: .word 0x02251384 +_0223D148: .word 0x0000031E + thumb_func_end MOD18_0223D0E8 + + thumb_func_start MOD18_0223D14C +MOD18_0223D14C: ; 0x0223D14C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0223D190 ; =0x02251384 + ldr r0, [r0] + bl MOD18_0223CE14 + add r5, r0, #0 + bne _0223D178 + ldr r0, _0223D190 ; =0x02251384 + ldr r0, [r0] + bl MOD18_0223CE28 + bl MOD18_0223D0E8 + ldr r0, _0223D190 ; =0x02251384 + ldr r0, [r0] + bl MOD18_0223CE14 + add r5, r0, #0 + bne _0223D178 + bl ErrorHandling +_0223D178: + add r0, r4, #0 + add r1, r5, #0 + mov r2, #8 + bl MI_CpuCopy8 + add r0, r5, #0 + bl MOD18_0223CD74 + bl MOD18_0223CC2C + pop {r3, r4, r5, pc} + nop +_0223D190: .word 0x02251384 + thumb_func_end MOD18_0223D14C + + thumb_func_start MOD18_0223D194 +MOD18_0223D194: ; 0x0223D194 + cmp r0, #0 + beq _0223D1A0 + cmp r0, #0xb + bge _0223D1A0 + mov r0, #1 + bx lr +_0223D1A0: + mov r0, #0 + bx lr + thumb_func_end MOD18_0223D194 + + thumb_func_start MOD18_0223D1A4 +MOD18_0223D1A4: ; 0x0223D1A4 + push {r3, lr} + bl MOD18_0223CE2C + cmp r0, #0 + beq _0223D1B2 + mov r0, #1 + pop {r3, pc} +_0223D1B2: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223D1A4 + + thumb_func_start MOD18_0223D1B8 +MOD18_0223D1B8: ; 0x0223D1B8 + ldr r1, _0223D1D4 ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + beq _0223D1CE + lsl r1, r0, #3 + add r0, r2, r1 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0223D1CE + ldrh r0, [r2, r1] + bx lr +_0223D1CE: + mov r0, #0 + bx lr + nop +_0223D1D4: .word 0x02251384 + thumb_func_end MOD18_0223D1B8 + + thumb_func_start MOD18_0223D1D8 +MOD18_0223D1D8: ; 0x0223D1D8 + ldr r1, _0223D1F4 ; =0x02251384 + ldr r1, [r1] + cmp r1, #0 + beq _0223D1EE + lsl r0, r0, #3 + add r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #0 + beq _0223D1EE + ldrh r0, [r1, #2] + bx lr +_0223D1EE: + mov r0, #0 + bx lr + nop +_0223D1F4: .word 0x02251384 + thumb_func_end MOD18_0223D1D8 + + thumb_func_start MOD18_0223D1F8 +MOD18_0223D1F8: ; 0x0223D1F8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, _0223D290 ; =0x02251384 + mov r5, #0 + ldr r2, [r0] + add r6, r5, #0 + add r7, r5, #0 + cmp r2, #0 + bne _0223D20E + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D20E: + ldr r0, _0223D294 ; =0x000004CC + add r4, r5, #0 +_0223D212: + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223D26E + mov r0, #4 + bl FUN_0200AA80 + add r5, r0, #0 + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + ldr r2, _0223D290 ; =0x02251384 + add r6, r0, #0 + ldr r2, [r2] + add r0, r5, #0 + add r3, r2, r4 + ldr r2, _0223D294 ; =0x000004CC + mov r1, #2 + ldrb r2, [r3, r2] + bl FUN_0200B19C + add r0, r5, #0 + mov r1, #2 + bl FUN_0200B7A8 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + mov r1, #0x5f + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r1, [sp] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + ldr r1, _0223D290 ; =0x02251384 + mov r0, #0 + ldr r1, [r1] + mov r7, #1 + add r2, r1, r4 + ldr r1, _0223D294 ; =0x000004CC + strb r0, [r2, r1] + b _0223D276 +_0223D26E: + add r4, r4, #1 + add r2, r2, #1 + cmp r4, #8 + blt _0223D212 +_0223D276: + cmp r6, #0 + beq _0223D280 + add r0, r6, #0 + bl FUN_02021A20 +_0223D280: + cmp r5, #0 + beq _0223D28A + add r0, r5, #0 + bl FUN_0200AB18 +_0223D28A: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D290: .word 0x02251384 +_0223D294: .word 0x000004CC + thumb_func_end MOD18_0223D1F8 + + thumb_func_start MOD18_0223D298 +MOD18_0223D298: ; 0x0223D298 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, _0223D2E4 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D2E8 ; =0x000004C8 + ldr r0, [r1, r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0 + mov r5, #0 +_0223D2B0: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020264F0 + cmp r0, #0 + beq _0223D2D8 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020264FC + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0202651C + add r1, r0, #0 + add r0, r6, #0 + add r2, r7, #0 + bl MOD18_02239BB0 +_0223D2D8: + add r5, r5, #1 + cmp r5, #0x64 + blt _0223D2B0 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D2E4: .word 0x02251384 +_0223D2E8: .word 0x000004C8 + thumb_func_end MOD18_0223D298 + + thumb_func_start MOD18_0223D2EC +MOD18_0223D2EC: ; 0x0223D2EC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #0x64 + bls _0223D306 + ldr r0, _0223D308 ; =0x00000621 + bl FUN_020054C8 + mov r0, #0 + strh r0, [r4, #2] +_0223D306: + pop {r4, pc} + .align 2, 0 +_0223D308: .word 0x00000621 + thumb_func_end MOD18_0223D2EC + + thumb_func_start MOD18_0223D30C +MOD18_0223D30C: ; 0x0223D30C + push {r4, lr} + ldr r0, _0223D364 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D368 ; =0x000004C4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223D31E + bl ErrorHandling +_0223D31E: + ldr r0, _0223D364 ; =0x02251384 + ldr r1, [r0] + mov r0, #0x13 + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223D330 + bl ErrorHandling +_0223D330: + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + mov r1, #0 + mov r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r2, #0x64 + ldr r0, _0223D364 ; =0x02251384 + strh r2, [r4, #2] + ldr r1, [r0] + ldr r0, _0223D368 ; =0x000004C4 + str r4, [r1, r0] + ldr r0, _0223D36C ; =MOD18_0223D2EC + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _0223D364 ; =0x02251384 + ldr r2, [r1] + mov r1, #0x13 + lsl r1, r1, #6 + str r0, [r2, r1] + pop {r4, pc} + nop +_0223D364: .word 0x02251384 +_0223D368: .word 0x000004C4 +_0223D36C: .word MOD18_0223D2EC + thumb_func_end MOD18_0223D30C + + thumb_func_start MOD18_0223D370 +MOD18_0223D370: ; 0x0223D370 + push {r3, lr} + ldr r0, _0223D3A4 ; =0x02251384 + ldr r1, [r0] + mov r0, #0x13 + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223D3A2 + bl FUN_0200CAB4 + ldr r0, _0223D3A4 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D3A8 ; =0x000004C4 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _0223D3A4 ; =0x02251384 + mov r0, #0x13 + ldr r2, [r1] + mov r3, #0 + lsl r0, r0, #6 + str r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #4 + str r3, [r1, r0] +_0223D3A2: + pop {r3, pc} + .align 2, 0 +_0223D3A4: .word 0x02251384 +_0223D3A8: .word 0x000004C4 + thumb_func_end MOD18_0223D370 + + thumb_func_start MOD18_0223D3AC +MOD18_0223D3AC: ; 0x0223D3AC + push {r3, lr} + ldr r1, _0223D3D8 ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + beq _0223D3D2 + ldr r1, _0223D3DC ; =0x000004C4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _0223D3D2 + ldrh r1, [r1, #2] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x64 + bl _s32_div_f + add r0, r1, #0 + bl MOD18_0223D1B8 + pop {r3, pc} +_0223D3D2: + mov r0, #0 + pop {r3, pc} + nop +_0223D3D8: .word 0x02251384 +_0223D3DC: .word 0x000004C4 + thumb_func_end MOD18_0223D3AC + + thumb_func_start MOD18_0223D3E0 +MOD18_0223D3E0: ; 0x0223D3E0 + push {r3, lr} + ldr r1, _0223D40C ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + beq _0223D406 + ldr r1, _0223D410 ; =0x000004C4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _0223D406 + ldrh r1, [r1, #2] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x64 + bl _s32_div_f + add r0, r1, #0 + bl MOD18_0223D1D8 + pop {r3, pc} +_0223D406: + mov r0, #0 + pop {r3, pc} + nop +_0223D40C: .word 0x02251384 +_0223D410: .word 0x000004C4 + thumb_func_end MOD18_0223D3E0 + + thumb_func_start MOD18_0223D414 +MOD18_0223D414: ; 0x0223D414 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + bl FUN_02024FF4 + add r4, r0, #0 + ldr r0, _0223D580 ; =0x02251388 + mov r2, #0x15 + str r6, [r0] + add r0, r6, #0 + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + ldr r2, _0223D580 ; =0x02251388 + mov r3, #0x4d + ldr r0, [r2] + lsl r3, r3, #2 + str r5, [r0, #0xc] + ldr r1, [r2] + mov r0, #0 + strb r0, [r1, r3] + ldr r1, [r2] + strh r0, [r1, #0x1c] + ldr r1, [r2] + strh r0, [r1, #0x1e] + add r1, r3, #0 + ldr r6, [r2] + add r1, #0x17 + strb r0, [r6, r1] + add r0, r3, #0 + ldr r1, [r2] + mov r6, #1 + add r0, #0x13 + strb r6, [r1, r0] + add r3, #0xc0 + str r3, [sp] + ldr r0, _0223D584 ; =0x0000023F + ldr r2, [r5, #8] + mov r1, #0x21 + add r3, r4, #0 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0 + str r0, [sp] + ldr r0, _0223D588 ; =0x00000243 + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x47 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + ldr r0, _0223D58C ; =0x00000241 + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x12 + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0 + str r0, [sp] + ldr r0, _0223D590 ; =0x00000242 + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0 + str r0, [sp] + ldr r0, _0223D594 ; =0x0000023B + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + mov r2, #0x4a + ldr r3, [r1] + lsl r2, r2, #2 + str r0, [r3, r2] + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r1] + mov r1, #3 + ldr r0, [r0, #0xc] + add r2, #0xba + ldr r0, [r0, #8] + mov r3, #0xa + bl FUN_0200CD68 + mov r3, #0x80 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _0223D580 ; =0x02251388 + ldr r2, _0223D598 ; =0x000003D9 + ldr r0, [r0] + mov r1, #3 + ldr r0, [r0, #0xc] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_0200CB00 + mov r3, #0 + ldr r0, _0223D580 ; =0x02251388 + add r4, r3, #0 + mov r2, #0xff + add r1, r3, #0 +_0223D536: + ldr r5, [r0] + add r5, r5, r3 + add r5, #0xc2 + strb r2, [r5] + ldr r5, [r0] + add r5, r5, r3 + add r5, #0xd2 + strb r2, [r5] + ldr r5, [r0] + add r3, r3, #1 + add r5, r5, r4 + add r5, #0xdc + add r4, r4, #4 + str r1, [r5] + cmp r3, #8 + blt _0223D536 + ldr r0, _0223D580 ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDAC + mov r1, #0 + ldr r0, _0223D59C ; =MOD18_0223E7AC + add r2, r1, #0 + bl FUN_0200CA44 + ldr r1, _0223D580 ; =0x02251388 + ldr r1, [r1] + str r0, [r1, #0x14] + ldr r0, _0223D5A0 ; =MOD18_0223E890 + bl FUN_0202D31C + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D580: .word 0x02251388 +_0223D584: .word 0x0000023F +_0223D588: .word 0x00000243 +_0223D58C: .word 0x00000241 +_0223D590: .word 0x00000242 +_0223D594: .word 0x0000023B +_0223D598: .word 0x000003D9 +_0223D59C: .word MOD18_0223E7AC +_0223D5A0: .word MOD18_0223E890 + thumb_func_end MOD18_0223D414 + + thumb_func_start MOD18_0223D5A4 +MOD18_0223D5A4: ; 0x0223D5A4 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0223D634 ; =0x02251388 + add r5, r4, #0 +_0223D5AC: + ldr r0, [r6] + add r0, r0, r5 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + beq _0223D5BC + bl FUN_02021A20 +_0223D5BC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _0223D5AC + mov r0, #0 + bl FUN_0202D31C + ldr r0, _0223D634 ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl FUN_0200CAB4 + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + ldr r1, [r1, #0xc] + add r1, #0x8c + str r2, [r1] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _0223D634 ; =0x02251388 + mov r1, #0 + str r1, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D634: .word 0x02251388 + thumb_func_end MOD18_0223D5A4 + + thumb_func_start MOD18_0223D638 +MOD18_0223D638: ; 0x0223D638 + ldr r0, _0223D644 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D644: .word 0x02251388 + thumb_func_end MOD18_0223D638 + + thumb_func_start MOD18_0223D648 +MOD18_0223D648: ; 0x0223D648 + ldr r0, _0223D654 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D654: .word 0x02251388 + thumb_func_end MOD18_0223D648 + + thumb_func_start MOD18_0223D658 +MOD18_0223D658: ; 0x0223D658 + ldr r0, _0223D664 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D664: .word 0x02251388 + thumb_func_end MOD18_0223D658 + + thumb_func_start MOD18_0223D668 +MOD18_0223D668: ; 0x0223D668 + ldr r0, _0223D674 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D674: .word 0x02251388 + thumb_func_end MOD18_0223D668 + + thumb_func_start MOD18_0223D678 +MOD18_0223D678: ; 0x0223D678 + ldr r0, _0223D684 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D684: .word 0x02251388 + thumb_func_end MOD18_0223D678 + + thumb_func_start MOD18_0223D688 +MOD18_0223D688: ; 0x0223D688 + push {r3, lr} + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + pop {r3, pc} + nop +_0223D6D4: .word 0x02251388 + thumb_func_end MOD18_0223D688 + + thumb_func_start MOD18_0223D6D8 +MOD18_0223D6D8: ; 0x0223D6D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + str r2, [sp] + str r3, [sp, #4] + cmp r5, #0 + beq _0223D73E + cmp r6, #0 + beq _0223D73E + mov r0, #4 + bl FUN_0200AA80 + add r4, r0, #0 + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl FUN_0200ABC0 + add r0, r4, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_0200ABC0 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r1, [sp] + add r2, r7, #0 + bl FUN_0200A8E0 + ldr r1, [sp, #4] + add r0, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D73E: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0223D6D8 + + thumb_func_start MOD18_0223D744 +MOD18_0223D744: ; 0x0223D744 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + str r3, [sp, #4] + cmp r5, #0 + beq _0223D79C + mov r0, #4 + bl FUN_0200AA80 + add r4, r0, #0 + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl FUN_0200ABC0 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r1, [sp] + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r1, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D79C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0223D744 + + thumb_func_start MOD18_0223D7A4 +MOD18_0223D7A4: ; 0x0223D7A4 + push {r3, r4, r5, r6, r7, lr} + ldr r4, _0223D8A0 ; =0x02251388 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0223D7B4 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D7B4: + mov r5, #0 +_0223D7B6: + add r0, r5, #0 + bl FUN_0202DEC0 + cmp r0, #0 + beq _0223D7E2 + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0202DEF4 + add r0, r7, #0 + mov r1, #1 + mov r2, #0x5b + add r3, r6, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223D7E2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D7E2: + ldr r0, [r4] + add r0, r0, r5 + add r0, #0xc2 + ldrb r0, [r0] + cmp r0, #0xff + beq _0223D820 + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + ldr r0, [r4] + add r0, r0, r5 + add r0, #0xc2 + ldrb r0, [r0] + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [r4] + add r3, r6, #0 + add r2, r0, r5 + add r2, #0xc2 + mov r0, #0xff + strb r0, [r2] + add r0, r7, #0 + mov r2, #0x6f + bl MOD18_0223D6D8 + cmp r0, #0 + beq _0223D820 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D820: + ldr r0, [r4] + add r0, r0, r5 + add r0, #0xd2 + ldrb r0, [r0] + cmp r0, #0xff + beq _0223D84E + add r0, r5, #0 + bl FUN_0202DFA4 + ldr r1, [r4] + add r3, r6, #0 + add r2, r1, r5 + add r2, #0xd2 + mov r1, #0xff + strb r1, [r2] + mov r1, #0 + mov r2, #0x70 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223D84E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D84E: + ldr r0, [r4] + ldr r1, _0223D8A4 ; =0x0000013D + add r2, r0, r5 + ldrb r1, [r2, r1] + cmp r1, #1 + bne _0223D896 + lsl r4, r5, #2 + add r0, r0, r4 + add r0, #0xdc + ldr r1, [r0] + cmp r1, #0 + beq _0223D886 + add r0, r6, #0 + bl FUN_02021A74 + ldr r0, _0223D8A0 ; =0x02251388 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xdc + ldr r0, [r0] + bl FUN_02021A20 + ldr r0, _0223D8A0 ; =0x02251388 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xdc + str r1, [r0] +_0223D886: + ldr r0, _0223D8A0 ; =0x02251388 + mov r2, #0 + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _0223D8A4 ; =0x0000013D + strb r2, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D896: + add r5, r5, #1 + cmp r5, #8 + blt _0223D7B6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D8A0: .word 0x02251388 +_0223D8A4: .word 0x0000013D + thumb_func_end MOD18_0223D7A4 + + thumb_func_start MOD18_0223D8A8 +MOD18_0223D8A8: ; 0x0223D8A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + strh r5, [r0] + strh r4, [r0, #2] + ldr r0, _0223D8F0 ; =0x02251388 + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0, #0xc] + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223D8CA + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D8CA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223F764 + cmp r0, #0 + beq _0223D8DA + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D8DA: + mov r1, #0 + add r0, sp, #0 + mvn r1, r1 + bl MOD18_0224B04C + cmp r0, #0xff + beq _0223D8EC + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D8EC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D8F0: .word 0x02251388 + thumb_func_end MOD18_0223D8A8 + + thumb_func_start MOD18_0223D8F4 +MOD18_0223D8F4: ; 0x0223D8F4 + push {r3, lr} + sub sp, #0x18 + ldr r0, _0223D9D4 ; =0x02251388 + ldr r1, _0223D9D8 ; =0x00000146 + ldr r0, [r0] + ldrb r2, [r0, r1] + cmp r2, #0 + beq _0223D912 + sub r1, #0x12 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223D912 + add sp, #0x18 + mov r0, #0 + pop {r3, pc} +_0223D912: + ldr r1, _0223D9DC ; =0x021C48F8 + ldrh r1, [r1, #0x20] + cmp r1, #0 + beq _0223D9BA + mov r1, #0x4d + mov r2, #0x1e + lsl r1, r1, #2 + strb r2, [r0, r1] + ldr r0, _0223D9D4 ; =0x02251388 + add r1, #0x17 + ldr r0, [r0] + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223D9BA + bl FUN_0204D610 + cmp r0, #0 + beq _0223D9BA + bl FUN_02031190 + bl FUN_0204D830 + cmp r0, #0 + bne _0223D9BA + bl FUN_020311F0 + cmp r0, #0 + beq _0223D950 + add sp, #0x18 + mov r0, #0 + pop {r3, pc} +_0223D950: + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + beq _0223D962 + add sp, #0x18 + mov r0, #0 + pop {r3, pc} +_0223D962: + ldr r3, _0223D9D4 ; =0x02251388 + ldr r2, _0223D9DC ; =0x021C48F8 + ldr r3, [r3] + ldrh r1, [r2, #0x1c] + ldr r3, [r3, #0xc] + ldrh r2, [r2, #0x1e] + add r3, #0x88 + ldr r3, [r3] + add r0, sp, #0xc + bl MOD05_021F0318 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x14] + add r2, sp, #8 + add r3, sp, #4 + bl MOD05_021EF4F8 + ldr r1, [sp, #8] + add r0, sp, #0 + strh r1, [r0] + ldr r1, [sp, #4] + strh r1, [r0, #2] + ldr r1, _0223D9DC ; =0x021C48F8 + ldr r0, _0223D9D4 ; =0x02251388 + ldrh r3, [r1, #0x1c] + ldr r2, [r0] + strh r3, [r2, #0x18] + ldrh r2, [r1, #0x1e] + ldr r1, [r0] + strh r2, [r1, #0x1a] + ldr r2, [sp, #8] + ldr r1, [r0] + strh r2, [r1, #0x1c] + ldr r1, [sp, #4] + ldr r0, [r0] + mov r2, #4 + strh r1, [r0, #0x1e] + mov r0, #0x30 + add r1, sp, #0 + bl FUN_02030ADC + add sp, #0x18 + mov r0, #1 + pop {r3, pc} +_0223D9BA: + ldr r0, _0223D9D4 ; =0x02251388 + ldr r2, [r0] + mov r0, #0x4d + lsl r0, r0, #2 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223D9CC + sub r1, r1, #1 + strb r1, [r2, r0] +_0223D9CC: + mov r0, #0 + add sp, #0x18 + pop {r3, pc} + nop +_0223D9D4: .word 0x02251388 +_0223D9D8: .word 0x00000146 +_0223D9DC: .word 0x021C48F8 + thumb_func_end MOD18_0223D8F4 + + thumb_func_start MOD18_0223D9E0 +MOD18_0223D9E0: ; 0x0223D9E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r2, #0 + str r0, [sp] + ldrh r0, [r6] + str r1, [sp, #4] + mov r1, #6 + sub r0, r0, #6 + str r0, [sp, #0xc] + ldrh r0, [r6, #2] + mov r4, #1 + sub r0, r0, #6 + str r0, [sp, #8] + add r0, sp, #0x14 + bl MOD18_0223CF34 + add r0, sp, #0x14 + add r1, sp, #0x10 + bl MOD18_0223CF3C + cmp r0, #0 + beq _0223DA50 +_0223DA0C: + add r1, sp, #0x10 + mov r0, #0 + ldrh r2, [r6] + ldrsh r0, [r1, r0] + add r5, r2, r0 + mov r0, #2 + ldrh r2, [r6, #2] + ldrsh r0, [r1, r0] + add r7, r2, r0 + ldr r2, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + blx r2 + cmp r0, #0 + beq _0223DA44 + ldr r0, [sp, #0xc] + sub r1, r5, r0 + ldr r0, [sp, #8] + sub r0, r7, r0 + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, [sp] + cmp r4, #8 + strb r1, [r0, r4] + bne _0223DA42 + add r4, r4, #1 + b _0223DA50 +_0223DA42: + add r4, r4, #1 +_0223DA44: + add r0, sp, #0x14 + add r1, sp, #0x10 + bl MOD18_0223CF3C + cmp r0, #0 + bne _0223DA0C +_0223DA50: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0223D9E0 + + thumb_func_start MOD18_0223DA58 +MOD18_0223DA58: ; 0x0223DA58 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + strb r0, [r1] + ldr r1, _0223DA90 ; =MOD18_0223F764 + add r0, sp, #0 + add r2, r4, #0 + bl MOD18_0223D9E0 + add r2, r0, #0 + mov r0, #0x31 + add r1, sp, #0 + bl FUN_02030BC4 + ldr r1, _0223DA94 ; =MOD18_0223C6E4 + add r0, sp, #0 + add r2, r4, #0 + bl MOD18_0223D9E0 + add r2, r0, #0 + mov r0, #0x32 + add r1, sp, #0 + bl FUN_02030BC4 + add sp, #0xc + pop {r3, r4, pc} + nop +_0223DA90: .word MOD18_0223F764 +_0223DA94: .word MOD18_0223C6E4 + thumb_func_end MOD18_0223DA58 + + thumb_func_start MOD18_0223DA98 +MOD18_0223DA98: ; 0x0223DA98 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DAC0 + add r0, r5, #0 + bl FUN_0204D830 + cmp r0, #0 + bne _0223DAC0 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223DA58 +_0223DAC0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0223DA98 + + thumb_func_start MOD18_0223DAC4 +MOD18_0223DAC4: ; 0x0223DAC4 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223DAEE + ldr r1, _0223DAF0 ; =0x02251388 + add r0, r4, #1 + ldr r1, [r1] + sub r2, r5, #1 + add r1, #0xfc + bl MI_CpuCopy8 + ldr r0, _0223DAF0 ; =0x02251388 + sub r2, r5, #1 + ldr r1, [r0] + mov r0, #0x52 + lsl r0, r0, #2 + strb r2, [r1, r0] +_0223DAEE: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223DAF0: .word 0x02251388 + thumb_func_end MOD18_0223DAC4 + + thumb_func_start MOD18_0223DAF4 +MOD18_0223DAF4: ; 0x0223DAF4 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223DB8E + ldr r1, _0223DB94 ; =0x02251388 + add r0, r4, #1 + ldr r2, [r1] + mov r1, #0x41 + lsl r1, r1, #2 + add r1, r2, r1 + sub r2, r5, #1 + bl MI_CpuCopy8 + ldr r2, _0223DB94 ; =0x02251388 + ldr r0, _0223DB98 ; =0x00000149 + ldr r1, [r2] + sub r3, r5, #1 + strb r3, [r1, r0] + ldr r2, [r2] + ldr r1, _0223DB9C ; =MOD18_0223D1A4 + add r0, sp, #0x1c + add r2, #0x1c + bl MOD18_0223D9E0 + ldr r1, _0223DB94 ; =0x02251388 + ldr r2, _0223DBA0 ; =0x0000014A + ldr r3, [r1] + strb r0, [r3, r2] + ldr r3, [r1] + ldrb r0, [r3, r2] + sub r0, r0, #1 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #0 + add r0, sp, #0x1c + sub r1, #0x3e + ldrb r2, [r3, r2] + add r0, #1 + add r1, r3, r1 + bl MI_CpuCopy8 + ldr r0, _0223DB94 ; =0x02251388 + ldr r3, [r0] + ldrh r0, [r3, #0x1a] + str r0, [sp] + add r0, r3, #0 + add r0, #0xfc + str r0, [sp, #4] + mov r0, #0x52 + lsl r0, r0, #2 + ldrb r1, [r3, r0] + str r1, [sp, #8] + add r1, r0, #0 + sub r1, #0x44 + add r1, r3, r1 + str r1, [sp, #0xc] + add r1, r0, #1 + ldrb r1, [r3, r1] + str r1, [sp, #0x10] + add r1, r0, #0 + sub r1, #0x3c + add r1, r3, r1 + str r1, [sp, #0x14] + add r0, r0, #2 + ldrb r0, [r3, r0] + str r0, [sp, #0x18] + ldr r0, [r3, #0xc] + ldrh r1, [r3, #0x1c] + ldrh r2, [r3, #0x1e] + ldrh r3, [r3, #0x18] + bl MOD18_02243E18 +_0223DB8E: + add sp, #0x28 + pop {r3, r4, r5, pc} + nop +_0223DB94: .word 0x02251388 +_0223DB98: .word 0x00000149 +_0223DB9C: .word MOD18_0223D1A4 +_0223DBA0: .word 0x0000014A + thumb_func_end MOD18_0223DAF4 + + thumb_func_start MOD18_0223DBA4 +MOD18_0223DBA4: ; 0x0223DBA4 + cmp r0, #0 + bne _0223DBAE + mov r0, #0xe1 + lsl r0, r0, #0xc + bx lr +_0223DBAE: + ldrh r1, [r0, #2] + ldrh r2, [r0] + mov r0, #0xf + lsl r0, r0, #6 + mul r0, r1 + add r0, r2, r0 + bx lr + thumb_func_end MOD18_0223DBA4 + + thumb_func_start MOD18_0223DBBC +MOD18_0223DBBC: ; 0x0223DBBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223DC24 ; =0x02251388 + mov r4, #0 + ldr r2, [r1] + mov r1, #0x4b + lsl r1, r1, #2 + ldr r1, [r2, r1] + sub r5, r1, #1 + bl MOD18_0223DBA4 + str r0, [sp] + ldr r0, _0223DC24 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r7, [r1, r0] + cmp r5, #0 + ble _0223DC04 +_0223DBE2: + add r1, r4, r5 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r6, r0, #1 + add r0, sp, #4 + add r1, r6, #0 + blx r7 + bl MOD18_0223DBA4 + ldr r1, [sp] + cmp r0, r1 + bge _0223DBFE + add r4, r6, #1 + b _0223DC00 +_0223DBFE: + add r5, r6, #0 +_0223DC00: + cmp r4, r5 + blt _0223DBE2 +_0223DC04: + add r0, sp, #4 + add r1, r4, #0 + blx r7 + bl MOD18_0223DBA4 + ldr r1, [sp] + cmp r1, r0 + bne _0223DC1A + add sp, #8 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223DC1A: + mov r0, #0 + mvn r0, r0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DC24: .word 0x02251388 + thumb_func_end MOD18_0223DBBC + + thumb_func_start MOD18_0223DC28 +MOD18_0223DC28: ; 0x0223DC28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223DC78 ; =0x02251388 + mov r4, #0 + ldr r2, [r1] + mov r1, #0x4b + lsl r1, r1, #2 + ldr r1, [r2, r1] + sub r5, r1, #2 + bl MOD18_0223DBA4 + str r0, [sp] + ldr r0, _0223DC78 ; =0x02251388 + add r5, r5, #1 + ldr r1, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r7, [r1, r0] + cmp r5, #0 + ble _0223DC72 +_0223DC50: + add r1, r4, r5 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r6, r0, #1 + add r0, sp, #4 + add r1, r6, #0 + blx r7 + bl MOD18_0223DBA4 + ldr r1, [sp] + cmp r0, r1 + bge _0223DC6C + add r4, r6, #1 + b _0223DC6E +_0223DC6C: + add r5, r6, #0 +_0223DC6E: + cmp r4, r5 + blt _0223DC50 +_0223DC72: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223DC78: .word 0x02251388 + thumb_func_end MOD18_0223DC28 + + thumb_func_start MOD18_0223DC7C +MOD18_0223DC7C: ; 0x0223DC7C + push {r3, r4} + ldr r3, _0223DC94 ; =0x02251388 + mov r2, #0x45 + ldr r4, [r3] + lsl r2, r2, #2 + str r1, [r4, r2] + ldr r1, [r3] + add r2, #0x18 + str r0, [r1, r2] + pop {r3, r4} + bx lr + nop +_0223DC94: .word 0x02251388 + thumb_func_end MOD18_0223DC7C + + thumb_func_start MOD18_0223DC98 +MOD18_0223DC98: ; 0x0223DC98 + push {r3, lr} + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + bne _0223DCB0 + mov r0, #0x1b + bl FUN_020311DC + bl FUN_0203086C +_0223DCB0: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223DC98 + + thumb_func_start MOD18_0223DCB4 +MOD18_0223DCB4: ; 0x0223DCB4 + ldr r0, _0223DCC8 ; =0x02251388 + ldr r2, [r0] + ldr r0, _0223DCCC ; =0x00000146 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223DCC4 + sub r1, r1, #1 + strb r1, [r2, r0] +_0223DCC4: + bx lr + nop +_0223DCC8: .word 0x02251388 +_0223DCCC: .word 0x00000146 + thumb_func_end MOD18_0223DCB4 + + thumb_func_start MOD18_0223DCD0 +MOD18_0223DCD0: ; 0x0223DCD0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0223DD6C ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r4, r0, #0 + ldr r0, _0223DD6C ; =0x02251388 + ldr r2, [r0] + ldr r0, _0223DD70 ; =0x00000146 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223DCF8 + sub r0, #0x12 + ldrb r0, [r2, r0] + cmp r0, #0 + bne _0223DD66 +_0223DCF8: + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + bne _0223DD66 + add r0, r4, #0 + bl FUN_0202623C + cmp r0, #0x28 + bne _0223DD16 + mov r0, #0x10 + orr r0, r5 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0223DD16: + bl FUN_02031190 + bl FUN_0204E4D4 + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E50C + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_0223D1A4 + cmp r0, #0 + beq _0223DD3E + mov r0, #0x20 + orr r0, r5 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0223DD3E: + mov r0, #0xf + add r2, r6, #0 + and r2, r0 + lsl r0, r4, #0x1c + add r1, sp, #0 + lsr r0, r0, #0x18 + strb r5, [r1] + add r0, r2, r0 + strb r0, [r1, #1] + mov r0, #0x1c + add r1, sp, #0 + bl FUN_020311D0 + bl FUN_0203086C + ldr r0, _0223DD6C ; =0x02251388 + mov r2, #8 + ldr r1, [r0] + ldr r0, _0223DD70 ; =0x00000146 + strb r2, [r1, r0] +_0223DD66: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0223DD6C: .word 0x02251388 +_0223DD70: .word 0x00000146 + thumb_func_end MOD18_0223DCD0 + + thumb_func_start MOD18_0223DD74 +MOD18_0223DD74: ; 0x0223DD74 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223DD74 + + thumb_func_start MOD18_0223DD78 +MOD18_0223DD78: ; 0x0223DD78 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r1, sp, #0 + add r6, r2, #0 + strb r5, [r1] + bl FUN_0204E62C + add r1, sp, #0 + strh r0, [r1, #2] + add r0, r5, #0 + bl FUN_0204E664 + add r1, sp, #0 + strh r0, [r1, #4] + add r0, r5, #0 + bl FUN_0204E544 + ldr r1, _0223DFB0 ; =0x0000FFFF + cmp r0, r1 + bne _0223DDAE + add r0, r5, #0 + bl FUN_0204E598 + ldr r1, _0223DFB0 ; =0x0000FFFF + cmp r0, r1 + beq _0223DE62 +_0223DDAE: + add r0, r5, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DE62 + add r0, r5, #0 + bl FUN_0204D830 + cmp r0, #0 + bne _0223DE62 + add r1, sp, #0 + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl FUN_0204E8B0 + add r4, r0, #0 + cmp r4, #0xff + bne _0223DDD4 + b _0223DEDA +_0223DDD4: + bl MOD18_02245F4C + cmp r0, #0 + bne _0223DE62 + add r0, r4, #0 + bl MOD18_0223CAEC + cmp r0, #0 + beq _0223DE08 + mov r1, #4 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + add r1, sp, #4 + strb r5, [r0, #7] + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE08: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl FUN_0204F1B0 + cmp r0, #0 + bne _0223DE62 + add r0, r4, #0 + bl FUN_0204D830 + cmp r0, #0 + beq _0223DE58 + add r0, r4, #0 + bl MOD18_0223F8FC + cmp r0, #0 + bne _0223DE36 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_022409F0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE36: + mov r1, #2 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + add r1, sp, #4 + strb r5, [r0, #7] + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE58: + add r0, r5, #0 + bl FUN_0204EB14 + cmp r0, #0 + bne _0223DE64 +_0223DE62: + b _0223DFAC +_0223DE64: + add r0, r4, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DE78 + add r0, r4, #0 + bl FUN_0204F6C8 + cmp r0, #0 + beq _0223DE9A +_0223DE78: + mov r1, #2 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + add r1, sp, #4 + strb r5, [r0, #7] + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE9A: + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + strb r5, [r0, #7] + add r0, r4, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DFAC + add r1, sp, #4 + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + cmp r0, #0 + beq _0223DFAC + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, r4, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0204E6FC + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DEDA: + ldrb r2, [r6] + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_0223F50C + cmp r0, #0 + beq _0223DEF6 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DEF6: + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_022398B4 + cmp r0, #0 + beq _0223DF10 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF10: + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_0224B09C + cmp r0, #0 + beq _0223DF2A + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF2A: + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_022471D0 + cmp r0, #0 + beq _0223DF44 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF44: + add r1, sp, #0 + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl FUN_0204D76C + cmp r0, #0 + beq _0223DF74 + add r0, r5, #0 + mov r1, #0xff + mov r2, #0 + bl FUN_0204F1B0 + cmp r0, #0 + bne _0223DFAC + mov r0, #0x18 + add r1, sp, #0 + bl FUN_02030C4C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF74: + ldrb r1, [r6] + mov r0, #0x20 + tst r0, r1 + beq _0223DFAC + add r0, r5, #0 + bl FUN_0204F210 + cmp r0, #0 + bne _0223DFAC + add r2, sp, #0 + ldrh r3, [r2, #4] + mov r1, #0xf + ldrb r0, [r6, #1] + and r3, r1 + ldrh r1, [r2, #2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + add r1, r3, r1 + cmp r0, r1 + bne _0223DFAC + mov r0, #0x3f + add r1, sp, #0 + bl FUN_02030C4C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 +_0223DFAC: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223DFB0: .word 0x0000FFFF + thumb_func_end MOD18_0223DD78 + + thumb_func_start MOD18_0223DFB4 +MOD18_0223DFB4: ; 0x0223DFB4 + push {r3, r4, r5, r6, r7, lr} + bl FUN_02031190 + cmp r0, #0 + bne _0223E00C + mov r5, #0 + ldr r4, _0223E050 ; =0x02251388 + add r7, r5, #0 + mov r6, #1 +_0223DFC6: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _0223DFE2 + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _0223E054 ; =0x00000135 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223DFE2 + add r0, r5, #0 + bl MOD18_02245358 +_0223DFE2: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + ldr r0, [r4] + beq _0223DFF6 + add r1, r0, r5 + ldr r0, _0223E054 ; =0x00000135 + strb r6, [r1, r0] + b _0223DFFC +_0223DFF6: + add r1, r0, r5 + ldr r0, _0223E054 ; =0x00000135 + strb r7, [r1, r0] +_0223DFFC: + add r5, r5, #1 + cmp r5, #8 + blt _0223DFC6 + bl MOD18_0223E86C + add r0, r0, #2 + bl FUN_02032B6C +_0223E00C: + ldr r0, _0223E050 ; =0x02251388 + ldr r2, [r0] + ldr r0, _0223E058 ; =0x00000145 + ldrb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, r0] + bl FUN_02031190 + cmp r0, #0 + bne _0223E02E + bl FUN_0202DDE8 + cmp r0, #0 + beq _0223E02E + mov r0, #1 + bl FUN_0204D168 +_0223E02E: + bl MOD18_0223CCC4 + bl MOD18_0223EF74 + bl MOD18_02239DD8 + ldr r0, _0223E050 ; =0x02251388 + ldr r1, [r0] + ldr r0, _0223E05C ; =0x0000014B + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223E04E + ldr r0, [r1, #0xc] + ldr r0, [r0, #8] + bl MOD18_02241D38 +_0223E04E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223E050: .word 0x02251388 +_0223E054: .word 0x00000135 +_0223E058: .word 0x00000145 +_0223E05C: .word 0x0000014B + thumb_func_end MOD18_0223DFB4 + + thumb_func_start MOD18_0223E060 +MOD18_0223E060: ; 0x0223E060 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223E114 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + bne _0223E110 + mov r1, #0x15 + mov r0, #0xf + lsl r1, r1, #4 + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_0223D414 + bl FUN_0204D320 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + mov r2, #1 + bl FUN_0204CB20 + bl MOD18_0223ECE4 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_0223E958 + bl MOD18_02245350 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_02244ED0 + bl MOD18_0223CC78 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_0223CB94 + bl MOD18_02239848 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_02239744 + bl MOD18_0224D360 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02026CB4 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_020377AC + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_0224D2F0 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02026CC4 + bl MOD18_022492F8 +_0223E110: + pop {r4, r5, r6, pc} + nop +_0223E114: .word 0x02251388 + thumb_func_end MOD18_0223E060 + + thumb_func_start MOD18_0223E118 +MOD18_0223E118: ; 0x0223E118 + push {r3, lr} + ldr r0, _0223E14C ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E148 + bl MOD18_0224D344 + bl MOD18_0223CC80 + bl MOD18_022451BC + bl MOD18_0223E9BC + bl FUN_0204CC48 + bl MOD18_02239850 + bl MOD18_0223D688 + ldr r0, _0223E14C ; =0x02251388 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223E150 ; =0x0000014B + strb r2, [r1, r0] +_0223E148: + pop {r3, pc} + nop +_0223E14C: .word 0x02251388 +_0223E150: .word 0x0000014B + thumb_func_end MOD18_0223E118 + + thumb_func_start MOD18_0223E154 +MOD18_0223E154: ; 0x0223E154 + push {r3, lr} + sub sp, #8 + ldr r0, _0223E19C ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E198 + bl FUN_0204CC9C + bl MOD18_0224D35C + bl MOD18_0223CC94 + bl MOD18_022451EC + bl MOD18_0223EA44 + bl MOD18_02239854 + ldr r0, _0223E19C ; =0x02251388 + ldr r2, _0223E1A0 ; =0x0000014B + ldr r1, [r0] + mov r3, #0 + strb r3, [r1, r2] + str r3, [sp] + mov r1, #4 + str r1, [sp, #4] + ldr r0, [r0] + mov r1, #3 + ldr r0, [r0, #0xc] + add r2, #0x97 + ldr r0, [r0, #8] + mov r3, #0xa + bl FUN_0200CD68 +_0223E198: + add sp, #8 + pop {r3, pc} + .align 2, 0 +_0223E19C: .word 0x02251388 +_0223E1A0: .word 0x0000014B + thumb_func_end MOD18_0223E154 + + thumb_func_start MOD18_0223E1A4 +MOD18_0223E1A4: ; 0x0223E1A4 + push {r3, lr} + ldr r0, _0223E1DC ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E1D8 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02025C00 + bl MOD18_02245270 + bl MOD18_0223EA78 + mov r0, #1 + bl FUN_0204CCE0 + bl MOD18_0223CCA8 + bl MOD18_02239858 + bl MOD18_02249328 + bl MOD18_0224D324 + bl MOD18_0223D5A4 +_0223E1D8: + pop {r3, pc} + nop +_0223E1DC: .word 0x02251388 + thumb_func_end MOD18_0223E1A4 + + thumb_func_start MOD18_0223E1E0 +MOD18_0223E1E0: ; 0x0223E1E0 + push {r3, lr} + ldr r1, _0223E1F8 ; =0x02251388 + ldr r1, [r1] + cmp r1, #0 + beq _0223E1F6 + bl MOD18_0223EB0C + bl FUN_0204CDB4 + bl MOD18_022452A4 +_0223E1F6: + pop {r3, pc} + .align 2, 0 +_0223E1F8: .word 0x02251388 + thumb_func_end MOD18_0223E1E0 + + thumb_func_start MOD18_0223E1FC +MOD18_0223E1FC: ; 0x0223E1FC + push {r4, lr} + ldr r1, _0223E2A8 ; =0x02251388 + add r4, r0, #0 + ldr r3, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + ldrb r2, [r3, r1] + cmp r2, #0 + beq _0223E214 + mov r0, #0 + strb r0, [r3, r1] + pop {r4, pc} +_0223E214: + bl MOD18_0223D7A4 + cmp r0, #0 + beq _0223E22A + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E22A: + add r0, r4, #0 + bl MOD18_0223FB3C + cmp r0, #0 + beq _0223E242 + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E242: + add r0, r4, #0 + bl MOD18_0223FC14 + cmp r0, #0 + beq _0223E25A + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E25A: + add r0, r4, #0 + bl MOD18_02246D9C + cmp r0, #0 + beq _0223E272 + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E272: + add r0, r4, #0 + bl MOD18_0223CA78 + cmp r0, #0 + beq _0223E28A + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E28A: + add r0, r4, #0 + bl MOD18_0223D1F8 + cmp r0, #0 + beq _0223E2A2 + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E2A2: + mov r0, #0 + pop {r4, pc} + nop +_0223E2A8: .word 0x02251388 + thumb_func_end MOD18_0223E1FC + + thumb_func_start MOD18_0223E2AC +MOD18_0223E2AC: ; 0x0223E2AC + push {r3, lr} + ldr r1, _0223E2C0 ; =0x02251388 + ldr r1, [r1] + cmp r1, #0 + beq _0223E2BC + bl MOD18_02246EAC + pop {r3, pc} +_0223E2BC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E2C0: .word 0x02251388 + thumb_func_end MOD18_0223E2AC + + thumb_func_start MOD18_0223E2C4 +MOD18_0223E2C4: ; 0x0223E2C4 + push {r3, lr} + ldr r0, _0223E2D8 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E2D4 + bl MOD18_02246ECC + pop {r3, pc} +_0223E2D4: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E2D8: .word 0x02251388 + thumb_func_end MOD18_0223E2C4 + + thumb_func_start MOD18_0223E2DC +MOD18_0223E2DC: ; 0x0223E2DC + push {r3, lr} + ldr r0, _0223E2F0 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E2EC + bl MOD18_02246EF4 + pop {r3, pc} +_0223E2EC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E2F0: .word 0x02251388 + thumb_func_end MOD18_0223E2DC + + thumb_func_start MOD18_0223E2F4 +MOD18_0223E2F4: ; 0x0223E2F4 + cmp r0, #0x20 + ble _0223E30A + cmp r1, #0x40 + ble _0223E30A + ldr r2, _0223E310 ; =0x000001DF + cmp r0, r2 + bge _0223E30A + cmp r1, r2 + bge _0223E30A + mov r0, #0 + bx lr +_0223E30A: + mov r0, #1 + bx lr + nop +_0223E310: .word 0x000001DF + thumb_func_end MOD18_0223E2F4 + + thumb_func_start MOD18_0223E314 +MOD18_0223E314: ; 0x0223E314 + push {r3, lr} + ldr r1, _0223E374 ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E36E + cmp r0, #0x10 + bge _0223E360 + ldr r1, _0223E378 ; =0x00000147 + ldrb r1, [r2, r1] + cmp r1, #4 + bhi _0223E36E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223E336: ; jump table + .short _0223E340 - _0223E336 - 2 ; case 0 + .short _0223E344 - _0223E336 - 2 ; case 1 + .short _0223E34E - _0223E336 - 2 ; case 2 + .short _0223E35A - _0223E336 - 2 ; case 3 + .short _0223E354 - _0223E336 - 2 ; case 4 +_0223E340: + mov r0, #0 + pop {r3, pc} +_0223E344: + cmp r0, #8 + bge _0223E34E + bl MOD18_0223C700 + pop {r3, pc} +_0223E34E: + bl MOD18_0223D3AC + pop {r3, pc} +_0223E354: + bl MOD18_02240B28 + pop {r3, pc} +_0223E35A: + bl MOD18_0223C740 + pop {r3, pc} +_0223E360: + ldr r0, [r2, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CA8 + bl FUN_02026C88 + pop {r3, pc} +_0223E36E: + mov r0, #0 + pop {r3, pc} + nop +_0223E374: .word 0x02251388 +_0223E378: .word 0x00000147 + thumb_func_end MOD18_0223E314 + + thumb_func_start MOD18_0223E37C +MOD18_0223E37C: ; 0x0223E37C + push {r3, lr} + ldr r1, _0223E3DC ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E3D6 + cmp r0, #0x10 + bge _0223E3C8 + ldr r1, _0223E3E0 ; =0x00000147 + ldrb r1, [r2, r1] + cmp r1, #4 + bhi _0223E3D6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223E39E: ; jump table + .short _0223E3A8 - _0223E39E - 2 ; case 0 + .short _0223E3AC - _0223E39E - 2 ; case 1 + .short _0223E3B6 - _0223E39E - 2 ; case 2 + .short _0223E3C2 - _0223E39E - 2 ; case 3 + .short _0223E3BC - _0223E39E - 2 ; case 4 +_0223E3A8: + mov r0, #0 + pop {r3, pc} +_0223E3AC: + cmp r0, #8 + bge _0223E3B6 + bl MOD18_0223C720 + pop {r3, pc} +_0223E3B6: + bl MOD18_0223D3E0 + pop {r3, pc} +_0223E3BC: + bl MOD18_02240B5C + pop {r3, pc} +_0223E3C2: + bl MOD18_0223C778 + pop {r3, pc} +_0223E3C8: + ldr r0, [r2, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CA8 + bl FUN_02026C90 + pop {r3, pc} +_0223E3D6: + mov r0, #0 + pop {r3, pc} + nop +_0223E3DC: .word 0x02251388 +_0223E3E0: .word 0x00000147 + thumb_func_end MOD18_0223E37C + + thumb_func_start MOD18_0223E3E4 +MOD18_0223E3E4: ; 0x0223E3E4 + push {r3, lr} + ldr r1, _0223E43C ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E438 + cmp r0, #0x10 + bge _0223E424 + ldr r1, _0223E440 ; =0x00000147 + ldrb r1, [r2, r1] + cmp r1, #4 + bhi _0223E438 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223E406: ; jump table + .short _0223E438 - _0223E406 - 2 ; case 0 + .short _0223E410 - _0223E406 - 2 ; case 1 + .short _0223E418 - _0223E406 - 2 ; case 2 + .short _0223E420 - _0223E406 - 2 ; case 3 + .short _0223E41C - _0223E406 - 2 ; case 4 +_0223E410: + cmp r0, #8 + bge _0223E418 + mov r0, #0xc + pop {r3, pc} +_0223E418: + mov r0, #9 + pop {r3, pc} +_0223E41C: + mov r0, #0xb + pop {r3, pc} +_0223E420: + mov r0, #0xc + pop {r3, pc} +_0223E424: + ldr r0, [r2, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CA8 + bl FUN_02026CA0 + cmp r0, #0 + beq _0223E438 + mov r0, #3 + pop {r3, pc} +_0223E438: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E43C: .word 0x02251388 +_0223E440: .word 0x00000147 + thumb_func_end MOD18_0223E3E4 + + thumb_func_start MOD18_0223E444 +MOD18_0223E444: ; 0x0223E444 + ldr r0, _0223E450 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223E454 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E450: .word 0x02251388 +_0223E454: .word 0x00000147 + thumb_func_end MOD18_0223E444 + + thumb_func_start MOD18_0223E458 +MOD18_0223E458: ; 0x0223E458 + ldr r0, _0223E464 ; =0x02251388 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223E468 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E464: .word 0x02251388 +_0223E468: .word 0x00000147 + thumb_func_end MOD18_0223E458 + + thumb_func_start MOD18_0223E46C +MOD18_0223E46C: ; 0x0223E46C + ldr r0, _0223E478 ; =0x02251388 + mov r2, #2 + ldr r1, [r0] + ldr r0, _0223E47C ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E478: .word 0x02251388 +_0223E47C: .word 0x00000147 + thumb_func_end MOD18_0223E46C + + thumb_func_start MOD18_0223E480 +MOD18_0223E480: ; 0x0223E480 + ldr r0, _0223E48C ; =0x02251388 + mov r2, #4 + ldr r1, [r0] + ldr r0, _0223E490 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E48C: .word 0x02251388 +_0223E490: .word 0x00000147 + thumb_func_end MOD18_0223E480 + + thumb_func_start MOD18_0223E494 +MOD18_0223E494: ; 0x0223E494 + ldr r0, _0223E4A0 ; =0x02251388 + mov r2, #3 + ldr r1, [r0] + ldr r0, _0223E4A4 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E4A0: .word 0x02251388 +_0223E4A4: .word 0x00000147 + thumb_func_end MOD18_0223E494 + + thumb_func_start MOD18_0223E4A8 +MOD18_0223E4A8: ; 0x0223E4A8 + ldr r2, _0223E4B8 ; =0x02251388 + ldr r2, [r2] + cmp r2, #0 + beq _0223E4B6 + add r0, r2, r0 + add r0, #0xc2 + strb r1, [r0] +_0223E4B6: + bx lr + .align 2, 0 +_0223E4B8: .word 0x02251388 + thumb_func_end MOD18_0223E4A8 + + thumb_func_start MOD18_0223E4BC +MOD18_0223E4BC: ; 0x0223E4BC + ldr r1, _0223E4D0 ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E4CC + add r0, r2, r0 + mov r1, #1 + add r0, #0xd2 + strb r1, [r0] +_0223E4CC: + bx lr + nop +_0223E4D0: .word 0x02251388 + thumb_func_end MOD18_0223E4BC + + thumb_func_start MOD18_0223E4D4 +MOD18_0223E4D4: ; 0x0223E4D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223E550 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E54E + lsl r4, r5, #2 + add r0, r0, r4 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _0223E54E + mov r0, #0x64 + mov r1, #0xf + bl FUN_020219F4 + ldr r1, _0223E550 ; =0x02251388 + ldr r1, [r1] + add r1, r1, r4 + add r1, #0xdc + str r0, [r1] + mov r0, #0xb + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0x64 + mov r1, #0xb + bl FUN_020219F4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200ABC0 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + mov r1, #0x73 + add r2, r7, #0 + bl FUN_0200A8E0 + ldr r1, _0223E550 ; =0x02251388 + add r0, r6, #0 + ldr r1, [r1] + add r2, r7, #0 + add r1, r1, r4 + add r1, #0xdc + ldr r1, [r1] + bl FUN_0200B7B8 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200AB18 +_0223E54E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223E550: .word 0x02251388 + thumb_func_end MOD18_0223E4D4 + + thumb_func_start MOD18_0223E554 +MOD18_0223E554: ; 0x0223E554 + ldr r1, _0223E564 ; =0x02251388 + mov r2, #1 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _0223E568 ; =0x0000013D + strb r2, [r1, r0] + bx lr + nop +_0223E564: .word 0x02251388 +_0223E568: .word 0x0000013D + thumb_func_end MOD18_0223E554 + + thumb_func_start MOD18_0223E56C +MOD18_0223E56C: ; 0x0223E56C + ldr r1, _0223E578 ; =0x02251388 + ldr r1, [r1] + add r1, #0xc0 + strh r0, [r1] + bx lr + nop +_0223E578: .word 0x02251388 + thumb_func_end MOD18_0223E56C + + thumb_func_start MOD18_0223E57C +MOD18_0223E57C: ; 0x0223E57C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldr r1, _0223E5EC ; =0x02251388 + add r5, r2, #0 + ldr r3, [r1] + add r1, r3, #0 + add r1, #0xc0 + ldrh r4, [r1] + cmp r4, #0 + beq _0223E5EA + mov r1, #0 + add r2, r3, #0 +_0223E594: + ldrh r6, [r2, #0x20] + cmp r4, r6 + bne _0223E5B0 + ldrh r6, [r2, #0x22] + cmp r0, r6 + bne _0223E5B0 + lsl r1, r1, #3 + add r0, r3, r1 + strh r7, [r0, #0x24] + ldr r0, _0223E5EC ; =0x02251388 + ldr r0, [r0] + add r0, r0, r1 + strh r5, [r0, #0x26] + pop {r3, r4, r5, r6, r7, pc} +_0223E5B0: + add r1, r1, #1 + add r2, #8 + cmp r1, #0x14 + blt _0223E594 + mov r6, #0 + add r2, r3, #0 +_0223E5BC: + ldrh r1, [r2, #0x20] + cmp r1, #0 + bne _0223E5DE + lsl r1, r6, #3 + add r2, r3, r1 + strh r4, [r2, #0x20] + ldr r2, _0223E5EC ; =0x02251388 + ldr r3, [r2] + add r3, r3, r1 + strh r0, [r3, #0x22] + ldr r0, [r2] + add r0, r0, r1 + strh r7, [r0, #0x24] + ldr r0, [r2] + add r0, r0, r1 + strh r5, [r0, #0x26] + pop {r3, r4, r5, r6, r7, pc} +_0223E5DE: + add r6, r6, #1 + add r2, #8 + cmp r6, #0x14 + blt _0223E5BC + bl ErrorHandling +_0223E5EA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223E5EC: .word 0x02251388 + thumb_func_end MOD18_0223E57C + + thumb_func_start MOD18_0223E5F0 +MOD18_0223E5F0: ; 0x0223E5F0 + push {r4, r5} + ldr r1, _0223E624 ; =0x02251388 + mov r3, #0 + ldr r1, [r1] + add r2, r1, #0 + add r2, #0xc0 + ldrh r5, [r2] + add r4, r1, #0 +_0223E600: + ldrh r2, [r4, #0x20] + cmp r5, r2 + bne _0223E616 + ldrh r2, [r4, #0x22] + cmp r0, r2 + bne _0223E616 + lsl r0, r3, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x26] + pop {r4, r5} + bx lr +_0223E616: + add r3, r3, #1 + add r4, #8 + cmp r3, #0x14 + blt _0223E600 + mov r0, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0223E624: .word 0x02251388 + thumb_func_end MOD18_0223E5F0 + + thumb_func_start MOD18_0223E628 +MOD18_0223E628: ; 0x0223E628 + push {r4, r5} + ldr r1, _0223E65C ; =0x02251388 + mov r3, #0 + ldr r1, [r1] + add r2, r1, #0 + add r2, #0xc0 + ldrh r5, [r2] + add r4, r1, #0 +_0223E638: + ldrh r2, [r4, #0x20] + cmp r5, r2 + bne _0223E64E + ldrh r2, [r4, #0x22] + cmp r0, r2 + bne _0223E64E + lsl r0, r3, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x24] + pop {r4, r5} + bx lr +_0223E64E: + add r3, r3, #1 + add r4, #8 + cmp r3, #0x14 + blt _0223E638 + mov r0, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0223E65C: .word 0x02251388 + thumb_func_end MOD18_0223E628 + + thumb_func_start MOD18_0223E660 +MOD18_0223E660: ; 0x0223E660 + push {r4, lr} + ldrb r4, [r2] + bl FUN_02031190 + cmp r4, r0 + bne _0223E680 + ldr r0, _0223E684 ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD18_0224D1F8 + mov r0, #0x19 + bl FUN_020311DC + bl FUN_0204F7E4 +_0223E680: + pop {r4, pc} + nop +_0223E684: .word 0x02251388 + thumb_func_end MOD18_0223E660 + + thumb_func_start MOD18_0223E688 +MOD18_0223E688: ; 0x0223E688 + push {r3, r4} + ldr r3, _0223E69C ; =0x02251388 + ldr r4, [r3] + str r0, [r4] + ldr r0, [r3] + str r1, [r0, #4] + ldr r0, [r3] + str r2, [r0, #8] + pop {r3, r4} + bx lr + .align 2, 0 +_0223E69C: .word 0x02251388 + thumb_func_end MOD18_0223E688 + + thumb_func_start MOD18_0223E6A0 +MOD18_0223E6A0: ; 0x0223E6A0 + ldr r0, _0223E6B4 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + str r2, [r0, #8] + bx lr + nop +_0223E6B4: .word 0x02251388 + thumb_func_end MOD18_0223E6A0 + + thumb_func_start MOD18_0223E6B8 +MOD18_0223E6B8: ; 0x0223E6B8 + push {r4, lr} + ldr r0, _0223E730 ; =0x02251388 + mov r4, #0 + ldr r2, [r0] + ldr r0, [r2, #4] + cmp r0, #0 + beq _0223E6D2 + ldr r1, [r2] + ldr r2, [r2, #8] + blx r2 + bl MOD18_0223E6A0 + mov r4, #1 +_0223E6D2: + bl MOD18_0223D688 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + add r0, r4, #0 + pop {r4, pc} + nop +_0223E730: .word 0x02251388 + thumb_func_end MOD18_0223E6B8 + + thumb_func_start MOD18_0223E734 +MOD18_0223E734: ; 0x0223E734 + push {r3, r4, r5, lr} + ldr r2, _0223E7A8 ; =0x02251388 + add r4, r0, #0 + ldr r1, [r2] + ldr r3, [r1, #4] + cmp r3, #0 + beq _0223E746 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E746: + ldr r3, [r1, #0xc] + ldr r3, [r3, #0x10] + cmp r3, #0 + beq _0223E768 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r3, [r1, r0] + add r3, r3, #1 + str r3, [r1, r0] + ldr r1, [r2] + ldr r0, [r1, r0] + cmp r0, #0x64 + ble _0223E764 + bl ErrorHandling +_0223E764: + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E768: + bl FUN_0204D830 + cmp r0, #0 + beq _0223E774 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E774: + add r0, r4, #0 + bl FUN_0204E494 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204E4B4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0223E796 + cmp r4, #0 + beq _0223E796 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E796: + ldr r0, _0223E7A8 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x13 + lsl r0, r0, #4 + str r2, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0223E7A8: .word 0x02251388 + thumb_func_end MOD18_0223E734 + + thumb_func_start MOD18_0223E7AC +MOD18_0223E7AC: ; 0x0223E7AC + push {r3, lr} + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + pop {r3, pc} + nop +_0223E7F8: .word 0x02251388 + thumb_func_end MOD18_0223E7AC + + thumb_func_start MOD18_0223E7FC +MOD18_0223E7FC: ; 0x0223E7FC + push {r3, lr} + sub sp, #8 + bl MOD18_022478C4 + add r1, sp, #0 + strh r0, [r1] + bl MOD18_022478E0 + add r1, sp, #0 + strh r0, [r1, #2] + bl MOD18_02247900 + add r1, sp, #0 + strb r0, [r1, #4] + bl MOD18_0223CB24 + add r1, sp, #0 + strb r0, [r1, #5] + mov r0, #0x46 + add r1, sp, #0 + bl FUN_020311D0 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD18_0223E7FC + + thumb_func_start MOD18_0223E82C +MOD18_0223E82C: ; 0x0223E82C + push {r3, r4, r5, lr} + add r4, r2, #0 + ldrh r1, [r4] + add r5, r0, #0 + bl MOD18_0224791C + ldrh r1, [r4, #2] + add r0, r5, #0 + bl MOD18_02247938 + ldrb r1, [r4, #4] + add r0, r5, #0 + bl MOD18_02247954 + ldrb r1, [r4, #5] + add r0, r5, #0 + bl MOD18_0223CB44 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0223E82C + + thumb_func_start MOD18_0223E854 +MOD18_0223E854: ; 0x0223E854 + mov r0, #6 + bx lr + thumb_func_end MOD18_0223E854 + + thumb_func_start MOD18_0223E858 +MOD18_0223E858: ; 0x0223E858 + ldr r1, _0223E868 ; =0x02251388 + mov r2, #1 + ldr r1, [r1] + add r0, r1, r0 + add r0, #0xca + strb r2, [r0] + bx lr + nop +_0223E868: .word 0x02251388 + thumb_func_end MOD18_0223E858 + + thumb_func_start MOD18_0223E86C +MOD18_0223E86C: ; 0x0223E86C + ldr r1, _0223E88C ; =0x02251388 + mov r0, #0 + ldr r3, [r1] + add r2, r0, #0 +_0223E874: + add r1, r3, #0 + add r1, #0xca + ldrb r1, [r1] + cmp r1, #0 + beq _0223E880 + add r0, r0, #1 +_0223E880: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #8 + blt _0223E874 + bx lr + nop +_0223E88C: .word 0x02251388 + thumb_func_end MOD18_0223E86C + + thumb_func_start MOD18_0223E890 +MOD18_0223E890: ; 0x0223E890 + ldr r1, _0223E8A0 ; =0x02251388 + ldr r3, _0223E8A4 ; =MOD18_02245358 + ldr r1, [r1] + mov r2, #0 + add r1, r1, r0 + add r1, #0xca + strb r2, [r1] + bx r3 + .align 2, 0 +_0223E8A0: .word 0x02251388 +_0223E8A4: .word MOD18_02245358 + thumb_func_end MOD18_0223E890 + + thumb_func_start MOD18_0223E8A8 +MOD18_0223E8A8: ; 0x0223E8A8 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0223E948 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + ldr r7, _0223E948 ; =0x022513A0 + add r6, r0, #0 + add r5, r4, #0 + str r4, [sp] +_0223E8C2: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026444 + ldr r1, [r7, #4] + add r2, r1, r5 + mov r1, #0xaa + lsl r1, r1, #2 + strb r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026450 + ldr r1, [r7, #4] + add r2, r1, r5 + mov r1, #0xa9 + lsl r1, r1, #2 + strh r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026470 + ldr r1, [r7, #4] + add r2, r1, r5 + ldr r1, _0223E94C ; =0x000002A6 + strh r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026490 + ldr r1, [r7, #4] + add r2, r1, r5 + ldr r1, _0223E950 ; =0x000002A9 + strb r0, [r2, r1] + ldr r1, [r7, #4] + ldr r0, _0223E954 ; =0x00000B46 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223E936 + mov r0, #0xaa + add r2, r1, r5 + lsl r0, r0, #2 + ldrb r3, [r2, r0] + cmp r3, #0 + beq _0223E936 + ldr r1, _0223E94C ; =0x000002A6 + sub r0, r0, #4 + ldrh r0, [r2, r0] + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD18_022402F8 + ldr r2, [r7, #4] + ldr r1, [sp] + add r2, r2, r1 + mov r1, #0xc1 + lsl r1, r1, #2 + str r0, [r2, r1] +_0223E936: + ldr r0, [sp] + add r4, r4, #1 + add r0, r0, #4 + add r5, r5, #6 + str r0, [sp] + cmp r4, #0x10 + blt _0223E8C2 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E948: .word 0x022513A0 +_0223E94C: .word 0x000002A6 +_0223E950: .word 0x000002A9 +_0223E954: .word 0x00000B46 + thumb_func_end MOD18_0223E8A8 + + thumb_func_start MOD18_0223E958 +MOD18_0223E958: ; 0x0223E958 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _0223E9B0 ; =0x022513A0 + ldr r2, [r1, #4] + cmp r2, #0 + bne _0223E9AC + ldr r2, _0223E9B4 ; =0x00000B48 + str r0, [r1, #4] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _0223E9B0 ; =0x022513A0 + ldr r0, [r0, #4] + str r4, [r0, #0x40] + add r0, r4, #0 + bl FUN_020377AC + bl FUN_02026CC4 + ldr r2, _0223E9B0 ; =0x022513A0 + mov r1, #0xa3 + ldr r3, [r2, #4] + mov r0, #0 + lsl r1, r1, #2 + str r0, [r3, r1] + ldr r1, _0223E9B8 ; =0x00000B04 + mov r5, #0xff +_0223E98E: + ldr r3, [r2, #4] + add r3, r3, r0 + add r0, r0, #1 + strb r5, [r3, r1] + cmp r0, #8 + blt _0223E98E + ldr r0, [r4, #0x20] + bl MOD05_021F043C + add r4, #0x88 + str r0, [r4] + bl MOD18_0223EBF0 + bl MOD18_0223E8A8 +_0223E9AC: + pop {r3, r4, r5, pc} + nop +_0223E9B0: .word 0x022513A0 +_0223E9B4: .word 0x00000B48 +_0223E9B8: .word 0x00000B04 + thumb_func_end MOD18_0223E958 + + thumb_func_start MOD18_0223E9BC +MOD18_0223E9BC: ; 0x0223E9BC + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0223EA3C ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + add r0, #0x88 + bl MOD05_021F04F8 + bl MOD18_0223ECB8 + bl MOD18_02243FF0 + mov r5, #0 + mov r7, #0xc1 + lsl r7, r7, #2 + ldr r1, _0223EA3C ; =0x022513A0 + add r6, r5, #0 + add r2, r5, #0 + add r0, r7, #0 +_0223E9E0: + ldr r3, [r1, #4] + add r4, r3, r6 + ldr r3, [r4, r0] + cmp r3, #0 + beq _0223E9EC + str r2, [r4, r7] +_0223E9EC: + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #0x10 + blt _0223E9E0 + ldr r0, _0223EA3C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EA12 + bl FUN_0200CAB4 + ldr r0, _0223EA3C ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + str r2, [r1, r0] +_0223EA12: + ldr r0, _0223EA3C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EA30 + bl FUN_02016A18 + ldr r0, _0223EA3C ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r2, [r1, r0] +_0223EA30: + ldr r0, _0223EA3C ; =0x022513A0 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _0223EA40 ; =0x00000B46 + strb r2, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EA3C: .word 0x022513A0 +_0223EA40: .word 0x00000B46 + thumb_func_end MOD18_0223E9BC + + thumb_func_start MOD18_0223EA44 +MOD18_0223EA44: ; 0x0223EA44 + push {r3, lr} + ldr r0, _0223EA70 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x20] + bl MOD05_021F043C + ldr r1, _0223EA70 ; =0x022513A0 + ldr r2, [r1, #4] + ldr r2, [r2, #0x40] + add r2, #0x88 + str r0, [r2] + ldr r1, [r1, #4] + ldr r0, _0223EA74 ; =0x00000B46 + mov r2, #0 + strb r2, [r1, r0] + bl MOD18_0223E8A8 + bl MOD18_0223EBF0 + pop {r3, pc} + nop +_0223EA70: .word 0x022513A0 +_0223EA74: .word 0x00000B46 + thumb_func_end MOD18_0223EA44 + + thumb_func_start MOD18_0223EA78 +MOD18_0223EA78: ; 0x0223EA78 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223EB04 ; =0x022513A0 + add r5, r4, #0 + add r7, r4, #0 +_0223EA82: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EA9E + bl FUN_02064520 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + str r7, [r1, r0] +_0223EA9E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0223EA82 + bl MOD18_02243FF0 + bl MOD18_0223ECB8 + ldr r0, _0223EB04 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + add r0, #0x88 + bl MOD05_021F04F8 + ldr r0, _0223EB04 ; =0x022513A0 + ldr r1, _0223EB08 ; =0x00000B34 + ldr r3, [r0, #4] + ldrh r2, [r3, r1] + cmp r2, #0xa + blo _0223EAD0 + add r1, r1, #2 + ldrb r1, [r3, r1] + ldr r0, [r3, #0x40] + bl FUN_02061B0C +_0223EAD0: + ldr r0, _0223EB04 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EAE2 + bl FUN_0200CAB4 +_0223EAE2: + ldr r0, _0223EB04 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EAF4 + bl FUN_02016A18 +_0223EAF4: + ldr r0, _0223EB04 ; =0x022513A0 + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, _0223EB04 ; =0x022513A0 + mov r1, #0 + str r1, [r0, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EB04: .word 0x022513A0 +_0223EB08: .word 0x00000B34 + thumb_func_end MOD18_0223EA78 + + thumb_func_start MOD18_0223EB0C +MOD18_0223EB0C: ; 0x0223EB0C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223EB80 ; =0x022513A0 + add r5, r4, #0 + add r7, r4, #0 +_0223EB16: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EB32 + bl FUN_02064520 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + str r7, [r1, r0] +_0223EB32: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0223EB16 + bl MOD18_02243FF0 + bl MOD18_0223E8A8 + mov r4, #0 + ldr r2, _0223EB80 ; =0x022513A0 + ldr r0, _0223EB84 ; =0x00000B3C + add r1, r4, #0 +_0223EB4A: + ldr r3, [r2, #4] + add r3, r3, r4 + add r4, r4, #1 + strb r1, [r3, r0] + cmp r4, #8 + blt _0223EB4A + ldr r0, _0223EB80 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r0, r2, r0 + mov r2, #0x12 + lsl r2, r2, #6 + bl MI_CpuFill8 + ldr r0, _0223EB80 ; =0x022513A0 + mov r2, #3 + ldr r1, [r0, #4] + ldr r0, _0223EB88 ; =0x000007C4 + lsl r2, r2, #8 + add r0, r1, r0 + mov r1, #0 + bl MI_CpuFill8 + bl MOD18_0223F174 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EB80: .word 0x022513A0 +_0223EB84: .word 0x00000B3C +_0223EB88: .word 0x000007C4 + thumb_func_end MOD18_0223EB0C + + thumb_func_start MOD18_0223EB8C +MOD18_0223EB8C: ; 0x0223EB8C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223EBE8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r2, r1, r0 + lsl r1, r4, #4 + mov r0, #6 + mul r0, r1 + add r1, r2, r0 + mov r2, #0 + add r0, r2, #0 +_0223EBA6: + add r2, r2, #1 + strb r0, [r1, #4] + add r1, r1, #6 + cmp r2, #0x10 + blt _0223EBA6 + add r0, r4, #0 + bl MOD18_0223EDFC + ldr r0, _0223EBE8 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223EBEC ; =0x00000B3C + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223EBE6 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _0223EBE8 ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _0223EBEC ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 + ldr r0, _0223EBE8 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223EBEC ; =0x00000B3C + strb r2, [r1, r0] +_0223EBE6: + pop {r4, pc} + .align 2, 0 +_0223EBE8: .word 0x022513A0 +_0223EBEC: .word 0x00000B3C + thumb_func_end MOD18_0223EB8C + + thumb_func_start MOD18_0223EBF0 +MOD18_0223EBF0: ; 0x0223EBF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r4, #0 + mov r7, #6 + ldr r6, _0223ECB4 ; =0x022513A0 + add r5, r4, #0 + lsl r7, r7, #6 +_0223EBFE: + mov r0, #1 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + ldr r1, [r6, #4] + add r4, r4, #1 + add r1, r1, r5 + add r5, r5, #4 + str r0, [r1, r7] + cmp r4, #4 + blt _0223EBFE + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _0223ECB4 ; =0x022513A0 + mov r2, #0x11 + ldr r1, [r0, #4] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008F34 + ldr r2, _0223ECB4 ; =0x022513A0 + mov r1, #0x1a + ldr r3, [r2, #4] + lsl r1, r1, #4 + str r0, [r3, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, [r2, #4] + sub r1, #0x1c + ldr r0, [r0, r1] + mov r1, #0x32 + mov r2, #0x12 + bl FUN_02008FEC + ldr r2, _0223ECB4 ; =0x022513A0 + mov r1, #0x69 + ldr r3, [r2, #4] + lsl r1, r1, #2 + str r0, [r3, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r2, #4] + sub r1, #0x1c + ldr r0, [r0, r1] + mov r1, #0x32 + mov r2, #0x10 + bl FUN_020090AC + ldr r2, _0223ECB4 ; =0x022513A0 + mov r1, #0x6a + ldr r3, [r2, #4] + lsl r1, r1, #2 + str r0, [r3, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r2, #4] + sub r1, #0x1c + ldr r0, [r0, r1] + mov r1, #0x32 + mov r2, #0xf + bl FUN_020090AC + ldr r1, _0223ECB4 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r2, r1] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223ECB4: .word 0x022513A0 + thumb_func_end MOD18_0223EBF0 + + thumb_func_start MOD18_0223ECB8 +MOD18_0223ECB8: ; 0x0223ECB8 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #6 + ldr r6, _0223ECD8 ; =0x022513A0 + add r5, r4, #0 + lsl r7, r7, #6 +_0223ECC4: + ldr r0, [r6, #4] + add r0, r0, r5 + ldr r0, [r0, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223ECC4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ECD8: .word 0x022513A0 + thumb_func_end MOD18_0223ECB8 + + thumb_func_start MOD18_0223ECDC +MOD18_0223ECDC: ; 0x0223ECDC + ldr r3, _0223ECE0 ; =0x0204F7FD + bx r3 + .align 2, 0 +_0223ECE0: .word 0x0204F7FD + thumb_func_end MOD18_0223ECDC + + thumb_func_start MOD18_0223ECE4 +MOD18_0223ECE4: ; 0x0223ECE4 + ldr r0, _0223ECE8 ; =0x00000B48 + bx lr + .align 2, 0 +_0223ECE8: .word 0x00000B48 + thumb_func_end MOD18_0223ECE4 + + thumb_func_start MOD18_0223ECEC +MOD18_0223ECEC: ; 0x0223ECEC + mov r0, #0x60 + bx lr + thumb_func_end MOD18_0223ECEC + + thumb_func_start MOD18_0223ECF0 +MOD18_0223ECF0: ; 0x0223ECF0 + push {r3, r4} + ldr r3, _0223ED1C ; =0x022513A0 + lsl r1, r1, #2 + ldr r2, [r3, #4] + add r4, r2, r1 + ldr r2, _0223ED20 ; =0x000007C4 + ldr r4, [r4, r2] + cmp r4, #0 + bne _0223ED08 + mov r0, #0 + pop {r3, r4} + bx lr +_0223ED08: + ldrh r4, [r4] + strh r4, [r0] + ldr r3, [r3, #4] + add r1, r3, r1 + ldr r1, [r1, r2] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + pop {r3, r4} + bx lr + nop +_0223ED1C: .word 0x022513A0 +_0223ED20: .word 0x000007C4 + thumb_func_end MOD18_0223ECF0 + + thumb_func_start MOD18_0223ED24 +MOD18_0223ED24: ; 0x0223ED24 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldrh r1, [r4] + add r0, sp, #0 + strh r1, [r0] + ldrh r1, [r4, #2] + strh r1, [r0, #2] + ldr r1, _0223ED8C ; =MOD18_0223ECF0 + mov r0, #0xc0 + bl MOD18_0223DC7C + add r0, sp, #0 + bl MOD18_0223DC28 + cmp r0, #0xc0 + bge _0223ED8A + ldr r1, _0223ED90 ; =0x022513A0 + mov r3, #0 + ldr r5, [r1, #4] + ldr r1, _0223ED94 ; =0x000007C4 +_0223ED4C: + ldr r2, [r5, r1] + cmp r2, r4 + beq _0223ED8A + add r3, r3, #1 + add r5, r5, #4 + cmp r3, #0xc0 + blt _0223ED4C + mov r2, #0xbe + cmp r0, #0xbe + bgt _0223ED78 + ldr r7, _0223ED90 ; =0x022513A0 + ldr r6, _0223ED98 ; =0x000007C8 + lsl r3, r2, #2 +_0223ED66: + ldr r1, [r7, #4] + ldr r5, _0223ED94 ; =0x000007C4 + add r1, r1, r3 + ldr r5, [r1, r5] + sub r2, r2, #1 + str r5, [r1, r6] + sub r3, r3, #4 + cmp r2, r0 + bge _0223ED66 +_0223ED78: + ldr r1, _0223ED90 ; =0x022513A0 + lsl r3, r0, #2 + ldr r0, [r1, #4] + add r2, r0, r3 + ldr r0, _0223ED94 ; =0x000007C4 + str r4, [r2, r0] + ldr r1, [r1, #4] + add r1, r1, r3 + str r4, [r1, r0] +_0223ED8A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ED8C: .word MOD18_0223ECF0 +_0223ED90: .word 0x022513A0 +_0223ED94: .word 0x000007C4 +_0223ED98: .word 0x000007C8 + thumb_func_end MOD18_0223ED24 + + thumb_func_start MOD18_0223ED9C +MOD18_0223ED9C: ; 0x0223ED9C + push {r3, r4, r5, r6} + ldr r2, _0223EDF0 ; =0x022513A0 + mov r1, #0 + ldr r5, [r2, #4] + ldr r2, _0223EDF4 ; =0x000007C4 + mvn r1, r1 + mov r4, #0 +_0223EDAA: + ldr r3, [r5, r2] + cmp r3, r0 + bne _0223EDB4 + add r1, r4, #0 + b _0223EDBC +_0223EDB4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc0 + blt _0223EDAA +_0223EDBC: + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _0223EDEC + cmp r1, #0xbf + bge _0223EDE0 + ldr r0, _0223EDF8 ; =0x000007C8 + ldr r3, _0223EDF0 ; =0x022513A0 + lsl r6, r1, #2 + sub r2, r0, #4 +_0223EDD0: + ldr r4, [r3, #4] + add r1, r1, #1 + add r5, r4, r6 + ldr r4, [r5, r0] + add r6, r6, #4 + str r4, [r5, r2] + cmp r1, #0xbf + blt _0223EDD0 +_0223EDE0: + ldr r0, _0223EDF0 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x2b + lsl r0, r0, #6 + str r2, [r1, r0] +_0223EDEC: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_0223EDF0: .word 0x022513A0 +_0223EDF4: .word 0x000007C4 +_0223EDF8: .word 0x000007C8 + thumb_func_end MOD18_0223ED9C + + thumb_func_start MOD18_0223EDFC +MOD18_0223EDFC: ; 0x0223EDFC + push {r3, r4, r5, r6, r7, lr} + lsl r5, r0, #4 + ldr r7, _0223EE58 ; =0x022513A0 + mov r6, #0 + add r4, r5, #0 +_0223EE06: + mov r0, #0xd1 + ldr r1, [r7, #4] + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #6 + mul r0, r4 + add r0, r1, r0 + bl MOD18_0223ED9C + add r6, r6, #1 + add r4, r4, #1 + cmp r6, #0x10 + blt _0223EE06 + mov r6, #0 + mov r0, #6 + add r7, r5, #0 + add r4, r6, #0 + mul r7, r0 +_0223EE2A: + ldr r0, _0223EE58 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r7, r0 + add r2, r4, r1 + mov r1, #0xd2 + lsl r1, r1, #2 + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223EE4C + mov r1, #0xd1 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #6 + mul r0, r5 + add r0, r1, r0 + bl MOD18_0223ED24 +_0223EE4C: + add r6, r6, #1 + add r4, r4, #6 + add r5, r5, #1 + cmp r6, #0x10 + blt _0223EE2A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EE58: .word 0x022513A0 + thumb_func_end MOD18_0223EDFC + + thumb_func_start MOD18_0223EE5C +MOD18_0223EE5C: ; 0x0223EE5C + mov r2, #0 +_0223EE5E: + ldrb r1, [r0, #4] + cmp r1, #0 + beq _0223EE6E + add r2, r2, #1 + add r0, r0, #6 + cmp r2, #0x10 + blt _0223EE5E + mov r0, #0 +_0223EE6E: + bx lr + thumb_func_end MOD18_0223EE5C + + thumb_func_start MOD18_0223EE70 +MOD18_0223EE70: ; 0x0223EE70 + mov r2, #0 +_0223EE72: + ldrb r1, [r0, #4] + cmp r1, #0 + bne _0223EE7C + add r0, r2, #0 + bx lr +_0223EE7C: + add r2, r2, #1 + add r0, r0, #6 + cmp r2, #0x10 + blt _0223EE72 + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 + thumb_func_end MOD18_0223EE70 + + thumb_func_start MOD18_0223EE8C +MOD18_0223EE8C: ; 0x0223EE8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223EF04 ; =0x022513A0 + ldr r6, [r1, #4] + mov r1, #0xd1 + lsl r1, r1, #2 + add r1, r6, r1 + sub r0, r0, r1 + mov r1, #6 + bl _u32_div_f + add r4, r0, #0 + lsr r0, r4, #4 + str r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #6 + add r5, r4, #0 + mul r5, r0 + mov r0, #0xd2 + mov r2, #0 + add r1, r6, r5 + lsl r0, r0, #2 + strb r2, [r1, r0] + ldr r0, [sp] + sub r6, r0, #1 + cmp r4, r6 + bhs _0223EEE8 + ldr r7, _0223EF04 ; =0x022513A0 +_0223EEC8: + mov r0, #0xd1 + ldr r1, [r7, #4] + lsl r0, r0, #2 + add r1, r1, r0 + add r2, r4, #1 + mov r0, #6 + mul r0, r2 + add r0, r1, r0 + add r1, r1, r5 + mov r2, #6 + bl MI_CpuCopy8 + add r4, r4, #1 + add r5, r5, #6 + cmp r4, r6 + blo _0223EEC8 +_0223EEE8: + ldr r1, _0223EF04 ; =0x022513A0 + mov r2, #6 + ldr r3, [r1, #4] + ldr r1, [sp] + mov r0, #0 + mul r2, r1 + ldr r1, _0223EF08 ; =0x00000342 + add r2, r3, r2 + strb r0, [r2, r1] + ldr r0, [sp, #4] + bl MOD18_0223EDFC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EF04: .word 0x022513A0 +_0223EF08: .word 0x00000342 + thumb_func_end MOD18_0223EE8C + + thumb_func_start MOD18_0223EF0C +MOD18_0223EF0C: ; 0x0223EF0C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223EF5C ; =0x022513A0 + add r6, r1, #0 + ldr r0, [r0, #4] + add r7, r2, #0 + ldr r0, [r0, #0x40] + add r1, r5, #0 + add r2, r6, #0 + str r3, [sp] + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223EF2C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223EF2C: + add r0, r7, #0 + bl MOD18_0223EE5C + add r4, r0, #0 + bne _0223EF4A + add r0, r7, #0 + bl MOD18_02240330 + add r4, r0, #0 + bl MOD18_0223EE8C + add r0, r4, #0 + bl MOD18_0223EE5C + add r4, r0, #0 +_0223EF4A: + strh r5, [r4] + ldr r0, [sp] + strh r6, [r4, #2] + strb r0, [r4, #4] + add r0, r4, #0 + bl MOD18_0223ED24 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EF5C: .word 0x022513A0 + thumb_func_end MOD18_0223EF0C + + thumb_func_start MOD18_0223EF60 +MOD18_0223EF60: ; 0x0223EF60 + push {r0, r1, r2, r3} + push {r3, lr} + mov r0, #0x20 + add r1, sp, #8 + bl FUN_020311D0 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + thumb_func_end MOD18_0223EF60 + + thumb_func_start MOD18_0223EF74 +MOD18_0223EF74: ; 0x0223EF74 + ldr r3, _0223EF78 ; =MOD18_02240C8C + bx r3 + .align 2, 0 +_0223EF78: .word MOD18_02240C8C + thumb_func_end MOD18_0223EF74 + + thumb_func_start MOD18_0223EF7C +MOD18_0223EF7C: ; 0x0223EF7C + ldr r1, _0223EF90 ; =0x022513A0 + ldr r3, _0223EF94 ; =0x0203105D + ldr r2, [r1, #4] + mov r1, #0xa9 + lsl r1, r1, #2 + add r1, r2, r1 + mov r0, #0x23 + mov r2, #0x60 + bx r3 + nop +_0223EF90: .word 0x022513A0 +_0223EF94: .word 0x0203105D + thumb_func_end MOD18_0223EF7C + + thumb_func_start MOD18_0223EF98 +MOD18_0223EF98: ; 0x0223EF98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223F0BC ; =0x022513A0 + add r5, r0, #0 + ldr r1, [r1, #4] + add r7, r2, #0 + cmp r1, #0 + bne _0223EFAA + b _0223F0B6 +_0223EFAA: + add r1, sp, #0 + strb r5, [r1, #6] + mov r2, #3 + strb r2, [r1, #7] + bl FUN_0204E62C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E664 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E544 + ldr r1, _0223F0C0 ; =0x0000FFFF + cmp r0, r1 + bne _0223EFEC + add r0, r5, #0 + bl FUN_0204E598 + ldr r1, _0223F0C0 ; =0x0000FFFF + cmp r0, r1 + bne _0223EFEC + mov r1, #7 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223EFEC: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0204E8B0 + cmp r0, #0xff + beq _0223F00C + mov r1, #5 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F00C: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0204D76C + cmp r0, #0 + beq _0223F02C + mov r1, #5 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F02C: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0223F04C + mov r1, #4 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F04C: + ldr r0, _0223F0BC ; =0x022513A0 + add r1, r6, #0 + ldr r0, [r0, #4] + add r2, r4, #0 + ldr r0, [r0, #0x40] + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223F072 + mov r1, #6 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F072: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0223D8A8 + cmp r0, #0 + bne _0223F0AC + ldr r2, _0223F0BC ; =0x022513A0 + add r1, r4, #0 + ldr r3, [r2, #4] + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r3, r2 + lsl r4, r5, #4 + mov r3, #6 + mul r3, r4 + add r2, r2, r3 + ldrb r3, [r7] + add r0, r6, #0 + bl MOD18_0223EF0C + cmp r0, #0 + beq _0223F0AC + mov r2, #1 + add r1, sp, #0 + strb r2, [r1, #7] + add r1, sp, #0 + mov r2, #6 + bl MI_CpuCopy8 +_0223F0AC: + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 +_0223F0B6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F0BC: .word 0x022513A0 +_0223F0C0: .word 0x0000FFFF + thumb_func_end MOD18_0223EF98 + + thumb_func_start MOD18_0223F0C4 +MOD18_0223F0C4: ; 0x0223F0C4 + mov r0, #8 + bx lr + thumb_func_end MOD18_0223F0C4 + + thumb_func_start MOD18_0223F0C8 +MOD18_0223F0C8: ; 0x0223F0C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #4] + ldr r0, _0223F16C ; =0x022513A0 + str r1, [sp, #8] + ldr r0, [r0, #4] + add r7, r2, #0 + ldr r0, [r0, #0x40] + add r5, r3, #0 + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + str r0, [sp, #0xc] + cmp r5, #0x40 + blt _0223F0EC + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F0EC: + ldr r0, _0223F16C ; =0x022513A0 + ldr r2, [r7, #4] + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r4, r1, r0 + asr r0, r5, #3 + lsr r0, r0, #0x1c + add r0, r5, r0 + asr r0, r0, #4 + add r0, #8 + lsl r1, r0, #4 + add r6, r1, #0 + mov r0, #6 + ldr r1, [r7] + mul r6, r0 + ldr r0, [r7, #8] + mul r1, r2 + add r0, r0, r1 + str r0, [r7] + lsr r1, r0, #0x10 + mov r0, #0x1a + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, _0223F170 ; =0x02250460 + ldrb r7, [r0, r1] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl MOD18_0223D8A8 + cmp r0, #0 + bne _0223F166 + add r0, r4, r6 + bl MOD18_0223EE5C + cmp r0, #0 + beq _0223F166 + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r4, r6 + add r3, r7, #0 + bl MOD18_0223EF0C + cmp r0, #0 + beq _0223F166 + strb r5, [r0, #5] + ldr r0, [sp, #8] + ldr r3, [sp, #4] + str r0, [sp] + ldr r0, [sp, #0xc] + add r1, r7, #0 + add r2, r5, #0 + bl FUN_0202630C + add sp, #0x10 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F166: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F16C: .word 0x022513A0 +_0223F170: .word 0x02250460 + thumb_func_end MOD18_0223F0C8 + + thumb_func_start MOD18_0223F174 +MOD18_0223F174: ; 0x0223F174 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0223F1D8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r5, r0, #0 + mov r4, #0 +_0223F186: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026354 + add r7, r0, #0 + beq _0223F1D0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026370 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202639C + ldr r2, _0223F1D8 ; =0x022513A0 + add r1, r0, #0 + ldr r3, [r2, #4] + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r3, r2 + asr r3, r4, #3 + lsr r3, r3, #0x1c + add r3, r4, r3 + asr r3, r3, #4 + add r3, #8 + add r0, r6, #0 + lsl r6, r3, #4 + mov r3, #6 + mul r3, r6 + add r2, r2, r3 + add r3, r7, #0 + bl MOD18_0223EF0C + cmp r0, #0 + beq _0223F1D0 + strb r4, [r0, #5] +_0223F1D0: + add r4, r4, #1 + cmp r4, #0x40 + blt _0223F186 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F1D8: .word 0x022513A0 + thumb_func_end MOD18_0223F174 + + thumb_func_start MOD18_0223F1DC +MOD18_0223F1DC: ; 0x0223F1DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r0, _0223F228 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + add r7, r0, #0 + add r5, r4, #0 +_0223F1F4: + ldr r0, _0223F228 ; =0x022513A0 + mov r1, #0xaa + ldr r0, [r0, #4] + mov r3, #0xa9 + add r6, r0, r5 + ldr r0, _0223F22C ; =0x000002A6 + lsl r1, r1, #2 + ldrh r0, [r6, r0] + lsl r3, r3, #2 + add r2, r4, #0 + str r0, [sp] + ldr r0, _0223F230 ; =0x000002A9 + ldrb r0, [r6, r0] + str r0, [sp, #4] + ldrb r1, [r6, r1] + ldrh r3, [r6, r3] + add r0, r7, #0 + bl FUN_020263F4 + add r4, r4, #1 + add r5, r5, #6 + cmp r4, #0x10 + blt _0223F1F4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F228: .word 0x022513A0 +_0223F22C: .word 0x000002A6 +_0223F230: .word 0x000002A9 + thumb_func_end MOD18_0223F1DC + + thumb_func_start MOD18_0223F234 +MOD18_0223F234: ; 0x0223F234 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_0223EE5C + add r5, r0, #0 + bne _0223F26C + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_02240330 + bl MOD18_0223F2AC + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_0223EE5C + add r5, r0, #0 +_0223F26C: + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_0223EE70 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #6 + bl MI_CpuCopy8 + bl MOD18_0223F1DC + ldrh r0, [r5] + ldrh r1, [r5, #2] + ldrb r3, [r5, #4] + mov r2, #1 + bl MOD18_022402F8 + ldr r1, _0223F2A8 ; =0x022513A0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + add r2, r2, r1 + mov r1, #0xc1 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + nop +_0223F2A8: .word 0x022513A0 + thumb_func_end MOD18_0223F234 + + thumb_func_start MOD18_0223F2AC +MOD18_0223F2AC: ; 0x0223F2AC + push {r3, r4, r5, r6, r7, lr} + ldr r2, _0223F358 ; =0x022513A0 + mov r6, #0 + ldr r3, [r2, #4] + mov r2, #0xa9 + lsl r2, r2, #2 + add r2, r3, r2 + ldrh r3, [r0] + mvn r6, r6 + mov r1, #0 +_0223F2C0: + ldrh r4, [r2] + cmp r3, r4 + bne _0223F2D2 + ldrh r5, [r0, #2] + ldrh r4, [r2, #2] + cmp r5, r4 + bne _0223F2D2 + add r6, r1, #0 + b _0223F2DA +_0223F2D2: + add r1, r1, #1 + add r2, r2, #6 + cmp r1, #0x10 + blt _0223F2C0 +_0223F2DA: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _0223F354 + add r5, r6, #0 + cmp r6, #0xf + bge _0223F310 + mov r0, #6 + add r4, r6, #0 + ldr r7, _0223F358 ; =0x022513A0 + mul r4, r0 +_0223F2F0: + mov r0, #0xa9 + ldr r1, [r7, #4] + lsl r0, r0, #2 + add r1, r1, r0 + add r2, r5, #1 + mov r0, #6 + mul r0, r2 + add r0, r1, r0 + add r1, r1, r4 + mov r2, #6 + bl MI_CpuCopy8 + add r5, r5, #1 + add r4, r4, #6 + cmp r5, #0xf + blt _0223F2F0 +_0223F310: + ldr r1, _0223F358 ; =0x022513A0 + ldr r0, _0223F35C ; =0x00000302 + ldr r2, [r1, #4] + mov r3, #0 + strb r3, [r2, r0] + ldr r1, [r1, #4] + lsl r4, r6, #2 + add r1, r1, r4 + add r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223F32C + bl FUN_02064520 +_0223F32C: + cmp r6, #0xf + bge _0223F348 + mov r0, #0xc2 + lsl r0, r0, #2 + ldr r2, _0223F358 ; =0x022513A0 + sub r1, r0, #4 +_0223F338: + ldr r3, [r2, #4] + add r6, r6, #1 + add r5, r3, r4 + ldr r3, [r5, r0] + add r4, r4, #4 + str r3, [r5, r1] + cmp r6, #0xf + blt _0223F338 +_0223F348: + ldr r0, _0223F358 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0xd + lsl r0, r0, #6 + str r2, [r1, r0] +_0223F354: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F358: .word 0x022513A0 +_0223F35C: .word 0x00000302 + thumb_func_end MOD18_0223F2AC + + thumb_func_start MOD18_0223F360 +MOD18_0223F360: ; 0x0223F360 + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4, #6] + cmp r1, r0 + bne _0223F3FA + bl FUN_0204F7E4 + ldrb r0, [r4, #7] + cmp r0, #1 + bne _0223F3A4 + add r0, r4, #0 + bl MOD18_0223F234 + ldrb r0, [r4, #4] + bl MOD18_02249AD8 + bl MOD18_0223D638 + ldrb r1, [r4, #4] + bl MOD18_0224DDE8 + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x83 + mov r2, #1 + bl MOD18_0224DCB8 + ldr r0, _0223F400 ; =0x00000623 + bl FUN_020054C8 + pop {r4, pc} +_0223F3A4: + cmp r0, #4 + bne _0223F3B8 + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x49 + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223F3B8: + cmp r0, #5 + bne _0223F3CC + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x37 + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223F3CC: + cmp r0, #6 + bne _0223F3E0 + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x3c + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223F3E0: + cmp r0, #7 + bne _0223F3EC + mov r0, #0 + bl MOD18_0223ECDC + pop {r4, pc} +_0223F3EC: + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x3b + mov r2, #1 + bl MOD18_0224DCB8 +_0223F3FA: + pop {r4, pc} + .align 2, 0 +_0223F3FC: .word MOD18_0223ECDC +_0223F400: .word 0x00000623 + thumb_func_end MOD18_0223F360 + + thumb_func_start MOD18_0223F404 +MOD18_0223F404: ; 0x0223F404 + ldr r0, _0223F41C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r3, r1, r0 + ldrh r1, [r2] + mov r0, #6 + mul r0, r1 + add r0, r3, r0 + ldr r3, _0223F420 ; =MOD18_0223EE8C + bx r3 + nop +_0223F41C: .word 0x022513A0 +_0223F420: .word MOD18_0223EE8C + thumb_func_end MOD18_0223F404 + + thumb_func_start MOD18_0223F424 +MOD18_0223F424: ; 0x0223F424 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223F424 + + thumb_func_start MOD18_0223F428 +MOD18_0223F428: ; 0x0223F428 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + lsl r1, r0, #4 + str r0, [sp] + mov r0, #6 + add r7, r1, #0 + mul r7, r0 + ldr r0, _0223F4A4 ; =0x022513A0 + add r5, r2, #0 + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r0, r1, r0 + add r6, r0, r7 + bl FUN_02031190 + cmp r0, #0 + bne _0223F49E + cmp r4, #0x60 + beq _0223F456 + bl ErrorHandling +_0223F456: + mov r0, #0 + add r4, r0, #0 +_0223F45A: + add r0, r0, #1 + strb r4, [r6, #4] + add r6, r6, #6 + cmp r0, #0x10 + blt _0223F45A +_0223F464: + ldrb r3, [r5, #4] + cmp r3, #0 + beq _0223F47E + ldr r2, _0223F4A4 ; =0x022513A0 + ldrh r0, [r5] + ldr r6, [r2, #4] + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r6, r2 + ldrh r1, [r5, #2] + add r2, r2, r7 + bl MOD18_0223EF0C +_0223F47E: + add r4, r4, #1 + add r5, r5, #6 + cmp r4, #0x10 + blt _0223F464 + ldr r0, [sp] + add r1, sp, #4 + strb r0, [r1] + mov r0, #1 + strb r0, [r1, #1] + mov r0, #0x24 + add r1, sp, #4 + mov r2, #2 + bl FUN_02030BC4 + bl MOD18_0223FAC4 +_0223F49E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F4A4: .word 0x022513A0 + thumb_func_end MOD18_0223F428 + + thumb_func_start MOD18_0223F4A8 +MOD18_0223F4A8: ; 0x0223F4A8 + push {r4, lr} + ldr r0, _0223F4CC ; =0x022513A0 + add r4, r2, #0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0223F4C8 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223F4C8 + ldr r0, _0223F4CC ; =0x022513A0 + ldrb r2, [r4, #1] + ldr r1, [r0, #4] + ldr r0, _0223F4D0 ; =0x00000B45 + strb r2, [r1, r0] +_0223F4C8: + pop {r4, pc} + nop +_0223F4CC: .word 0x022513A0 +_0223F4D0: .word 0x00000B45 + thumb_func_end MOD18_0223F4A8 + + thumb_func_start MOD18_0223F4D4 +MOD18_0223F4D4: ; 0x0223F4D4 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223F4D4 + + thumb_func_start MOD18_0223F4D8 +MOD18_0223F4D8: ; 0x0223F4D8 + ldr r0, _0223F4EC ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _0223F4F0 ; =0x00000B45 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223F4E8 + mov r0, #1 + bx lr +_0223F4E8: + mov r0, #0 + bx lr + .align 2, 0 +_0223F4EC: .word 0x022513A0 +_0223F4F0: .word 0x00000B45 + thumb_func_end MOD18_0223F4D8 + + thumb_func_start MOD18_0223F4F4 +MOD18_0223F4F4: ; 0x0223F4F4 + ldr r0, _0223F500 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _0223F504 ; =0x00000B45 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223F500: .word 0x022513A0 +_0223F504: .word 0x00000B45 + thumb_func_end MOD18_0223F4F4 + + thumb_func_start MOD18_0223F508 +MOD18_0223F508: ; 0x0223F508 + mov r0, #4 + bx lr + thumb_func_end MOD18_0223F508 + + thumb_func_start MOD18_0223F50C +MOD18_0223F50C: ; 0x0223F50C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _0223F5C4 ; =0x022513A0 + add r6, r2, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CC4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0204E62C + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E664 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223F728 + add r4, r0, #0 + beq _0223F5BE + add r0, r5, #0 + bl FUN_0204F210 + cmp r0, #0 + beq _0223F54E + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223F54E: + add r3, sp, #0 + ldrb r2, [r3, #7] + mov r0, #0xf + bic r2, r0 + lsl r0, r5, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + and r0, r1 + orr r0, r2 + strb r0, [r3, #7] + add r0, r4, #0 + bl MOD18_0223F6F8 + add r1, sp, #0 + strb r0, [r1, #6] + add r0, r4, #0 + add r1, sp, #0 + mov r2, #6 + bl MI_CpuCopy8 + mov r0, #0x10 + tst r0, r6 + add r1, sp, #0 + beq _0223F588 + ldrb r2, [r1, #7] + mov r0, #0x40 + orr r0, r2 + strb r0, [r1, #7] + b _0223F596 +_0223F588: + ldrb r2, [r1, #7] + mov r0, #0x40 + bic r2, r0 + add r0, r4, #0 + strb r2, [r1, #7] + bl MOD18_0223EE8C +_0223F596: + add r1, sp, #0 + ldrb r0, [r1, #6] + cmp r0, #8 + blo _0223F5A6 + ldrb r1, [r1, #5] + add r0, r7, #0 + bl FUN_020263C8 +_0223F5A6: + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + mov r0, #0x33 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223F5BE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F5C4: .word 0x022513A0 + thumb_func_end MOD18_0223F50C + + thumb_func_start MOD18_0223F5C8 +MOD18_0223F5C8: ; 0x0223F5C8 + mov r0, #8 + bx lr + thumb_func_end MOD18_0223F5C8 + + thumb_func_start MOD18_0223F5CC +MOD18_0223F5CC: ; 0x0223F5CC + push {r3, r4, r5, lr} + add r4, r2, #0 + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #8 + blo _0223F5DE + bl ErrorHandling +_0223F5DE: + ldrb r3, [r4, #7] + lsl r0, r3, #0x19 + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223F60A + bl FUN_02031190 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, r0 + bne _0223F6DC + bl MOD18_0223D638 + ldr r3, _0223F6E0 ; =MOD18_0223ECDC + mov r1, #0x4e + mov r2, #1 + bl MOD18_0224DCB8 + bl FUN_0204F7E4 + pop {r3, r4, r5, pc} +_0223F60A: + ldr r1, _0223F6E4 ; =0x022513A0 + mov r0, #1 + ldr r2, [r1, #4] + lsl r1, r3, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223F6E8 ; =0x00000B2C + strb r0, [r2, r1] + bl FUN_02031190 + ldrb r1, [r4, #6] + cmp r1, r0 + bne _0223F62E + add r0, r4, #0 + bl MOD18_0223F2AC + bl MOD18_0223F1DC +_0223F62E: + bl FUN_02031190 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, r0 + bne _0223F6DC + ldrb r0, [r4, #4] + bl MOD18_022494A0 + cmp r0, #0 + beq _0223F6CA + bl FUN_02031190 + ldrb r1, [r4, #6] + cmp r1, r0 + beq _0223F674 + ldr r0, _0223F6E4 ; =0x022513A0 + ldr r2, [r0, #4] + ldr r0, _0223F6EC ; =0x00000B34 + ldrh r1, [r2, r0] + cmp r1, #0 + bne _0223F662 + ldrb r1, [r4, #4] + add r0, r0, #2 + strb r1, [r2, r0] +_0223F662: + ldr r0, _0223F6E4 ; =0x022513A0 + ldr r1, _0223F6F0 ; =0x0000FFFF + ldr r3, [r0, #4] + ldr r0, _0223F6EC ; =0x00000B34 + ldrh r2, [r3, r0] + cmp r2, r1 + beq _0223F674 + add r1, r2, #1 + strh r1, [r3, r0] +_0223F674: + ldr r0, _0223F6F4 ; =0x000005E3 + bl FUN_020054C8 + bl MOD18_0223D638 + add r5, r0, #0 + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDA0 + bl MOD18_0223D638 + ldrb r2, [r4, #4] + mov r1, #2 + bl MOD18_0224DF40 + bl MOD18_0223D638 + mov r1, #2 + bl MOD18_0224DF54 + bl MOD18_0223D638 + ldrb r1, [r4, #4] + bl MOD18_0224DDE8 + bl MOD18_0223D638 + ldr r3, _0223F6E0 ; =MOD18_0223ECDC + mov r1, #0x12 + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_0223D638 + bl MOD18_0224DD10 + b _0223F6D8 +_0223F6CA: + bl MOD18_0223D638 + ldr r3, _0223F6E0 ; =MOD18_0223ECDC + mov r1, #0x4e + mov r2, #1 + bl MOD18_0224DCB8 +_0223F6D8: + bl FUN_0204F7E4 +_0223F6DC: + pop {r3, r4, r5, pc} + nop +_0223F6E0: .word MOD18_0223ECDC +_0223F6E4: .word 0x022513A0 +_0223F6E8: .word 0x00000B2C +_0223F6EC: .word 0x00000B34 +_0223F6F0: .word 0x0000FFFF +_0223F6F4: .word 0x000005E3 + thumb_func_end MOD18_0223F5CC + + thumb_func_start MOD18_0223F6F8 +MOD18_0223F6F8: ; 0x0223F6F8 + push {r3, lr} + ldr r1, _0223F724 ; =0x022513A0 + mov r3, #0 + ldr r2, [r1, #4] + mov r1, #0xd1 + lsl r1, r1, #2 + add r1, r2, r1 +_0223F706: + cmp r1, r0 + bne _0223F714 + asr r0, r3, #3 + lsr r0, r0, #0x1c + add r0, r3, r0 + asr r0, r0, #4 + pop {r3, pc} +_0223F714: + add r3, r3, #1 + add r1, r1, #6 + cmp r3, #0xc0 + blt _0223F706 + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223F724: .word 0x022513A0 + thumb_func_end MOD18_0223F6F8 + + thumb_func_start MOD18_0223F728 +MOD18_0223F728: ; 0x0223F728 + push {r3, lr} + add r2, sp, #0 + strh r0, [r2] + strh r1, [r2, #2] + ldr r1, _0223F758 ; =MOD18_0223ECF0 + mov r0, #0xc0 + bl MOD18_0223DC7C + add r0, sp, #0 + bl MOD18_0223DBBC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223F74A + mov r0, #0 + pop {r3, pc} +_0223F74A: + ldr r1, _0223F75C ; =0x022513A0 + lsl r0, r0, #2 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223F760 ; =0x000007C4 + ldr r0, [r1, r0] + pop {r3, pc} + .align 2, 0 +_0223F758: .word MOD18_0223ECF0 +_0223F75C: .word 0x022513A0 +_0223F760: .word 0x000007C4 + thumb_func_end MOD18_0223F728 + + thumb_func_start MOD18_0223F764 +MOD18_0223F764: ; 0x0223F764 + push {r3, lr} + bl MOD18_0223F728 + cmp r0, #0 + beq _0223F772 + mov r0, #1 + pop {r3, pc} +_0223F772: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223F764 + + thumb_func_start MOD18_0223F778 +MOD18_0223F778: ; 0x0223F778 + mov r0, #8 + bx lr + thumb_func_end MOD18_0223F778 + + thumb_func_start MOD18_0223F77C +MOD18_0223F77C: ; 0x0223F77C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223F850 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r4, #0 + bl MOD18_0223CAEC + cmp r0, #0 + beq _0223F7A0 + add sp, #8 + mov r0, #0 + pop {r4, r5, r6, pc} +_0223F7A0: + add r0, r4, #0 + bl FUN_0204E544 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204E598 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0223F728 + add r5, r0, #0 + bne _0223F7C0 + add sp, #8 + mov r0, #0 + pop {r4, r5, r6, pc} +_0223F7C0: + ldr r0, _0223F850 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223F854 ; =0x00000B3C + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223F7E4 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _0223F850 ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _0223F854 ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 +_0223F7E4: + ldrb r1, [r5, #4] + add r0, r4, #0 + bl MOD18_0223FCC0 + add r0, sp, #0 + ldrb r2, [r0, #7] + mov r1, #0x80 + bic r2, r1 + strb r2, [r0, #7] + ldrb r1, [r0, #7] + mov r2, #0xf + bic r1, r2 + lsl r2, r4, #0x18 + lsr r3, r2, #0x18 + mov r2, #0xf + and r2, r3 + orr r1, r2 + strb r1, [r0, #7] + add r0, r5, #0 + bl MOD18_0223F6F8 + add r1, sp, #0 + strb r0, [r1, #6] + add r0, r5, #0 + add r1, sp, #0 + mov r2, #6 + bl MI_CpuCopy8 + add r1, sp, #0 + ldrb r0, [r1, #6] + cmp r0, #8 + blo _0223F82C + ldrb r1, [r1, #5] + add r0, r6, #0 + bl FUN_020263C8 +_0223F82C: + mov r0, #0x25 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + ldr r0, _0223F850 ; =0x022513A0 + ldrb r2, [r5, #4] + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223F854 ; =0x00000B3C + strb r2, [r1, r0] + add r0, r5, #0 + bl MOD18_0223EE8C + mov r0, #1 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_0223F850: .word 0x022513A0 +_0223F854: .word 0x00000B3C + thumb_func_end MOD18_0223F77C + + thumb_func_start MOD18_0223F858 +MOD18_0223F858: ; 0x0223F858 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + ldr r1, _0223F8D0 ; =0x022513A0 + add r5, r0, #0 + ldr r1, [r1, #4] + add r4, r2, #0 + add r2, r1, r5 + ldr r1, _0223F8D4 ; =0x00000B3C + add r7, r3, #0 + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223F876 + bl MOD18_0223FCD4 +_0223F876: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223FCC0 + add r1, sp, #0 + ldrb r3, [r1, #7] + mov r0, #0xf + bic r3, r0 + lsl r0, r5, #0x18 + lsr r2, r0, #0x18 + mov r0, #0xf + and r0, r2 + orr r0, r3 + strb r0, [r1, #7] + strb r6, [r1, #6] + ldrb r2, [r1, #7] + mov r0, #0x80 + orr r0, r2 + strb r0, [r1, #7] + strb r4, [r1, #4] + ldr r0, [sp, #0x20] + strh r7, [r1] + strh r0, [r1, #2] + ldrb r0, [r1, #7] + mov r2, #0x30 + bic r0, r2 + ldr r2, [sp, #0x24] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + lsl r2, r2, #0x1e + lsr r2, r2, #0x1a + orr r0, r2 + strb r0, [r1, #7] + mov r0, #0x25 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + ldr r0, _0223F8D0 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + ldr r0, _0223F8D4 ; =0x00000B3C + strb r4, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F8D0: .word 0x022513A0 +_0223F8D4: .word 0x00000B3C + thumb_func_end MOD18_0223F858 + + thumb_func_start MOD18_0223F8D8 +MOD18_0223F8D8: ; 0x0223F8D8 + push {r4, lr} + ldr r1, _0223F8F8 ; =0x022513A0 + add r4, r0, #0 + ldr r1, [r1, #4] + cmp r1, #0 + beq _0223F8F4 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223F8F4 + add r0, r4, #0 + bl MOD18_0223F77C + pop {r4, pc} +_0223F8F4: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0223F8F8: .word 0x022513A0 + thumb_func_end MOD18_0223F8D8 + + thumb_func_start MOD18_0223F8FC +MOD18_0223F8FC: ; 0x0223F8FC + ldr r1, _0223F910 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223F914 ; =0x00000ACB + ldrb r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bx lr + nop +_0223F910: .word 0x022513A0 +_0223F914: .word 0x00000ACB + thumb_func_end MOD18_0223F8FC + + thumb_func_start MOD18_0223F918 +MOD18_0223F918: ; 0x0223F918 + push {r4, r5, r6, lr} + ldr r0, _0223FA60 ; =0x022513A0 + add r4, r2, #0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _0223F926 + b _0223FA5E +_0223F926: + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CB4 + add r6, r0, #0 + ldr r0, _0223FA64 ; =0x00000622 + bl FUN_020054C8 + ldr r1, _0223FA60 ; =0x022513A0 + add r0, r4, #0 + ldr r2, [r1, #4] + ldr r1, _0223FA68 ; =0x00000AC4 + add r1, r2, r1 + ldrb r2, [r4, #7] + lsl r2, r2, #0x1c + lsr r2, r2, #0x19 + add r1, r1, r2 + mov r2, #8 + bl MI_CpuCopy8 + ldrb r0, [r4, #4] + sub r0, #0x18 + cmp r0, #3 + bhi _0223F9BC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223F964: ; jump table + .short _0223F96C - _0223F964 - 2 ; case 0 + .short _0223F980 - _0223F964 - 2 ; case 1 + .short _0223F994 - _0223F964 - 2 ; case 2 + .short _0223F9A8 - _0223F964 - 2 ; case 3 +_0223F96C: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x75 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F980: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x76 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F994: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x77 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F9A8: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x78 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F9BC: + ldr r0, _0223FA60 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _0223FA70 ; =0x00000ACB + add r0, r1, r0 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r3, r1, #0x19 + ldrb r2, [r0, r3] + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, r3] +_0223F9D2: + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r5, r0, #0x1c + bl FUN_02031190 + cmp r5, r0 + bne _0223F9F4 + ldrb r3, [r4, #7] + ldrb r1, [r4, #4] + add r0, r5, #0 + lsl r2, r3, #0x18 + lsl r3, r3, #0x1a + lsr r2, r2, #0x1f + lsr r3, r3, #0x1e + bl MOD18_0223FD54 + b _0223F9FC +_0223F9F4: + ldrb r1, [r4, #4] + add r0, r5, #0 + bl MOD18_02243F5C +_0223F9FC: + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bl FUN_0204F074 + bl FUN_02031190 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, r0 + bne _0223FA1A + add r0, r6, #0 + bl FUN_02026B20 +_0223FA1A: + ldrb r5, [r4, #6] + bl FUN_02031190 + cmp r5, r0 + bne _0223FA5E + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r5, r0 + beq _0223FA34 + add r0, r6, #0 + bl FUN_02026AE8 +_0223FA34: + ldr r0, _0223FA60 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r5, r0, #0 + bl FUN_0205F760 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl FUN_0205F770 + add r0, r4, #0 + bl MOD18_0223F2AC + bl MOD18_0223F1DC +_0223FA5E: + pop {r4, r5, r6, pc} + .align 2, 0 +_0223FA60: .word 0x022513A0 +_0223FA64: .word 0x00000622 +_0223FA68: .word 0x00000AC4 +_0223FA6C: .word 0x00000B24 +_0223FA70: .word 0x00000ACB + thumb_func_end MOD18_0223F918 + + thumb_func_start MOD18_0223FA74 +MOD18_0223FA74: ; 0x0223FA74 + push {r4, lr} + ldrb r2, [r2] + ldr r1, _0223FA9C ; =0x02250230 + lsl r3, r2, #2 + ldr r1, [r1, r3] + ldr r3, _0223FAA0 ; =0x022513A0 + ldr r3, [r3, #4] + add r4, r3, r0 + ldr r3, _0223FAA4 ; =0x00000B3C + ldrb r3, [r4, r3] + cmp r2, r3 + beq _0223FA94 + mov r0, #1 + bl FUN_020335A4 + pop {r4, pc} +_0223FA94: + cmp r1, #0 + beq _0223FA9A + blx r1 +_0223FA9A: + pop {r4, pc} + .align 2, 0 +_0223FA9C: .word 0x02250230 +_0223FAA0: .word 0x022513A0 +_0223FAA4: .word 0x00000B3C + thumb_func_end MOD18_0223FA74 + + thumb_func_start MOD18_0223FAA8 +MOD18_0223FAA8: ; 0x0223FAA8 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldrb r4, [r5] + bl FUN_02031190 + cmp r4, r0 + beq _0223FAC0 + ldrb r1, [r5, #1] + ldrb r2, [r5, #2] + add r0, r4, #0 + bl FUN_0204E214 +_0223FAC0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0223FAA8 + + thumb_func_start MOD18_0223FAC4 +MOD18_0223FAC4: ; 0x0223FAC4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r0, #0 + add r3, sp, #0 + ldr r1, _0223FB00 ; =0x022513A0 + strb r0, [r3] + ldr r1, [r1, #4] + cmp r1, #0 + beq _0223FAFA + ldr r2, _0223FB04 ; =0x00000B3C + mov r4, #1 +_0223FADA: + ldrb r5, [r1, r2] + cmp r5, #0 + beq _0223FAEA + add r5, r4, #0 + ldrb r6, [r3] + lsl r5, r0 + orr r5, r6 + strb r5, [r3] +_0223FAEA: + add r0, r0, #1 + add r1, r1, #1 + cmp r0, #8 + blt _0223FADA + mov r0, #0x2d + add r1, sp, #0 + bl FUN_02030C4C +_0223FAFA: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0223FB00: .word 0x022513A0 +_0223FB04: .word 0x00000B3C + thumb_func_end MOD18_0223FAC4 + + thumb_func_start MOD18_0223FB08 +MOD18_0223FB08: ; 0x0223FB08 + push {r4, r5, r6, lr} + ldr r0, _0223FB34 ; =0x022513A0 + ldrb r5, [r2] + ldr r1, [r0, #4] + ldr r0, _0223FB38 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223FB30 + mov r4, #0 + mov r6, #1 +_0223FB1C: + add r0, r6, #0 + lsl r0, r4 + tst r0, r5 + beq _0223FB2A + add r0, r4, #0 + bl FUN_0204F074 +_0223FB2A: + add r4, r4, #1 + cmp r4, #8 + blt _0223FB1C +_0223FB30: + pop {r4, r5, r6, pc} + nop +_0223FB34: .word 0x022513A0 +_0223FB38: .word 0x00000B3B + thumb_func_end MOD18_0223FB08 + + thumb_func_start MOD18_0223FB3C +MOD18_0223FB3C: ; 0x0223FB3C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r7, _0223FC04 ; =0x022513A0 + add r6, r0, #0 + ldr r0, [r7, #4] + cmp r0, #0 + bne _0223FB50 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223FB50: + mov r4, #0 + mov r0, #0x40 + add r5, r4, #0 + str r0, [sp, #8] +_0223FB58: + ldr r1, [r7, #4] + ldr r0, _0223FC08 ; =0x00000ACB + add r0, r1, r0 + ldrb r2, [r0, r5] + lsl r1, r2, #0x19 + lsr r1, r1, #0x1f + cmp r1, #1 + bne _0223FBB4 + ldr r1, [sp, #8] + bic r2, r1 + strb r2, [r0, r5] + ldr r0, [r7, #4] + add r1, r0, r5 + ldr r0, _0223FC0C ; =0x00000ACA + ldrb r0, [r1, r0] + cmp r0, #8 + blo _0223FB94 + add r0, r4, #0 + bl FUN_0202DFA4 + mov r1, #0 + mov r2, #0x63 + add r3, r6, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FBB4 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223FB94: + bl FUN_0202DFA4 + str r0, [sp] + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [sp] + mov r2, #0x64 + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _0223FBB4 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223FBB4: + ldr r0, [r7, #4] + add r1, r0, r4 + ldr r0, _0223FC10 ; =0x00000B04 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _0223FBF6 + add r0, r4, #0 + bl FUN_0202DFA4 + str r0, [sp, #4] + ldr r0, [r7, #4] + add r1, r0, r4 + ldr r0, _0223FC10 ; =0x00000B04 + ldrb r0, [r1, r0] + bl FUN_0202DFA4 + add r3, r0, #0 + ldr r0, [r7, #4] + mov r1, #0xff + add r2, r0, r4 + ldr r0, _0223FC10 ; =0x00000B04 + strb r1, [r2, r0] + add r1, r3, #0 + ldr r0, [sp, #4] + mov r2, #0x74 + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _0223FBF6 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223FBF6: + add r4, r4, #1 + add r5, #8 + cmp r4, #8 + blt _0223FB58 + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223FC04: .word 0x022513A0 +_0223FC08: .word 0x00000ACB +_0223FC0C: .word 0x00000ACA +_0223FC10: .word 0x00000B04 + thumb_func_end MOD18_0223FB3C + + thumb_func_start MOD18_0223FC14 +MOD18_0223FC14: ; 0x0223FC14 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _0223FCB0 ; =0x022513A0 + add r5, r0, #0 + ldr r0, [r6, #4] + cmp r0, #0 + bne _0223FC24 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223FC24: + mov r4, #0 +_0223FC26: + ldr r0, [r6, #4] + ldr r1, _0223FCB4 ; =0x00000B24 + add r0, r0, r4 + ldrb r7, [r0, r1] + cmp r7, #0 + beq _0223FC4E + mov r2, #0 + strb r2, [r0, r1] + add r0, r4, #0 + bl FUN_0202DFA4 + mov r1, #0 + add r2, r7, #0 + add r3, r5, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FC4E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FC4E: + ldr r0, [r6, #4] + ldr r1, _0223FCB8 ; =0x00000B2C + add r0, r0, r4 + ldrb r1, [r0, r1] + cmp r1, #1 + bne _0223FC78 + ldr r1, _0223FCB8 ; =0x00000B2C + mov r2, #0 + strb r2, [r0, r1] + add r0, r4, #0 + bl FUN_0202DFA4 + mov r1, #0 + mov r2, #0x5a + add r3, r5, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FC78 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FC78: + ldr r0, [r6, #4] + add r1, r0, r4 + ldr r0, _0223FCBC ; =0x00000B1C + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223FCA6 + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [r6, #4] + mov r2, #0 + add r3, r1, r4 + ldr r1, _0223FCBC ; =0x00000B1C + strb r2, [r3, r1] + add r1, r2, #0 + mov r2, #0x62 + add r3, r5, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FCA6 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FCA6: + add r4, r4, #1 + cmp r4, #8 + blt _0223FC26 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FCB0: .word 0x022513A0 +_0223FCB4: .word 0x00000B24 +_0223FCB8: .word 0x00000B2C +_0223FCBC: .word 0x00000B1C + thumb_func_end MOD18_0223FC14 + + thumb_func_start MOD18_0223FCC0 +MOD18_0223FCC0: ; 0x0223FCC0 + push {r3, lr} + lsl r2, r1, #2 + ldr r1, _0223FCD0 ; =0x022501A4 + ldr r1, [r1, r2] + cmp r1, #0 + beq _0223FCCE + blx r1 +_0223FCCE: + pop {r3, pc} + .align 2, 0 +_0223FCD0: .word 0x022501A4 + thumb_func_end MOD18_0223FCC0 + + thumb_func_start MOD18_0223FCD4 +MOD18_0223FCD4: ; 0x0223FCD4 + push {r3, lr} + lsl r2, r1, #2 + ldr r1, _0223FCE4 ; =0x022502BC + ldr r1, [r1, r2] + cmp r1, #0 + beq _0223FCE2 + blx r1 +_0223FCE2: + pop {r3, pc} + .align 2, 0 +_0223FCE4: .word 0x022502BC + thumb_func_end MOD18_0223FCD4 + + thumb_func_start MOD18_0223FCE8 +MOD18_0223FCE8: ; 0x0223FCE8 + push {r4, lr} + ldr r2, _0223FD44 ; =0x022513A0 + add r4, r0, #0 + ldr r3, [r2, #4] + ldr r2, _0223FD48 ; =0x00000B3B + ldrb r2, [r3, r2] + cmp r2, #0 + beq _0223FD42 + lsl r3, r2, #2 + ldr r2, _0223FD4C ; =0x022503D4 + ldr r2, [r2, r3] + cmp r2, #0 + beq _0223FD04 + blx r2 +_0223FD04: + bl FUN_02031190 + cmp r0, #0 + beq _0223FD12 + add r0, r4, #0 + bl FUN_0204E778 +_0223FD12: + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _0223FD50 ; =0x00000609 + bl FUN_020054C8 + ldr r0, _0223FD44 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x2a + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_0204F0A8 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, _0223FD44 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _0223FD48 ; =0x00000B3B + strb r2, [r1, r0] +_0223FD42: + pop {r4, pc} + .align 2, 0 +_0223FD44: .word 0x022513A0 +_0223FD48: .word 0x00000B3B +_0223FD4C: .word 0x022503D4 +_0223FD50: .word 0x00000609 + thumb_func_end MOD18_0223FCE8 + + thumb_func_start MOD18_0223FD54 +MOD18_0223FD54: ; 0x0223FD54 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD18_0223FCE8 + ldr r0, _0223FD80 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _0223FD84 ; =0x00000B3B + strb r4, [r1, r0] + ldr r0, _0223FD88 ; =0x02250118 + lsl r1, r4, #2 + ldr r3, [r0, r1] + cmp r3, #0 + beq _0223FD7E + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + blx r3 +_0223FD7E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FD80: .word 0x022513A0 +_0223FD84: .word 0x00000B3B +_0223FD88: .word 0x02250118 + thumb_func_end MOD18_0223FD54 + + thumb_func_start MOD18_0223FD8C +MOD18_0223FD8C: ; 0x0223FD8C + push {r3, r4, r5, r6, r7, lr} + bl FUN_0204F610 + add r6, r0, #0 + ldr r0, _0223FDE0 ; =0x022513A0 + add r1, r6, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055304 + bl FUN_02031190 + ldr r1, _0223FDE0 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FDE4 ; =0x00000AC4 + ldrh r4, [r1, r0] + bl FUN_02031190 + ldr r1, _0223FDE0 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FDE8 ; =0x00000AC6 + ldrh r5, [r1, r0] + add r0, r6, #0 + bl FUN_02059BF4 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02059C00 + add r2, r0, #0 + mov r0, #0 + add r1, r4, r7 + add r2, r5, r2 + bl FUN_0204D118 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FDE0: .word 0x022513A0 +_0223FDE4: .word 0x00000AC4 +_0223FDE8: .word 0x00000AC6 + thumb_func_end MOD18_0223FD8C + + thumb_func_start MOD18_0223FDEC +MOD18_0223FDEC: ; 0x0223FDEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223FE64 ; =0x022513A0 + add r6, r1, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + str r0, [sp] + ldr r0, _0223FE64 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204F610 + str r0, [sp, #4] + bl FUN_02031190 + ldr r1, _0223FE64 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FE68 ; =0x00000AC4 + ldrh r4, [r1, r0] + bl FUN_02031190 + ldr r1, _0223FE64 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FE6C ; =0x00000AC6 + cmp r6, #0 + ldrh r5, [r1, r0] + bne _0223FE4C + ldr r0, [sp, #4] + bl FUN_02059BF4 + add r4, r4, r0 + ldr r0, [sp, #4] + bl FUN_02059C00 + add r5, r5, r0 +_0223FE4C: + ldr r0, [sp] + cmp r0, r4 + bne _0223FE5C + cmp r7, r5 + bne _0223FE5C + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FE5C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FE64: .word 0x022513A0 +_0223FE68: .word 0x00000AC4 +_0223FE6C: .word 0x00000AC6 + thumb_func_end MOD18_0223FDEC + + thumb_func_start MOD18_0223FE70 +MOD18_0223FE70: ; 0x0223FE70 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0x1e + bl FUN_0204F63C + pop {r4, pc} + thumb_func_end MOD18_0223FE70 + + thumb_func_start MOD18_0223FE84 +MOD18_0223FE84: ; 0x0223FE84 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0x1e + bl FUN_0204F63C + pop {r4, pc} + thumb_func_end MOD18_0223FE84 + + thumb_func_start MOD18_0223FE98 +MOD18_0223FE98: ; 0x0223FE98 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0204E758 + add r0, r4, #0 + bl FUN_0204F660 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FE98 + + thumb_func_start MOD18_0223FEAC +MOD18_0223FEAC: ; 0x0223FEAC + ldr r3, _0223FEB4 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_0223FEB4: .word 0x0204E759 + thumb_func_end MOD18_0223FEAC + + thumb_func_start MOD18_0223FEB8 +MOD18_0223FEB8: ; 0x0223FEB8 + ldr r3, _0223FEC0 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_0223FEC0: .word 0x0204E759 + thumb_func_end MOD18_0223FEB8 + + thumb_func_start MOD18_0223FEC4 +MOD18_0223FEC4: ; 0x0223FEC4 + push {r4, lr} + add r4, r0, #0 + mov r1, #3 + bl FUN_0204E758 + add r0, r4, #0 + bl FUN_0204E200 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FEC4 + + thumb_func_start MOD18_0223FED8 +MOD18_0223FED8: ; 0x0223FED8 + ldr r3, _0223FEE0 ; =0x0204E179 + mov r1, #0 + add r2, r1, #0 + bx r3 + .align 2, 0 +_0223FEE0: .word 0x0204E179 + thumb_func_end MOD18_0223FED8 + + thumb_func_start MOD18_0223FEE4 +MOD18_0223FEE4: ; 0x0223FEE4 + ldr r3, _0223FEEC ; =0x0204E179 + mov r1, #1 + mov r2, #0 + bx r3 + .align 2, 0 +_0223FEEC: .word 0x0204E179 + thumb_func_end MOD18_0223FEE4 + + thumb_func_start MOD18_0223FEF0 +MOD18_0223FEF0: ; 0x0223FEF0 + ldr r3, _0223FEF8 ; =0x0204E179 + mov r1, #2 + mov r2, #0 + bx r3 + .align 2, 0 +_0223FEF8: .word 0x0204E179 + thumb_func_end MOD18_0223FEF0 + + thumb_func_start MOD18_0223FEFC +MOD18_0223FEFC: ; 0x0223FEFC + ldr r3, _0223FF04 ; =0x0204E179 + mov r1, #3 + mov r2, #0 + bx r3 + .align 2, 0 +_0223FF04: .word 0x0204E179 + thumb_func_end MOD18_0223FEFC + + thumb_func_start MOD18_0223FF08 +MOD18_0223FF08: ; 0x0223FF08 + ldr r3, _0223FF10 ; =0x0204E179 + mov r1, #0 + mov r2, #1 + bx r3 + .align 2, 0 +_0223FF10: .word 0x0204E179 + thumb_func_end MOD18_0223FF08 + + thumb_func_start MOD18_0223FF14 +MOD18_0223FF14: ; 0x0223FF14 + ldr r3, _0223FF1C ; =0x0204E179 + mov r1, #1 + add r2, r1, #0 + bx r3 + .align 2, 0 +_0223FF1C: .word 0x0204E179 + thumb_func_end MOD18_0223FF14 + + thumb_func_start MOD18_0223FF20 +MOD18_0223FF20: ; 0x0223FF20 + ldr r3, _0223FF28 ; =0x0204E179 + mov r1, #2 + mov r2, #1 + bx r3 + .align 2, 0 +_0223FF28: .word 0x0204E179 + thumb_func_end MOD18_0223FF20 + + thumb_func_start MOD18_0223FF2C +MOD18_0223FF2C: ; 0x0223FF2C + ldr r3, _0223FF34 ; =0x0204E179 + mov r1, #3 + mov r2, #1 + bx r3 + .align 2, 0 +_0223FF34: .word 0x0204E179 + thumb_func_end MOD18_0223FF2C + + thumb_func_start MOD18_0223FF38 +MOD18_0223FF38: ; 0x0223FF38 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0204E758 + add r0, r4, #0 + bl FUN_0204E1E8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FF38 + + thumb_func_start MOD18_0223FF4C +MOD18_0223FF4C: ; 0x0223FF4C + bx lr + .align 2, 0 + thumb_func_end MOD18_0223FF4C + + thumb_func_start MOD18_0223FF50 +MOD18_0223FF50: ; 0x0223FF50 + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r4, r0 + bne _0223FF68 + mov r0, #1 + bl MOD18_02240EE8 +_0223FF68: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FF50 + + thumb_func_start MOD18_0223FF6C +MOD18_0223FF6C: ; 0x0223FF6C + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r4, r0 + bne _0223FF84 + mov r0, #0 + bl MOD18_02240EE8 +_0223FF84: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FF6C + + thumb_func_start MOD18_0223FF88 +MOD18_0223FF88: ; 0x0223FF88 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _0223FFAC + ldr r0, _0223FFB0 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240334 +_0223FFAC: + pop {r4, r5, r6, pc} + nop +_0223FFB0: .word 0x022513A0 + thumb_func_end MOD18_0223FF88 + + thumb_func_start MOD18_0223FFB4 +MOD18_0223FFB4: ; 0x0223FFB4 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _0223FFD8 + ldr r0, _0223FFDC ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + bl MOD18_02241738 +_0223FFD8: + pop {r4, r5, r6, pc} + nop +_0223FFDC: .word 0x022513A0 + thumb_func_end MOD18_0223FFB4 + + thumb_func_start MOD18_0223FFE0 +MOD18_0223FFE0: ; 0x0223FFE0 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0223FFF4 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r3, r2, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0223FFF4: .word 0x022513A0 + thumb_func_end MOD18_0223FFE0 + + thumb_func_start MOD18_0223FFF8 +MOD18_0223FFF8: ; 0x0223FFF8 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224000C ; =0x022513A0 + mov r2, #1 + ldr r0, [r0, #4] + mov r3, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224000C: .word 0x022513A0 + thumb_func_end MOD18_0223FFF8 + + thumb_func_start MOD18_02240010 +MOD18_02240010: ; 0x02240010 + push {r3, lr} + add r1, r0, #0 + ldr r0, _02240024 ; =0x022513A0 + mov r2, #2 + ldr r0, [r0, #4] + mov r3, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_02240024: .word 0x022513A0 + thumb_func_end MOD18_02240010 + + thumb_func_start MOD18_02240028 +MOD18_02240028: ; 0x02240028 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224003C ; =0x022513A0 + mov r2, #3 + ldr r0, [r0, #4] + mov r3, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224003C: .word 0x022513A0 + thumb_func_end MOD18_02240028 + + thumb_func_start MOD18_02240040 +MOD18_02240040: ; 0x02240040 + push {r3, lr} + add r1, r0, #0 + ldr r0, _02240054 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + mov r3, #1 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_02240054: .word 0x022513A0 + thumb_func_end MOD18_02240040 + + thumb_func_start MOD18_02240058 +MOD18_02240058: ; 0x02240058 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224006C ; =0x022513A0 + mov r2, #1 + ldr r0, [r0, #4] + add r3, r2, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224006C: .word 0x022513A0 + thumb_func_end MOD18_02240058 + + thumb_func_start MOD18_02240070 +MOD18_02240070: ; 0x02240070 + push {r3, lr} + add r1, r0, #0 + ldr r0, _02240084 ; =0x022513A0 + mov r2, #2 + ldr r0, [r0, #4] + mov r3, #1 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_02240084: .word 0x022513A0 + thumb_func_end MOD18_02240070 + + thumb_func_start MOD18_02240088 +MOD18_02240088: ; 0x02240088 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224009C ; =0x022513A0 + mov r2, #3 + ldr r0, [r0, #4] + mov r3, #1 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224009C: .word 0x022513A0 + thumb_func_end MOD18_02240088 + + thumb_func_start MOD18_022400A0 +MOD18_022400A0: ; 0x022400A0 + push {r4, lr} + ldr r0, _022400F8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, _022400F8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r3, r0, #0 + ldr r0, _022400F8 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + mov r2, #0 + ldr r0, [r0, #0x40] + bl FUN_021E5B30 + bl MOD18_0223D638 + ldr r2, _022400F8 ; =0x022513A0 + mov r1, #0 + ldr r3, [r2, #4] + ldr r2, _022400FC ; =0x00000B3B + ldrb r2, [r3, r2] + bl MOD18_0224DF04 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x46 + add r3, r2, #0 + bl MOD18_0224DCD8 + add r4, r0, #0 + mov r0, #0x10 + bl FUN_0204F74C + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_022400F8: .word 0x022513A0 +_022400FC: .word 0x00000B3B + thumb_func_end MOD18_022400A0 + + thumb_func_start MOD18_02240100 +MOD18_02240100: ; 0x02240100 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bhi _02240200 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224011A: ; jump table + .short _0224012A - _0224011A - 2 ; case 0 + .short _0224013A - _0224011A - 2 ; case 1 + .short _02240152 - _0224011A - 2 ; case 2 + .short _0224015A - _0224011A - 2 ; case 3 + .short _02240172 - _0224011A - 2 ; case 4 + .short _022401CA - _0224011A - 2 ; case 5 + .short _02240200 - _0224011A - 2 ; case 6 + .short _022401D2 - _0224011A - 2 ; case 7 +_0224012A: + bl MOD18_022400A0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_0224013A: + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_02240152: + add r0, r0, #1 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_0224015A: + mov r0, #1 + str r0, [sp] + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_02240172: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #0x1c + bne _02240190 + ldr r0, _02240204 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02240208 ; =0x00000B3B + ldrb r1, [r1, r0] + add r0, sp, #4 + strb r1, [r0] + mov r0, #0x26 + add r1, sp, #4 + bl FUN_020311D0 +_02240190: + ldr r0, [r4, #0x14] + cmp r0, #0x1e + ble _02240200 + mov r0, #0x10 + bl FUN_0204F774 + mov r0, #1 + str r0, [sp] + sub r1, r0, #5 + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x18] + bl FUN_0204E214 + ldr r0, _0224020C ; =0x0000065F + bl FUN_020054C8 + mov r0, #5 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_022401CA: + mov r0, #6 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_022401D2: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r2, _02240204 ; =0x022513A0 + mov r0, #0xa3 + ldr r3, [r2, #4] + mov r1, #0 + lsl r0, r0, #2 + str r1, [r3, r0] + ldr r2, [r2, #4] + add r0, #0x10 + str r1, [r2, r0] + ldr r0, _0224020C ; =0x0000065F + bl FUN_020054F0 +_02240200: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02240204: .word 0x022513A0 +_02240208: .word 0x00000B3B +_0224020C: .word 0x0000065F + thumb_func_end MOD18_02240100 + + thumb_func_start MOD18_02240210 +MOD18_02240210: ; 0x02240210 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x1c + add r7, r2, #0 + str r3, [sp] + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02240268 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224023E + bl ErrorHandling +_0224023E: + ldr r0, _02240268 ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + str r5, [r4, #8] + str r6, [r4, #0xc] + ldr r0, [sp] + str r7, [r4, #0x10] + str r0, [r4, #0x18] + ldr r0, _0224026C ; =MOD18_02240100 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _02240268 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240268: .word 0x022513A0 +_0224026C: .word MOD18_02240100 + thumb_func_end MOD18_02240210 + + thumb_func_start MOD18_02240270 +MOD18_02240270: ; 0x02240270 + push {r3, lr} + bl FUN_0204E254 + ldr r2, _02240298 ; =0x022513A0 + mov r0, #0xa7 + ldr r1, [r2, #4] + lsl r0, r0, #2 + ldr r3, [r1, r0] + cmp r3, #0 + beq _02240294 + mov r1, #7 + str r1, [r3] + ldr r2, [r2, #4] + mov r1, #0 + str r1, [r2, r0] + ldr r0, _0224029C ; =0x0000065F + bl FUN_020054F0 +_02240294: + pop {r3, pc} + nop +_02240298: .word 0x022513A0 +_0224029C: .word 0x0000065F + thumb_func_end MOD18_02240270 + + thumb_func_start MOD18_022402A0 +MOD18_022402A0: ; 0x022402A0 + push {r4, lr} + bl FUN_0204E254 + ldr r0, _022402EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _022402EA + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, _022402EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r2, _022402EC ; =0x022513A0 + mov r0, #0xa3 + ldr r3, [r2, #4] + mov r1, #0 + lsl r0, r0, #2 + str r1, [r3, r0] + ldr r2, [r2, #4] + add r0, #0x10 + str r1, [r2, r0] + ldr r0, _022402F0 ; =0x0000065F + bl FUN_020054F0 +_022402EA: + pop {r4, pc} + .align 2, 0 +_022402EC: .word 0x022513A0 +_022402F0: .word 0x0000065F + thumb_func_end MOD18_022402A0 + + thumb_func_start MOD18_022402F4 +MOD18_022402F4: ; 0x022402F4 + bx lr + .align 2, 0 + thumb_func_end MOD18_022402F4 + + thumb_func_start MOD18_022402F8 +MOD18_022402F8: ; 0x022402F8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + ldr r0, _02240328 ; =0x022513A0 + add r5, r1, #0 + ldr r0, [r0, #4] + ldr r1, _0224032C ; =0x00000B46 + add r4, r2, #0 + ldrb r1, [r0, r1] + cmp r1, #0 + bne _02240322 + sub r1, r3, #1 + str r1, [sp] + ldr r0, [r0, #0x40] + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl MOD05_021E53B4 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_02240322: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02240328: .word 0x022513A0 +_0224032C: .word 0x00000B46 + thumb_func_end MOD18_022402F8 + + thumb_func_start MOD18_02240330 +MOD18_02240330: ; 0x02240330 + bx lr + .align 2, 0 + thumb_func_end MOD18_02240330 + + thumb_func_start MOD18_02240334 +MOD18_02240334: ; 0x02240334 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x20 + add r7, r2, #0 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02240380 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + add r0, r4, #0 + bl MOD18_0224064C + ldr r0, [r5, #8] + add r1, r4, #0 + str r0, [r4, #0x10] + str r5, [r4, #0x14] + strb r6, [r4, #0x19] + ldr r0, _02240384 ; =MOD18_02240658 + mov r2, #0x64 + strb r7, [r4, #0x18] + bl FUN_0200CA44 + ldr r1, _02240380 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02240380: .word 0x022513A0 +_02240384: .word MOD18_02240658 + thumb_func_end MOD18_02240334 + + thumb_func_start MOD18_02240388 +MOD18_02240388: ; 0x02240388 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, [sp, #0x38] + str r3, [sp, #4] + str r0, [sp, #0x38] + add r0, r2, #0 + sub r0, r5, r0 + add r4, r1, #0 + str r2, [sp] + bl abs + str r0, [sp, #0x20] + ldr r0, [sp, #4] + sub r0, r0, r4 + bl abs + ldr r1, [sp] + mov r7, #0 + cmp r5, r1 + bge _022403B8 + mov r1, #1 + str r1, [sp, #0x1c] + b _022403BC +_022403B8: + sub r1, r7, #1 + str r1, [sp, #0x1c] +_022403BC: + ldr r1, [sp, #4] + cmp r4, r1 + bge _022403C8 + mov r1, #1 + str r1, [sp, #0x18] + b _022403CE +_022403C8: + mov r1, #0 + mvn r1, r1 + str r1, [sp, #0x18] +_022403CE: + ldr r1, [sp, #0x20] + cmp r1, r0 + blt _0224040C + neg r6, r1 + ldr r1, [sp] + cmp r5, r1 + beq _02240442 + lsl r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + lsl r0, r0, #1 + str r0, [sp, #8] +_022403E6: + ldr r2, [sp, #0x38] + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02240564 + add r7, r7, r0 + ldr r0, [sp, #0x1c] + add r5, r5, r0 + ldr r0, [sp, #0xc] + add r6, r6, r0 + bmi _02240404 + ldr r0, [sp, #8] + sub r6, r6, r0 + ldr r0, [sp, #0x18] + add r4, r4, r0 +_02240404: + ldr r0, [sp] + cmp r5, r0 + bne _022403E6 + b _02240442 +_0224040C: + ldr r1, [sp, #4] + neg r6, r0 + cmp r4, r1 + beq _02240442 + ldr r1, [sp, #0x20] + lsl r0, r0, #1 + lsl r1, r1, #1 + str r1, [sp, #0x14] + str r0, [sp, #0x10] +_0224041E: + ldr r2, [sp, #0x38] + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02240564 + add r7, r7, r0 + ldr r0, [sp, #0x18] + add r4, r4, r0 + ldr r0, [sp, #0x14] + add r6, r6, r0 + bmi _0224043C + ldr r0, [sp, #0x10] + sub r6, r6, r0 + ldr r0, [sp, #0x1c] + add r5, r5, r0 +_0224043C: + ldr r0, [sp, #4] + cmp r4, r0 + bne _0224041E +_02240442: + cmp r7, #0 + beq _02240456 + ldr r0, _0224045C ; =0x00000629 + bl FUN_02005508 + cmp r0, #0 + bne _02240456 + ldr r0, _0224045C ; =0x00000629 + bl FUN_020054C8 +_02240456: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224045C: .word 0x00000629 + thumb_func_end MOD18_02240388 + + thumb_func_start MOD18_02240460 +MOD18_02240460: ; 0x02240460 + push {r4, lr} + ldr r0, _022404EC ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _022404E8 + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _02240480 + cmp r1, #0 + beq _02240480 + ldrb r0, [r4, #0x18] + bl MOD18_0223FD8C +_02240480: + ldr r1, _022404F0 ; =0x04000050 + mov r0, #0 + strh r0, [r1] + mov r1, #1 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _022404EC ; =0x022513A0 + mov r1, #2 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl FUN_0201886C + mov r3, #0 + mov r1, #2 + add r2, r3, #0 + lsl r1, r1, #0xa +_022404A4: + strb r2, [r0, r3] + add r3, r3, #2 + cmp r3, r1 + blt _022404A4 + mov r0, #2 + mov r1, #3 + bl FUN_020178BC + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022404EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _022404EC ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_022404E8: + pop {r4, pc} + nop +_022404EC: .word 0x022513A0 +_022404F0: .word 0x04000050 + thumb_func_end MOD18_02240460 + + thumb_func_start MOD18_022404F4 +MOD18_022404F4: ; 0x022404F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp, #4] + add r0, r1, #0 + mov r1, #2 + add r6, r2, #0 + mov r4, #0 + bl FUN_0201886C + add r5, r0, #0 + bne _02240512 + add sp, #8 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_02240512: + ldrh r2, [r6, #8] + ldr r0, _02240560 ; =0x0000FFFF + cmp r2, r0 + beq _02240532 + ldrh r3, [r6, #0xa] + cmp r3, r0 + beq _02240532 + str r5, [sp] + ldrh r0, [r7] + ldrh r1, [r7, #2] + bl MOD18_02240388 + ldr r0, [sp, #4] + mov r1, #2 + bl FUN_02017CD0 +_02240532: + ldrh r0, [r7] + mov r2, #0 + strh r0, [r6, #8] + ldrh r0, [r7, #2] + strh r0, [r6, #0xa] + mov r0, #2 + lsl r0, r0, #0xa +_02240540: + ldrb r1, [r5, r2] + cmp r1, #0 + beq _02240548 + add r4, r4, #1 +_02240548: + add r2, r2, #2 + cmp r2, r0 + blt _02240540 + cmp r4, #0xd + bge _02240558 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02240558: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240560: .word 0x0000FFFF + thumb_func_end MOD18_022404F4 + + thumb_func_start MOD18_02240564 +MOD18_02240564: ; 0x02240564 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r2, #0 + asr r2, r0, #2 + lsr r2, r2, #0x1d + add r2, r0, r2 + asr r0, r2, #3 + asr r2, r1, #2 + lsr r2, r2, #0x1d + add r2, r1, r2 + asr r1, r2, #3 + lsl r1, r1, #5 + add r0, r0, r1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + ldr r4, _02240648 ; =0x022500F4 + str r0, [sp, #4] + add r3, sp, #0xc + mov r2, #4 +_0224058A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224058A + ldr r0, [r4] + mov r1, #2 + str r0, [r3] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #4] + lsl r1, r1, #0xa + cmp r0, r1 + bls _022405AA + ldr r0, [sp, #8] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_022405AA: + ldr r1, [sp, #4] + lsr r0, r0, #0x1f + lsl r2, r1, #0x1a + sub r2, r2, r0 + mov r1, #0x1a + ror r2, r1 + add r0, r0, r2 + ldr r6, [sp, #8] + add r7, sp, #0xc + str r0, [sp] +_022405BE: + ldr r1, [r7] + ldr r0, [sp, #4] + add r4, r0, r1 + ldr r0, [sp] + cmp r0, #0x3e + bne _022405D6 + add r0, r6, #0 + mov r1, #3 + bl _s32_div_f + cmp r1, #2 + beq _02240638 +_022405D6: + ldr r0, [sp] + cmp r0, #0 + bne _022405E8 + add r0, r6, #0 + mov r1, #3 + bl _s32_div_f + cmp r1, #0 + beq _02240638 +_022405E8: + mov r0, #2 + lsl r0, r0, #0xa + cmp r4, r0 + bge _02240638 + cmp r4, #0 + blt _02240638 + ldrb r0, [r5, r4] + cmp r0, #0 + beq _02240638 + mov r1, #1 + str r1, [sp, #8] + cmp r6, #7 + bhi _0224062A + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224060E: ; jump table + .short _0224062A - _0224060E - 2 ; case 0 + .short _02240624 - _0224060E - 2 ; case 1 + .short _0224062A - _0224060E - 2 ; case 2 + .short _02240624 - _0224060E - 2 ; case 3 + .short _0224061E - _0224060E - 2 ; case 4 + .short _02240624 - _0224060E - 2 ; case 5 + .short _0224062A - _0224060E - 2 ; case 6 + .short _02240624 - _0224060E - 2 ; case 7 +_0224061E: + add r0, r0, #3 + strb r0, [r5, r4] + b _0224062E +_02240624: + add r0, r0, #2 + strb r0, [r5, r4] + b _0224062E +_0224062A: + add r0, r0, #1 + strb r0, [r5, r4] +_0224062E: + ldrb r0, [r5, r4] + cmp r0, #5 + bls _02240638 + mov r0, #0 + strb r0, [r5, r4] +_02240638: + add r6, r6, #1 + add r7, r7, #4 + cmp r6, #9 + blo _022405BE + ldr r0, [sp, #8] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240648: .word 0x022500F4 + thumb_func_end MOD18_02240564 + + thumb_func_start MOD18_0224064C +MOD18_0224064C: ; 0x0224064C + ldr r1, _02240654 ; =0x0000FFFF + strh r1, [r0, #8] + strh r1, [r0, #0xa] + bx lr + .align 2, 0 +_02240654: .word 0x0000FFFF + thumb_func_end MOD18_0224064C + + thumb_func_start MOD18_02240658 +MOD18_02240658: ; 0x02240658 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02240666 + b _02240880 +_02240666: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240672: ; jump table + .short _0224068C - _02240672 - 2 ; case 0 + .short _022406A4 - _02240672 - 2 ; case 1 + .short _022406D8 - _02240672 - 2 ; case 2 + .short _022406F6 - _02240672 - 2 ; case 3 + .short _0224079E - _02240672 - 2 ; case 4 + .short _0224079E - _02240672 - 2 ; case 5 + .short _0224079E - _02240672 - 2 ; case 6 + .short _022407DE - _02240672 - 2 ; case 7 + .short _02240836 - _02240672 - 2 ; case 8 + .short _02240842 - _02240672 - 2 ; case 9 + .short _02240880 - _02240672 - 2 ; case 10 + .short _02240850 - _02240672 - 2 ; case 11 + .short _0224086C - _02240672 - 2 ; case 12 +_0224068C: + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + bl MOD18_022400A0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022406A4: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r1, #0 + mov r0, #0x12 + str r1, [sp] + lsl r0, r0, #4 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #0x10] + mov r0, #0x32 + mov r1, #9 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022406D8: + mov r0, #0x20 + str r0, [sp] + mov r0, #4 + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0xa + add r3, r2, #0 + bl FUN_02006930 + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022406F6: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _02240884 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02240888 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x13 + bne _0224072E + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #0x10] + mov r0, #0x32 + mov r1, #8 + mov r3, #2 + bl FUN_020068C8 + b _02240774 +_0224072E: + ldr r1, _0224088C ; =0x022500A8 + add r0, sp, #0x10 + ldrh r2, [r1, #0x10] + strh r2, [r0, #4] + ldrh r2, [r1, #0x12] + strh r2, [r0, #6] + ldrh r2, [r1, #0x14] + ldrh r1, [r1, #0x16] + strh r2, [r0, #8] + strh r1, [r0, #0xa] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r1, r0, #0x10 + mov r2, #0 + mov r0, #6 + str r2, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + lsr r2, r1, #0xf + add r1, sp, #0x14 + ldrh r1, [r1, r2] + ldr r2, [r4, #0x10] + mov r0, #0x32 + mov r3, #2 + bl FUN_020068C8 +_02240774: + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #3 + mov r1, #0 + bl FUN_020178BC + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_0224079E: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0x1e + ble _02240880 + mov r0, #1 + sub r1, r0, #5 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #7 + str r0, [r4] + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4d + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, _02240890 ; =0x00000661 + bl FUN_020054C8 + add sp, #0x1c + pop {r3, r4, pc} +_022407DE: + ldr r1, _02240894 ; =0x021C48F8 + ldrh r0, [r1, #0x22] + cmp r0, #0 + beq _02240816 + ldrh r2, [r1, #0x1c] + add r0, sp, #0x10 + strh r2, [r0] + ldrh r1, [r1, #0x1e] + add r2, r4, #0 + strh r1, [r0, #2] + ldr r1, [r4, #0x10] + add r0, sp, #0x10 + bl MOD18_022404F4 + cmp r0, #0 + beq _0224081C + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _0224080A + mov r0, #0xb + str r0, [r4] + b _0224081C +_0224080A: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] + b _0224081C +_02240816: + add r0, r4, #0 + bl MOD18_0224064C +_0224081C: + ldr r0, [r4, #0x1c] + cmp r0, #0x3c + bge _02240880 + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x3c + bne _02240880 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x1c + pop {r3, r4, pc} +_02240836: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x1c + pop {r3, r4, pc} +_02240842: + bl FUN_02031190 + ldrb r1, [r4, #0x19] + bl MOD18_02240460 + add sp, #0x1c + pop {r3, r4, pc} +_02240850: + mov r0, #0 + strb r0, [r4, #0x19] + mov r0, #0x10 + bl FUN_0204F774 + ldrb r0, [r4, #0x18] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #0xc + add sp, #0x1c + str r0, [r4] + pop {r3, r4, pc} +_0224086C: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #8 + ble _02240880 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02240880: + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_02240884: .word 0x022513A0 +_02240888: .word 0x00000B3B +_0224088C: .word 0x022500A8 +_02240890: .word 0x00000661 +_02240894: .word 0x021C48F8 + thumb_func_end MOD18_02240658 + + thumb_func_start MOD18_02240898 +MOD18_02240898: ; 0x02240898 + mov r0, #4 + bx lr + thumb_func_end MOD18_02240898 + + thumb_func_start MOD18_0224089C +MOD18_0224089C: ; 0x0224089C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl FUN_0204D830 + cmp r0, #0 + beq _022408E4 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _022408F4 ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _022408F8 ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 + add r0, r4, #0 + bl MOD18_022475F8 + add r1, sp, #0 + strb r0, [r1, #3] + ldr r0, _022408F4 ; =0x022513A0 + ldr r0, [r0, #4] + add r2, r0, r4 + ldr r0, _022408F8 ; =0x00000B3C + ldrb r0, [r2, r0] + strb r0, [r1] + strb r4, [r1, #1] + mov r0, #1 + strb r0, [r1, #2] + mov r0, #0x2a + add r1, sp, #0 + bl FUN_02030C4C +_022408E4: + ldr r0, _022408F4 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _022408F8 ; =0x00000B3C + strb r2, [r1, r0] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022408F4: .word 0x022513A0 +_022408F8: .word 0x00000B3C + thumb_func_end MOD18_0224089C + + thumb_func_start MOD18_022408FC +MOD18_022408FC: ; 0x022408FC + push {r4, lr} + add r4, r0, #0 + bl FUN_0204E778 + ldr r0, _0224093C ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _02240940 ; =0x00000B3C + ldrb r1, [r1, r0] + cmp r1, #0 + beq _02240918 + add r0, r4, #0 + bl MOD18_0223FCD4 +_02240918: + ldr r1, _0224093C ; =0x022513A0 + mov r3, #0 + ldr r0, [r1, #4] + add r2, r0, r4 + ldr r0, _02240940 ; =0x00000B3C + strb r3, [r2, r0] + ldr r1, [r1, #4] + sub r0, #0x71 + add r3, r1, r0 + lsl r2, r4, #3 + ldrb r1, [r3, r2] + mov r0, #0x80 + bic r1, r0 + add r0, r4, #0 + strb r1, [r3, r2] + bl MOD18_022475F8 + pop {r4, pc} + .align 2, 0 +_0224093C: .word 0x022513A0 +_02240940: .word 0x00000B3C + thumb_func_end MOD18_022408FC + + thumb_func_start MOD18_02240944 +MOD18_02240944: ; 0x02240944 + push {r4, r5, r6, lr} + add r4, r2, #0 + ldrb r0, [r4, #2] + ldrb r5, [r4] + cmp r0, #0 + ldrb r0, [r4, #1] + beq _02240958 + bl FUN_0204F08C + b _0224095C +_02240958: + bl FUN_0204F0A8 +_0224095C: + ldrb r0, [r4, #1] + bl MOD18_02243FB8 + ldrb r6, [r4, #1] + bl FUN_02031190 + cmp r6, r0 + bne _02240986 + ldr r0, _022409C0 ; =0x02250348 + lsl r1, r5, #2 + ldr r2, [r0, r1] + cmp r2, #0 + beq _0224097C + ldrb r1, [r4, #3] + add r0, r6, #0 + blx r2 +_0224097C: + ldr r0, _022409C4 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _022409C8 ; =0x00000B3B + strb r2, [r1, r0] +_02240986: + sub r5, #0x18 + cmp r5, #3 + bhi _022409A0 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240998: ; jump table + .short _022409AE - _02240998 - 2 ; case 0 + .short _022409AE - _02240998 - 2 ; case 1 + .short _022409AE - _02240998 - 2 ; case 2 + .short _022409AE - _02240998 - 2 ; case 3 +_022409A0: + ldr r0, _022409C4 ; =0x022513A0 + mov r2, #1 + ldr r1, [r0, #4] + ldrb r0, [r4, #1] + add r1, r1, r0 + ldr r0, _022409CC ; =0x00000B1C + strb r2, [r1, r0] +_022409AE: + bl FUN_02031190 + cmp r0, #0 + beq _022409BC + ldrb r0, [r4, #1] + bl FUN_0204E778 +_022409BC: + pop {r4, r5, r6, pc} + nop +_022409C0: .word 0x02250348 +_022409C4: .word 0x022513A0 +_022409C8: .word 0x00000B3B +_022409CC: .word 0x00000B1C + thumb_func_end MOD18_02240944 + + thumb_func_start MOD18_022409D0 +MOD18_022409D0: ; 0x022409D0 + push {r3, lr} + ldr r0, _022409E8 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _022409EC ; =0x00000B3B + ldrb r0, [r1, r0] + sub r0, #0xb + cmp r0, #1 + bhi _022409E6 + ldrb r0, [r2] + bl MOD18_02241008 +_022409E6: + pop {r3, pc} + .align 2, 0 +_022409E8: .word 0x022513A0 +_022409EC: .word 0x00000B3B + thumb_func_end MOD18_022409D0 + + thumb_func_start MOD18_022409F0 +MOD18_022409F0: ; 0x022409F0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _02240A3C ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _02240A40 ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 + add r1, sp, #0 + strb r4, [r1, #1] + ldr r0, _02240A3C ; =0x022513A0 + strb r5, [r1] + ldr r0, [r0, #4] + add r2, r0, r4 + ldr r0, _02240A40 ; =0x00000B3C + ldrb r0, [r2, r0] + strb r0, [r1, #2] + mov r0, #0x2c + add r1, sp, #0 + bl FUN_02030C4C + ldr r0, _02240A3C ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + add r2, r0, r4 + ldr r0, _02240A40 ; =0x00000B3C + strb r1, [r2, r0] + add r0, r5, #0 + bl FUN_0204EAD8 + pop {r3, r4, r5, pc} + nop +_02240A3C: .word 0x022513A0 +_02240A40: .word 0x00000B3C + thumb_func_end MOD18_022409F0 + + thumb_func_start MOD18_02240A44 +MOD18_02240A44: ; 0x02240A44 + push {r3, r4, r5, lr} + ldr r0, _02240B10 ; =0x022513A0 + add r4, r2, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CB4 + add r5, r0, #0 + ldrb r0, [r4, #1] + bl FUN_0204F08C + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02240AA6 + add r0, r5, #0 + bl FUN_02026B58 + ldr r0, _02240B10 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x22 + bl FUN_0202A170 + bl FUN_0204F7E4 + bl MOD18_0223D638 + add r5, r0, #0 + ldrb r0, [r4, #1] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + ldr r3, _02240B14 ; =MOD18_0223ECDC + mov r1, #0x47 + mov r2, #1 + bl MOD18_0224DCB8 +_02240AA6: + ldrb r0, [r4, #1] + bl MOD18_02243FB8 + ldrb r5, [r4, #1] + bl FUN_02031190 + cmp r5, r0 + bne _02240AF2 + ldr r0, _02240B10 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02240B18 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02240AF2 + lsl r1, r0, #2 + ldr r0, _02240B1C ; =0x022503D4 + ldr r2, [r0, r1] + cmp r2, #0 + beq _02240AD2 + add r0, r5, #0 + mov r1, #0 + blx r2 +_02240AD2: + ldr r1, _02240B10 ; =0x022513A0 + mov r0, #0x2a + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #4 + str r3, [r2, r0] + ldr r1, [r1, #4] + ldr r0, _02240B18 ; =0x00000B3B + strb r3, [r1, r0] + mov r0, #0x10 + bl FUN_0204F774 + bl MOD18_0223D638 + bl MOD18_0224DD94 +_02240AF2: + bl FUN_02031190 + cmp r0, #0 + beq _02240B00 + ldrb r0, [r4, #1] + bl FUN_0204E778 +_02240B00: + ldr r0, _02240B10 ; =0x022513A0 + ldrb r2, [r4, #1] + ldr r1, [r0, #4] + ldrb r0, [r4] + add r1, r1, r0 + ldr r0, _02240B20 ; =0x00000B04 + strb r2, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02240B10: .word 0x022513A0 +_02240B14: .word MOD18_0223ECDC +_02240B18: .word 0x00000B3B +_02240B1C: .word 0x022503D4 +_02240B20: .word 0x00000B04 + thumb_func_end MOD18_02240A44 + + thumb_func_start MOD18_02240B24 +MOD18_02240B24: ; 0x02240B24 + mov r0, #3 + bx lr + thumb_func_end MOD18_02240B24 + + thumb_func_start MOD18_02240B28 +MOD18_02240B28: ; 0x02240B28 + push {r4, lr} + ldr r1, _02240B58 ; =0x022513A0 + ldr r2, [r1, #4] + cmp r2, #0 + beq _02240B52 + mov r1, #0xa6 + lsl r1, r1, #2 + ldr r4, [r2, r1] + cmp r4, #0 + beq _02240B52 + sub r1, #0xb6 + ldrh r1, [r4, r1] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x50 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + ldrh r0, [r4, r0] + pop {r4, pc} +_02240B52: + mov r0, #0 + pop {r4, pc} + nop +_02240B58: .word 0x022513A0 + thumb_func_end MOD18_02240B28 + + thumb_func_start MOD18_02240B5C +MOD18_02240B5C: ; 0x02240B5C + push {r4, lr} + ldr r1, _02240B8C ; =0x022513A0 + ldr r2, [r1, #4] + cmp r2, #0 + beq _02240B88 + mov r1, #0xa6 + lsl r1, r1, #2 + ldr r4, [r2, r1] + cmp r4, #0 + beq _02240B88 + sub r1, #0xb6 + ldrh r1, [r4, r1] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x50 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #2] + pop {r4, pc} +_02240B88: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02240B8C: .word 0x022513A0 + thumb_func_end MOD18_02240B5C + + thumb_func_start MOD18_02240B90 +MOD18_02240B90: ; 0x02240B90 + push {r4, lr} + ldr r0, _02240BB0 ; =0x000001E2 + add r4, r1, #0 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r0, [r4, r0] + cmp r0, #0xa0 + bls _02240BAE + ldr r0, _02240BB4 ; =0x00000621 + bl FUN_020054C8 + ldr r0, _02240BB0 ; =0x000001E2 + mov r1, #0 + strh r1, [r4, r0] +_02240BAE: + pop {r4, pc} + .align 2, 0 +_02240BB0: .word 0x000001E2 +_02240BB4: .word 0x00000621 + thumb_func_end MOD18_02240B90 + + thumb_func_start MOD18_02240BB8 +MOD18_02240BB8: ; 0x02240BB8 + push {r4, lr} + ldr r0, _02240C0C ; =0x022513A0 + mov r1, #0xa6 + ldr r2, [r0, #4] + lsl r1, r1, #2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _02240C08 + sub r0, r1, #4 + ldr r0, [r2, r0] + cmp r0, #0 + bne _02240C08 + mov r0, #4 + sub r1, #0xb4 + bl FUN_020169D8 + mov r2, #0x79 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x2e + bl FUN_020311DC + ldr r0, _02240C0C ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa6 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _02240C10 ; =MOD18_02240B90 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _02240C0C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa5 + lsl r1, r1, #2 + str r0, [r2, r1] +_02240C08: + pop {r4, pc} + nop +_02240C0C: .word 0x022513A0 +_02240C10: .word MOD18_02240B90 + thumb_func_end MOD18_02240BB8 + + thumb_func_start MOD18_02240C14 +MOD18_02240C14: ; 0x02240C14 + push {r3, lr} + ldr r0, _02240C6C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa5 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02240C68 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02240C70 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + ldr r0, _02240C6C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa5 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02240C6C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02240C6C ; =0x022513A0 + mov r0, #0xa5 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, r0, #4 + str r3, [r1, r0] +_02240C68: + pop {r3, pc} + nop +_02240C6C: .word 0x022513A0 +_02240C70: .word 0x04000050 + thumb_func_end MOD18_02240C14 + + thumb_func_start MOD18_02240C74 +MOD18_02240C74: ; 0x02240C74 + ldr r1, _02240C84 ; =0x022513A0 + lsl r0, r0, #1 + ldr r1, [r1, #4] + mov r2, #1 + add r1, r1, r0 + ldr r0, _02240C88 ; =0x00000B0C + strh r2, [r1, r0] + bx lr + .align 2, 0 +_02240C84: .word 0x022513A0 +_02240C88: .word 0x00000B0C + thumb_func_end MOD18_02240C74 + + thumb_func_start MOD18_02240C8C +MOD18_02240C8C: ; 0x02240C8C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r5, #0 + str r5, [sp] +_02240C94: + ldr r0, _02240D20 ; =0x022513A0 + ldr r1, _02240D24 ; =0x00000B0C + ldr r0, [r0, #4] + add r2, r0, r5 + ldrh r1, [r2, r1] + sub r4, r1, #1 + cmp r1, #0 + beq _02240D10 + lsl r7, r4, #2 +_02240CA6: + add r1, r0, r7 + ldr r0, _02240D28 ; =0x000007C4 + ldr r6, [r1, r0] + cmp r6, #0 + beq _02240CEA + ldrb r0, [r6, #4] + cmp r0, #0 + beq _02240CEA + add r0, r6, #0 + bl MOD18_0223F6F8 + ldr r1, [sp] + cmp r0, r1 + beq _02240CC6 + cmp r0, #8 + blt _02240CEA +_02240CC6: + ldrh r0, [r6] + add r1, sp, #4 + strh r0, [r1] + ldrh r0, [r6, #2] + strh r0, [r1, #2] + ldr r0, [sp] + strb r0, [r1, #4] + mov r0, #0x2f + add r1, sp, #4 + bl FUN_02030C4C + ldr r0, _02240D20 ; =0x022513A0 + add r2, r4, #2 + ldr r0, [r0, #4] + add r1, r0, r5 + ldr r0, _02240D24 ; =0x00000B0C + strh r2, [r1, r0] + b _02240D10 +_02240CEA: + add r4, r4, #1 + add r7, r7, #4 + cmp r4, #0xc0 + blt _02240D00 + ldr r0, _02240D20 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r5 + ldr r0, _02240D24 ; =0x00000B0C + strh r2, [r1, r0] + b _02240D10 +_02240D00: + ldr r0, _02240D20 ; =0x022513A0 + ldr r1, _02240D24 ; =0x00000B0C + ldr r0, [r0, #4] + add r2, r5, r0 + ldrh r1, [r2, r1] + sub r1, r1, #1 + cmp r4, r1 + bne _02240CA6 +_02240D10: + ldr r0, [sp] + add r5, r5, #2 + add r0, r0, #1 + str r0, [sp] + cmp r0, #8 + blt _02240C94 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240D20: .word 0x022513A0 +_02240D24: .word 0x00000B0C +_02240D28: .word 0x000007C4 + thumb_func_end MOD18_02240C8C + + thumb_func_start MOD18_02240D2C +MOD18_02240D2C: ; 0x02240D2C + push {r3, r4, r5, lr} + ldr r0, _02240D94 ; =0x022513A0 + add r4, r2, #0 + ldr r1, [r0, #4] + mov r0, #0xa6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02240D90 + bl FUN_02031190 + ldrb r1, [r4, #4] + cmp r1, r0 + bne _02240D90 + ldr r0, _02240D94 ; =0x022513A0 + mov r1, #0xa6 + ldr r0, [r0, #4] + lsl r1, r1, #2 + ldr r5, [r0, r1] + sub r1, #0xb8 + ldrb r1, [r5, r1] + mov r2, #6 + add r0, r4, #0 + add r3, r1, #0 + mul r3, r2 + add r1, r5, r3 + bl MI_CpuCopy8 + ldr r2, _02240D94 ; =0x022513A0 + mov r1, #0xa6 + ldr r0, [r2, #4] + lsl r1, r1, #2 + ldr r4, [r0, r1] + add r0, r1, #0 + sub r0, #0xb8 + ldrb r0, [r4, r0] + add r3, r0, #1 + add r0, r1, #0 + sub r0, #0xb8 + strb r3, [r4, r0] + ldr r0, [r2, #4] + ldr r2, [r0, r1] + add r0, r1, #0 + sub r0, #0xb8 + ldrb r0, [r2, r0] + cmp r0, #0x50 + blo _02240D90 + mov r0, #0 + sub r1, #0xb8 + strb r0, [r2, r1] +_02240D90: + pop {r3, r4, r5, pc} + nop +_02240D94: .word 0x022513A0 + thumb_func_end MOD18_02240D2C + + thumb_func_start MOD18_02240D98 +MOD18_02240D98: ; 0x02240D98 + mov r0, #6 + bx lr + thumb_func_end MOD18_02240D98 + + thumb_func_start MOD18_02240D9C +MOD18_02240D9C: ; 0x02240D9C + push {r4, lr} + add r4, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _02240DC0 + ldr r1, _02240DC4 ; =0x022513A0 + mov r0, #0xa7 + ldr r2, [r1, #4] + lsl r0, r0, #2 + ldr r3, [r2, r0] + cmp r3, #0 + beq _02240DC0 + mov r2, #2 + str r2, [r3] + ldr r1, [r1, #4] + mov r2, #0 + str r2, [r1, r0] +_02240DC0: + pop {r4, pc} + nop +_02240DC4: .word 0x022513A0 + thumb_func_end MOD18_02240D9C + + thumb_func_start MOD18_02240DC8 +MOD18_02240DC8: ; 0x02240DC8 + push {r3, lr} + ldr r0, _02240E24 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02240E20 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02240E28 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + bl FUN_020307D0 + ldr r0, _02240E24 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02240E24 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02240E24 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240E20: + pop {r3, pc} + nop +_02240E24: .word 0x022513A0 +_02240E28: .word 0x04000050 + thumb_func_end MOD18_02240DC8 + + thumb_func_start MOD18_02240E2C +MOD18_02240E2C: ; 0x02240E2C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02240E42 + cmp r0, #1 + beq _02240EDC + cmp r0, #2 + beq _02240EA4 + pop {r3, r4, r5, pc} +_02240E42: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #1 + bne _02240E54 + bl MOD18_022400A0 + str r0, [r4, #4] + b _02240E7A +_02240E54: + cmp r0, #2 + bne _02240E68 + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + b _02240E7A +_02240E68: + cmp r0, #4 + bne _02240E7A + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 +_02240E7A: + ldr r0, [r4, #0x10] + cmp r0, #0x1e + ble _02240EDC + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #1 + str r0, [r4] + ldr r0, [r4, #8] + cmp r0, #0 + beq _02240E98 + bl FUN_020307BC + b _02240E9C +_02240E98: + bl FUN_020307A8 +_02240E9C: + mov r0, #0x10 + bl FUN_0204F774 + pop {r3, r4, r5, pc} +_02240EA4: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02240EE0 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + bl FUN_020307D0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r1, _02240EE4 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240EDC: + pop {r3, r4, r5, pc} + nop +_02240EE0: .word 0x04000050 +_02240EE4: .word 0x022513A0 + thumb_func_end MOD18_02240E2C + + thumb_func_start MOD18_02240EE8 +MOD18_02240EE8: ; 0x02240EE8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x14 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + str r5, [r4, #8] + str r0, [r4, #0x10] + ldr r0, _02240F2C ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _02240F30 ; =MOD18_02240E2C + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _02240F2C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0x10 + bl FUN_0204F74C + pop {r3, r4, r5, pc} + .align 2, 0 +_02240F2C: .word 0x022513A0 +_02240F30: .word MOD18_02240E2C + thumb_func_end MOD18_02240EE8 + + thumb_func_start MOD18_02240F34 +MOD18_02240F34: ; 0x02240F34 + push {r4, lr} + add r4, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _02240F7E + ldr r0, _02240F80 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _02240F7E + ldr r0, [r1, #0x40] + mov r1, #0 + ldr r0, [r0, #0x38] + bl FUN_02055540 + ldr r0, _02240F80 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _02240F80 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240F7E: + pop {r4, pc} + .align 2, 0 +_02240F80: .word 0x022513A0 + thumb_func_end MOD18_02240F34 + + thumb_func_start MOD18_02240F84 +MOD18_02240F84: ; 0x02240F84 + push {r3, r4, r5, lr} + ldr r0, _02241000 ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _02240FFE + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02240FA4 + bl FUN_02064520 + mov r0, #0 + str r0, [r4, #0x14] +_02240FA4: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02240FB4 + cmp r5, #0 + beq _02240FB4 + ldrb r0, [r4, #0xc] + bl MOD18_0223FD8C +_02240FB4: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02241004 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + ldr r0, _02241000 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + ldr r0, _02241000 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _02241000 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240FFE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02241000: .word 0x022513A0 +_02241004: .word 0x04000050 + thumb_func_end MOD18_02240F84 + + thumb_func_start MOD18_02241008 +MOD18_02241008: ; 0x02241008 + push {r4, lr} + add r4, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _0224102C + ldr r0, _02241030 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r1, [r1, r0] + cmp r1, #0 + beq _0224102C + mov r0, #0xe + str r0, [r1] + ldr r0, _02241034 ; =0x0000060B + bl FUN_020054C8 +_0224102C: + pop {r4, pc} + nop +_02241030: .word 0x022513A0 +_02241034: .word 0x0000060B + thumb_func_end MOD18_02241008 + + thumb_func_start MOD18_02241038 +MOD18_02241038: ; 0x02241038 + push {r4, r5, lr} + sub sp, #0x14 + ldr r3, _02241274 ; =0x022500CC + add r4, r1, #0 + add r5, r0, #0 + add r2, sp, #4 + mov r1, #0xf +_02241046: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02241046 + ldr r0, [r4] + cmp r0, #0xe + bhi _0224110A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241064: ; jump table + .short _02241082 - _02241064 - 2 ; case 0 + .short _02241096 - _02241064 - 2 ; case 1 + .short _022410AE - _02241064 - 2 ; case 2 + .short _022410B6 - _02241064 - 2 ; case 3 + .short _022410CE - _02241064 - 2 ; case 4 + .short _02241100 - _02241064 - 2 ; case 5 + .short _02241100 - _02241064 - 2 ; case 6 + .short _0224118C - _02241064 - 2 ; case 7 + .short _0224126E - _02241064 - 2 ; case 8 + .short _022411B0 - _02241064 - 2 ; case 9 + .short _0224126E - _02241064 - 2 ; case 10 + .short _022411E0 - _02241064 - 2 ; case 11 + .short _022411FC - _02241064 - 2 ; case 12 + .short _0224126E - _02241064 - 2 ; case 13 + .short _02241222 - _02241064 - 2 ; case 14 +_02241082: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, pc} +_02241096: + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, pc} +_022410AE: + add r0, r0, #1 + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_022410B6: + mov r0, #1 + str r0, [sp] + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, pc} +_022410CE: + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x3c + ble _022410E6 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x1c] + pop {r4, r5, pc} +_022410E6: + ldrb r0, [r4, #0xc] + mov r1, #1 + bl MOD18_0223FDEC + cmp r0, #0 + beq _0224110A + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x1c] + pop {r4, r5, pc} +_02241100: + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x1e + bgt _0224110C +_0224110A: + b _0224126E +_0224110C: + mov r0, #0x10 + bl FUN_0204F774 + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #7 + str r0, [r4] + ldr r0, _02241278 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, _02241278 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _02241166 + mov r0, #0x20 + str r0, [sp] + ldr r0, _02241278 ; =0x022513A0 + add r1, r5, #0 + ldr r0, [r0, #4] + mov r3, #2 + ldr r0, [r0, #0x40] + bl MOD05_021E53B4 + str r0, [r4, #0x14] + ldr r0, _02241278 ; =0x022513A0 + ldr r1, _0224127C ; =0xFFFFE000 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + add sp, #0x14 + pop {r4, r5, pc} +_02241166: + mov r0, #0x20 + str r0, [sp] + ldr r0, _02241278 ; =0x022513A0 + add r1, r5, #0 + ldr r0, [r0, #4] + mov r3, #3 + ldr r0, [r0, #0x40] + bl MOD05_021E53B4 + str r0, [r4, #0x14] + ldr r0, _02241278 ; =0x022513A0 + ldr r1, _02241280 ; =0xFFFFD000 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + add sp, #0x14 + pop {r4, r5, pc} +_0224118C: + ldr r0, _02241278 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r5, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, r5 + beq _022411A6 + ldr r0, _02241284 ; =0x000005EB + bl FUN_020054C8 +_022411A6: + str r5, [r4, #0x18] + mov r0, #0 + add sp, #0x14 + str r0, [r4, #0x10] + pop {r4, r5, pc} +_022411B0: + ldr r0, _02241278 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r1, _02241278 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] + add sp, #0x14 + pop {r4, r5, pc} +_022411E0: + mov r0, #0 + strb r0, [r4, #0xd] + mov r0, #0x10 + bl FUN_0204F774 + ldrb r0, [r4, #0xc] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0x1c] + mov r0, #0xc + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_022411FC: + ldr r0, [r4, #0x1c] + mov r1, #0 + add r0, r0, #1 + str r0, [r4, #0x1c] + ldrb r0, [r4, #0xc] + bl MOD18_0223FDEC + cmp r0, #0 + bne _02241214 + ldr r0, [r4, #0x1c] + cmp r0, #0x3c + ble _0224126E +_02241214: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_02241222: + ldr r1, [r4, #0x10] + add r0, sp, #4 + ldrsb r1, [r0, r1] + mov r0, #9 + mvn r0, r0 + cmp r1, r0 + beq _0224126E + ldr r0, _02241278 ; =0x022513A0 + lsl r1, r1, #0xc + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #5 + bne _0224126E + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02241256 + bl FUN_02064520 + mov r0, #0 + str r0, [r4, #0x14] +_02241256: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02241264 + mov r0, #0xb + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_02241264: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #9 + str r0, [r4] +_0224126E: + add sp, #0x14 + pop {r4, r5, pc} + nop +_02241274: .word 0x022500CC +_02241278: .word 0x022513A0 +_0224127C: .word 0xFFFFE000 +_02241280: .word 0xFFFFD000 +_02241284: .word 0x000005EB + thumb_func_end MOD18_02241038 + + thumb_func_start MOD18_02241288 +MOD18_02241288: ; 0x02241288 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x24 + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x24 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + str r5, [r4, #8] + str r0, [r4, #0x10] + ldr r0, _022412DC ; =0x022513A0 + strb r6, [r4, #0xd] + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + str r0, [r4, #0x18] + ldr r0, _022412DC ; =0x022513A0 + strb r7, [r4, #0xc] + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022412E0 ; =MOD18_02241038 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _022412DC ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022412DC: .word 0x022513A0 +_022412E0: .word MOD18_02241038 + thumb_func_end MOD18_02241288 + + thumb_func_start MOD18_022412E4 +MOD18_022412E4: ; 0x022412E4 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #4 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02241304 + mov r0, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD18_02241288 +_02241304: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_022412E4 + + thumb_func_start MOD18_02241308 +MOD18_02241308: ; 0x02241308 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #4 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02241328 + mov r0, #1 + add r1, r4, #0 + add r2, r6, #0 + bl MOD18_02241288 +_02241328: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_02241308 + + thumb_func_start MOD18_0224132C +MOD18_0224132C: ; 0x0224132C + push {r4, lr} + add r4, r0, #0 + bl FUN_0204E778 + add r0, r4, #0 + bl FUN_0204F69C + pop {r4, pc} + thumb_func_end MOD18_0224132C + + thumb_func_start MOD18_0224133C +MOD18_0224133C: ; 0x0224133C + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0xa + bl FUN_0204F678 + pop {r4, pc} + thumb_func_end MOD18_0224133C + + thumb_func_start MOD18_02241350 +MOD18_02241350: ; 0x02241350 + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0x14 + bl FUN_0204F678 + pop {r4, pc} + thumb_func_end MOD18_02241350 + + thumb_func_start MOD18_02241364 +MOD18_02241364: ; 0x02241364 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r0, #0 + add r0, sp, #0xc + bl FUN_020312BC + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r7, r0] + mov r4, #0 + cmp r0, #0 + ble _0224141A + mov r0, #0 + add r5, r7, #0 + add r6, r7, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] +_02241388: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r0, r2 + str r0, [sp, #0xc] + adc r1, r3 + ldr r0, [sp] + str r1, [sp, #0x10] + lsl r2, r0, #8 + lsr r1, r1, #0x18 + add r0, r5, #0 + orr r2, r1 + add r0, #0x48 + strh r2, [r0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r0, r2 + adc r1, r3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r0, r1, #0 + ldr r1, [sp, #4] + mov r2, #0xc0 + mov r3, #0 + bl _ll_mul + add r0, r5, #0 + add r0, #0x4a + strh r1, [r0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r0, r2 + adc r1, r3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r0, r1, #0 + ldr r1, [sp, #8] + ldr r2, _02241420 ; =0x0000FFFF + mov r3, #0 + bl _ll_mul + mov r0, #0x45 + strh r1, [r6, #8] + lsl r0, r0, #2 + ldrb r0, [r7, r0] + add r4, r4, #1 + add r5, r5, #4 + add r6, r6, #2 + cmp r4, r0 + blt _02241388 +_0224141A: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02241420: .word 0x0000FFFF + thumb_func_end MOD18_02241364 + + thumb_func_start MOD18_02241424 +MOD18_02241424: ; 0x02241424 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02241432 + b _02241698 +_02241432: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224143E: ; jump table + .short _02241458 - _0224143E - 2 ; case 0 + .short _02241472 - _0224143E - 2 ; case 1 + .short _022414BE - _0224143E - 2 ; case 2 + .short _02241500 - _0224143E - 2 ; case 3 + .short _0224154C - _0224143E - 2 ; case 4 + .short _0224158A - _0224143E - 2 ; case 5 + .short _022415C0 - _0224143E - 2 ; case 6 + .short _022415FA - _0224143E - 2 ; case 7 + .short _02241642 - _0224143E - 2 ; case 8 + .short _0224164E - _0224143E - 2 ; case 9 + .short _02241698 - _0224143E - 2 ; case 10 + .short _0224165E - _0224143E - 2 ; case 11 + .short _02241680 - _0224143E - 2 ; case 12 +_02241458: + bl MOD18_022400A0 + str r0, [r4, #4] + ldr r0, _0224169C ; =0x00000111 + mov r1, #0 + strb r1, [r4, r0] + bl MOD18_022417B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241472: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _02241490 + mov r2, #2 + b _02241492 +_02241490: + mov r2, #0x1c +_02241492: + mov r3, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x17 + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_02008F34 + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022414BE: + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _022414CE + mov r2, #3 + b _022414D0 +_022414CE: + mov r2, #0x1d +_022414D0: + mov r3, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #7 + str r1, [sp, #8] + mov r1, #4 + str r1, [sp, #0xc] + mov r1, #0x5d + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241500: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _0224151E + mov r2, #1 + b _02241520 +_0224151E: + mov r2, #0x1b +_02241520: + mov r3, #0 + str r3, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5e + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224154C: + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _0224155C + mov r2, #0 + b _0224155E +_0224155C: + mov r2, #0x1a +_0224155E: + mov r3, #0 + str r3, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5f + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224158A: + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl MOD18_022418DC + add r0, r4, #0 + bl MOD18_02241364 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022415C0: + ldr r0, _0224169C ; =0x00000111 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0x1e + bls _02241698 + mov r0, #1 + sub r1, r0, #5 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4c + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #7 + str r0, [r4] + mov r0, #0x46 + mov r1, #0 + lsl r0, r0, #2 + add sp, #0x10 + str r1, [r4, r0] + pop {r4, pc} +_022415FA: + ldr r0, _022416A0 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02241AD0 + cmp r0, #0 + beq _02241622 + ldr r0, _022416A8 ; =0x00000113 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _02241618 + mov r0, #0xb + str r0, [r4] + b _02241622 +_02241618: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02241622: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0x3c + bge _02241698 + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x3c + bne _02241698 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_02241642: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_0224164E: + bl FUN_02031190 + ldr r1, _022416A8 ; =0x00000113 + ldrb r1, [r4, r1] + bl MOD18_022416B0 + add sp, #0x10 + pop {r4, pc} +_0224165E: + ldr r0, _022416A8 ; =0x00000113 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022416AC ; =0x00000112 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C + ldr r0, _0224169C ; =0x00000111 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r4, pc} +_02241680: + ldr r0, _0224169C ; =0x00000111 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #8 + bls _02241698 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02241698: + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0224169C: .word 0x00000111 +_022416A0: .word 0x022513A0 +_022416A4: .word 0x00000B3B +_022416A8: .word 0x00000113 +_022416AC: .word 0x00000112 + thumb_func_end MOD18_02241424 + + thumb_func_start MOD18_022416B0 +MOD18_022416B0: ; 0x022416B0 + push {r3, r4, lr} + sub sp, #4 + ldr r0, _02241730 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _0224172C + ldr r0, _02241734 ; =0x00000113 + ldrb r2, [r4, r0] + cmp r2, #0 + beq _022416D6 + cmp r1, #0 + beq _022416D6 + sub r0, r0, #1 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C +_022416D6: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + mov r0, #1 + mov r1, #0 + sub r2, r1, #4 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl MOD18_02241800 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _02241730 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02241730 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02241730 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_0224172C: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02241730: .word 0x022513A0 +_02241734: .word 0x00000113 + thumb_func_end MOD18_022416B0 + + thumb_func_start MOD18_02241738 +MOD18_02241738: ; 0x02241738 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x12 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + add r7, r2, #0 + bl FUN_02016998 + mov r2, #0x12 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _022417A0 ; =0x00000113 + add r1, r0, #0 + strb r6, [r4, r0] + add r1, #9 + str r5, [r4, r1] + ldr r1, _022417A4 ; =0x022513A0 + ldr r2, [r1, #4] + ldr r1, _022417A8 ; =0x00000B3B + ldrb r1, [r2, r1] + cmp r1, #0x1d + bne _02241774 + mov r1, #0x20 + add r0, r1, #0 + add r0, #0xf4 + b _02241778 +_02241774: + mov r1, #0x10 + add r0, r0, #1 +_02241778: + strb r1, [r4, r0] + ldr r0, _022417AC ; =0x00000112 + mov r2, #0x64 + strb r7, [r4, r0] + ldr r0, _022417A4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022417B0 ; =MOD18_02241424 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022417A4 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_022417A0: .word 0x00000113 +_022417A4: .word 0x022513A0 +_022417A8: .word 0x00000B3B +_022417AC: .word 0x00000112 +_022417B0: .word MOD18_02241424 + thumb_func_end MOD18_02241738 + + thumb_func_start MOD18_022417B4 +MOD18_022417B4: ; 0x022417B4 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _022417FC ; =0x022513A0 + mov r0, #0x20 + ldr r1, [r1, #4] + mov r2, #4 + add r1, #0x48 + bl FUN_02008C9C + ldr r1, _022417FC ; =0x022513A0 + ldr r2, [r1, #4] + str r0, [r2, #0x44] + ldr r0, [r1, #4] + mov r2, #6 + add r0, #0x48 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r4, #0 + mov r7, #0x17 + ldr r6, _022417FC ; =0x022513A0 + add r5, r4, #0 + lsl r7, r7, #4 +_022417E2: + mov r0, #2 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + ldr r1, [r6, #4] + add r4, r4, #1 + add r1, r1, r5 + add r5, r5, #4 + str r0, [r1, r7] + cmp r4, #4 + blt _022417E2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022417FC: .word 0x022513A0 + thumb_func_end MOD18_022417B4 + + thumb_func_start MOD18_02241800 +MOD18_02241800: ; 0x02241800 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _02241834 + ldr r7, _022418D8 ; =0x022513A0 + add r5, r4, #0 +_0224180E: + ldr r0, [r7, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224182C + bl FUN_0201FFC8 + ldr r0, [r7, #4] + mov r1, #0 + add r2, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + str r1, [r2, r0] +_0224182C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r6 + blt _0224180E +_02241834: + ldr r0, _022418D8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224185C + bl FUN_02009530 + bl FUN_0201D2AC + cmp r0, #0 + beq _0224185C + ldr r0, _022418D8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009C0C +_0224185C: + ldr r1, _022418D8 ; =0x022513A0 + mov r0, #0x19 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #4 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224188C + bl FUN_02009530 + bl FUN_0201E1B4 + cmp r0, #0 + beq _0224188C + ldr r0, _022418D8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009E04 +_0224188C: + ldr r6, _022418D8 ; =0x022513A0 + mov r5, #0 + mov r0, #0x65 + ldr r1, [r6, #4] + lsl r0, r0, #2 + str r5, [r1, r0] + add r4, r5, #0 + add r7, r5, #0 +_0224189C: + ldr r0, [r6, #4] + add r1, r0, r4 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022418AE + bl FUN_02008E2C +_022418AE: + ldr r0, [r6, #4] + add r5, r5, #1 + add r1, r0, r4 + mov r0, #0x17 + lsl r0, r0, #4 + add r4, r4, #4 + str r7, [r1, r0] + cmp r5, #4 + blt _0224189C + ldr r0, _022418D8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + cmp r0, #0 + beq _022418CE + bl FUN_0201FD58 +_022418CE: + ldr r0, _022418D8 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x44] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022418D8: .word 0x022513A0 + thumb_func_end MOD18_02241800 + + thumb_func_start MOD18_022418DC +MOD18_022418DC: ; 0x022418DC + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r7, r0, #0 + ldr r0, _022419D4 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + sub r2, r1, #1 + str r1, [sp] + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + mov r3, #0x17 + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r4, _022419D4 ; =0x022513A0 + mov r6, #0 + ldr r1, [r4, #4] + ldr r0, [r1, #0x44] + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + str r1, [sp, #0x34] + str r6, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r6, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r6, [sp, #0x50] + str r0, [sp, #0x58] + cmp r7, #0 + ble _022419BE + add r5, r6, #0 +_0224195E: + mov r0, #0x4b + lsl r0, r0, #0xe + str r0, [sp, #0x34] + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + ldr r1, [r4, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r7 + blt _0224195E +_022419BE: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_022419D4: .word 0x022513A0 + thumb_func_end MOD18_022418DC + + thumb_func_start MOD18_022419D8 +MOD18_022419D8: ; 0x022419D8 + push {r4, lr} + lsl r4, r0, #2 + ldr r0, _02241A00 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022419FE + bl FUN_0201FFC8 + ldr r0, _02241A00 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r4 + mov r0, #0x7e + lsl r0, r0, #2 + str r2, [r1, r0] +_022419FE: + pop {r4, pc} + .align 2, 0 +_02241A00: .word 0x022513A0 + thumb_func_end MOD18_022419D8 + + thumb_func_start MOD18_02241A04 +MOD18_02241A04: ; 0x02241A04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r3, r0, #0 + add r0, r1, #0 + lsl r5, r3, #2 + add r1, r0, r5 + add r1, #0x48 + ldrh r1, [r1] + str r1, [sp] + add r1, r0, r5 + add r1, #0x4a + ldrh r7, [r1] + cmp r2, #0 + bne _02241A30 + add r6, r0, #0 + add r6, #8 + lsl r4, r3, #1 + mov r1, #1 + ldrh r2, [r6, r4] + lsl r1, r1, #0xa + add r1, r2, r1 + strh r1, [r6, r4] +_02241A30: + lsl r1, r3, #1 + add r0, r0, r1 + ldrh r0, [r0, #8] + mov r2, #0x12 + lsl r2, r2, #0xa + asr r0, r0, #4 + lsl r6, r0, #1 + ldr r0, _02241AAC ; =0x020FFA38 + lsl r1, r6, #1 + ldrsh r0, [r0, r1] + mov r3, #0 + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsr r4, r2, #0xc + lsl r0, r1, #0x14 + orr r4, r0 + add r0, r6, #1 + lsl r1, r0, #1 + ldr r0, _02241AAC ; =0x020FFA38 + mov r2, #0xa + ldrsh r0, [r0, r1] + lsl r2, r2, #0xa + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + bpl _02241A82 + neg r1, r1 +_02241A82: + ldr r0, _02241AB0 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + add r0, r2, r0 + ldr r2, [r0, r5] + cmp r2, #0 + beq _02241AA8 + ldr r2, [sp] + lsl r2, r2, #0xc + add r2, r4, r2 + str r2, [sp, #4] + lsl r2, r7, #0xc + add r1, r1, r2 + str r1, [sp, #8] + ldr r0, [r0, r5] + add r1, sp, #4 + bl FUN_02020044 +_02241AA8: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241AAC: .word 0x020FFA38 +_02241AB0: .word 0x022513A0 + thumb_func_end MOD18_02241A04 + + thumb_func_start MOD18_02241AB4 +MOD18_02241AB4: ; 0x02241AB4 + cmp r0, #0 + bne _02241AC4 + ldr r1, _02241AC8 ; =0x022513A0 + mov r0, #0 + ldrsb r2, [r1, r0] + ldr r1, [r1, #4] + ldr r0, _02241ACC ; =0x00000B3A + strb r2, [r1, r0] +_02241AC4: + bx lr + nop +_02241AC8: .word 0x022513A0 +_02241ACC: .word 0x00000B3A + thumb_func_end MOD18_02241AB4 + + thumb_func_start MOD18_02241AD0 +MOD18_02241AD0: ; 0x02241AD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r1, _02241D20 ; =0x022513A0 + ldr r2, _02241D24 ; =MOD18_02241AB4 + mov r3, #0 + mov r0, #2 + bl FUN_02004928 + ldr r0, _02241D28 ; =0x022513A0 + ldr r2, [r0, #4] + ldr r0, _02241D2C ; =0x00000B3B + ldrb r1, [r2, r0] + cmp r1, #0x1d + bne _02241AFE + sub r0, r0, #1 + ldrsb r0, [r2, r0] + bl abs + mov r1, #0x21 + bl _s32_div_f + b _02241B0C +_02241AFE: + sub r0, r0, #1 + ldrsb r0, [r2, r0] + bl abs + mov r1, #0x19 + bl _s32_div_f +_02241B0C: + mov r1, #0x11 + lsl r1, r1, #4 + ldrb r1, [r5, r1] + mov r2, #0x7e + lsl r2, r2, #2 + add r1, r5, r1 + add r1, #0xc8 + strb r0, [r1] + ldr r0, _02241D28 ; =0x022513A0 + add r1, r2, #0 + mov r4, #0 + ldr r0, [r0, #4] + sub r1, #0xe4 + b _02241B34 +_02241B28: + lsl r3, r4, #2 + add r3, r0, r3 + ldr r3, [r3, r2] + cmp r3, #0 + bne _02241B3A + add r4, r4, #1 +_02241B34: + ldrb r3, [r5, r1] + cmp r4, r3 + blt _02241B28 +_02241B3A: + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r4, r0 + bne _02241B4A + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241B4A: + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x4a + add r7, r5, #0 + mov r4, #0 + str r0, [sp, #0x10] + add r7, #0x48 + b _02241CEE +_02241B5A: + lsl r2, r4, #2 + add r0, r5, r2 + add r0, #0x48 + ldrh r1, [r0] + cmp r1, #0 + beq _02241B7C + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bhs _02241B7C + add r0, r5, r2 + add r0, #0x4a + ldrh r0, [r0] + cmp r0, #0 + beq _02241B7C + cmp r0, #0xc0 + blo _02241B84 +_02241B7C: + add r0, r4, #0 + bl MOD18_022419D8 + b _02241CEC +_02241B84: + mov r0, #0x11 + lsl r0, r0, #4 + ldrb r1, [r5, r0] + add r0, r5, r4 + add r0, #0xf0 + ldrb r0, [r0] + sub r0, r1, r0 + bpl _02241B96 + add r0, #0x28 +_02241B96: + add r0, r5, r0 + add r0, #0xc8 + lsl r1, r4, #2 + ldrb r6, [r0] + add r0, r5, r1 + add r0, #0x48 + add r1, r5, r1 + ldrh r0, [r0] + add r1, #0x4a + ldrh r1, [r1] + sub r0, #0x80 + lsl r0, r0, #0xc + sub r1, #0x60 + str r0, [sp, #4] + lsl r0, r1, #0xc + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsr r0, r0, #0xc + lsl r1, r1, #0x14 + str r0, [sp, #8] + orr r0, r1 + str r0, [sp, #8] + ldr r0, [sp, #4] + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsr r2, r0, #0xc + lsl r1, r1, #0x14 + ldr r0, [sp, #8] + orr r2, r1 + add r0, r2, r0 + bl FX_Sqrt + str r0, [sp, #0xc] + cmp r6, #0 + bne _02241C2A + mov r1, #0xa + lsl r1, r1, #0x10 + bl FX_Div + mov r2, #0x26 + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0xc + add r0, r5, r4 + add r0, #0xf0 + strb r1, [r0] + b _02241CE2 +_02241C2A: + lsl r2, r4, #2 + add r0, r5, r2 + add r0, #0x48 + ldrh r1, [r0] + add r0, r5, r2 + add r0, #0x4a + ldrh r0, [r0] + sub r1, #0x80 + sub r0, #0x60 + bne _02241C50 + cmp r1, #0 + ldrh r0, [r7, r2] + bge _02241C4A + sub r0, r0, r6 + strh r0, [r7, r2] + b _02241CE2 +_02241C4A: + add r0, r0, r6 + strh r0, [r7, r2] + b _02241CE2 +_02241C50: + cmp r1, #0 + bne _02241C70 + cmp r0, #0 + bge _02241C64 + ldr r0, [sp, #0x10] + ldrh r0, [r0, r2] + sub r1, r0, r6 + ldr r0, [sp, #0x10] + strh r1, [r0, r2] + b _02241CE2 +_02241C64: + ldr r0, [sp, #0x10] + ldrh r0, [r0, r2] + add r1, r0, r6 + ldr r0, [sp, #0x10] + strh r1, [r0, r2] + b _02241CE2 +_02241C70: + bl FX_Atan2 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + lsl r1, r6, #0xc + add r0, r0, r1 + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02241D34 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0xc + lsl r0, r4, #2 + add r0, r5, r0 + ldr r2, [sp] + add r1, #0x60 + add r0, #0x4a + strh r1, [r0] + ldr r0, [sp, #0x14] + asr r3, r2, #0x1f + asr r0, r0, #4 + lsl r0, r0, #1 + add r0, r0, #1 + lsl r1, r0, #1 + ldr r0, _02241D34 ; =0x020FFA38 + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0xc + lsl r0, r4, #2 + add r0, r5, r0 + add r1, #0x80 + add r0, #0x48 + strh r1, [r0] +_02241CE2: + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_02241A04 +_02241CEC: + add r4, r4, #1 +_02241CEE: + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r4, r0 + bge _02241CFA + b _02241B5A +_02241CFA: + mov r0, #0x11 + lsl r0, r0, #4 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + ldrb r1, [r5, r0] + cmp r1, #0x28 + blo _02241D0E + mov r1, #0 + strb r1, [r5, r0] +_02241D0E: + ldr r0, _02241D28 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02241D20: .word 0x022513A0 +_02241D24: .word MOD18_02241AB4 +_02241D28: .word 0x022513A0 +_02241D2C: .word 0x00000B3B +_02241D30: .word 0x00000000 +_02241D34: .word 0x020FFA38 + thumb_func_end MOD18_02241AD0 + + thumb_func_start MOD18_02241D38 +MOD18_02241D38: ; 0x02241D38 + push {r3, lr} + ldr r1, _02241D4C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x2a + lsl r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _02241D4A + blx r1 +_02241D4A: + pop {r3, pc} + .align 2, 0 +_02241D4C: .word 0x022513A0 + thumb_func_end MOD18_02241D38 + + thumb_func_start MOD18_02241D50 +MOD18_02241D50: ; 0x02241D50 + ldr r0, _02241D64 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02241D68 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x17 + bne _02241D60 + mov r0, #0x14 + bx lr +_02241D60: + mov r0, #7 + bx lr + .align 2, 0 +_02241D64: .word 0x022513A0 +_02241D68: .word 0x00000B3B + thumb_func_end MOD18_02241D50 + + thumb_func_start MOD18_02241D6C +MOD18_02241D6C: ; 0x02241D6C + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + add r0, sp, #0x24 + bl FUN_020312BC + bl MOD18_02241D50 + str r0, [sp, #4] + ldr r0, _02241F00 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02241F04 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x17 + bne _02241DB2 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r2, r0 + adc r3, r1 + mov r1, #0 + str r0, [sp, #0x24] + lsr r0, r3, #0x1f + lsl r1, r1, #1 + orr r1, r0 + add r0, r1, #1 + str r3, [sp, #0x28] + str r0, [sp, #0xc] +_02241DB2: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r2, r0 + adc r3, r1 + str r0, [sp, #0x24] + str r3, [sp, #0x28] + add r0, r3, #0 + mov r1, #0 + mov r2, #3 + mov r3, #0 + bl _ll_mul + ldr r0, [sp, #0xc] + mov r6, #0 + add r0, r0, r1 + add r0, r0, #5 + str r0, [sp, #8] + ldr r0, [sp, #4] + cmp r0, #0 + bgt _02241DE8 + b _02241EFA +_02241DE8: + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + str r0, [sp, #0x20] +_02241DF2: + ldr r0, [sp, #4] + sub r0, r0, r6 + sub r4, r0, #1 + ldr r0, [sp, #0xc] + cmp r6, r0 + bge _02241E06 + add r1, r5, r4 + mov r0, #0 + strb r0, [r1, #8] + b _02241E1A +_02241E06: + ldr r0, [sp, #8] + cmp r6, r0 + bge _02241E14 + add r1, r5, r4 + mov r0, #1 + strb r0, [r1, #8] + b _02241E1A +_02241E14: + add r1, r5, r4 + mov r0, #2 + strb r0, [r1, #8] +_02241E1A: + ldrb r0, [r1, #8] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + lsl r1, r0, #2 + ldr r0, _02241F08 ; =0x022500C0 + ldr r0, [r0, r1] + ldr r1, [sp, #0x30] + str r0, [sp] + lsl r7, r0, #1 + mov r0, #0xc0 + sub r0, r0, r7 + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + bl _ll_mul + add r3, r1, #0 + add r2, r0, #0 + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x38] + add r1, r1, r2 + adc r0, r3 + str r1, [sp, #0x24] + mov r1, #1 + lsl r1, r1, #8 + str r0, [sp, #0x28] + sub r2, r1, r7 + beq _02241E5A + ldr r1, [sp, #0x14] + mov r3, #0 + bl _ll_mul + add r0, r1, #0 +_02241E5A: + lsl r1, r4, #3 + add r7, r5, r1 + ldr r1, [sp] + add r0, r1, r0 + lsl r0, r0, #0xc + str r0, [r7, #0x44] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + add r2, r0, #0 + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r0, r2 + str r0, [sp, #0x24] + adc r3, r1 + ldr r0, [sp, #0x10] + str r3, [sp, #0x28] + cmp r0, #0 + beq _02241E94 + ldr r1, [sp, #0x18] + add r0, r3, #0 + ldr r2, [sp, #0x10] + mov r3, #0 + bl _ll_mul + add r3, r1, #0 +_02241E94: + ldr r0, [sp] + add r0, r0, r3 + lsl r0, r0, #0xc + str r0, [r7, #0x48] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r3, [sp, #0x34] + ldr r2, [sp, #0x38] + add r0, r3, r0 + adc r2, r1 + str r0, [sp, #0x24] + lsl r0, r4, #1 + add r4, r5, r0 + str r2, [sp, #0x28] + add r0, r2, #0 + ldr r1, [sp, #0x1c] + ldr r2, _02241F0C ; =0x0000FFFF + mov r3, #0 + bl _ll_mul + strh r1, [r4, #0x1c] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r2, r0 + adc r3, r1 + str r0, [sp, #0x24] + ldr r1, [sp, #0x20] + ldr r2, _02241F0C ; =0x0000FFFF + str r3, [sp, #0x28] + add r0, r3, #0 + mov r3, #0 + bl _ll_mul + mov r0, #0x4d + lsl r0, r0, #2 + strh r1, [r4, r0] + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + bge _02241EFA + b _02241DF2 +_02241EFA: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_02241F00: .word 0x022513A0 +_02241F04: .word 0x00000B3B +_02241F08: .word 0x022500C0 +_02241F0C: .word 0x0000FFFF + thumb_func_end MOD18_02241D6C + + thumb_func_start MOD18_02241F10 +MOD18_02241F10: ; 0x02241F10 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02241F1E + b _02242166 +_02241F1E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241F2A: ; jump table + .short _02241F44 - _02241F2A - 2 ; case 0 + .short _02241F60 - _02241F2A - 2 ; case 1 + .short _02241FA0 - _02241F2A - 2 ; case 2 + .short _02241FD4 - _02241F2A - 2 ; case 3 + .short _02242014 - _02241F2A - 2 ; case 4 + .short _02242044 - _02241F2A - 2 ; case 5 + .short _0224205A - _02241F2A - 2 ; case 6 + .short _0224209A - _02241F2A - 2 ; case 7 + .short _022420FE - _02241F2A - 2 ; case 8 + .short _02242114 - _02241F2A - 2 ; case 9 + .short _02242166 - _02241F2A - 2 ; case 10 + .short _02242128 - _02241F2A - 2 ; case 11 + .short _0224214C - _02241F2A - 2 ; case 12 +_02241F44: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0x57 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + bl MOD18_022417B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241F60: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _0224216C ; =0x022513A0 + mov r2, #6 + ldr r1, [r0, #4] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008F34 + ldr r1, _0224216C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241FA0: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r2, #7 + str r2, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, _0224216C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _0224216C ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241FD4: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _0224216C ; =0x022513A0 + mov r2, #5 + ldr r1, [r0, #4] + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _0224216C ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02242014: + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r2, #4 + ldr r0, _0224216C ; =0x022513A0 + str r2, [sp, #8] + ldr r1, [r0, #4] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _0224216C ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02242044: + add r0, r4, #0 + bl MOD18_02241D6C + add r0, r4, #0 + bl MOD18_022421D4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224205A: + mov r0, #0x57 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0x1e + bls _02242166 + mov r1, #3 + ldr r0, _02242170 ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + mov r0, #7 + str r0, [r4] + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4d + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #0x16 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0x66 + lsl r0, r0, #4 + bl FUN_020054C8 + add sp, #0x10 + pop {r4, pc} +_0224209A: + mov r0, #7 + str r0, [sp] + ldr r0, _02242174 ; =0x04000050 + mov r1, #0x10 + mov r2, #1 + mov r3, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, _0224216C ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022423B0 + cmp r0, #0 + beq _022420DE + mov r0, #0x66 + lsl r0, r0, #4 + mov r1, #0 + bl FUN_020054F0 + ldr r0, _02242178 ; =0x0000015E + ldrb r0, [r4, r0] + cmp r0, #0 + beq _022420D4 + mov r0, #0xb + str r0, [r4] + b _022420DE +_022420D4: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_022420DE: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0x3c + bge _02242166 + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x3c + bne _02242166 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_022420FE: + mov r0, #0x66 + lsl r0, r0, #4 + mov r1, #0 + bl FUN_020054F0 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_02242114: + mov r0, #0xa + str r0, [r4] + bl FUN_02031190 + ldr r1, _02242178 ; =0x0000015E + ldrb r1, [r4, r1] + bl MOD18_022425D4 + add sp, #0x10 + pop {r4, pc} +_02242128: + ldr r0, _02242178 ; =0x0000015E + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _0224217C ; =0x0000015D + ldrb r0, [r4, r0] + bl MOD18_0223FD8C + mov r0, #0x57 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r4, pc} +_0224214C: + mov r0, #0x57 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #8 + bls _02242166 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02242166: + add sp, #0x10 + pop {r4, pc} + nop +_0224216C: .word 0x022513A0 +_02242170: .word 0x0400006C +_02242174: .word 0x04000050 +_02242178: .word 0x0000015E +_0224217C: .word 0x0000015D + thumb_func_end MOD18_02241F10 + + thumb_func_start MOD18_02242180 +MOD18_02242180: ; 0x02242180 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x59 + mov r0, #4 + lsl r1, r1, #2 + add r6, r2, #0 + bl FUN_020169D8 + mov r2, #0x59 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _022421C4 ; =0x0000015E + mov r2, #0x64 + strb r5, [r4, r0] + ldr r0, _022421C8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022421CC ; =MOD18_02241F10 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022421C8 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, _022421D0 ; =0x0000015D + strb r6, [r4, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_022421C4: .word 0x0000015E +_022421C8: .word 0x022513A0 +_022421CC: .word MOD18_02241F10 +_022421D0: .word 0x0000015D + thumb_func_end MOD18_02242180 + + thumb_func_start MOD18_022421D4 +MOD18_022421D4: ; 0x022421D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + str r0, [sp, #0x2c] + ldr r0, _0224231C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _0224231C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _0224231C ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #0x17 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r0, _0224231C ; =0x022513A0 + mov r4, #0 + ldr r1, [r0, #4] + ldr r0, [r1, #0x44] + str r0, [sp, #0x30] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x34] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] + lsr r0, r1, #5 + str r1, [sp, #0x38] + str r4, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + add r0, sp, #0x30 + strh r4, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x58] + mov r0, #4 + str r4, [sp, #0x54] + str r0, [sp, #0x5c] + bl MOD18_02241D50 + cmp r0, #0 + ble _02242308 + add r5, r4, #0 + ldr r6, _0224231C ; =0x022513A0 + add r7, r5, #0 +_0224227A: + mov r0, #0x4b + lsl r0, r0, #0xe + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FE94 + ldr r1, [r6, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200EC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp, #0x2c] + add r1, r1, r4 + ldrb r1, [r1, #8] + lsl r1, r1, #1 + bl FUN_02020130 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + add r5, r5, #4 + add r7, r7, #4 + add r4, r4, #1 + bl MOD18_02241D50 + cmp r4, r0 + blt _0224227A +_02242308: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224231C: .word 0x022513A0 + thumb_func_end MOD18_022421D4 + + thumb_func_start MOD18_02242320 +MOD18_02242320: ; 0x02242320 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _022423A8 ; =0x022513A0 + add r4, r1, #0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + add r1, r1, r0 + lsl r0, r5, #2 + ldr r2, [r1, r0] + cmp r2, #0 + beq _022423A4 + lsl r2, r5, #3 + add r3, r4, r2 + ldr r2, [r3, #0x44] + str r2, [sp] + ldr r2, [r3, #0x48] + str r2, [sp, #4] + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x4d + lsl r0, r0, #2 + add r2, r4, r0 + lsl r1, r5, #1 + mov r3, #0x64 + add r4, r5, #0 + mul r4, r3 + mov r3, #0x25 + lsl r3, r3, #4 + ldrh r0, [r2, r1] + add r3, r4, r3 + add r0, r0, r3 + strh r0, [r2, r1] + ldrh r0, [r2, r1] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _022423AC ; =0x020FFA38 + ldrsh r1, [r0, r1] + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + lsl r0, r0, #0x10 + mov r1, #5 + asr r0, r0, #0x10 + lsl r1, r1, #0xe + bl FX_Div + mov r1, #1 + lsl r1, r1, #0xc + sub r0, r1, r0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _022423A8 ; =0x022513A0 + ldr r1, [r0, #4] + lsl r0, r5, #2 + add r1, r1, r0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020064 +_022423A4: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022423A8: .word 0x022513A0 +_022423AC: .word 0x020FFA38 + thumb_func_end MOD18_02242320 + + thumb_func_start MOD18_022423B0 +MOD18_022423B0: ; 0x022423B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r6, #0 + str r1, [sp] + add r4, r6, #0 + bl MOD18_02241D50 + cmp r0, #0 + ble _022423E6 + ldr r5, [sp] +_022423C4: + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _022423D8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD18_02242320 + b _022423DA +_022423D8: + add r6, r6, #1 +_022423DA: + add r5, r5, #4 + add r4, r4, #1 + bl MOD18_02241D50 + cmp r4, r0 + blt _022423C4 +_022423E6: + bl MOD18_02241D50 + cmp r6, r0 + bne _022423F4 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022423F4: + ldr r0, _02242580 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _022424C4 + mov r5, #0 + bl MOD18_02241D50 + cmp r0, #0 + ble _022424C4 + ldr r6, [sp] + add r4, r6, #0 +_0224240A: + add r0, r6, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _022424B6 + ldr r0, _02242580 ; =0x021C48F8 + ldrh r0, [r0, #0x1e] + lsl r1, r0, #0xc + ldr r0, [r4, #0x48] + sub r0, r1, r0 + str r0, [sp, #0xc] + asr r7, r0, #0x1f + ldr r0, _02242580 ; =0x021C48F8 + ldrh r0, [r0, #0x1c] + lsl r1, r0, #0xc + ldr r0, [r4, #0x44] + sub r0, r1, r0 + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + str r1, [sp, #8] + add r1, r7, #0 + add r2, r0, #0 + add r3, r7, #0 + bl _ll_mul + add r7, r0, #0 + add r3, r1, #0 + mov r0, #2 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xa + add r2, r1, r0 + ldr r1, [sp, #8] + ldr r0, _02242584 ; =0x00000000 + adc r1, r0 + str r1, [sp, #8] + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + mov r0, #2 + lsl r0, r0, #0xa + ldr r2, _02242584 ; =0x00000000 + add r0, r7, r0 + adc r3, r2 + lsl r2, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + add r0, r1, r0 + bl FX_Sqrt + ldr r1, [sp] + add r1, r1, r5 + ldrb r1, [r1, #8] + lsl r2, r1, #2 + ldr r1, _02242588 ; =0x022500C0 + ldr r1, [r1, r2] + lsl r1, r1, #0xc + cmp r1, r0 + ble _022424B6 + ldr r0, _0224258C ; =0x00000626 + bl FUN_020054C8 + ldr r0, _02242590 ; =0x022513A0 + lsl r4, r5, #2 + ldr r0, [r0, #4] + add r1, r0, r4 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp] + add r1, r1, r5 + ldrb r1, [r1, #8] + lsl r1, r1, #1 + add r1, r1, #1 + bl FUN_02020130 + ldr r0, [sp] + mov r1, #1 + add r0, r0, r4 + add r0, #0xe4 + str r1, [r0] + b _022424C4 +_022424B6: + add r6, r6, #4 + add r4, #8 + add r5, r5, #1 + bl MOD18_02241D50 + cmp r5, r0 + blt _0224240A +_022424C4: + mov r6, #0 + bl MOD18_02241D50 + cmp r0, #0 + ble _02242570 + ldr r7, [sp] + add r4, r7, #0 + add r5, r7, #0 +_022424D4: + add r0, r7, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _02242560 + ldrh r0, [r4, #0x1c] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02242594 ; =0x020FFA38 + ldrsh r1, [r0, r1] + ldr r0, [r5, #0x48] + sub r0, r0, r1 + str r0, [r5, #0x48] + ldrh r1, [r4, #0x1c] + ldr r0, [r5, #0x44] + asr r1, r1, #4 + lsl r2, r1, #2 + ldr r1, _02242594 ; =0x020FFA38 + add r2, r1, r2 + mov r1, #2 + ldrsh r1, [r2, r1] + add r0, r0, r1 + str r0, [r5, #0x44] + ldr r0, [sp] + add r0, r0, r6 + ldrb r0, [r0, #8] + lsl r1, r0, #2 + ldr r0, _02242588 ; =0x022500C0 + ldr r1, [r0, r1] + ldr r0, [r5, #0x48] + lsl r3, r1, #0xc + cmp r0, r3 + bge _02242520 + ldrh r2, [r4, #0x1c] + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r2 + strh r0, [r4, #0x1c] + b _02242532 +_02242520: + mov r2, #0xc0 + sub r2, r2, r1 + lsl r2, r2, #0xc + cmp r0, r2 + blt _02242532 + ldrh r2, [r4, #0x1c] + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r2 + strh r0, [r4, #0x1c] +_02242532: + ldr r0, [r5, #0x44] + cmp r0, r3 + bge _02242548 + ldrh r1, [r4, #0x1c] + mov r0, #2 + lsl r0, r0, #0xe + sub r1, r1, r0 + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r1 + strh r0, [r4, #0x1c] + b _02242560 +_02242548: + mov r2, #1 + lsl r2, r2, #8 + sub r1, r2, r1 + lsl r1, r1, #0xc + cmp r0, r1 + blt _02242560 + ldrh r1, [r4, #0x1c] + lsl r0, r2, #7 + sub r1, r1, r0 + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r1 + strh r0, [r4, #0x1c] +_02242560: + add r7, r7, #4 + add r4, r4, #2 + add r5, #8 + add r6, r6, #1 + bl MOD18_02241D50 + cmp r6, r0 + blt _022424D4 +_02242570: + ldr r0, _02242590 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02242580: .word 0x021C48F8 +_02242584: .word 0x00000000 +_02242588: .word 0x022500C0 +_0224258C: .word 0x00000626 +_02242590: .word 0x022513A0 +_02242594: .word 0x020FFA38 +_02242598: .word 0x0000FFFF + thumb_func_end MOD18_022423B0 + + thumb_func_start MOD18_0224259C +MOD18_0224259C: ; 0x0224259C + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _022425C2 + ldr r0, _022425C4 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02242180 +_022425C2: + pop {r4, r5, r6, pc} + .align 2, 0 +_022425C4: .word 0x022513A0 + thumb_func_end MOD18_0224259C + + thumb_func_start MOD18_022425C8 +MOD18_022425C8: ; 0x022425C8 + ldr r3, _022425D0 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_022425D0: .word 0x0204E759 + thumb_func_end MOD18_022425C8 + + thumb_func_start MOD18_022425D4 +MOD18_022425D4: ; 0x022425D4 + push {r3, r4, r5, lr} + ldr r0, _02242658 ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _02242656 + mov r0, #0x66 + lsl r0, r0, #4 + mov r1, #0 + bl FUN_020054F0 + ldr r0, _0224265C ; =0x0000015E + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02242604 + cmp r5, #0 + beq _02242604 + sub r0, r0, #1 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C +_02242604: + ldr r1, _02242660 ; =0x04000050 + mov r0, #0 + strh r0, [r1] + mov r1, #1 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02242664 ; =0x0400006C + mov r1, #0 + bl GXx_SetMasterBrightness_ + bl MOD18_02241D50 + bl MOD18_02241800 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _02242658 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02242658 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02242658 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02242656: + pop {r3, r4, r5, pc} + .align 2, 0 +_02242658: .word 0x022513A0 +_0224265C: .word 0x0000015E +_02242660: .word 0x04000050 +_02242664: .word 0x0400006C + thumb_func_end MOD18_022425D4 + + thumb_func_start MOD18_02242668 +MOD18_02242668: ; 0x02242668 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + ldr r0, _02242798 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _02242798 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _02242798 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #0x17 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r4, _02242798 ; =0x022513A0 + mov r6, #0 + ldr r1, [r4, #4] + mov r7, #0x19 + ldr r0, [r1, #0x44] + add r5, r6, #0 + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + str r1, [sp, #0x34] + str r6, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r6, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r6, [sp, #0x50] + str r0, [sp, #0x58] + lsl r7, r7, #0xe +_02242704: + add r0, sp, #0x2c + str r7, [sp, #0x34] + str r7, [sp, #0x38] + bl FUN_0201FE94 + ldr r1, [r4, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0xf + sub r1, r1, r6 + bl FUN_02020310 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0xf + blt _02242704 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_02242798: .word 0x022513A0 + thumb_func_end MOD18_02242668 + + thumb_func_start MOD18_0224279C +MOD18_0224279C: ; 0x0224279C + push {r4, lr} + lsl r1, r1, #2 + add r4, r0, r1 + str r2, [r4, #8] + add r0, r4, #0 + ldr r2, [sp, #8] + add r0, #0x80 + str r2, [r0] + str r3, [r4, #0x44] + ldr r0, [sp, #0xc] + add r4, #0xbc + str r0, [r4] + ldr r0, _022427C8 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r1 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r4, pc} + .align 2, 0 +_022427C8: .word 0x022513A0 + thumb_func_end MOD18_0224279C + + thumb_func_start MOD18_022427CC +MOD18_022427CC: ; 0x022427CC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + cmp r1, #4 + bhi _022427EC + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022427E2: ; jump table + .short _02242946 - _022427E2 - 2 ; case 0 + .short _0224290E - _022427E2 - 2 ; case 1 + .short _022428BE - _022427E2 - 2 ; case 2 + .short _02242856 - _022427E2 - 2 ; case 3 + .short _022427EC - _022427E2 - 2 ; case 4 +_022427EC: + mov r0, #2 + mov r2, #0x69 + str r0, [sp] + sub r0, r0, #6 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xb7 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xb + sub r3, r3, #5 + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x8c + str r0, [sp] + sub r0, r0, #2 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x94 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xc + sub r3, #0xf + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x87 + str r0, [sp] + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x99 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xd + sub r3, #0x14 + bl MOD18_0224279C + mov r0, #2 + mov r2, #0x78 + str r0, [sp] + mov r0, #0 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa8 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xe + sub r3, #0xb + bl MOD18_0224279C +_02242856: + mov r0, #3 + mov r2, #0x80 + str r0, [sp] + sub r0, r0, #7 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa0 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #7 + sub r3, r3, #5 + bl MOD18_0224279C + mov r0, #2 + mvn r0, r0 + mov r2, #0x84 + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x9c + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #8 + sub r3, #0xf + bl MOD18_0224279C + mov r0, #1 + mov r2, #0x70 + str r0, [sp] + sub r0, r0, #3 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xb0 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #9 + bl MOD18_0224279C + mov r0, #1 + mov r2, #0x73 + str r0, [sp] + sub r0, r0, #3 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xad + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xa + add r3, r3, #2 + bl MOD18_0224279C +_022428BE: + mov r0, #2 + mov r2, #0x8c + str r0, [sp] + sub r0, r0, #5 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x94 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #4 + sub r3, #0xa + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x8c + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x94 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #5 + sub r3, #0x14 + bl MOD18_0224279C + mov r0, #0 + mvn r0, r0 + mov r2, #0x6e + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xb2 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #6 + bl MOD18_0224279C +_0224290E: + mov r0, #1 + mvn r0, r0 + mov r2, #0x78 + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa8 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #2 + sub r3, #0x1e + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x64 + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xbc + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #3 + sub r3, #0xa + bl MOD18_0224279C +_02242946: + mov r0, #2 + mov r2, #0x80 + str r0, [sp] + sub r0, r0, #5 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa0 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #1 + sub r3, #0x1e + bl MOD18_0224279C + add sp, #8 + pop {r4, pc} + thumb_func_end MOD18_022427CC + + thumb_func_start MOD18_02242964 +MOD18_02242964: ; 0x02242964 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + mov r7, #0 + add r4, r6, #0 + add r5, r7, #0 +_02242970: + add r0, r4, #0 + add r0, #0x80 + ldr r1, [r0] + cmp r1, #0 + beq _022429E6 + ldr r0, [r4, #8] + add r0, r0, r1 + str r0, [r4, #8] + add r0, r4, #0 + add r0, #0xbc + ldr r1, [r4, #0x44] + ldr r0, [r0] + add r0, r1, r0 + str r0, [r4, #0x44] + add r0, r4, #0 + add r0, #0xbc + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + ldr r0, [r4, #8] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r4, #0x44] + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r0, _022429F4 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r6, r0] + ldr r1, [r4, #0x44] + add r0, #0x23 + cmp r1, r0 + ble _022429E6 + ldr r0, _022429F4 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r1, r4, #0 + add r1, #0x80 + mov r0, #0 + str r0, [r1] +_022429E6: + add r7, r7, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r7, #0xf + blt _02242970 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022429F4: .word 0x022513A0 + thumb_func_end MOD18_02242964 + + thumb_func_start MOD18_022429F8 +MOD18_022429F8: ; 0x022429F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _02242D64 ; =0x00000125 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #6 + bhi _02242AFE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02242A12: ; jump table + .short _02242A20 - _02242A12 - 2 ; case 0 + .short _02242A68 - _02242A12 - 2 ; case 1 + .short _02242A98 - _02242A12 - 2 ; case 2 + .short _02242B22 - _02242A12 - 2 ; case 3 + .short _02242C30 - _02242A12 - 2 ; case 4 + .short _02242CAA - _02242A12 - 2 ; case 5 + .short _02242E42 - _02242A12 - 2 ; case 6 +_02242A20: + mov r1, #0 + sub r0, r0, #1 + strb r1, [r4, r0] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r2, r0, #0 + mov r0, #0x20 + str r0, [sp] + ldr r0, _02242D68 ; =0x022513A0 + add r1, r5, #0 + ldr r0, [r0, #4] + mov r3, #5 + ldr r0, [r0, #0x40] + bl MOD05_021E5420 + mov r1, #0x45 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #1 + add r1, #0x11 + strb r0, [r4, r1] + ldr r0, _02242D6C ; =0x0000065E + bl FUN_020054C8 + b _02242E6C +_02242A68: + sub r1, r0, #1 + ldrb r1, [r4, r1] + add r2, r1, #1 + sub r1, r0, #1 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0x14 + bls _02242AFE + mov r1, #2 + strb r1, [r4, r0] + mov r1, #0 + sub r2, r0, #5 + str r1, [r4, r2] + add r2, r0, #0 + mov r3, #5 + sub r2, #9 + str r3, [r4, r2] + ldr r2, _02242D68 ; =0x022513A0 + add r0, #0xd3 + ldr r2, [r2, #4] + ldr r0, [r2, r0] + bl FUN_02020130 + b _02242E6C +_02242A98: + mov r1, #2 + lsl r1, r1, #0x12 + str r1, [sp, #8] + sub r1, r0, #5 + ldr r1, [r4, r1] + add r0, #0xd3 + lsl r1, r1, #0xc + str r1, [sp, #0xc] + ldr r1, _02242D68 ; =0x022513A0 + ldr r1, [r1, #4] + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0x41 + ble _02242B0E + mov r2, #3 + add r0, r1, #5 + strb r2, [r4, r0] + ldr r0, _02242D70 ; =0x0000065D + bl FUN_020054C8 + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02242D74 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x15 + bne _02242AEC + mov r1, #0 + mvn r1, r1 + b _02242AEE +_02242AEC: + mov r1, #5 +_02242AEE: + mov r0, #0x46 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02242B00 +_02242AFE: + b _02242E6C +_02242B00: + bl FUN_02064520 + mov r0, #0x45 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _02242E6C +_02242B0E: + sub r0, r1, #4 + ldr r0, [r4, r0] + add r0, r2, r0 + str r0, [r4, r1] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r0, #3 + sub r0, r1, #4 + str r2, [r4, r0] + b _02242E6C +_02242B22: + ldr r1, _02242D78 ; =0x021C48F8 + ldrh r2, [r1, #0x20] + cmp r2, #0 + beq _02242BD2 + sub r0, r0, #5 + ldrh r2, [r1, #0x1e] + ldr r0, [r4, r0] + sub r0, r2, r0 + lsl r0, r0, #0xc + str r0, [sp, #4] + asr r7, r0, #0x1f + ldrh r0, [r1, #0x1c] + sub r0, #0x80 + lsl r0, r0, #0xc + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + add r6, r0, #0 + ldr r0, [sp, #4] + add r5, r1, #0 + add r1, r7, #0 + add r2, r0, #0 + add r3, r7, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r6, r6, r2 + adc r5, r3 + lsl r5, r5, #0x14 + lsr r6, r6, #0xc + orr r6, r5 + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + add r0, r6, r1 + bl FX_Sqrt + mov r1, #3 + lsl r1, r1, #0x10 + cmp r0, r1 + bge _02242BD2 + mov r0, #0x4b + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _02242D7C ; =0x00000627 + bl FUN_020054C8 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r5, [r4, r0] + mov r1, #3 + add r0, r5, #0 + bl _s32_div_f + cmp r1, #2 + bne _02242BD2 + add r0, r5, #0 + mov r1, #3 + bl _s32_div_f + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + add r0, #0xf8 + add r1, #0xf8 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_02009BB8 + mov r0, #0x49 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + mov r1, #4 + add r0, r0, #1 + strb r1, [r4, r0] +_02242BD2: + mov r1, #0x46 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0xf + ble _02242BF0 + add r0, r1, #0 + mov r3, #0 + add r0, #0xc + strb r3, [r4, r0] + add r0, r1, #0 + mov r2, #5 + add r0, #0xd + strb r2, [r4, r0] + add r1, #0x14 + str r3, [r4, r1] +_02242BF0: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02242C0A + bge _02242C00 + add r1, r1, #1 + str r1, [r4, r0] +_02242C00: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + neg r1, r1 + str r1, [r4, r0] +_02242C0A: + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r0, #0x80 + lsl r0, r0, #0xc + str r0, [sp, #8] + add r0, r1, #0 + sub r0, #0xc + ldr r0, [r4, r0] + add r1, #0xcc + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, r1] + add r1, sp, #8 + bl FUN_02020044 + b _02242E6C +_02242C30: + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _02242C4A + sub r0, #0xd + ldr r0, [r4, r0] + mov r1, #3 + bl _s32_div_f + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_022427CC +_02242C4A: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD18_02242964 + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + cmp r1, #0x14 + bne _02242C6A + mov r1, #3 + add r0, r0, #1 + strb r1, [r4, r0] +_02242C6A: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02242C84 + bge _02242C7A + add r1, r1, #1 + str r1, [r4, r0] +_02242C7A: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + neg r1, r1 + str r1, [r4, r0] +_02242C84: + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r0, #0x80 + lsl r0, r0, #0xc + str r0, [sp, #8] + add r0, r1, #0 + sub r0, #0xc + ldr r0, [r4, r0] + add r1, #0xcc + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, r1] + add r1, sp, #8 + bl FUN_02020044 + b _02242E6C +_02242CAA: + sub r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _02242CB4 + b _02242DD2 +_02242CB4: + ldr r0, _02242D80 ; =0x0000062A + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + add r0, #0xf8 + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + bl FUN_02009BB8 + mov r7, #1 + mov r5, #4 + mov r6, #0x52 +_02242CD0: + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + lsl r0, r6, #0xc + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r2, [r4, r0] + lsr r1, r7, #0x1f + lsl r3, r7, #0x1f + sub r3, r3, r1 + mov r0, #0x1f + ror r3, r0 + add r2, #0x27 + add r0, r1, r3 + add r0, r2, r0 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + add r7, r7, #1 + add r5, r5, #4 + add r6, #0xc + cmp r7, #9 + blt _02242CD0 + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x19 + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r0, #0x15 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242D68 ; =0x022513A0 + b _02242D84 + .align 2, 0 +_02242D64: .word 0x00000125 +_02242D68: .word 0x022513A0 +_02242D6C: .word 0x0000065E +_02242D70: .word 0x0000065D +_02242D74: .word 0x00000B3B +_02242D78: .word 0x021C48F8 +_02242D7C: .word 0x00000627 +_02242D80: .word 0x0000062A +_02242D84: + ldr r1, [r0, #4] + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x7a + lsl r0, r0, #0xc + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 +_02242DD2: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + bl FUN_0201B9EC + mov r1, #0xa + bl _s32_div_f + add r1, #0x7b + lsl r0, r1, #0xc + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r0, #0xd8 + lsl r1, r1, #0xc + str r1, [sp, #0xc] + ldr r1, _02242E7C ; =0x022513A0 + ldr r1, [r1, #4] + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + mov r2, #0x1d + add r1, r1, #1 + str r1, [r4, r0] + add r1, r0, #4 + ldrb r1, [r4, r1] + lsr r5, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r5 + ror r3, r2 + add r2, r5, r3 + beq _02242E30 + ldr r2, _02242E7C ; =0x022513A0 + lsr r1, r1, #3 + ldr r2, [r2, #4] + add r0, #0xd8 + ldr r0, [r2, r0] + add r1, r1, #3 + bl FUN_02020130 +_02242E30: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + cmp r1, #0x4b + bne _02242E6C + mov r1, #6 + add r0, r0, #1 + strb r1, [r4, r0] + b _02242E6C +_02242E42: + sub r0, #0x11 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02242E56 + bl FUN_02064520 + mov r0, #0x45 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02242E56: + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02242E6C: + ldr r0, _02242E7C ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02242E7C: .word 0x022513A0 + thumb_func_end MOD18_022429F8 + + thumb_func_start MOD18_02242E80 +MOD18_02242E80: ; 0x02242E80 + push {r4, r5, lr} + sub sp, #0x24 + ldr r4, _02242ED4 ; =0x022500DC + add r3, sp, #0xc + add r5, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + sub r4, r1, #1 + cmp r4, #6 + bge _02242ECE + add r1, r4, #1 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + ldr r1, _02242ED8 ; =0x022513A0 + lsl r3, r4, #2 + ldr r2, [r2, r3] + ldr r1, [r1, #4] + add r0, #0x4c + ldr r0, [r1, r0] + mov r1, #0x32 + mov r3, #0 + bl FUN_02008F34 + add r1, r4, #1 + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0xf8 + str r0, [r1] +_02242ECE: + add sp, #0x24 + pop {r4, r5, pc} + nop +_02242ED4: .word 0x022500DC +_02242ED8: .word 0x022513A0 + thumb_func_end MOD18_02242E80 + + thumb_func_start MOD18_02242EDC +MOD18_02242EDC: ; 0x02242EDC + push {r3, r4, r5, r6, r7, lr} + mov r7, #0x17 + ldr r6, _02242F04 ; =0x022513A0 + mov r4, #1 + add r5, r0, #4 + lsl r7, r7, #4 +_02242EE8: + add r0, r5, #0 + add r0, #0xf8 + ldr r1, [r0] + cmp r1, #0 + beq _02242EFA + ldr r0, [r6, #4] + ldr r0, [r0, r7] + bl FUN_02009490 +_02242EFA: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _02242EE8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242F04: .word 0x022513A0 + thumb_func_end MOD18_02242EDC + + thumb_func_start MOD18_02242F08 +MOD18_02242F08: ; 0x02242F08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02242F16 + b _0224318E +_02242F16: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242F22: ; jump table + .short _02242F3C - _02242F22 - 2 ; case 0 + .short _02242F98 - _02242F22 - 2 ; case 1 + .short _02242FE2 - _02242F22 - 2 ; case 2 + .short _02243018 - _02242F22 - 2 ; case 3 + .short _02243058 - _02242F22 - 2 ; case 4 + .short _0224308A - _02242F22 - 2 ; case 5 + .short _0224309A - _02242F22 - 2 ; case 6 + .short _022430EC - _02242F22 - 2 ; case 7 + .short _02243134 - _02242F22 - 2 ; case 8 + .short _02243140 - _02242F22 - 2 ; case 9 + .short _0224318E - _02242F22 - 2 ; case 10 + .short _02243150 - _02242F22 - 2 ; case 11 + .short _02243174 - _02242F22 - 2 ; case 12 +_02242F3C: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0x49 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + ldr r1, _02243194 ; =0x022513A0 + mov r0, #0x20 + ldr r1, [r1, #4] + mov r2, #4 + add r1, #0x48 + bl FUN_02008C9C + ldr r1, _02243194 ; =0x022513A0 + ldr r2, [r1, #4] + str r0, [r2, #0x44] + ldr r0, [r1, #4] + mov r2, #6 + add r0, #0x48 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r6, #0 + ldr r7, _02243194 ; =0x022513A0 + add r5, r6, #0 +_02242F72: + mov r0, #8 + add r1, r6, #0 + mov r2, #4 + bl FUN_02008DEC + ldr r1, [r7, #4] + add r6, r6, #1 + add r2, r1, r5 + mov r1, #0x17 + lsl r1, r1, #4 + add r5, r5, #4 + str r0, [r2, r1] + cmp r6, #4 + blt _02242F72 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02242F98: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x20 + ldr r1, [r0, #4] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008F34 + ldr r2, _02243194 ; =0x022513A0 + mov r1, #0x19 + ldr r3, [r2, #4] + lsl r1, r1, #4 + str r0, [r3, r1] + ldr r0, [r2, #4] + add sp, #0x10 + ldr r1, [r0, r1] + add r0, r4, #0 + add r0, #0xf8 + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02242FE2: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x33 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _02243194 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02243018: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x1f + ldr r1, [r0, #4] + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243194 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02243058: + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x1e + ldr r1, [r0, #4] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243194 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224308A: + add r0, r4, #0 + bl MOD18_02242668 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224309A: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD18_02242E80 + mov r1, #0x49 + lsl r1, r1, #2 + ldrb r0, [r4, r1] + cmp r0, #0x1e + bls _0224318E + ldr r0, _02243194 ; =0x022513A0 + ldr r2, [r0, #4] + ldr r0, _02243198 ; =0x00000B3B + ldrb r0, [r2, r0] + cmp r0, #0x14 + bne _022430CE + add r0, r4, #0 + add r0, #0xf8 + sub r1, #0x24 + ldr r0, [r0] + ldr r1, [r4, r1] + bl FUN_02009BB8 +_022430CE: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4d + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #0x4a + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #7 + add sp, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022430EC: + ldr r0, _02243194 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022429F8 + cmp r0, #0 + beq _02243114 + ldr r0, _0224319C ; =0x00000127 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _0224310A + mov r0, #0xb + str r0, [r4] + b _02243114 +_0224310A: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02243114: + mov r0, #0x4a + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0x3c + bge _0224318E + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x3c + bne _0224318E + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02243134: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02243140: + bl FUN_02031190 + ldr r1, _0224319C ; =0x00000127 + ldrb r1, [r4, r1] + bl MOD18_0224322C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02243150: + ldr r0, _0224319C ; =0x00000127 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022431A0 ; =0x00000126 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C + mov r0, #0x49 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02243174: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #8 + bls _0224318E + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_0224318E: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243194: .word 0x022513A0 +_02243198: .word 0x00000B3B +_0224319C: .word 0x00000127 +_022431A0: .word 0x00000126 + thumb_func_end MOD18_02242F08 + + thumb_func_start MOD18_022431A4 +MOD18_022431A4: ; 0x022431A4 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x13 + mov r0, #4 + lsl r1, r1, #4 + add r6, r2, #0 + bl FUN_020169D8 + mov r2, #0x13 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _022431E8 ; =0x00000127 + mov r2, #0x64 + strb r5, [r4, r0] + sub r0, r0, #1 + strb r6, [r4, r0] + ldr r0, _022431EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022431F0 ; =MOD18_02242F08 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022431EC ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_022431E8: .word 0x00000127 +_022431EC: .word 0x022513A0 +_022431F0: .word MOD18_02242F08 + thumb_func_end MOD18_022431A4 + + thumb_func_start MOD18_022431F4 +MOD18_022431F4: ; 0x022431F4 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _0224321A + ldr r0, _0224321C ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022431A4 +_0224321A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0224321C: .word 0x022513A0 + thumb_func_end MOD18_022431F4 + + thumb_func_start MOD18_02243220 +MOD18_02243220: ; 0x02243220 + ldr r3, _02243228 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_02243228: .word 0x0204E759 + thumb_func_end MOD18_02243220 + + thumb_func_start MOD18_0224322C +MOD18_0224322C: ; 0x0224322C + push {r3, r4, r5, lr} + ldr r0, _022432AC ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _022432AA + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02243254 + bl FUN_02064520 + mov r0, #0x45 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02243254: + ldr r0, _022432B0 ; =0x00000127 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02243268 + cmp r5, #0 + beq _02243268 + sub r0, r0, #1 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C +_02243268: + add r0, r4, #0 + bl MOD18_02242EDC + mov r0, #0xf + bl MOD18_02241800 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022432AC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _022432AC ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_022432AA: + pop {r3, r4, r5, pc} + .align 2, 0 +_022432AC: .word 0x022513A0 +_022432B0: .word 0x00000127 + thumb_func_end MOD18_0224322C + + thumb_func_start MOD18_022432B4 +MOD18_022432B4: ; 0x022432B4 + push {lr} + sub sp, #0x5c + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _022433C4 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #0x17 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r0, _022433C4 ; =0x022513A0 + mov r2, #2 + ldr r1, [r0, #4] + lsl r2, r2, #0x10 + ldr r0, [r1, #0x44] + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r2, #5 + mov r1, #0 + str r2, [sp, #0x34] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r1, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r0, [sp, #0x58] + lsl r0, r0, #0x11 + str r0, [sp, #0x34] + mov r0, #0x15 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r1, [sp, #0x50] + bl FUN_0201FE94 + ldr r2, _022433C4 ; =0x022513A0 + mov r1, #0x7e + ldr r3, [r2, #4] + lsl r1, r1, #2 + str r0, [r3, r1] + ldr r0, [r2, #4] + ldr r0, [r0, r1] + mov r1, #2 + bl FUN_020200EC + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {pc} + nop +_022433C4: .word 0x022513A0 + thumb_func_end MOD18_022432B4 + + thumb_func_start MOD18_022433C8 +MOD18_022433C8: ; 0x022433C8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _022433E2 + cmp r0, #1 + beq _02243402 + cmp r0, #2 + b _02243512 +_022433E2: + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02243528 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x1f + bne _022433F2 + mov r0, #4 + b _022433F4 +_022433F2: + mov r0, #2 +_022433F4: + str r0, [r5, #0x20] + mov r0, #0 + str r0, [r5, #0x24] + add r0, r5, #0 + mov r1, #1 + add r0, #0x28 + strb r1, [r0] +_02243402: + ldr r1, _0224352C ; =0x022513A0 + ldr r2, _02243530 ; =MOD18_02241AB4 + mov r0, #2 + mov r3, #0 + bl FUN_02004928 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02243534 ; =0x00000B3A + ldrsb r0, [r1, r0] + bl abs + add r6, r0, #0 + ldr r0, [r5, #0x14] + mov r1, #0xa + bl _s32_div_f + add r0, r5, r1 + strb r6, [r0, #8] + mov r1, #0 + b _0224343A +_02243432: + add r0, r5, r1 + ldrb r0, [r0, #8] + add r1, r1, #1 + add r4, r4, r0 +_0224343A: + cmp r1, #0xa + blt _02243432 + mov r0, #0x7d + lsl r0, r0, #2 + cmp r4, r0 + ble _02243454 + ldr r0, [r5, #0x24] + add r0, r0, #1 + str r0, [r5, #0x24] + ldr r0, _02243538 ; =0x00000628 + bl FUN_020054C8 + b _0224345C +_02243454: + add r0, r5, #0 + mov r1, #0 + add r0, #0x28 + strb r1, [r0] +_0224345C: + ldr r0, [r5, #0x24] + mov r1, #0xa + bl _s32_div_f + cmp r1, #9 + bne _0224346E + ldr r0, [r5, #0x20] + sub r0, r0, #1 + str r0, [r5, #0x20] +_0224346E: + ldr r2, [r5, #0x20] + cmp r2, #0 + bne _02243480 + mov r0, #2 + add r5, #0x28 + strb r0, [r5] + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02243480: + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02243528 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x1f + bne _022434B0 + cmp r2, #2 + beq _022434A4 + cmp r2, #3 + beq _0224349E + cmp r2, #4 + bne _022434AA + mov r4, #1 + lsl r4, r4, #0x1e + b _022434BE +_0224349E: + mov r4, #0xff + lsl r4, r4, #0x16 + b _022434BE +_022434A4: + mov r4, #0xfe + lsl r4, r4, #0x16 + b _022434BE +_022434AA: + mov r4, #0x3f + lsl r4, r4, #0x18 + b _022434BE +_022434B0: + cmp r2, #2 + bne _022434BA + mov r4, #1 + lsl r4, r4, #0x1e + b _022434BE +_022434BA: + mov r4, #0xff + lsl r4, r4, #0x16 +_022434BE: + ldr r0, [r5, #0x24] + mov r6, #0 + cmp r0, #0 + beq _022434C8 + add r6, r6, #1 +_022434C8: + ldr r0, _0224353C ; =0x45800000 + add r1, r4, #0 + bl _fmul + bl _ffix + str r0, [sp] + ldr r0, _0224353C ; =0x45800000 + add r1, r4, #0 + bl _fmul + bl _ffix + str r0, [sp, #4] + ldr r0, _0224353C ; =0x45800000 + add r1, r4, #0 + bl _fmul + bl _ffix + str r0, [sp, #8] + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020064 + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_02020184 +_02243512: + ldr r0, _02243524 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02243524: .word 0x022513A0 +_02243528: .word 0x00000B3B +_0224352C: .word 0x022513A0 +_02243530: .word MOD18_02241AB4 +_02243534: .word 0x00000B3A +_02243538: .word 0x00000628 +_0224353C: .word 0x45800000 + thumb_func_end MOD18_022433C8 + + thumb_func_start MOD18_02243540 +MOD18_02243540: ; 0x02243540 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _0224354E + b _02243780 +_0224354E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224355A: ; jump table + .short _02243574 - _0224355A - 2 ; case 0 + .short _0224358C - _0224355A - 2 ; case 1 + .short _022435D8 - _0224355A - 2 ; case 2 + .short _0224360E - _0224355A - 2 ; case 3 + .short _0224365A - _0224355A - 2 ; case 4 + .short _02243698 - _0224355A - 2 ; case 5 + .short _022436A8 - _0224355A - 2 ; case 6 + .short _022436D6 - _0224355A - 2 ; case 7 + .short _0224372C - _0224355A - 2 ; case 8 + .short _02243738 - _0224355A - 2 ; case 9 + .short _02243780 - _0224355A - 2 ; case 10 + .short _02243748 - _0224355A - 2 ; case 11 + .short _0224376C - _0224355A - 2 ; case 12 +_02243574: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x24] + bl MOD18_022417B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224358C: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _02243784 ; =0x022513A0 + ldr r1, _02243788 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1f + bne _022435AA + mov r2, #0x16 + b _022435AC +_022435AA: + mov r2, #0x19 +_022435AC: + mov r3, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x17 + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_02008F34 + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022435D8: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, _02243784 ; =0x022513A0 + mov r2, #0x13 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224360E: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _02243784 ; =0x022513A0 + ldr r1, _02243788 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1f + bne _0224362C + mov r2, #0x15 + b _0224362E +_0224362C: + mov r2, #0x18 +_0224362E: + mov r3, #0 + str r3, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5e + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224365A: + ldr r0, _02243784 ; =0x022513A0 + ldr r1, _02243788 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1f + bne _0224366A + mov r2, #0x14 + b _0224366C +_0224366A: + mov r2, #0x17 +_0224366C: + mov r3, #0 + str r3, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5f + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02243698: + add r0, r4, #0 + bl MOD18_022432B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022436A8: + ldr r0, [r4, #0x24] + add r0, r0, #1 + str r0, [r4, #0x24] + cmp r0, #0x1e + ble _02243780 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4c + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r1, #3 + ldr r0, _0224378C ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + mov r0, #7 + str r0, [r4] + mov r0, #0 + add sp, #0x10 + str r0, [r4, #0x2c] + pop {r4, pc} +_022436D6: + mov r0, #7 + str r0, [sp] + ldr r0, _02243790 ; =0x04000050 + mov r1, #0x10 + mov r2, #1 + mov r3, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, _02243784 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022433C8 + cmp r0, #0 + beq _02243712 + add r0, r4, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #0 + beq _02243708 + mov r0, #0xb + str r0, [r4] + b _02243712 +_02243708: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02243712: + ldr r0, [r4, #0x2c] + cmp r0, #0x3c + bge _02243780 + add r0, r0, #1 + str r0, [r4, #0x2c] + cmp r0, #0x3c + bne _02243780 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_0224372C: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_02243738: + bl FUN_02031190 + add r4, #0x2a + ldrb r1, [r4] + bl MOD18_02243818 + add sp, #0x10 + pop {r4, pc} +_02243748: + mov r0, #0x10 + bl FUN_0204F774 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r4, pc} +_0224376C: + ldr r0, [r4, #0x24] + add r0, r0, #1 + str r0, [r4, #0x24] + cmp r0, #8 + ble _02243780 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02243780: + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02243784: .word 0x022513A0 +_02243788: .word 0x00000B3B +_0224378C: .word 0x0400006C +_02243790: .word 0x04000050 + thumb_func_end MOD18_02243540 + + thumb_func_start MOD18_02243794 +MOD18_02243794: ; 0x02243794 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #4 + mov r1, #0x30 + add r6, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x30 + bl MI_CpuFill8 + add r0, r4, #0 + add r0, #0x2a + strb r5, [r0] + add r0, r4, #0 + add r0, #0x29 + strb r6, [r0] + ldr r0, _022437D8 ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022437DC ; =MOD18_02243540 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022437D8 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_022437D8: .word 0x022513A0 +_022437DC: .word MOD18_02243540 + thumb_func_end MOD18_02243794 + + thumb_func_start MOD18_022437E0 +MOD18_022437E0: ; 0x022437E0 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02243806 + ldr r0, _02243808 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02243794 +_02243806: + pop {r4, r5, r6, pc} + .align 2, 0 +_02243808: .word 0x022513A0 + thumb_func_end MOD18_022437E0 + + thumb_func_start MOD18_0224380C +MOD18_0224380C: ; 0x0224380C + ldr r3, _02243814 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_02243814: .word 0x0204E759 + thumb_func_end MOD18_0224380C + + thumb_func_start MOD18_02243818 +MOD18_02243818: ; 0x02243818 + push {r4, lr} + ldr r0, _0224388C ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _02243888 + add r0, r4, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #0 + beq _02243840 + cmp r1, #0 + beq _02243840 + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + bl MOD18_0223FD8C +_02243840: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02243890 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + mov r0, #1 + bl MOD18_02241800 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _0224388C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _0224388C ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02243888: + pop {r4, pc} + nop +_0224388C: .word 0x022513A0 +_02243890: .word 0x04000050 + thumb_func_end MOD18_02243818 + + thumb_func_start MOD18_02243894 +MOD18_02243894: ; 0x02243894 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #0xc + bhi _022439A0 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022438AC: ; jump table + .short _022438C6 - _022438AC - 2 ; case 0 + .short _022438DA - _022438AC - 2 ; case 1 + .short _022438F2 - _022438AC - 2 ; case 2 + .short _022438FA - _022438AC - 2 ; case 3 + .short _02243912 - _022438AC - 2 ; case 4 + .short _0224391A - _022438AC - 2 ; case 5 + .short _02243922 - _022438AC - 2 ; case 6 + .short _02243946 - _022438AC - 2 ; case 7 + .short _022439A0 - _022438AC - 2 ; case 8 + .short _02243962 - _022438AC - 2 ; case 9 + .short _022439A0 - _022438AC - 2 ; case 10 + .short _02243970 - _022438AC - 2 ; case 11 + .short _0224398C - _022438AC - 2 ; case 12 +_022438C6: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4] + add sp, #4 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022438DA: + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #4 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022438F2: + add r0, r1, #1 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_022438FA: + mov r0, #1 + str r0, [sp] + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #4 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_02243912: + add r0, r1, #1 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_0224391A: + add r0, r1, #1 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243922: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0x1e + ble _022439A0 + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r1, #3 + ldr r0, _022439A4 ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + mov r0, #7 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243946: + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _02243954 + mov r0, #0xb + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243954: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243962: + bl FUN_02031190 + ldrb r1, [r4, #0x11] + bl MOD18_02243A24 + add sp, #4 + pop {r3, r4, pc} +_02243970: + mov r0, #0x10 + bl FUN_0204F774 + mov r0, #0 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x10] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #0xc + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_0224398C: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #8 + ble _022439A0 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_022439A0: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022439A4: .word 0x0400006C + thumb_func_end MOD18_02243894 + + thumb_func_start MOD18_022439A8 +MOD18_022439A8: ; 0x022439A8 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #4 + mov r1, #0x14 + add r6, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + strb r5, [r4, #0x11] + ldr r0, _022439E4 ; =0x022513A0 + strb r6, [r4, #0x10] + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022439E8 ; =MOD18_02243894 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _022439E4 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_022439E4: .word 0x022513A0 +_022439E8: .word MOD18_02243894 + thumb_func_end MOD18_022439A8 + + thumb_func_start MOD18_022439EC +MOD18_022439EC: ; 0x022439EC + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02243A12 + ldr r0, _02243A14 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022439A8 +_02243A12: + pop {r4, r5, r6, pc} + .align 2, 0 +_02243A14: .word 0x022513A0 + thumb_func_end MOD18_022439EC + + thumb_func_start MOD18_02243A18 +MOD18_02243A18: ; 0x02243A18 + ldr r3, _02243A20 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_02243A20: .word 0x0204E759 + thumb_func_end MOD18_02243A18 + + thumb_func_start MOD18_02243A24 +MOD18_02243A24: ; 0x02243A24 + push {r4, lr} + ldr r0, _02243A88 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _02243A86 + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _02243A44 + cmp r1, #0 + beq _02243A44 + ldrb r0, [r4, #0x10] + bl MOD18_0223FD8C +_02243A44: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02243A8C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _02243A88 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _02243A88 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02243A86: + pop {r4, pc} + .align 2, 0 +_02243A88: .word 0x022513A0 +_02243A8C: .word 0x04000050 + thumb_func_end MOD18_02243A24 + + thumb_func_start MOD18_02243A90 +MOD18_02243A90: ; 0x02243A90 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r0, [r1, #0x28] + str r1, [sp, #0x10] + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + add r0, r1, #0 + ldr r0, [r0, #0x2c] + lsl r0, r0, #0xc + str r0, [sp, #0x20] + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x1c + bl FUN_02020044 + ldr r0, [sp, #0x10] + mov r1, #0xa + ldr r0, [r0, #0x30] + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [sp, #0x1c] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x1c + bl FUN_02020064 + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020398 + mov r1, #0x10 + ldr r3, [sp, #0x10] + str r1, [sp] + ldr r4, [r3, #0x30] + ldr r0, _02243BC0 ; =0x04000050 + lsr r3, r4, #0x1f + add r3, r4, r3 + asr r3, r3, #1 + mov r2, #1 + sub r3, r1, r3 + bl G2x_SetBlendAlpha_ + mov r0, #0 + ldr r7, [sp, #0x10] + str r0, [sp, #0xc] + str r0, [sp, #8] +_02243B06: + ldr r0, [r7, #0x14] + mov r4, #0 + cmp r0, #0 + ble _02243B86 + ldr r0, [sp, #8] + add r5, r4, #0 + lsl r0, r0, #2 + str r0, [sp, #4] +_02243B16: + ldr r0, [r7, #8] + ldrb r6, [r0, r4] + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x20] + lsr r2, r6, #0x1f + lsl r1, r6, #0x1c + sub r3, r0, #6 + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + add r0, r3, r0 + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x10] + add r2, sp, #0x14 + ldr r0, [r0, #0x24] + sub r1, r0, #6 + lsr r0, r6, #4 + add r0, r1, r0 + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x24] + add r0, sp, #0x1c + add r1, sp, #0x18 + bl FUN_020BB408 + ldr r0, [sp, #0x18] + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + lsl r0, r0, #0xc + str r0, [sp, #0x20] + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, [sp, #4] + add r0, r0, r1 + add r1, r5, r0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x1c + bl FUN_02020044 + ldr r0, [r7, #0x14] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _02243B16 +_02243B86: + ldr r0, [sp, #8] + add r7, r7, #4 + add r0, #8 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #3 + blt _02243B06 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x30] + add r1, r0, #1 + ldr r0, [sp, #0x10] + cmp r1, #0x14 + str r1, [r0, #0x30] + ble _02243BAC + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02243BAC: + ldr r0, _02243BBC ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243BBC: .word 0x022513A0 +_02243BC0: .word 0x04000050 + thumb_func_end MOD18_02243A90 + + thumb_func_start MOD18_02243BC4 +MOD18_02243BC4: ; 0x02243BC4 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + ldr r0, _02243CFC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _02243CFC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _02243CFC ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #6 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #6 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r6, _02243CFC ; =0x022513A0 + mov r4, #0 + ldr r1, [r6, #4] + mov r7, #0x4b + ldr r0, [r1, #0x44] + add r5, r4, #0 + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + str r1, [sp, #0x34] + str r4, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r4, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r4, [sp, #0x50] + str r0, [sp, #0x58] + lsl r7, r7, #0xe +_02243C60: + add r0, sp, #0x2c + str r7, [sp, #0x34] + str r7, [sp, #0x38] + bl FUN_0201FE94 + ldr r1, [r6, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + cmp r4, #0 + bne _02243C9A + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + b _02243CBE +_02243C9A: + cmp r4, #9 + ldr r0, [r6, #4] + bge _02243CB0 + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + b _02243CBE +_02243CB0: + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02020130 +_02243CBE: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x19 + blt _02243C60 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_02243CFC: .word 0x022513A0 + thumb_func_end MOD18_02243BC4 + + thumb_func_start MOD18_02243D00 +MOD18_02243D00: ; 0x02243D00 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7] + cmp r0, #9 + bhi _02243E06 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243D18: ; jump table + .short _02243D2C - _02243D18 - 2 ; case 0 + .short _02243E06 - _02243D18 - 2 ; case 1 + .short _02243E06 - _02243D18 - 2 ; case 2 + .short _02243E06 - _02243D18 - 2 ; case 3 + .short _02243E06 - _02243D18 - 2 ; case 4 + .short _02243D68 - _02243D18 - 2 ; case 5 + .short _02243E06 - _02243D18 - 2 ; case 6 + .short _02243D74 - _02243D18 - 2 ; case 7 + .short _02243E06 - _02243D18 - 2 ; case 8 + .short _02243D8A - _02243D18 - 2 ; case 9 +_02243D2C: + mov r1, #3 + ldr r0, _02243E08 ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + bl FUN_0204F7E4 + ldr r0, _02243E0C ; =0x00000621 + bl FUN_020054C8 + ldr r1, _02243E10 ; =0x022513A0 + mov r0, #0x20 + ldr r1, [r1, #4] + mov r2, #4 + add r1, #0x48 + bl FUN_02008C9C + ldr r1, _02243E10 ; =0x022513A0 + ldr r2, [r1, #4] + str r0, [r2, #0x44] + ldr r0, [r1, #4] + mov r2, #6 + add r0, #0x48 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r0, #5 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_02243D68: + add r0, r7, #0 + bl MOD18_02243BC4 + mov r0, #7 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_02243D74: + ldr r0, _02243E10 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02243A90 + cmp r0, #0 + beq _02243E06 + mov r0, #9 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_02243D8A: + ldr r0, _02243E14 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + ldr r0, _02243E10 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009C0C + ldr r0, _02243E10 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009E04 + mov r4, #0 + ldr r6, _02243E10 ; =0x022513A0 + add r5, r4, #0 +_02243DB8: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02243DCA + bl FUN_0201FFC8 +_02243DCA: + ldr r0, [r6, #4] + mov r1, #0 + add r2, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + add r4, r4, #1 + add r5, r5, #4 + str r1, [r2, r0] + cmp r4, #0x19 + blt _02243DB8 + ldr r0, _02243E10 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FD58 + ldr r0, [sp] + bl FUN_0200CAB4 + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, _02243E10 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x29 + lsl r0, r0, #4 + str r2, [r1, r0] + mov r0, #0x80 + bl FUN_0204F774 +_02243E06: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243E08: .word 0x0400006C +_02243E0C: .word 0x00000621 +_02243E10: .word 0x022513A0 +_02243E14: .word 0x04000050 + thumb_func_end MOD18_02243D00 + + thumb_func_start MOD18_02243E18 +MOD18_02243E18: ; 0x02243E18 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02243E84 ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0x29 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + bne _02243E82 + mov r0, #4 + mov r1, #0x34 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x34 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + str r0, [r4, #0x30] + str r5, [r4, #0x20] + str r6, [r4, #0x24] + ldr r0, [sp, #0x18] + str r7, [r4, #0x28] + str r0, [r4, #0x2c] + ldr r0, [sp, #0x1c] + add r1, r4, #0 + str r0, [r4, #8] + ldr r0, [sp, #0x24] + mov r2, #0x64 + str r0, [r4, #0xc] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x10] + ldr r0, [sp, #0x20] + str r0, [r4, #0x14] + ldr r0, [sp, #0x28] + str r0, [r4, #0x18] + ldr r0, [sp, #0x30] + str r0, [r4, #0x1c] + ldr r0, _02243E88 ; =MOD18_02243D00 + bl FUN_0200CA44 + ldr r1, _02243E84 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x29 + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0x80 + bl FUN_0204F74C +_02243E82: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243E84: .word 0x022513A0 +_02243E88: .word MOD18_02243D00 + thumb_func_end MOD18_02243E18 + + thumb_func_start MOD18_02243E8C +MOD18_02243E8C: ; 0x02243E8C + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, _02243F58 ; =0x022513A0 + add r6, r0, #0 + ldr r1, [r1, #4] + cmp r1, #0 + bne _02243EA6 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_02243EA6: + ldr r5, [r4, #8] + add r0, r5, #0 + bl FUN_0204F72C + add r1, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _02243EBE + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02243EE2 +_02243EBE: + ldr r2, _02243F58 ; =0x022513A0 + lsl r1, r5, #2 + ldr r3, [r2, #4] + mov r0, #0 + str r0, [r3, r1] + ldr r2, [r2, #4] + add r1, r2, r1 + str r0, [r1, #0x20] + add r0, r6, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0204E254 + pop {r4, r5, r6, pc} +_02243EE2: + ldr r0, [r4, #0xc] + cmp r0, #0xe + bhi _02243F14 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243EF4: ; jump table + .short _02243F14 - _02243EF4 - 2 ; case 0 + .short _02243F12 - _02243EF4 - 2 ; case 1 + .short _02243F12 - _02243EF4 - 2 ; case 2 + .short _02243F12 - _02243EF4 - 2 ; case 3 + .short _02243F12 - _02243EF4 - 2 ; case 4 + .short _02243F12 - _02243EF4 - 2 ; case 5 + .short _02243F12 - _02243EF4 - 2 ; case 6 + .short _02243F12 - _02243EF4 - 2 ; case 7 + .short _02243F12 - _02243EF4 - 2 ; case 8 + .short _02243F14 - _02243EF4 - 2 ; case 9 + .short _02243F14 - _02243EF4 - 2 ; case 10 + .short _02243F14 - _02243EF4 - 2 ; case 11 + .short _02243F14 - _02243EF4 - 2 ; case 12 + .short _02243F12 - _02243EF4 - 2 ; case 13 + .short _02243F12 - _02243EF4 - 2 ; case 14 +_02243F12: + pop {r4, r5, r6, pc} +_02243F14: + ldr r0, [r4, #4] + add r0, r0, #1 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1d + str r0, [r4, #4] + sub r2, r2, r3 + mov r0, #0x1d + ror r2, r0 + add r0, r3, r2 + bne _02243F54 + cmp r1, #3 + bhi _02243F4E + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243F38: ; jump table + .short _02243F40 - _02243F38 - 2 ; case 0 + .short _02243F44 - _02243F38 - 2 ; case 1 + .short _02243F48 - _02243F38 - 2 ; case 2 + .short _02243F4C - _02243F38 - 2 ; case 3 +_02243F40: + mov r1, #3 + b _02243F4E +_02243F44: + mov r1, #2 + b _02243F4E +_02243F48: + mov r1, #0 + b _02243F4E +_02243F4C: + mov r1, #1 +_02243F4E: + add r0, r5, #0 + bl FUN_0204F70C +_02243F54: + pop {r4, r5, r6, pc} + nop +_02243F58: .word 0x022513A0 + thumb_func_end MOD18_02243E8C + + thumb_func_start MOD18_02243F5C +MOD18_02243F5C: ; 0x02243F5C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _02243FAC ; =0x022513A0 + add r7, r1, #0 + ldr r1, [r0, #4] + cmp r1, #0 + beq _02243FA8 + ldr r0, _02243FB0 ; =0x00000B46 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02243FA8 + lsl r5, r6, #2 + ldr r4, [r1, r5] + cmp r4, #0 + bne _02243FA4 + mov r0, #4 + mov r1, #0x10 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02243FAC ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + mov r2, #0x64 + str r4, [r0, r5] + ldr r0, _02243FB4 ; =MOD18_02243E8C + bl FUN_0200CA44 + ldr r1, _02243FAC ; =0x022513A0 + ldr r1, [r1, #4] + add r1, r1, r5 + str r0, [r1, #0x20] +_02243FA4: + str r6, [r4, #8] + str r7, [r4, #0xc] +_02243FA8: + pop {r3, r4, r5, r6, r7, pc} + nop +_02243FAC: .word 0x022513A0 +_02243FB0: .word 0x00000B46 +_02243FB4: .word MOD18_02243E8C + thumb_func_end MOD18_02243F5C + + thumb_func_start MOD18_02243FB8 +MOD18_02243FB8: ; 0x02243FB8 + push {r3, r4, r5, lr} + ldr r1, _02243FEC ; =0x022513A0 + add r5, r0, #0 + ldr r1, [r1, #4] + lsl r4, r5, #2 + ldr r1, [r1, r4] + cmp r1, #0 + beq _02243FE8 + bl FUN_0204F0A8 + ldr r0, _02243FEC ; =0x022513A0 + mov r2, #1 + ldr r1, [r0, #4] + ldr r1, [r1, r4] + str r2, [r1] + ldr r1, [r0, #4] + mov r2, #0 + str r2, [r1, r4] + ldr r0, [r0, #4] + add r0, r0, r4 + str r2, [r0, #0x20] + add r0, r5, #0 + bl FUN_0204E254 +_02243FE8: + pop {r3, r4, r5, pc} + nop +_02243FEC: .word 0x022513A0 + thumb_func_end MOD18_02243FB8 + + thumb_func_start MOD18_02243FF0 +MOD18_02243FF0: ; 0x02243FF0 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + ldr r4, _02244024 ; =0x022513A0 + add r5, r6, #0 + add r7, r6, #0 +_02243FFA: + ldr r0, [r4, #4] + add r0, r0, r5 + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _0224401A + bl FUN_0200CAB4 + ldr r0, [r4, #4] + ldr r0, [r0, r5] + bl FUN_02016A18 + ldr r0, [r4, #4] + add r0, r0, r5 + str r7, [r0, #0x20] + ldr r0, [r4, #4] + str r7, [r0, r5] +_0224401A: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _02243FFA + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244024: .word 0x022513A0 + thumb_func_end MOD18_02243FF0 + + thumb_func_start MOD18_02244028 +MOD18_02244028: ; 0x02244028 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp] + add r5, r0, #0 + str r2, [sp, #4] + add r0, r3, #0 + mov r1, #0x24 + str r3, [sp, #8] + bl FUN_02016998 + str r0, [sp, #0xc] + mov r1, #0 + mov r2, #0x24 + bl MI_CpuFill8 + ldr r1, [sp, #0x28] + ldr r0, [sp, #0xc] + cmp r1, #0 + str r1, [r0] + beq _0224409E + ldr r1, [sp, #0x2c] + str r1, [r0, #4] + ldr r1, [sp, #0x30] + strb r1, [r0, #0x1e] + ldr r0, [sp, #8] + bl FUN_02013690 + ldr r1, [sp, #0xc] + str r0, [r1, #0x10] + ldr r1, _022440C0 ; =0x0008090F + bl FUN_020136E0 + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + strb r1, [r0, #0x1d] + ldr r1, [sp, #0xc] + ldrh r0, [r5, #0x10] + ldrb r1, [r1, #0x1d] + bl FUN_02012838 + add r7, r0, #0 + ldrh r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _02244098 + add r4, r6, #0 +_02244084: + ldr r1, [r5] + add r0, r7, #0 + add r1, r1, r4 + bl FUN_020128C4 + ldrh r0, [r5, #0x10] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02244084 +_02244098: + ldr r0, [sp, #0xc] + str r7, [r5] + str r7, [r0, #8] +_0224409E: + ldr r1, [sp] + ldr r0, [sp, #4] + add r1, r1, r0 + ldr r0, [sp, #0xc] + strh r1, [r0, #0x20] + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r5, #0 + bl FUN_020010A8 + ldr r1, [sp, #0xc] + str r0, [r1, #0xc] + add r0, r1, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022440C0: .word 0x0008090F + thumb_func_end MOD18_02244028 + + thumb_func_start MOD18_022440C4 +MOD18_022440C4: ; 0x022440C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r2, #0 + add r5, r0, #0 + add r7, r1, #0 + ldrh r1, [r4, #0x14] + ldrh r0, [r4, #0x16] + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_02001470 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldrh r0, [r4, #0x18] + cmp r0, r5 + bne _022440F0 + ldrh r0, [r4, #0x1a] + cmp r0, r7 + beq _0224413A +_022440F0: + strh r5, [r4, #0x18] + add r0, r5, r1 + strh r7, [r4, #0x1a] + cmp r0, r6 + blt _0224413A + cmp r5, r6 + bhi _0224413A + ldr r0, [r4, #0xc] + mov r1, #7 + bl FUN_02001470 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #9 + bl FUN_02001470 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [r4, #0xc] + mov r1, #8 + bl FUN_02001470 + str r0, [sp, #4] + sub r0, r6, r5 + add r5, r7, #0 + mul r5, r0 + ldr r0, [r4, #0xc] + mov r1, #0x12 + bl FUN_02001470 + ldr r3, [sp, #4] + add r1, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [sp] + add r3, r5, r3 + bl FUN_020136F8 +_0224413A: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_022440C4 + + thumb_func_start MOD18_02244140 +MOD18_02244140: ; 0x02244140 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0xc] + str r0, [sp, #4] + ldr r0, [r5] + cmp r0, #0 + beq _0224418A + ldr r0, [sp, #4] + mov r1, #2 + bl FUN_02001470 + add r7, r0, #0 + add r1, sp, #0xc + ldr r0, [sp, #4] + add r1, #2 + add r2, sp, #0xc + bl FUN_02001448 + ldrb r0, [r5, #0x1c] + cmp r0, #0 + bne _0224416E + b _0224428C +_0224416E: + add r1, sp, #0xc + ldrh r0, [r1, #2] + ldrh r1, [r1] + add r2, r5, #0 + bl MOD18_022440C4 + ldr r0, _02244310 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0224418C + mov r0, #4 + tst r0, r1 + bne _0224418C +_0224418A: + b _022442CA +_0224418C: + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 + add r0, sp, #0xc + ldrh r1, [r0, #2] + ldrh r0, [r0] + add r2, r1, r0 + sub r0, r7, #1 + cmp r0, r2 + bne _022441A8 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022441A8: + ldrh r1, [r5, #0x14] + ldrh r0, [r5, #0x16] + add r1, r1, r0 + cmp r2, r1 + bne _022441BA + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022441BA: + ldr r0, [r5, #4] + ldr r3, [r5] + blx r3 + ldrb r1, [r5, #0x1d] + add r0, r7, #0 + bl FUN_02012838 + mov r4, #0 + add r6, r4, #0 + str r0, [sp] + cmp r7, #0 + ble _02244210 +_022441D2: + ldrh r1, [r5, #0x14] + ldrh r0, [r5, #0x16] + add r0, r1, r0 + cmp r6, r0 + bne _022441DE + b _022441EA +_022441DE: + ldr r2, [r5, #8] + lsl r1, r4, #3 + ldr r0, [sp] + add r1, r2, r1 + bl FUN_020128C4 +_022441EA: + add r0, sp, #0xc + ldrh r1, [r0, #2] + ldrh r0, [r0] + add r4, r4, #1 + add r0, r1, r0 + cmp r6, r0 + bne _0224420A + ldrh r2, [r5, #0x14] + ldrh r1, [r5, #0x16] + ldr r3, [r5, #8] + ldr r0, [sp] + add r1, r2, r1 + lsl r1, r1, #3 + add r1, r3, r1 + bl FUN_020128C4 +_0224420A: + add r6, r6, #1 + cmp r6, r7 + blt _022441D2 +_02244210: + ldrb r0, [r5, #0x1e] + cmp r0, #0 + beq _02244254 + sub r0, r7, #1 + mov r4, #0 + str r0, [sp, #8] + cmp r0, #0 + ble _02244246 + ldr r6, [sp] + add r7, r4, #0 +_02244224: + ldr r0, [r5, #4] + add r1, r4, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _02244234 + mov r0, #1 + b _02244236 +_02244234: + mov r0, #0 +_02244236: + add r0, r7, r0 + str r0, [r6, #4] + ldr r0, [sp, #8] + add r4, r4, #1 + add r7, r7, #2 + add r6, #8 + cmp r4, r0 + blt _02244224 +_02244246: + lsl r0, r4, #1 + add r2, r0, #1 + ldr r0, [sp] + lsl r1, r4, #3 + add r0, r0, r1 + str r2, [r0, #4] + b _02244268 +_02244254: + sub r0, r7, #1 + mov r2, #0 + cmp r0, #0 + ble _02244268 + ldr r1, [sp] +_0224425E: + str r2, [r1, #4] + add r2, r2, #1 + add r1, #8 + cmp r2, r0 + blt _0224425E +_02244268: + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r0, [sp] + ldr r1, [sp] + str r0, [r5, #8] + ldr r0, [sp, #4] + bl FUN_02001658 + mov r0, #0 + strb r0, [r5, #0x1c] + ldr r0, [sp, #4] + bl FUN_02001328 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224428C: + ldr r0, _02244310 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #4 + tst r0, r1 + beq _022442CA + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 + add r0, sp, #0xc + ldrh r3, [r0, #2] + ldrh r1, [r0] + sub r2, r7, #1 + add r1, r3, r1 + cmp r2, r1 + bne _022442B2 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022442B2: + strh r3, [r5, #0x14] + ldrh r1, [r0] + add sp, #0x10 + strh r1, [r5, #0x16] + ldrh r1, [r0, #2] + strh r1, [r5, #0x18] + ldrh r0, [r0] + strh r0, [r5, #0x1a] + mov r0, #1 + strb r0, [r5, #0x1c] + sub r0, r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_022442CA: + ldr r0, [sp, #4] + bl FUN_02001204 + add r4, r0, #0 + add r1, r5, #0 + ldr r0, [sp, #4] + add r1, #0x20 + ldrh r6, [r5, #0x20] + bl FUN_0200143C + ldrh r0, [r5, #0x20] + cmp r6, r0 + beq _022442EA + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 +_022442EA: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _022442FA + add r0, r0, #1 + cmp r4, r0 + beq _02244308 + b _02244302 +_022442FA: + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 + b _02244308 +_02244302: + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 +_02244308: + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244310: .word 0x021C48B8 +_02244314: .word 0x000005DC + thumb_func_end MOD18_02244140 + + thumb_func_start MOD18_02244318 +MOD18_02244318: ; 0x02244318 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02001300 + ldr r0, [r4] + cmp r0, #0 + beq _02244334 + ldr r0, [r4, #0x10] + bl FUN_020136C0 + ldr r0, [r4, #8] + bl FUN_02016A18 +_02244334: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD18_02244318 + + thumb_func_start MOD18_0224433C +MOD18_0224433C: ; 0x0224433C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r4, r1, #0 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + str r2, [sp, #0x2c] + ldr r2, _022445E8 ; =0x022513A8 + str r4, [r2] + ldr r2, [r4] + cmp r2, #8 + bls _02244356 + b _022445E4 +_02244356: + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02244362: ; jump table + .short _02244374 - _02244362 - 2 ; case 0 + .short _0224439E - _02244362 - 2 ; case 1 + .short _022444A4 - _02244362 - 2 ; case 2 + .short _022444AC - _02244362 - 2 ; case 3 + .short _022444DE - _02244362 - 2 ; case 4 + .short _022444E6 - _02244362 - 2 ; case 5 + .short _02244550 - _02244362 - 2 ; case 6 + .short _0224456C - _02244362 - 2 ; case 7 + .short _022445D8 - _02244362 - 2 ; case 8 +_02244374: + mov r1, #0x39 + lsl r1, r1, #4 + ldr r0, [sp, #0x2c] + add r1, r4, r1 + bl MOD18_0224486C + add r1, r4, #0 + add r0, r4, #4 + add r1, #0x44 + bl MOD18_022445EC + mov r0, #0xeb + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD18_02244B28 + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224439E: + add r0, r4, #0 + bl MOD18_02244998 + mov r1, #0xfa + lsl r1, r1, #2 + mov r0, #0 + mov r3, #0xba + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r4, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r4, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r4, r2] + add r3, #0x20 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r4, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + str r0, [sp, #0x30] + mov r0, #0xc2 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #0x34] + mov r0, #0x12 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] + lsr r0, r1, #5 + mov r6, #0 + mov r7, #0xcb + str r1, [sp, #0x38] + str r6, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + add r0, sp, #0x30 + strh r6, [r0, #0x20] + mov r0, #2 + str r0, [sp, #0x58] + mov r0, #4 + str r6, [sp, #0x54] + str r0, [sp, #0x5c] + add r5, r4, #0 + lsl r7, r7, #2 +_02244422: + add r0, sp, #0x30 + bl FUN_0201FE94 + mov r1, #0xcb + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + cmp r6, #0 + bne _02244450 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020130 +_02244450: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _02244422 + mov r7, #0xd3 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_02244460: + add r0, sp, #0x30 + bl FUN_0201FE94 + mov r1, #0xd3 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xd3 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, r7] + mov r1, #2 + bl FUN_02020130 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0x11 + blt _02244460 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444A4: + add r0, r2, #1 + add sp, #0x60 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444AC: + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444DE: + add r0, r2, #1 + add sp, #0x60 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444E6: + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r4, #0 + ldr r0, [r0, #0x38] + add r1, r4, #4 + add r2, #0x44 + bl MOD18_02244634 + mov r1, #0xcb + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x44 + add r1, r4, r1 + bl MOD18_022446E8 + add r0, r4, #0 + add r0, #0xa4 + bl MOD18_02244754 + mov r1, #0xd3 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0xa4 + add r1, r4, r1 + bl MOD18_0224479C + mov r3, #0xea + lsl r3, r3, #2 + add r0, r4, r3 + str r0, [sp] + add r0, r3, #4 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x6e + lsl r0, r0, #2 + add r1, r3, #0 + add r2, r3, #0 + sub r1, #0x18 + sub r2, #8 + sub r3, r3, #4 + ldr r0, [r4, r0] + add r1, r4, r1 + add r2, r4, r2 + add r3, r4, r3 + bl MOD18_02244A70 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} +_02244550: + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _022445E4 + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224456C: + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02009C0C + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02009E04 + mov r7, #0xba + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_02244588: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02244588 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + mov r0, #0x39 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0x39 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, [sp, #0x2c] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [sp, #0x2c] + bl MOD18_02244858 + mov r0, #0xeb + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD18_02244B7C + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022445D8: + sub r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0 + str r2, [r1, #0x68] + bl FUN_0200621C +_022445E4: + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022445E8: .word 0x022513A8 + thumb_func_end MOD18_0224433C + + thumb_func_start MOD18_022445EC +MOD18_022445EC: ; 0x022445EC + push {r3, r4, r5, r6, r7, lr} + ldr r4, _02244630 ; =0x022513AC + add r6, r0, #0 + add r5, r1, #0 + mov r7, #0 +_022445F6: + mov r0, #0 + str r0, [r6] + str r0, [r6, #4] + str r0, [r5] + str r0, [r5, #4] + str r0, [r5, #8] + bl FUN_0201B9EC + mov r1, #0x7d + lsl r1, r1, #2 + bl _s32_div_f + add r1, #0x32 + str r1, [r4] + bl FUN_0201B9EC + mov r1, #0x7d + lsl r1, r1, #2 + bl _s32_div_f + add r1, #0x32 + str r1, [r4, #4] + add r7, r7, #1 + add r6, #8 + add r5, #0xc + add r4, #8 + cmp r7, #8 + blt _022445F6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244630: .word 0x022513AC + thumb_func_end MOD18_022445EC + + thumb_func_start MOD18_02244634 +MOD18_02244634: ; 0x02244634 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + str r0, [sp] + add r4, r2, #0 + mov r7, #0 + add r6, r5, #0 +_02244640: + add r0, r7, #0 + bl FUN_0204E3EC + str r0, [r6] + add r0, r7, #0 + bl FUN_0204E440 + str r0, [r6, #4] + add r7, r7, #1 + add r6, #8 + cmp r7, #8 + blt _02244640 + bl FUN_02030F40 + cmp r0, #0 + beq _022446AA + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0 + bne _0224467E + ldr r0, [sp] + bl FUN_02055320 + str r0, [r5] + ldr r0, [sp] + bl FUN_0205532C + str r0, [r5, #4] + b _022446AA +_0224467E: + ldr r7, [r5] + ldr r6, [r5, #4] + bl FUN_02031190 + lsl r0, r0, #3 + ldr r0, [r5, r0] + str r0, [r5] + bl FUN_02031190 + lsl r0, r0, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + str r0, [r5, #4] + bl FUN_02031190 + lsl r0, r0, #3 + str r7, [r5, r0] + bl FUN_02031190 + lsl r0, r0, #3 + add r0, r5, r0 + str r6, [r0, #4] +_022446AA: + mov r6, #0 + mov r7, #0x3c +_022446AE: + ldr r0, [r5] + ldr r1, [r5, #4] + bl MOD18_0223E2F4 + cmp r0, #0 + bne _022446CA + ldr r0, [r5] + sub r0, #0x20 + str r0, [r4] + ldr r0, [r5, #4] + sub r0, #0x40 + str r0, [r4, #4] + str r7, [r4, #8] + b _022446DA +_022446CA: + ldr r1, [r4, #8] + cmp r1, #0 + beq _022446DA + ldr r0, [r4] + cmp r0, #0 + blt _022446DA + sub r0, r1, #1 + str r0, [r4, #8] +_022446DA: + add r6, r6, #1 + add r5, #8 + add r4, #0xc + cmp r6, #8 + blt _022446AE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02244634 + + thumb_func_start MOD18_022446E8 +MOD18_022446E8: ; 0x022446E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r7, #1 + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + lsl r7, r7, #0xc +_022446F6: + ldr r0, [r5, #8] + cmp r0, #0 + beq _0224473C + ldr r1, [r5] + mov r0, #0x8a + mul r0, r1 + mov r1, #7 + lsl r1, r1, #6 + bl _s32_div_f + add r0, #0x3c + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x1a + lsl r0, r0, #7 + lsl r1, r1, #4 + bl _s32_div_f + add r0, #9 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r7, [sp, #8] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + b _02244744 +_0224473C: + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 +_02244744: + add r6, r6, #1 + add r5, #0xc + add r4, r4, #4 + cmp r6, #8 + blt _022446F6 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_022446E8 + + thumb_func_start MOD18_02244754 +MOD18_02244754: ; 0x02244754 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r4, #0 +_0224475A: + add r0, r4, #0 + bl MOD18_0223E314 + add r6, r0, #0 + add r0, r4, #0 + bl MOD18_0223E37C + add r7, r0, #0 + add r0, r4, #0 + bl MOD18_0223E3E4 + str r0, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _0224478A + sub r6, #0x20 + str r6, [r5] + sub r7, #0x40 + str r7, [r5, #4] + ldr r0, [sp] + b _02244790 +_0224478A: + mov r0, #0 + str r0, [r5] + str r0, [r5, #4] +_02244790: + add r4, r4, #1 + str r0, [r5, #8] + add r5, #0x10 + cmp r4, #0x11 + blt _0224475A + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02244754 + + thumb_func_start MOD18_0224479C +MOD18_0224479C: ; 0x0224479C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r7, #1 + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + lsl r7, r7, #0xc +_022447AA: + ldr r1, [r5] + cmp r1, #0 + beq _02244808 + mov r0, #0x8a + mul r0, r1 + mov r1, #7 + lsl r1, r1, #6 + bl _s32_div_f + add r0, #0x3c + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x1a + lsl r0, r0, #7 + lsl r1, r1, #4 + bl _s32_div_f + add r0, #9 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r7, [sp, #8] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [r5, #8] + ldr r0, [r5, #0xc] + cmp r1, r0 + beq _02244810 + cmp r1, #0 + ldr r0, [r4] + beq _02244800 + bl FUN_02020130 + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + b _02244810 +_02244800: + mov r1, #0 + bl FUN_020200A0 + b _02244810 +_02244808: + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 +_02244810: + ldr r0, [r5, #8] + add r6, r6, #1 + str r0, [r5, #0xc] + add r5, #0x10 + add r4, r4, #4 + cmp r6, #0x11 + blt _022447AA + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224479C + + thumb_func_start MOD18_02244824 +MOD18_02244824: ; 0x02244824 + push {r4, lr} + add r4, r0, #0 + mov r1, #0x4e + mov r2, #4 + ldr r0, _02244848 ; =MOD18_0224433C + lsl r1, r1, #4 + add r3, r2, #0 + bl FUN_020061E8 + bl FUN_0201B6C8 + mov r1, #0x6d + lsl r1, r1, #2 + str r4, [r0, r1] + ldr r2, [r4, #8] + add r1, r1, #4 + str r2, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02244848: .word MOD18_0224433C + thumb_func_end MOD18_02244824 + + thumb_func_start MOD18_0224484C +MOD18_0224484C: ; 0x0224484C + ldr r1, [r0] + cmp r1, #5 + bne _02244856 + mov r1, #6 + str r1, [r0] +_02244856: + bx lr + thumb_func_end MOD18_0224484C + + thumb_func_start MOD18_02244858 +MOD18_02244858: ; 0x02244858 + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD18_02244858 + + thumb_func_start MOD18_0224486C +MOD18_0224486C: ; 0x0224486C + push {r3, r4, r5, r6, lr} + sub sp, #0x64 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl MOD18_02244858 + ldr r6, _0224498C ; =0x022504B4 + add r3, sp, #0x48 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #4 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + ldr r6, _02244990 ; =0x02250498 + add r3, sp, #0x2c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #5 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + ldr r6, _02244994 ; =0x0225047C + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #7 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + add r0, r5, #0 + mov r1, #7 + bl FUN_02018744 + mov r0, #0x40 + mov r1, #0 + str r0, [sp] + mov r2, #4 + mov r0, #0x1c + add r3, r1, #0 + str r2, [sp, #4] + bl FUN_02006930 + mov r1, #0 + mov r0, #5 + str r1, [sp] + lsl r0, r0, #0xa + str r0, [sp, #4] + str r1, [sp, #8] + mov r3, #4 + mov r0, #0x1c + mov r1, #1 + add r2, r5, #0 + str r3, [sp, #0xc] + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r3, #4 + mov r0, #0x1c + mov r1, #2 + add r2, r5, #0 + str r3, [sp, #0xc] + bl FUN_020068C8 + mov r0, #4 + mov r1, #0 + bl FUN_02054590 + mov r0, #7 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #7 + bl FUN_020545B8 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + mov r3, #0x80 + str r3, [sp] + mov r2, #4 + mov r0, #0x32 + mov r1, #0x34 + add r3, #0xc0 + str r2, [sp, #4] + bl FUN_02006930 + mov r0, #1 + bl FUN_0200E394 + add sp, #0x64 + pop {r3, r4, r5, r6, pc} + nop +_0224498C: .word 0x022504B4 +_02244990: .word 0x02250498 +_02244994: .word 0x0225047C + thumb_func_end MOD18_0224486C + + thumb_func_start MOD18_02244998 +MOD18_02244998: ; 0x02244998 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #7 + add r6, r0, #0 + lsl r1, r1, #6 + mov r0, #0x19 + add r1, r6, r1 + mov r2, #4 + bl FUN_02008C9C + mov r1, #0x6f + lsl r1, r1, #2 + mov r7, #0xba + str r0, [r6, r1] + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_022449BA: + mov r0, #1 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _022449BA + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r2, #4 + mov r0, #0xba + str r2, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0x1c + mov r3, #0 + bl FUN_02008F34 + mov r1, #0xbe + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0xf0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x1c + mov r2, #3 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0xbf + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0xec + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x1c + mov r2, #5 + mov r3, #0 + bl FUN_020090AC + mov r1, #3 + lsl r1, r1, #8 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0xe8 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x1c + mov r2, #6 + mov r3, #0 + bl FUN_020090AC + mov r1, #0xc1 + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009B04 + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009D68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02244998 + + thumb_func_start MOD18_02244A70 +MOD18_02244A70: ; 0x02244A70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x2c] + str r1, [sp, #0xc] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + add r7, r2, #0 + add r6, r3, #0 + ldr r5, [sp, #0x28] + bl MOD18_0223E1FC + cmp r0, #0 + beq _02244AA6 +_02244A8C: + add r1, r4, #0 + add r1, #0x80 + ldr r1, [r1] + add r0, r4, #0 + bl MOD18_02244C48 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + bl MOD18_0223E1FC + cmp r0, #0 + bne _02244A8C +_02244AA6: + ldr r0, [r6] + cmp r0, #0 + beq _02244AB8 + cmp r0, #1 + beq _02244ADE + cmp r0, #2 + beq _02244AF8 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02244AB8: + add r0, r4, #0 + bl MOD18_02244CC8 + add r2, r0, #0 + beq _02244B24 + mov r0, #0x10 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r3, #0 + ldr r0, [sp, #0xc] + str r3, [sp, #8] + bl FUN_0201BD84 + str r0, [r7] + mov r0, #1 + add sp, #0x10 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_02244ADE: + ldr r0, [r7] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _02244B24 + mov r0, #2 + str r0, [r6] + mov r0, #0 + add sp, #0x10 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02244AF8: + add r0, r4, #0 + bl MOD18_02244D04 + cmp r0, #0 + bne _02244B24 + mov r1, #0 + ldr r0, [sp, #0xc] + mov r2, #2 + add r3, r1, #0 + bl FUN_0201A8C8 + ldr r0, [sp, #0xc] + bl FUN_020191D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + cmp r0, #8 + blt _02244B24 + mov r0, #0 + str r0, [r5] + str r0, [r6] +_02244B24: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02244A70 + + thumb_func_start MOD18_02244B28 +MOD18_02244B28: ; 0x02244B28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + mov r7, #0x64 +_02244B32: + add r0, r7, #0 + mov r1, #4 + bl FUN_020219F4 + add r6, r6, #1 + stmia r4!, {r0} + cmp r6, #0x20 + blt _02244B32 + add r0, r5, #0 + mov r1, #0 + add r0, #0x8c + str r1, [r0] + add r0, r5, #0 + add r0, #0x90 + str r1, [r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0x80 + str r0, [r1] + mov r4, #0 + mov r6, #0x50 + mov r7, #4 +_02244B64: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0x84 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #2 + blt _02244B64 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02244B28 + + thumb_func_start MOD18_02244B7C +MOD18_02244B7C: ; 0x02244B7C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_02244B84: + ldr r0, [r4] + bl FUN_02021A20 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #0x20 + blt _02244B84 + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0] + bl FUN_02021A20 + mov r4, #0 +_02244B9E: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _02244B9E + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_02244B7C + + thumb_func_start MOD18_02244BB4 +MOD18_02244BB4: ; 0x02244BB4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + add r0, r1, #0 + add r1, r5, #0 + add r1, #0x94 + mov r2, #0x50 + bl FUN_02021EF0 + add r0, r5, #0 + add r0, #0x94 + ldrh r2, [r0] + mov r4, #0 + ldr r0, _02244C44 ; =0x0000FFFF + add r1, r4, #0 + cmp r2, r0 + beq _02244BFA + add r7, r0, #0 + mov r0, #0xe + add r2, r5, #0 + lsl r0, r0, #0xc +_02244BDE: + add r3, r2, #0 + add r3, #0x94 + ldrh r3, [r3] + cmp r3, r0 + bne _02244BEC + add r4, r4, #1 + add r6, r1, #0 +_02244BEC: + add r2, r2, #2 + add r3, r2, #0 + add r3, #0x94 + ldrh r3, [r3] + add r1, r1, #1 + cmp r3, r7 + bne _02244BDE +_02244BFA: + cmp r4, #2 + blt _02244C02 + bl ErrorHandling +_02244C02: + cmp r4, #0 + bne _02244C14 + add r5, #0x84 + ldr r0, [r5] + ldr r1, [sp] + bl FUN_02021A74 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02244C14: + lsl r0, r6, #1 + add r0, r5, r0 + ldr r1, _02244C44 ; =0x0000FFFF + add r0, #0x94 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x84 + add r1, r5, #0 + ldr r0, [r0] + add r1, #0x94 + bl FUN_02021E28 + add r0, r5, #0 + add r0, #0x88 + add r1, r6, #1 + ldr r0, [r0] + add r5, #0x94 + lsl r1, r1, #1 + add r1, r5, r1 + bl FUN_02021E28 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244C44: .word 0x0000FFFF + thumb_func_end MOD18_02244BB4 + + thumb_func_start MOD18_02244C48 +MOD18_02244C48: ; 0x02244C48 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD18_02244BB4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x8c + mov r2, #0 + ldr r1, [r0] + cmp r6, #0 + ble _02244C7C + add r0, r5, #0 + add r0, #0x90 + ldr r3, [r0] + add r0, r2, #0 +_02244C66: + add r1, r1, #1 + cmp r1, #0x20 + bne _02244C6E + add r1, r0, #0 +_02244C6E: + cmp r1, r3 + bne _02244C76 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02244C76: + add r2, r2, #1 + cmp r2, r6 + blt _02244C66 +_02244C7C: + mov r0, #0 + str r0, [sp] + cmp r6, #0 + ble _02244CC2 + add r7, r5, #0 + add r4, r5, #0 + add r7, #0x8c +_02244C8A: + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + lsl r0, r0, #2 + add r1, #0x84 + ldr r0, [r5, r0] + ldr r1, [r1] + bl FUN_02021A74 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0x20 + bne _02244CB6 + add r1, r5, #0 + add r1, #0x8c + mov r0, #0 + str r0, [r1] +_02244CB6: + ldr r0, [sp] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp] + cmp r0, r6 + blt _02244C8A +_02244CC2: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02244C48 + + thumb_func_start MOD18_02244CC8 +MOD18_02244CC8: ; 0x02244CC8 + add r1, r0, #0 + add r2, r0, #0 + add r1, #0x90 + add r2, #0x8c + ldr r1, [r1] + ldr r2, [r2] + cmp r2, r1 + beq _02244CFE + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x90 + str r3, [r2] + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, #0x20 + bne _02244CF8 + add r2, r0, #0 + mov r3, #0 + add r2, #0x90 + str r3, [r2] +_02244CF8: + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr +_02244CFE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244CC8 + + thumb_func_start MOD18_02244D04 +MOD18_02244D04: ; 0x02244D04 + add r1, r0, #0 + add r1, #0x8c + add r0, #0x90 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + bne _02244D16 + mov r0, #1 + bx lr +_02244D16: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244D04 + + thumb_func_start MOD18_02244D1C +MOD18_02244D1C: ; 0x02244D1C + mov r0, #0x78 + bx lr + thumb_func_end MOD18_02244D1C + + thumb_func_start MOD18_02244D20 +MOD18_02244D20: ; 0x02244D20 + push {r4, lr} + add r4, r0, #0 + bl FUN_020312BC + mov r1, #0 + add r4, #0x18 + add r0, r1, #0 +_02244D2E: + strb r0, [r4, #0xa] + str r0, [r4, #4] + add r1, r1, #1 + add r4, #0xc + cmp r1, #8 + blt _02244D2E + pop {r4, pc} + thumb_func_end MOD18_02244D20 + + thumb_func_start MOD18_02244D3C +MOD18_02244D3C: ; 0x02244D3C + bx lr + .align 2, 0 + thumb_func_end MOD18_02244D3C + + thumb_func_start MOD18_02244D40 +MOD18_02244D40: ; 0x02244D40 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #8 + blt _02244D4E + bl ErrorHandling +_02244D4E: + mov r0, #0xc + add r5, #0x18 + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_02244D40 + + thumb_func_start MOD18_02244D58 +MOD18_02244D58: ; 0x02244D58 + mov r3, #0 + add r0, #0x18 + add r1, r3, #0 +_02244D5E: + ldr r2, [r0, #4] + cmp r2, #0 + ble _02244D68 + sub r2, r2, #1 + str r2, [r0, #4] +_02244D68: + ldr r2, [r0, #4] + cmp r2, #0 + bne _02244D70 + strb r1, [r0, #0xa] +_02244D70: + add r3, r3, #1 + add r0, #0xc + cmp r3, #8 + blt _02244D5E + bx lr + .align 2, 0 + thumb_func_end MOD18_02244D58 + + thumb_func_start MOD18_02244D7C +MOD18_02244D7C: ; 0x02244D7C + strb r1, [r0, #0xa] + lsl r2, r1, #2 + ldr r1, _02244D90 ; =0x02251200 + ldr r1, [r1, r2] + str r1, [r0, #4] + ldr r1, _02244D94 ; =0x0225121C + ldr r1, [r1, r2] + str r1, [r0] + bx lr + nop +_02244D90: .word 0x02251200 +_02244D94: .word 0x0225121C + thumb_func_end MOD18_02244D7C + + thumb_func_start MOD18_02244D98 +MOD18_02244D98: ; 0x02244D98 + ldr r3, _02244D9C ; =MOD18_02244D7C + bx r3 + .align 2, 0 +_02244D9C: .word MOD18_02244D7C + thumb_func_end MOD18_02244D98 + + thumb_func_start MOD18_02244DA0 +MOD18_02244DA0: ; 0x02244DA0 + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _02244DAA + mov r0, #1 + bx lr +_02244DAA: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244DA0 + + thumb_func_start MOD18_02244DB0 +MOD18_02244DB0: ; 0x02244DB0 + ldrb r0, [r0, #0xa] + cmp r0, #2 + bne _02244DBA + mov r0, #0 + bx lr +_02244DBA: + cmp r0, #5 + bne _02244DC2 + mov r0, #0 + bx lr +_02244DC2: + cmp r0, #3 + bne _02244DCA + mov r0, #1 + bx lr +_02244DCA: + cmp r0, #1 + bne _02244DD2 + mov r0, #1 + bx lr +_02244DD2: + cmp r0, #4 + bne _02244DDA + mov r0, #1 + bx lr +_02244DDA: + cmp r0, #0 + bne _02244DE2 + mov r0, #1 + bx lr +_02244DE2: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244DB0 + + thumb_func_start MOD18_02244DE8 +MOD18_02244DE8: ; 0x02244DE8 + push {r4, r5} + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r3, r0, #5 + ldr r4, _02244E1C ; =0x02251238 + ldr r5, _02244E20 ; =0x0225124C + asr r2, r2, #5 + mov r0, #0 +_02244E00: + ldrb r1, [r4] + cmp r2, r1 + bne _02244E0C + ldrb r1, [r5] + cmp r3, r1 + beq _02244E18 +_02244E0C: + add r0, r0, #1 + add r4, r4, #1 + add r5, r5, #1 + cmp r0, #0x11 + blt _02244E00 + mov r0, #0x10 +_02244E18: + pop {r4, r5} + bx lr + .align 2, 0 +_02244E1C: .word 0x02251238 +_02244E20: .word 0x0225124C + thumb_func_end MOD18_02244DE8 + + thumb_func_start MOD18_02244E24 +MOD18_02244E24: ; 0x02244E24 + push {r4, r5} + sub sp, #8 + ldr r3, _02244E64 ; =0x022504D0 + add r2, sp, #0 + ldrh r4, [r3, #0x1c] + strh r4, [r2] + ldrh r4, [r3, #0x1e] + ldrh r3, [r3, #0x20] + strh r4, [r2, #2] + strh r3, [r2, #4] + ldrh r4, [r2] + ldrh r5, [r2, #2] + mov r3, #0 +_02244E3E: + add r2, r4, #0 + add r2, #0x20 + cmp r0, r2 + bne _02244E52 + cmp r1, r5 + bne _02244E52 + add sp, #8 + mov r0, #1 + pop {r4, r5} + bx lr +_02244E52: + add r3, r3, #1 + add r4, #0x20 + cmp r3, #8 + blt _02244E3E + mov r0, #0 + add sp, #8 + pop {r4, r5} + bx lr + nop +_02244E64: .word 0x022504D0 + thumb_func_end MOD18_02244E24 + + thumb_func_start MOD18_02244E68 +MOD18_02244E68: ; 0x02244E68 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _02244EB0 ; =0x022504D0 + add r5, r0, #0 + ldrh r2, [r1, #0x22] + add r0, sp, #0 + strh r2, [r0] + ldrh r2, [r1, #0x24] + ldrh r1, [r1, #0x26] + strh r2, [r0, #2] + strh r1, [r0, #4] + bl FUN_0202EDD8 + cmp r0, #0 + beq _02244E96 + add r0, sp, #0 + ldrh r1, [r0] + add sp, #8 + strh r1, [r4] + ldrh r0, [r0, #2] + strh r0, [r4, #2] + pop {r3, r4, r5, pc} +_02244E96: + cmp r5, #0x10 + bne _02244E9C + mov r5, #0 +_02244E9C: + add r0, sp, #0 + ldrh r2, [r0] + lsl r1, r5, #5 + add r1, r2, r1 + add r1, #0x20 + strh r1, [r4] + ldrh r0, [r0, #2] + strh r0, [r4, #2] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02244EB0: .word 0x022504D0 + thumb_func_end MOD18_02244E68 + + thumb_func_start MOD18_02244EB4 +MOD18_02244EB4: ; 0x02244EB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031280 + cmp r0, #0 + beq _02244EC4 + mov r5, #0x10 +_02244EC4: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02244E68 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_02244EB4 + + thumb_func_start MOD18_02244ED0 +MOD18_02244ED0: ; 0x02244ED0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _02245000 ; =0x022513EC + str r1, [sp] + ldr r0, [r0] + cmp r0, #0 + beq _02244EE0 + b _02244FFE +_02244EE0: + bl FUN_0202595C + cmp r0, #0x94 + beq _02244EEC + bl ErrorHandling +_02244EEC: + ldr r0, _02245000 ; =0x022513EC + ldr r2, _02245004 ; =0x000013E8 + str r4, [r0] + add r0, r4, #0 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _02245000 ; =0x022513EC + ldr r1, [sp] + ldr r2, [r0] + mov r7, #0xff + str r1, [r2] + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 +_02244F0A: + ldr r4, [r0] + ldr r5, _02245008 ; =0x00001284 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + strh r4, [r6, r5] + ldr r4, [r0] + add r5, r5, #2 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + strh r4, [r6, r5] + ldr r4, [r0] + ldr r5, _02245010 ; =0x000012B4 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + strh r4, [r6, r5] + ldr r4, [r0] + add r5, r5, #2 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + add r2, r2, #6 + strh r4, [r6, r5] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245014 ; =0x0000136B + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245018 ; =0x00001373 + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _0224501C ; =0x00001363 + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245020 ; =0x0000137B + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245024 ; =0x0000134B + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245028 ; =0x00001353 + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _0224502C ; =0x0000135B + add r1, r1, #1 + strb r7, [r5, r4] + ldr r4, [r0] + ldr r5, _02245030 ; =0x000013AC + add r6, r4, r3 + mov r4, #0x48 + strh r4, [r6, r5] + ldr r4, [r0] + ldr r5, _02245034 ; =0x000001B5 + add r6, r4, r3 + ldr r4, _02245038 ; =0x000013BC + strh r5, [r6, r4] + ldr r4, [r0] + mov r5, #1 + add r6, r4, r3 + ldr r4, _0224503C ; =0x000013CC + add r3, r3, #2 + strh r5, [r6, r4] + cmp r1, #8 + blt _02244F0A + mov r5, #0 + ldr r6, _02245000 ; =0x022513EC + add r4, r5, #0 + mov r7, #0xff +_02244F9A: + ldr r0, [r6] + add r0, #0xa + add r0, r0, r4 + bl FUN_020266D4 + ldr r0, [r6] + add r4, #0x96 + add r1, r0, r5 + ldr r0, _02245040 ; =0x000012E5 + strb r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _02245044 ; =0x0000133A + add r5, r5, #1 + strb r7, [r1, r0] + cmp r5, #0x11 + blt _02244F9A + ldr r0, _02245000 ; =0x022513EC + mov r2, #0x22 + ldr r1, [r0] + ldr r0, _02245048 ; =0x00000A04 + lsl r2, r2, #6 + add r0, r1, r0 + add r1, r7, #0 + bl MI_CpuFill8 + ldr r0, [sp] + bl MOD18_02245054 + ldr r2, _02245000 ; =0x022513EC + ldr r0, _0224504C ; =0x000013DC + ldr r1, [r2] + mov r3, #0x48 + strh r3, [r1, r0] + add r1, r0, #2 + ldr r4, _02245034 ; =0x000001B5 + ldr r3, [r2] + add r0, r0, #4 + strh r4, [r3, r1] + ldr r1, [r2] + mov r3, #1 + strb r3, [r1, r0] + ldr r0, _02245050 ; =MOD18_02246338 + mov r1, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _02245000 ; =0x022513EC + ldr r1, [r1] + str r0, [r1, #4] +_02244FFE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245000: .word 0x022513EC +_02245004: .word 0x000013E8 +_02245008: .word 0x00001284 +_0224500C: .word 0x00000FFF +_02245010: .word 0x000012B4 +_02245014: .word 0x0000136B +_02245018: .word 0x00001373 +_0224501C: .word 0x00001363 +_02245020: .word 0x0000137B +_02245024: .word 0x0000134B +_02245028: .word 0x00001353 +_0224502C: .word 0x0000135B +_02245030: .word 0x000013AC +_02245034: .word 0x000001B5 +_02245038: .word 0x000013BC +_0224503C: .word 0x000013CC +_02245040: .word 0x000012E5 +_02245044: .word 0x0000133A +_02245048: .word 0x00000A04 +_0224504C: .word 0x000013DC +_02245050: .word MOD18_02246338 + thumb_func_end MOD18_02244ED0 + + thumb_func_start MOD18_02245054 +MOD18_02245054: ; 0x02245054 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02026CA8 + add r4, r0, #0 + bl FUN_02026CC0 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + bl FUN_0202A1B8 + add r1, r0, #0 + add r0, r6, #0 + bl FUN_020268E8 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r2, [r1] + ldr r1, _022450BC ; =0x0000096A + add r1, r2, r1 + mov r2, #0x94 + bl MI_CpuCopy8 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r2, [r1] + ldr r1, _022450C0 ; =0x00001204 + add r1, r2, r1 + bl MOD18_02245128 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r1, [r1] + mov r2, #0x94 + add r1, #0xa + bl MI_CpuCopy8 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r2, [r1] + ldr r1, _022450C4 ; =0x00000A04 + add r1, r2, r1 + bl MOD18_02245128 + pop {r4, r5, r6, pc} + nop +_022450B8: .word 0x022513EC +_022450BC: .word 0x0000096A +_022450C0: .word 0x00001204 +_022450C4: .word 0x00000A04 + thumb_func_end MOD18_02245054 + + thumb_func_start MOD18_022450C8 +MOD18_022450C8: ; 0x022450C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0 + mov ip, r0 + mov lr, r0 + add r0, r1, #0 + lsl r0, r0, #2 + str r1, [sp] + str r2, [sp, #4] + add r3, r3, r0 + mov r7, #1 +_022450E0: + ldr r1, [sp] + mov r0, ip + add r0, r1, r0 + cmp r0, #0x20 + bge _02245112 + ldr r1, [sp, #4] + mov r0, lr + mov r2, #0 + add r4, r1, r0 +_022450F2: + ldrb r0, [r4] + cmp r0, #0 + beq _0224510A + add r1, r6, r2 + cmp r1, #0x20 + bge _0224510A + add r0, r7, #0 + lsl r0, r1 + ldr r5, [r3] + mvn r0, r0 + and r0, r5 + str r0, [r3] +_0224510A: + add r2, r2, #1 + add r4, r4, #1 + cmp r2, #3 + blt _022450F2 +_02245112: + mov r0, lr + add r0, r0, #3 + mov lr, r0 + mov r0, ip + add r0, r0, #1 + add r3, r3, #4 + mov ip, r0 + cmp r0, #3 + blt _022450E0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_022450C8 + + thumb_func_start MOD18_02245128 +MOD18_02245128: ; 0x02245128 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r2, sp, #0x10 + str r1, [sp] + ldr r3, _022451B4 ; =0x02250508 + add r5, r0, #0 + add r2, #1 + mov r1, #9 +_02245138: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02245138 + ldr r3, _022451B8 ; =0x02250511 + add r2, sp, #8 + mov r1, #9 +_0224514A: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224514A + ldr r0, [sp] + mov r1, #0xff + mov r2, #0x80 + bl MI_CpuFill8 + mov r4, #0 +_02245162: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020267C4 + str r0, [sp, #4] + cmp r0, #0 + beq _022451A8 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026810 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026840 + add r6, r0, #0 + cmp r4, #0 + bne _0224518E + add r2, sp, #0x10 + add r2, #1 + b _0224519E +_0224518E: + cmp r4, #0x10 + bge _0224519C + ldr r0, [sp, #4] + bl FUN_0204CAA0 + add r2, r0, #0 + b _0224519E +_0224519C: + add r2, sp, #8 +_0224519E: + ldr r3, [sp] + add r0, r7, #0 + add r1, r6, #0 + bl MOD18_022450C8 +_022451A8: + add r4, r4, #1 + cmp r4, #0x20 + blt _02245162 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022451B4: .word 0x02250508 +_022451B8: .word 0x02250511 + thumb_func_end MOD18_02245128 + + thumb_func_start MOD18_022451BC +MOD18_022451BC: ; 0x022451BC + push {r3, lr} + bl MOD18_0224646C + ldr r0, _022451E4 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _022451D8 + bl FUN_0200CAB4 + ldr r0, _022451E4 ; =0x022513EC + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #4] +_022451D8: + ldr r0, _022451E4 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _022451E8 ; =0x000013E4 + strb r2, [r1, r0] + pop {r3, pc} + .align 2, 0 +_022451E4: .word 0x022513EC +_022451E8: .word 0x000013E4 + thumb_func_end MOD18_022451BC + + thumb_func_start MOD18_022451EC +MOD18_022451EC: ; 0x022451EC + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0224525C ; =0x022513EC + ldr r0, _02245260 ; =0x000013E4 + ldr r2, [r1] + mov r4, #0 + strb r4, [r2, r0] + ldr r1, [r1] + add r0, r0, #2 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0224523E +_02245202: + add r0, r4, #0 + bl MOD18_02246430 + add r4, r4, #1 + cmp r4, #8 + blt _02245202 + mov r5, #0 + ldr r6, _0224525C ; =0x022513EC + ldr r7, _02245264 ; =0x00000FFF + add r4, r5, #0 +_02245216: + ldr r1, [r6] + ldr r0, _02245268 ; =0x00001284 + add r0, r1, r0 + ldrh r3, [r0, r4] + add r2, r0, r4 + cmp r3, r7 + beq _02245236 + ldrh r1, [r2, #2] + ldr r0, _02245264 ; =0x00000FFF + cmp r1, r0 + beq _02245236 + ldrb r2, [r2, #4] + add r0, r3, #0 + add r3, r5, #0 + bl MOD18_0224630C +_02245236: + add r5, r5, #1 + add r4, r4, #6 + cmp r5, #8 + blt _02245216 +_0224523E: + ldr r0, _0224525C ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + bne _02245258 + ldr r0, _0224526C ; =MOD18_02246338 + mov r1, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _0224525C ; =0x022513EC + ldr r1, [r1] + str r0, [r1, #4] +_02245258: + pop {r3, r4, r5, r6, r7, pc} + nop +_0224525C: .word 0x022513EC +_02245260: .word 0x000013E4 +_02245264: .word 0x00000FFF +_02245268: .word 0x00001284 +_0224526C: .word MOD18_02246338 + thumb_func_end MOD18_022451EC + + thumb_func_start MOD18_02245270 +MOD18_02245270: ; 0x02245270 + push {r3, lr} + ldr r0, _022452A0 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02245288 + bl FUN_0200CAB4 + ldr r0, _022452A0 ; =0x022513EC + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #4] +_02245288: + bl MOD18_0224646C + ldr r0, _022452A0 ; =0x022513EC + ldr r0, [r0] + cmp r0, #0 + beq _02245298 + bl FUN_02016A18 +_02245298: + ldr r0, _022452A0 ; =0x022513EC + mov r1, #0 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_022452A0: .word 0x022513EC + thumb_func_end MOD18_02245270 + + thumb_func_start MOD18_022452A4 +MOD18_022452A4: ; 0x022452A4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _02245308 ; =0x00000FFF + ldr r6, _0224530C ; =0x022513EC + str r4, [sp] + add r5, r4, #0 +_022452B0: + ldr r0, [r6] + add r0, #0xa + add r0, r0, r4 + bl FUN_02026714 + ldr r0, [r6] + add r4, #0x96 + add r1, r0, r5 + ldr r0, _02245310 ; =0x00001284 + strh r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _02245314 ; =0x00001286 + strh r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _02245318 ; =0x000012B4 + strh r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _0224531C ; =0x000012B6 + add r5, r5, #6 + strh r7, [r1, r0] + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #8 + blt _022452B0 + ldr r0, _0224530C ; =0x022513EC + mov r2, #0x22 + ldr r1, [r0] + ldr r0, _02245320 ; =0x00000A04 + lsl r2, r2, #6 + add r0, r1, r0 + mov r1, #0xff + bl MI_CpuFill8 + ldr r0, _0224530C ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl MOD18_02245054 + pop {r3, r4, r5, r6, r7, pc} + nop +_02245308: .word 0x00000FFF +_0224530C: .word 0x022513EC +_02245310: .word 0x00001284 +_02245314: .word 0x00001286 +_02245318: .word 0x000012B4 +_0224531C: .word 0x000012B6 +_02245320: .word 0x00000A04 + thumb_func_end MOD18_022452A4 + + thumb_func_start MOD18_02245324 +MOD18_02245324: ; 0x02245324 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0224534C ; =0x022513EC + add r5, r4, #0 +_0224532C: + ldr r0, [r6] + add r0, #0xa + add r0, r0, r5 + bl FUN_020266D4 + add r4, r4, #1 + add r5, #0x96 + cmp r4, #0x11 + blt _0224532C + ldr r0, _0224534C ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl MOD18_02245054 + pop {r4, r5, r6, pc} + nop +_0224534C: .word 0x022513EC + thumb_func_end MOD18_02245324 + + thumb_func_start MOD18_02245350 +MOD18_02245350: ; 0x02245350 + ldr r0, _02245354 ; =0x000013E8 + bx lr + .align 2, 0 +_02245354: .word 0x000013E8 + thumb_func_end MOD18_02245350 + + thumb_func_start MOD18_02245358 +MOD18_02245358: ; 0x02245358 + push {r4, r5} + ldr r2, _0224539C ; =0x022513EC + ldr r1, [r2] + cmp r1, #0 + beq _02245396 + add r4, r1, r0 + ldr r1, _022453A0 ; =0x00001363 + mov r3, #0xff + strb r3, [r4, r1] + ldr r4, [r2] + add r5, r4, r0 + add r4, r1, #0 + add r4, #8 + strb r3, [r5, r4] + ldr r4, [r2] + add r5, r4, r0 + add r4, r1, #0 + add r4, #0x10 + strb r3, [r5, r4] + mov r3, #6 + mul r3, r0 + ldr r4, [r2] + ldr r0, _022453A4 ; =0x00000FFF + add r5, r4, r3 + add r4, r1, #0 + sub r4, #0xaf + strh r0, [r5, r4] + ldr r2, [r2] + sub r1, #0xad + add r2, r2, r3 + strh r0, [r2, r1] +_02245396: + pop {r4, r5} + bx lr + nop +_0224539C: .word 0x022513EC +_022453A0: .word 0x00001363 +_022453A4: .word 0x00000FFF + thumb_func_end MOD18_02245358 + + thumb_func_start MOD18_022453A8 +MOD18_022453A8: ; 0x022453A8 + push {r3, r4, r5, lr} + ldr r1, _022453D4 ; =0x022513EC + add r4, r0, #0 + ldr r1, [r1] + cmp r1, #0 + beq _022453D2 + bl MOD18_02246430 + ldr r1, _022453D4 ; =0x022513EC + mov r0, #6 + add r5, r4, #0 + mul r5, r0 + ldr r0, [r1] + ldr r3, _022453D8 ; =0x00000FFF + add r2, r0, r5 + ldr r0, _022453DC ; =0x00001284 + strh r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #2 + add r1, r1, r5 + strh r3, [r1, r0] +_022453D2: + pop {r3, r4, r5, pc} + .align 2, 0 +_022453D4: .word 0x022513EC +_022453D8: .word 0x00000FFF +_022453DC: .word 0x00001284 + thumb_func_end MOD18_022453A8 + + thumb_func_start MOD18_022453E0 +MOD18_022453E0: ; 0x022453E0 + ldr r3, _022453E4 ; =0x0204F7FD + bx r3 + .align 2, 0 +_022453E4: .word 0x0204F7FD + thumb_func_end MOD18_022453E0 + + thumb_func_start MOD18_022453E8 +MOD18_022453E8: ; 0x022453E8 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r7, r0, #0 + str r1, [sp] + add r5, r6, #0 +_022453F2: + ldr r0, _02245434 ; =0x022513EC + ldr r4, [r0] + add r4, #0xa + add r0, r4, r5 + bl FUN_02026CA0 + cmp r0, #0 + beq _02245426 + add r0, r6, #0 + bl FUN_0204E34C + cmp r0, #0 + beq _02245426 + add r0, r4, r5 + bl FUN_02026C88 + cmp r7, r0 + bne _02245426 + add r0, r4, r5 + bl FUN_02026C90 + ldr r1, [sp] + cmp r1, r0 + bne _02245426 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_02245426: + add r6, r6, #1 + add r5, #0x96 + cmp r6, #8 + blt _022453F2 + mov r0, #0xff + pop {r3, r4, r5, r6, r7, pc} + nop +_02245434: .word 0x022513EC + thumb_func_end MOD18_022453E8 + + thumb_func_start MOD18_02245438 +MOD18_02245438: ; 0x02245438 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r2, #0 + ldrb r4, [r5, #4] + bl FUN_02031190 + cmp r4, r0 + bne _02245480 + ldr r0, _02245484 ; =0x022513EC + ldr r1, _02245488 ; =0x000013E4 + ldr r0, [r0] + ldrb r1, [r0, r1] + cmp r1, #0 + bne _02245480 + ldrb r1, [r5, #7] + cmp r1, #0 + str r4, [sp] + beq _02245470 + ldrb r1, [r5, #5] + mov r3, #0 + str r1, [sp, #4] + ldrh r1, [r5] + ldrh r2, [r5, #2] + ldr r0, [r0] + bl MOD18_02245E1C + add sp, #8 + pop {r3, r4, r5, pc} +_02245470: + ldrb r1, [r5, #5] + str r1, [sp, #4] + ldrh r1, [r5] + ldrh r2, [r5, #2] + ldrb r3, [r5, #6] + ldr r0, [r0] + bl MOD18_022459E8 +_02245480: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02245484: .word 0x022513EC +_02245488: .word 0x000013E4 + thumb_func_end MOD18_02245438 + + thumb_func_start MOD18_0224548C +MOD18_0224548C: ; 0x0224548C + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _022454B0 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _022454B4 ; =MOD18_022453E0 + mov r1, #0x58 + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_022479A0 +_022454B0: + pop {r4, pc} + nop +_022454B4: .word MOD18_022453E0 + thumb_func_end MOD18_0224548C + + thumb_func_start MOD18_022454B8 +MOD18_022454B8: ; 0x022454B8 + mov r0, #8 + bx lr + thumb_func_end MOD18_022454B8 + + thumb_func_start MOD18_022454BC +MOD18_022454BC: ; 0x022454BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, sp, #0 + add r4, r2, #0 + strb r5, [r0] + bl FUN_02031190 + cmp r0, #0 + beq _022454D4 + bl ErrorHandling + pop {r3, r4, r5, pc} +_022454D4: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0224550C + ldrb r0, [r4, #2] + cmp r0, #0 + ldrb r0, [r4] + beq _02245502 + add r1, r5, #0 + bl MOD18_02245528 + cmp r0, #0 + bne _02245518 + ldr r0, _0224551C ; =0x022513EC + mov r2, #0xff + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _02245520 ; =0x0000136B + strb r2, [r1, r0] + mov r0, #0x3d + add r1, sp, #0 + bl FUN_02030C4C + pop {r3, r4, r5, pc} +_02245502: + add r1, r5, #0 + mov r2, #0 + bl MOD18_022455D0 + pop {r3, r4, r5, pc} +_0224550C: + ldr r0, _0224551C ; =0x022513EC + mov r2, #0xff + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _02245520 ; =0x0000136B + strb r2, [r1, r0] +_02245518: + pop {r3, r4, r5, pc} + nop +_0224551C: .word 0x022513EC +_02245520: .word 0x0000136B + thumb_func_end MOD18_022454BC + + thumb_func_start MOD18_02245524 +MOD18_02245524: ; 0x02245524 + mov r0, #3 + bx lr + thumb_func_end MOD18_02245524 + + thumb_func_start MOD18_02245528 +MOD18_02245528: ; 0x02245528 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _022455C4 ; =0x022513EC + add r6, r1, #0 + ldr r1, [r0] + mov r0, #0x96 + add r1, #8 + mul r0, r5 + add r0, r1, r0 + str r0, [sp] + add r0, r0, #2 + bl FUN_02026CA0 + cmp r0, #0 + bne _0224554E + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224554E: + mov r0, #0x36 + bl FUN_02031354 + cmp r0, #0 + beq _0224555E + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224555E: + ldr r7, _022455C4 ; =0x022513EC + mov r4, #0 +_02245562: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _02245580 + ldr r0, [r7] + add r1, r0, r4 + ldr r0, _022455C8 ; =0x00001373 + ldrb r0, [r1, r0] + cmp r5, r0 + bne _02245580 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02245580: + add r4, r4, #1 + cmp r4, #8 + blt _02245562 + add r0, r5, #0 + add r1, sp, #4 + bl MOD18_02244EB4 + ldr r0, [sp] + strb r6, [r0, #1] + add r0, r5, #0 + bl MOD18_02245FC0 + ldr r2, _022455C4 ; =0x022513EC + lsl r0, r5, #0x18 + ldr r1, [r2] + lsr r0, r0, #0x18 + add r3, r1, r6 + ldr r1, _022455CC ; =0x0000136B + strb r0, [r3, r1] + ldr r2, [r2] + add r1, #8 + add r2, r2, r6 + strb r0, [r2, r1] + add r2, sp, #4 + ldrh r1, [r2] + ldrh r2, [r2, #2] + add r0, r6, #0 + mov r3, #0 + bl FUN_0204E794 + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022455C4: .word 0x022513EC +_022455C8: .word 0x00001373 +_022455CC: .word 0x0000136B + thumb_func_end MOD18_02245528 + + thumb_func_start MOD18_022455D0 +MOD18_022455D0: ; 0x022455D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r1, sp, #4 + add r4, r0, #0 + str r2, [sp] + bl MOD18_02244E68 + ldr r0, _0224565C ; =0x022513EC + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _02245660 ; =0x0000136B + strb r4, [r1, r0] + bl FUN_02031280 + cmp r0, #0 + beq _02245604 + ldr r0, _0224565C ; =0x022513EC + ldr r2, [r0] + ldr r0, _02245664 ; =0x000013DC + add r1, r0, #2 + ldrh r4, [r2, r0] + add r0, r0, #4 + ldrh r7, [r2, r1] + ldrb r6, [r2, r0] + b _0224561A +_02245604: + ldr r0, _0224565C ; =0x022513EC + lsl r1, r5, #1 + ldr r0, [r0] + add r2, r0, r1 + ldr r1, _02245668 ; =0x000013AC + add r0, r1, #0 + ldrh r4, [r2, r1] + add r0, #0x10 + add r1, #0x20 + ldrh r7, [r2, r0] + ldrh r6, [r2, r1] +_0224561A: + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl FUN_0204E794 + add r0, r6, #0 + bl FUN_02059BF4 + add r4, r4, r0 + add r0, r6, #0 + bl FUN_02059C00 + add r1, sp, #4 + add r0, r7, r0 + strh r4, [r1, #6] + strh r0, [r1, #8] + strb r5, [r1, #0xa] + ldr r0, [sp] + strb r6, [r1, #0xb] + strb r0, [r1, #0xc] + add r1, sp, #8 + mov r0, #0x39 + add r1, #2 + bl FUN_02030C4C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224565C: .word 0x022513EC +_02245660: .word 0x0000136B +_02245664: .word 0x000013DC +_02245668: .word 0x000013AC + thumb_func_end MOD18_022455D0 + + thumb_func_start MOD18_0224566C +MOD18_0224566C: ; 0x0224566C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + ldr r0, _022457C8 ; =0x022513EC + add r7, r1, #0 + ldr r0, [r0] + str r2, [sp] + cmp r0, #0 + bne _02245684 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02245684: + cmp r6, #0 + beq _0224569A + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _0224569A + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224569A: + add r0, r6, #0 + bl FUN_0204D830 + cmp r0, #0 + beq _022456AA + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_022456AA: + ldr r0, _022457C8 ; =0x022513EC + ldr r0, [r0] + add r1, r0, r6 + ldr r0, _022457CC ; =0x0000136B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _022456BE + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022456BE: + ldr r1, [sp] + add r0, r7, #0 + bl MOD18_022453E8 + cmp r0, #0xff + beq _02245702 + ldr r1, _022457C8 ; =0x022513EC + lsl r0, r0, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + add r2, r1, r6 + ldr r1, _022457CC ; =0x0000136B + strb r0, [r2, r1] + mov r1, #1 + add r2, sp, #4 + strb r1, [r2, #7] + ldr r1, [sp] + strh r7, [r2] + strh r1, [r2, #2] + mov r1, #0 + strb r1, [r2, #6] + strb r6, [r2, #4] + strb r0, [r2, #5] + mov r0, #0x3a + add r1, sp, #4 + bl FUN_02030C4C + add r0, r6, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245702: + mov r5, #0 + add r4, r5, #0 +_02245706: + ldr r0, _022457C8 ; =0x022513EC + ldr r0, [r0] + add r0, #0xa + add r0, r0, r4 + bl FUN_02026CA0 + cmp r0, #0 + beq _02245766 + add r0, r5, #0 + add r1, sp, #0xc + bl MOD18_02244E68 + add r0, sp, #4 + ldrh r0, [r0, #8] + cmp r7, r0 + bne _02245766 + add r0, sp, #4 + ldrh r1, [r0, #0xa] + ldr r0, [sp] + cmp r0, r1 + bne _02245766 + ldr r1, _022457C8 ; =0x022513EC + lsl r0, r5, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + add r2, r1, r6 + ldr r1, _022457CC ; =0x0000136B + mov r3, #0 + strb r0, [r2, r1] + add r2, sp, #4 + strb r3, [r2, #7] + ldr r1, [sp] + strh r7, [r2] + strh r1, [r2, #2] + strb r3, [r2, #6] + strb r6, [r2, #4] + strb r0, [r2, #5] + mov r0, #0x3a + add r1, sp, #4 + bl FUN_02030C4C + add r0, r6, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245766: + add r5, r5, #1 + add r4, #0x96 + cmp r5, #8 + ble _02245706 + ldr r1, [sp] + add r0, r7, #0 + bl MOD18_02244E24 + cmp r0, #0 + beq _022457C2 + ldr r0, _022457C8 ; =0x022513EC + lsl r2, r6, #1 + ldr r1, [r0] + ldr r4, _022457D0 ; =0x000013AC + add r0, r1, r2 + ldrh r2, [r0, r4] + add r3, sp, #4 + strh r2, [r3, #0xe] + add r2, r4, #0 + add r2, #0x10 + ldrh r2, [r0, r2] + strh r2, [r3, #0x10] + add r2, r4, #0 + strb r6, [r3, #0x12] + add r2, #0x20 + ldrh r0, [r0, r2] + mov r2, #0 + sub r4, #0x41 + strb r0, [r3, #0x13] + strb r2, [r3, #0x14] + add r0, r1, r6 + strb r2, [r0, r4] + ldrh r1, [r3, #0xe] + ldrh r2, [r3, #0x10] + ldrb r3, [r3, #0x13] + add r0, r6, #0 + bl FUN_0204E794 + add r1, sp, #0x10 + mov r0, #0x39 + add r1, #2 + bl FUN_02030C4C + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022457C2: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022457C8: .word 0x022513EC +_022457CC: .word 0x0000136B +_022457D0: .word 0x000013AC + thumb_func_end MOD18_0224566C + + thumb_func_start MOD18_022457D4 +MOD18_022457D4: ; 0x022457D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _022457E6 + mov r1, #4 + bl FUN_020021EC +_022457E6: + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_022457D4 + + thumb_func_start MOD18_022457F8 +MOD18_022457F8: ; 0x022457F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0224580A + mov r1, #4 + bl FUN_020021EC +_0224580A: + add r0, r4, #0 + mov r2, #0 + add r1, sp, #0 + strb r2, [r1, #1] + add r0, #0x2c + ldrb r0, [r0] + strb r0, [r1] + strb r2, [r1, #2] + mov r0, #0x3b + add r1, sp, #0 + bl FUN_020311D0 + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + bl MOD18_022479A0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_022457F8 + + thumb_func_start MOD18_02245838 +MOD18_02245838: ; 0x02245838 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + mov r5, #0 + ldr r6, [r4] + cmp r0, #7 + bhi _02245896 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02245856: ; jump table + .short _02245866 - _02245856 - 2 ; case 0 + .short _0224588A - _02245856 - 2 ; case 1 + .short _022458B0 - _02245856 - 2 ; case 2 + .short _022458D4 - _02245856 - 2 ; case 3 + .short _022458F8 - _02245856 - 2 ; case 4 + .short _0224592A - _02245856 - 2 ; case 5 + .short _0224594E - _02245856 - 2 ; case 6 + .short _02245972 - _02245856 - 2 ; case 7 +_02245866: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02245874 + mov r6, #0x2f + mov r0, #3 + b _02245878 +_02245874: + mov r6, #0x32 + mov r0, #1 +_02245878: + str r0, [r4, #0xc] + bl MOD18_0223D638 + mov r2, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _022459A0 +_0224588A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02245898 +_02245896: + b _022459A0 +_02245898: + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _022459E0 ; =0x022504F8 + ldr r2, _022459E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #2 + str r0, [r4, #0xc] + b _022459A0 +_022458B0: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _022458C6 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #7 + str r0, [r4, #0xc] + b _022459A0 +_022458C6: + sub r1, r5, #1 + cmp r0, r1 + beq _022459A0 + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _022459A0 +_022458D4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022459A0 + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _022459E0 ; =0x022504F8 + ldr r2, _022459E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #4 + str r0, [r4, #0xc] + b _022459A0 +_022458F8: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _0224591C + add r0, r5, #0 + str r0, [r4, #4] + bl MOD18_0223D638 + add r2, r5, #0 + mov r1, #0x30 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #5 + str r0, [r4, #0xc] + b _022459A0 +_0224591C: + sub r1, r5, #1 + cmp r0, r1 + beq _022459A0 + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _022459A0 +_0224592A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022459A0 + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _022459E0 ; =0x022504F8 + ldr r2, _022459E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #6 + str r0, [r4, #0xc] + b _022459A0 +_0224594E: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245964 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #7 + str r0, [r4, #0xc] + b _022459A0 +_02245964: + sub r1, r5, #1 + cmp r0, r1 + beq _022459A0 + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _022459A0 +_02245972: + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #1 + add r1, sp, #4 + strb r0, [r1, #1] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + strb r0, [r1] + add r0, r5, #0 + strb r0, [r1, #2] + mov r0, #0x3b + add r1, sp, #4 + bl FUN_020311D0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457D4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022459A0: + bl FUN_0202EDD8 + cmp r0, #0 + bne _022459C4 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #8 + bhs _022459C4 + bl FUN_02030E7C + cmp r0, #0 + bne _022459C4 + bl FUN_02031190 + cmp r0, #0 + beq _022459C4 + mov r5, #1 +_022459C4: + cmp r5, #0 + beq _022459DC + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457F8 + bl FUN_0204F7FC +_022459DC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022459E0: .word 0x022504F8 +_022459E4: .word 0x000003D9 + thumb_func_end MOD18_02245838 + + thumb_func_start MOD18_022459E8 +MOD18_022459E8: ; 0x022459E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + bl MOD18_02247984 + mov r0, #4 + mov r1, #0x30 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x18] + str r6, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [sp, #0x18] + str r7, [r4, #0x20] + add r0, #0x2b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x2c + strb r1, [r0] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [sp] + add r1, r4, #0 + str r0, [r4, #0x24] + ldr r0, _02245A48 ; =MOD18_02245838 + str r5, [r4] + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r4, #8] + ldr r1, [r4, #8] + ldr r2, _02245A4C ; =MOD18_022457F8 + add r0, r4, #0 + bl MOD18_0223E688 + bl FUN_0204F7E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245A48: .word MOD18_02245838 +_02245A4C: .word MOD18_022457F8 + thumb_func_end MOD18_022459E8 + + thumb_func_start MOD18_02245A50 +MOD18_02245A50: ; 0x02245A50 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 + str r3, [sp] + cmp r0, #0 + bne _02245AA2 + mov r0, #0xb + mov r1, #0x30 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x18] + str r6, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [sp, #0x18] + str r7, [r4, #0x20] + add r0, #0x2b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x2c + strb r1, [r0] + ldr r0, [r5, #0x1c] + ldr r0, [r0] + cmp r0, #2 + beq _02245A9A + bl ErrorHandling +_02245A9A: + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [sp] + str r0, [r4, #0x24] +_02245AA2: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02245A50 + + thumb_func_start MOD18_02245AA8 +MOD18_02245AA8: ; 0x02245AA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r7, #0 + str r0, [sp] + str r1, [sp, #4] + add r4, r7, #0 +_02245AB4: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _02245B0C + ldr r0, [sp, #4] + cmp r0, #0 + beq _02245AD6 + add r0, r4, #0 + bl FUN_0204E544 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E598 + b _02245AE4 +_02245AD6: + add r0, r4, #0 + bl FUN_0204E3EC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E440 +_02245AE4: + add r5, r0, #0 + ldr r0, _02245B18 ; =0x0000FFFF + cmp r6, r0 + bne _02245AF0 + cmp r5, r0 + beq _02245B0C +_02245AF0: + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02245B0C + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02244DE8 + ldr r1, [sp] + cmp r0, r1 + bne _02245B0C + add r7, r7, #1 +_02245B0C: + add r4, r4, #1 + cmp r4, #8 + blt _02245AB4 + add r0, r7, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245B18: .word 0x0000FFFF + thumb_func_end MOD18_02245AA8 + + thumb_func_start MOD18_02245B1C +MOD18_02245B1C: ; 0x02245B1C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r2, [sp, #8] + add r6, r0, #0 + add r7, r1, #0 + str r3, [sp, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DBB4 + add r5, r0, #0 + ldr r1, [sp, #0x30] + mov r0, #2 + bl FUN_02012838 + add r4, r0, #0 + add r1, r5, #0 + mov r2, #0x26 + mov r3, #0 + bl FUN_02012880 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x27 + mov r3, #1 + bl FUN_02012880 + ldr r0, [sp, #0x30] + mov r1, #1 + str r4, [sp, #0x10] + bl FUN_02018FF4 + add r1, r0, #0 + str r1, [sp, #0x14] + mov r0, #0 + add r3, sp, #0x10 + strb r0, [r3, #8] + mov r0, #1 + strb r0, [r3, #9] + mov r0, #2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + mov r2, #0xf + bic r0, r2 + strb r0, [r3, #0xb] + ldrb r4, [r3, #0xb] + mov r0, #0x30 + bic r4, r0 + strb r4, [r3, #0xb] + ldrb r0, [r3, #0xb] + bic r0, r2 + strb r0, [r3, #0xb] + add r0, r6, #0 + add r2, r7, #0 + bl FUN_02019150 + ldr r0, [sp, #0x14] + ldr r2, [sp, #8] + ldr r3, [sp, #0xc] + mov r1, #1 + bl FUN_0200CCA4 + ldr r0, [sp, #0x30] + mov r2, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, sp, #0x10 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_02245B1C + + thumb_func_start MOD18_02245BB4 +MOD18_02245BB4: ; 0x02245BB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + mov r5, #0 + ldr r6, [r4] + cmp r0, #0xa + bhi _02245C7A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02245BD2: ; jump table + .short _02245BE8 - _02245BD2 - 2 ; case 0 + .short _02245C14 - _02245BD2 - 2 ; case 1 + .short _02245C38 - _02245BD2 - 2 ; case 2 + .short _02245C5C - _02245BD2 - 2 ; case 3 + .short _02245C6E - _02245BD2 - 2 ; case 4 + .short _02245C94 - _02245BD2 - 2 ; case 5 + .short _02245CF8 - _02245BD2 - 2 ; case 6 + .short _02245D1C - _02245BD2 - 2 ; case 7 + .short _02245D4E - _02245BD2 - 2 ; case 8 + .short _02245D6C - _02245BD2 - 2 ; case 9 + .short _02245D96 - _02245BD2 - 2 ; case 10 +_02245BE8: + add r0, r4, #0 + add r0, #0x2c + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r1, r0 + beq _02245BFE + mov r6, #0x2d + mov r0, #1 + b _02245C02 +_02245BFE: + mov r6, #0x29 + mov r0, #4 +_02245C02: + str r0, [r4, #0xc] + bl MOD18_0223D638 + mov r2, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _02245DCE +_02245C14: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245C7A + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _02245E08 ; =0x022504F8 + ldr r2, _02245E0C ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #2 + str r0, [r4, #0xc] + b _02245DCE +_02245C38: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245C4E + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #3 + str r0, [r4, #0xc] + b _02245DCE +_02245C4E: + sub r1, r5, #1 + cmp r0, r1 + beq _02245C7A + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _02245DCE +_02245C5C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245C7A + mov r0, #0xa + str r0, [r4, #0xc] + b _02245DCE +_02245C6E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02245C7C +_02245C7A: + b _02245DCE +_02245C7C: + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _02245E08 ; =0x022504F8 + ldr r2, _02245E0C ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #5 + str r0, [r4, #0xc] + b _02245DCE +_02245C94: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245CEA + add r0, r5, #0 + str r0, [r4, #4] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + bl FUN_0204EE9C + cmp r0, #0 + bne _02245CC2 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r5, #0 + bl MOD18_02245AA8 + cmp r0, #0 + ble _02245CD6 +_02245CC2: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x2c + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #3 + str r0, [r4, #0xc] + b _02245DCE +_02245CD6: + bl MOD18_0223D638 + add r2, r5, #0 + mov r1, #0x25 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #6 + str r0, [r4, #0xc] + b _02245DCE +_02245CEA: + sub r1, r5, #1 + cmp r0, r1 + beq _02245DCE + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _02245DCE +_02245CF8: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245DCE + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _02245E10 ; =0x02250500 + ldr r2, _02245E0C ; =0x000003D9 + mov r3, #0xb + bl MOD18_02245B1C + str r0, [r4, #4] + mov r0, #7 + str r0, [r4, #0xc] + b _02245DCE +_02245D1C: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245D32 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #3 + str r0, [r4, #0xc] + b _02245DCE +_02245D32: + cmp r0, #1 + bne _02245D40 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #8 + str r0, [r4, #0xc] + b _02245DCE +_02245D40: + sub r1, r5, #1 + cmp r0, r1 + beq _02245DCE + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _02245DCE +_02245D4E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245DCE + bl MOD18_0223D638 + bl MOD18_0224DD94 + bl FUN_0204FCF4 + mov r0, #9 + str r0, [r4, #0xc] + b _02245DCE +_02245D6C: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02245DCE + bl FUN_02031190 + cmp r0, #0 + bne _02245DCE + mov r1, #1 + add r0, sp, #4 + strb r1, [r0] + mov r0, #0x56 + add r1, sp, #4 + bl FUN_020311D0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457D4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02245D96: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r4, #0 + mov r2, #1 + add r1, sp, #4 + strb r2, [r1, #2] + add r0, #0x2c + ldrb r0, [r0] + strb r0, [r1, #1] + strb r2, [r1, #3] + add r1, sp, #4 + mov r0, #0x3b + add r1, #1 + bl FUN_020311D0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457D4 + ldr r0, _02245E14 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _02245E18 ; =0x000012E4 + add sp, #8 + strb r2, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02245DCE: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #0x10 + beq _02245DEC + bl FUN_0204E34C + cmp r0, #0 + bne _02245DEC + ldr r0, [r4, #0xc] + cmp r0, #8 + beq _02245DEC + cmp r0, #9 + beq _02245DEC + mov r5, #1 +_02245DEC: + cmp r5, #0 + beq _02245E04 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457F8 + bl FUN_0204F7FC +_02245E04: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245E08: .word 0x022504F8 +_02245E0C: .word 0x000003D9 +_02245E10: .word 0x02250500 +_02245E14: .word 0x022513EC +_02245E18: .word 0x000012E4 + thumb_func_end MOD18_02245BB4 + + thumb_func_start MOD18_02245E1C +MOD18_02245E1C: ; 0x02245E1C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x30 + add r7, r2, #0 + str r3, [sp] + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x18] + str r6, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [sp, #0x18] + str r7, [r4, #0x20] + add r0, #0x2b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x2c + strb r1, [r0] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [sp] + mov r1, #0 + str r0, [r4, #0x24] + add r0, r4, #0 + str r5, [r4] + add r0, #0x29 + strb r1, [r0] + bl MOD18_02247984 + ldr r0, _02245E84 ; =MOD18_02245BB4 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r4, #8] + ldr r1, [r4, #8] + ldr r2, _02245E88 ; =MOD18_022457F8 + add r0, r4, #0 + bl MOD18_0223E688 + bl FUN_0204F7E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245E84: .word MOD18_02245BB4 +_02245E88: .word MOD18_022457F8 + thumb_func_end MOD18_02245E1C + + thumb_func_start MOD18_02245E8C +MOD18_02245E8C: ; 0x02245E8C + mov r0, #8 + bx lr + thumb_func_end MOD18_02245E8C + + thumb_func_start MOD18_02245E90 +MOD18_02245E90: ; 0x02245E90 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r0, _02245F10 ; =0x022513EC + add r4, r2, #0 + ldr r1, [r0] + ldrb r0, [r4, #4] + mov r2, #0xff + add r1, r1, r0 + ldr r0, _02245F14 ; =0x00001363 + strb r2, [r1, r0] + ldrb r5, [r4, #4] + bl FUN_02031190 + cmp r5, r0 + bne _02245EFA + bl MOD18_0224D344 + bl MOD18_02248FC8 + bl MOD18_0223E6B8 + bl FUN_02031190 + mov r1, #0 + bl MOD18_0223FCE8 + mov r0, #0x2b + bl FUN_020311DC + ldr r1, _02245F10 ; =0x022513EC + ldr r0, _02245F18 ; =0x000013E6 + ldr r2, [r1] + mov r3, #0 + strb r3, [r2, r0] + ldrb r0, [r4, #4] + str r0, [sp] + ldrb r0, [r4, #6] + str r0, [sp, #4] + ldr r0, [r1] + ldrh r1, [r4] + ldrh r2, [r4, #2] + ldrb r3, [r4, #5] + ldr r0, [r0] + bl MOD18_0224686C + ldr r0, _02245F10 ; =0x022513EC + mov r2, #0 + ldr r1, [r0] + mov r0, #0xa + lsl r0, r0, #8 + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, pc} +_02245EFA: + add r0, r5, #0 + bl MOD18_02243FB8 + ldrb r0, [r4, #4] + ldrh r1, [r4] + ldrh r2, [r4, #2] + ldrb r3, [r4, #5] + bl FUN_0204E7CC + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02245F10: .word 0x022513EC +_02245F14: .word 0x00001363 +_02245F18: .word 0x000013E6 + thumb_func_end MOD18_02245E90 + + thumb_func_start MOD18_02245F1C +MOD18_02245F1C: ; 0x02245F1C + ldr r3, _02245F24 ; =0x020311DD + mov r0, #0x38 + bx r3 + nop +_02245F24: .word 0x020311DD + thumb_func_end MOD18_02245F1C + + thumb_func_start MOD18_02245F28 +MOD18_02245F28: ; 0x02245F28 + push {r3, r4} + ldr r2, _02245F44 ; =0x022513EC + mov r4, #0xff + ldr r1, [r2] + add r3, r1, r0 + ldr r1, _02245F48 ; =0x0000136B + strb r4, [r3, r1] + ldr r2, [r2] + add r1, #8 + add r0, r2, r0 + strb r4, [r0, r1] + pop {r3, r4} + bx lr + nop +_02245F44: .word 0x022513EC +_02245F48: .word 0x0000136B + thumb_func_end MOD18_02245F28 + + thumb_func_start MOD18_02245F4C +MOD18_02245F4C: ; 0x02245F4C + ldr r1, _02245F68 ; =0x022513EC + ldr r1, [r1] + cmp r1, #0 + beq _02245F62 + add r1, r1, r0 + ldr r0, _02245F6C ; =0x0000136B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02245F62 + mov r0, #1 + bx lr +_02245F62: + mov r0, #0 + bx lr + nop +_02245F68: .word 0x022513EC +_02245F6C: .word 0x0000136B + thumb_func_end MOD18_02245F4C + + thumb_func_start MOD18_02245F70 +MOD18_02245F70: ; 0x02245F70 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _02245F9C ; =0x022513EC + add r7, r1, #0 + ldr r1, [r0] + add r5, r3, #0 + mov r0, #0x96 + add r1, #8 + mul r0, r5 + add r4, r1, r0 + beq _02245F9A + add r0, r2, #0 + bl FUN_0204F610 + add r3, r0, #0 + add r0, r4, #2 + add r1, r6, #0 + add r2, r7, #0 + bl FUN_02026C68 + strb r5, [r4] +_02245F9A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245F9C: .word 0x022513EC + thumb_func_end MOD18_02245F70 + + thumb_func_start MOD18_02245FA0 +MOD18_02245FA0: ; 0x02245FA0 + push {r3, lr} + bl FUN_02031190 + ldr r1, _02245FB8 ; =0x022513EC + mov r0, #0x35 + ldr r2, [r1] + ldr r1, _02245FBC ; =0x00000968 + add r1, r2, r1 + mov r2, #0x96 + bl FUN_0203105C + pop {r3, pc} + .align 2, 0 +_02245FB8: .word 0x022513EC +_02245FBC: .word 0x00000968 + thumb_func_end MOD18_02245FA0 + + thumb_func_start MOD18_02245FC0 +MOD18_02245FC0: ; 0x02245FC0 + push {r4, lr} + ldr r1, _02245FDC ; =0x022513EC + add r4, r0, #0 + ldr r3, [r1] + mov r2, #0x96 + add r1, r4, #0 + add r3, #8 + mul r1, r2 + mov r0, #0x36 + add r1, r3, r1 + bl FUN_02031000 + pop {r4, pc} + nop +_02245FDC: .word 0x022513EC + thumb_func_end MOD18_02245FC0 + + thumb_func_start MOD18_02245FE0 +MOD18_02245FE0: ; 0x02245FE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r0, _022460EC ; =0x022513EC + add r6, r2, #0 + ldr r0, [r0] + cmp r0, #0 + beq _022460E6 + bl FUN_02031190 + ldrb r1, [r6, #1] + cmp r1, r0 + bne _02246020 + ldr r0, _022460EC ; =0x022513EC + ldr r2, [r0] + ldr r0, _022460F0 ; =0x000012E4 + ldrb r1, [r2, r0] + cmp r1, #2 + bne _02246020 + mov r1, #0 + strb r1, [r2, r0] + bl FUN_0204F7FC + mov r0, #0x38 + bl FUN_020311DC + mov r0, #0 + bl FUN_0204D168 + bl MOD18_022479A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02246020: + ldr r0, _022460EC ; =0x022513EC + mov r2, #5 + ldr r1, [r0] + ldr r0, _022460F0 ; =0x000012E4 + strb r2, [r1, r0] + ldrb r5, [r6] + cmp r5, #0x11 + blt _02246034 + bl ErrorHandling +_02246034: + ldr r0, _022460EC ; =0x022513EC + mov r2, #0x96 + ldr r4, [r0] + add r7, r5, #0 + add r4, #8 + mul r7, r2 + add r5, r4, r7 + add r0, r6, #0 + add r1, r5, #0 + bl MI_CpuCopy8 + ldr r2, _022460EC ; =0x022513EC + ldrb r1, [r5, #1] + ldr r3, [r2] + ldrb r0, [r4, r7] + add r3, r3, r1 + ldr r1, _022460F4 ; =0x00001363 + strb r0, [r3, r1] + ldrb r3, [r4, r7] + cmp r3, #0x10 + beq _02246068 + ldrb r0, [r5, #1] + ldr r2, [r2] + add r1, #0x18 + add r0, r2, r0 + strb r3, [r0, r1] +_02246068: + ldrb r0, [r5] + add r1, sp, #8 + bl MOD18_02244EB4 + ldrb r4, [r5, #1] + bl FUN_02031190 + cmp r4, r0 + bne _022460D8 + ldr r1, _022460EC ; =0x022513EC + ldr r0, _022460F8 ; =0x000013E6 + ldr r2, [r1] + mov r3, #1 + strb r3, [r2, r0] + ldrb r0, [r5, #1] + mov r3, #0 + add r2, sp, #8 + str r0, [sp] + str r3, [sp, #4] + ldr r0, [r1] + ldrh r1, [r2] + ldrh r2, [r2, #2] + ldr r0, [r0] + sub r2, r2, #1 + bl MOD18_0224686C + ldr r0, _022460EC ; =0x022513EC + ldr r1, [r0] + mov r0, #0xa + lsl r0, r0, #8 + str r5, [r1, r0] + add r0, r5, #2 + bl FUN_02026C88 + ldr r1, _022460EC ; =0x022513EC + ldr r2, [r1] + ldr r1, _022460FC ; =0x000013DC + strh r0, [r2, r1] + add r0, r5, #2 + bl FUN_02026C90 + ldr r1, _022460EC ; =0x022513EC + ldr r2, [r1] + ldr r1, _02246100 ; =0x000013DE + strh r0, [r2, r1] + add r0, r5, #2 + bl FUN_02026C98 + ldr r1, _022460EC ; =0x022513EC + ldr r2, [r1] + ldr r1, _02246104 ; =0x000013E0 + strb r0, [r2, r1] + bl MOD18_0223E7FC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_022460D8: + add r2, sp, #8 + ldrh r1, [r2] + ldrh r2, [r2, #2] + add r0, r4, #0 + mov r3, #0 + bl FUN_0204E7CC +_022460E6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022460EC: .word 0x022513EC +_022460F0: .word 0x000012E4 +_022460F4: .word 0x00001363 +_022460F8: .word 0x000013E6 +_022460FC: .word 0x000013DC +_02246100: .word 0x000013DE +_02246104: .word 0x000013E0 + thumb_func_end MOD18_02245FE0 + + thumb_func_start MOD18_02246108 +MOD18_02246108: ; 0x02246108 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _02246188 ; =0x022513EC + ldr r6, [r0] + cmp r6, #0 + beq _02246186 + mov r3, #0x96 + add r7, r5, #0 + add r6, #8 + mul r7, r3 + add r4, r6, r7 + add r0, r2, #0 + add r1, r4, #0 + add r2, r3, #0 + bl MI_CpuCopy8 + strb r5, [r6, r7] + ldr r0, _02246188 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _0224618C ; =0x000013E2 + add r6, r5, #0 + strb r2, [r1, r0] + mov r0, #6 + mul r6, r0 + add r0, r4, #2 + bl FUN_02026C88 + ldr r1, _02246188 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r6 + ldr r1, _02246190 ; =0x000012B4 + strh r0, [r2, r1] + add r0, r4, #2 + bl FUN_02026C90 + ldr r1, _02246188 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r6 + ldr r1, _02246194 ; =0x000012B6 + strh r0, [r2, r1] + add r0, r4, #2 + bl FUN_02026C98 + ldr r1, _02246188 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r6 + ldr r1, _02246198 ; =0x000012B8 + strb r0, [r2, r1] + bl MOD18_022461CC + ldr r1, _02246188 ; =0x022513EC + add r0, r4, #2 + ldr r2, [r1] + ldr r1, _0224619C ; =0x00000A04 + add r2, r2, r1 + lsl r1, r5, #7 + add r1, r2, r1 + bl MOD18_02245128 + add r0, r5, #0 + bl MOD18_0224784C +_02246186: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246188: .word 0x022513EC +_0224618C: .word 0x000013E2 +_02246190: .word 0x000012B4 +_02246194: .word 0x000012B6 +_02246198: .word 0x000012B8 +_0224619C: .word 0x00000A04 + thumb_func_end MOD18_02246108 + + thumb_func_start MOD18_022461A0 +MOD18_022461A0: ; 0x022461A0 + mov r0, #0x96 + bx lr + thumb_func_end MOD18_022461A0 + + thumb_func_start MOD18_022461A4 +MOD18_022461A4: ; 0x022461A4 + ldr r0, _022461B0 ; =0x022513EC + ldr r1, [r0] + ldr r0, _022461B4 ; =0x000013E3 + ldrb r0, [r1, r0] + bx lr + nop +_022461B0: .word 0x022513EC +_022461B4: .word 0x000013E3 + thumb_func_end MOD18_022461A4 + + thumb_func_start MOD18_022461B8 +MOD18_022461B8: ; 0x022461B8 + ldr r0, _022461C4 ; =0x022513EC + mov r2, #0 + ldr r1, [r0] + ldr r0, _022461C8 ; =0x000013E3 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_022461C4: .word 0x022513EC +_022461C8: .word 0x000013E3 + thumb_func_end MOD18_022461B8 + + thumb_func_start MOD18_022461CC +MOD18_022461CC: ; 0x022461CC + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _02246238 ; =0x022513EC + mov ip, r4 + add r5, r4, #0 +_022461D6: + ldr r0, [r7] + ldr r1, _0224623C ; =0x000012B4 + add r2, r0, r1 + add r1, r0, r4 + ldrh r6, [r2, r5] + ldr r0, _02246240 ; =0x0000138B + add r3, r2, r5 + strb r6, [r1, r0] + ldrh r0, [r2, r5] + add r5, r5, #6 + asr r1, r0, #8 + mov r0, #0xf + add r2, r1, #0 + and r2, r0 + ldrh r0, [r3, #2] + asr r1, r0, #4 + mov r0, #0xf0 + and r0, r1 + add r2, r2, r0 + ldr r0, [r7] + add r1, r0, r4 + ldr r0, _02246244 ; =0x0000138C + strb r2, [r1, r0] + ldr r0, [r7] + ldrh r2, [r3, #2] + add r1, r0, r4 + ldr r0, _02246248 ; =0x0000138D + strb r2, [r1, r0] + ldr r1, [r7] + ldrb r0, [r3, #4] + add r2, r1, r4 + ldr r1, _0224624C ; =0x0000138E + add r4, r4, #4 + strb r0, [r2, r1] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #8 + blt _022461D6 + ldr r1, _02246238 ; =0x022513EC + mov r0, #0x37 + ldr r2, [r1] + ldr r1, _02246240 ; =0x0000138B + add r1, r2, r1 + mov r2, #0x20 + bl FUN_02031000 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246238: .word 0x022513EC +_0224623C: .word 0x000012B4 +_02246240: .word 0x0000138B +_02246244: .word 0x0000138C +_02246248: .word 0x0000138D +_0224624C: .word 0x0000138E + thumb_func_end MOD18_022461CC + + thumb_func_start MOD18_02246250 +MOD18_02246250: ; 0x02246250 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _022462F8 ; =0x022513EC + str r2, [sp] + ldr r0, [r0] + cmp r0, #0 + beq _022462F2 + mov r4, #0 +_02246260: + add r0, r4, #0 + bl MOD18_02246430 + add r4, r4, #1 + cmp r4, #8 + blt _02246260 + mov r5, #0 + add r7, r5, #0 + add r6, r5, #0 + add r4, sp, #4 +_02246274: + ldr r0, _022462F8 ; =0x022513EC + ldr r1, [r0] + ldr r0, _022462FC ; =0x00001284 + add r0, r1, r0 + mov ip, r0 + ldr r0, [sp] + add r2, r0, r5 + ldrb r0, [r0, r5] + add r5, r5, #4 + strh r0, [r4] + ldrb r0, [r2, #1] + ldrh r3, [r4] + lsl r1, r0, #8 + mov r0, #0xf + lsl r0, r0, #8 + and r0, r1 + add r0, r3, r0 + strh r0, [r4] + ldrb r0, [r2, #1] + lsl r1, r0, #4 + mov r0, #0xf + lsl r0, r0, #8 + and r0, r1 + strh r0, [r4, #2] + ldrh r1, [r4, #2] + ldrb r0, [r2, #2] + add r0, r1, r0 + strh r0, [r4, #2] + ldrb r0, [r2, #3] + strb r0, [r4, #4] + ldrh r1, [r4] + ldr r0, _02246300 ; =0x00000FFF + cmp r1, r0 + beq _022462E0 + add r0, sp, #4 + ldrh r1, [r0, #2] + ldr r0, _02246300 ; =0x00000FFF + cmp r1, r0 + beq _022462E0 + mov r1, ip + add r0, sp, #4 + add r1, r1, r6 + mov r2, #6 + bl MI_CpuCopy8 + add r0, sp, #4 + add r1, sp, #4 + add r2, sp, #4 + ldrh r0, [r0] + ldrh r1, [r1, #2] + ldrb r2, [r2, #4] + add r3, r7, #0 + bl MOD18_0224630C +_022462E0: + add r7, r7, #1 + add r6, r6, #6 + cmp r7, #8 + blt _02246274 + ldr r0, _022462F8 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _02246304 ; =0x000013E3 + strb r2, [r1, r0] +_022462F2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022462F8: .word 0x022513EC +_022462FC: .word 0x00001284 +_02246300: .word 0x00000FFF +_02246304: .word 0x000013E3 + thumb_func_end MOD18_02246250 + + thumb_func_start MOD18_02246308 +MOD18_02246308: ; 0x02246308 + mov r0, #0x20 + bx lr + thumb_func_end MOD18_02246308 + + thumb_func_start MOD18_0224630C +MOD18_0224630C: ; 0x0224630C + push {r3, r4, r5, r6} + ldr r5, _02246330 ; =0x022513EC + ldr r4, [r5] + add r6, r4, r3 + ldr r4, _02246334 ; =0x0000133A + strb r2, [r6, r4] + lsl r2, r3, #1 + ldr r3, [r5] + add r6, r3, r2 + add r3, r4, #0 + sub r3, #0x44 + strh r0, [r6, r3] + ldr r0, [r5] + sub r4, #0x22 + add r0, r0, r2 + strh r1, [r0, r4] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_02246330: .word 0x022513EC +_02246334: .word 0x0000133A + thumb_func_end MOD18_0224630C + + thumb_func_start MOD18_02246338 +MOD18_02246338: ; 0x02246338 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r0, _02246414 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02246418 ; =0x000013E4 + ldrb r1, [r2, r0] + cmp r1, #0 + bne _0224640E + add r0, r0, #1 + ldrb r0, [r2, r0] + cmp r0, #0 + beq _0224640E + ldr r0, [r2] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _0224640E + bl FUN_02055320 + add r4, r0, #0 + ldr r0, _02246414 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _0224640E + mov r5, #0 + add r4, r5, #0 +_0224637A: + cmp r5, #8 + bge _02246394 + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + bne _02246394 + add r0, r5, #0 + bl MOD18_022453A8 + add r0, r5, #0 + bl MOD18_022475F8 +_02246394: + ldr r0, _02246414 ; =0x022513EC + ldr r1, [r0] + ldr r0, _0224641C ; =0x0000133A + add r2, r1, r5 + ldrb r6, [r2, r0] + cmp r6, #0xff + beq _02246406 + ldr r3, _02246420 ; =0x000012F6 + add r0, r1, r4 + ldrh r3, [r0, r3] + str r3, [sp, #8] + ldr r3, _02246424 ; =0x00001318 + ldrh r7, [r0, r3] + add r0, r3, #0 + sub r0, #0x33 + ldrb r0, [r2, r0] + cmp r0, #0xff + beq _022463C2 + ldr r1, [r1] + add r1, #0xa0 + ldr r1, [r1] + bl FUN_021E7C80 +_022463C2: + ldr r0, [sp, #8] + ldr r2, _02246428 ; =0x000001AD + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #2 + lsl r1, r7, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, _02246414 ; =0x022513EC + add r2, r6, r2 + ldr r0, [r0] + add r3, sp, #0xc + ldr r1, [r0] + mov r0, #0 + str r0, [sp] + ldr r0, [r1, #0x4c] + str r0, [sp, #4] + add r0, r1, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r1, #0x2c] + bl FUN_021E7FBC + ldr r1, _02246414 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r5 + ldr r1, _0224642C ; =0x000012E5 + strb r0, [r2, r1] +_02246406: + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #0x11 + blt _0224637A +_0224640E: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246414: .word 0x022513EC +_02246418: .word 0x000013E4 +_0224641C: .word 0x0000133A +_02246420: .word 0x000012F6 +_02246424: .word 0x00001318 +_02246428: .word 0x000001AD +_0224642C: .word 0x000012E5 + thumb_func_end MOD18_02246338 + + thumb_func_start MOD18_02246430 +MOD18_02246430: ; 0x02246430 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02246464 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02246468 ; =0x000012E5 + add r1, r2, r4 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246460 + ldr r1, [r2] + add r1, #0xa0 + ldr r1, [r1] + bl FUN_021E7C80 + ldr r1, _02246464 ; =0x022513EC + mov r3, #0xff + ldr r0, [r1] + add r2, r0, r4 + ldr r0, _02246468 ; =0x000012E5 + strb r3, [r2, r0] + ldr r1, [r1] + add r0, #0x55 + add r1, r1, r4 + strb r3, [r1, r0] +_02246460: + pop {r4, pc} + nop +_02246464: .word 0x022513EC +_02246468: .word 0x000012E5 + thumb_func_end MOD18_02246430 + + thumb_func_start MOD18_0224646C +MOD18_0224646C: ; 0x0224646C + push {r4, lr} + ldr r0, _02246488 ; =0x022513EC + ldr r0, [r0] + cmp r0, #0 + beq _02246484 + mov r4, #0 +_02246478: + add r0, r4, #0 + bl MOD18_02246430 + add r4, r4, #1 + cmp r4, #0x11 + blt _02246478 +_02246484: + pop {r4, pc} + nop +_02246488: .word 0x022513EC + thumb_func_end MOD18_0224646C + + thumb_func_start MOD18_0224648C +MOD18_0224648C: ; 0x0224648C + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022464AA + cmp r0, #1 + beq _022464B8 + b _022464CA +_022464AA: + add r0, r5, #0 + bl FUN_02037394 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _022464CA +_022464B8: + add r0, r5, #0 + bl FUN_0203739C + cmp r0, #0 + bne _022464CA + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} +_022464CA: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224648C + + thumb_func_start MOD18_022464D0 +MOD18_022464D0: ; 0x022464D0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022464EE + cmp r0, #1 + beq _022464FC + b _0224650E +_022464EE: + add r0, r5, #0 + bl FUN_02037350 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0224650E +_022464FC: + add r0, r5, #0 + bl FUN_020464A4 + cmp r0, #0 + beq _0224650E + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} +_0224650E: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_022464D0 + + thumb_func_start MOD18_02246514 +MOD18_02246514: ; 0x02246514 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0xd + bhi _02246606 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224653A: ; jump table + .short _02246556 - _0224653A - 2 ; case 0 + .short _02246580 - _0224653A - 2 ; case 1 + .short _022465B0 - _0224653A - 2 ; case 2 + .short _022465C6 - _0224653A - 2 ; case 3 + .short _022465D8 - _0224653A - 2 ; case 4 + .short _022465FC - _0224653A - 2 ; case 5 + .short _02246610 - _0224653A - 2 ; case 6 + .short _0224663A - _0224653A - 2 ; case 7 + .short _02246802 - _0224653A - 2 ; case 8 + .short _022466DA - _0224653A - 2 ; case 9 + .short _022466F6 - _0224653A - 2 ; case 10 + .short _0224672E - _0224653A - 2 ; case 11 + .short _02246762 - _0224653A - 2 ; case 12 + .short _0224678C - _0224653A - 2 ; case 13 +_02246556: + mov r0, #0 + bl MOD18_02247970 + bl MOD18_02247984 + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x28 + strb r0, [r1] + bl FUN_02030FC8 + bl MOD18_0223CC80 + bl FUN_0204FD38 + cmp r0, #0 + beq _02246606 + mov r0, #1 + str r0, [r4, #0xc] + b _02246848 +_02246580: + bl FUN_0200E31C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x12 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r5, #0x68] + bl MOD18_0224484C + ldr r0, _02246850 ; =0x00000603 + bl FUN_020054C8 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465B0: + bl FUN_0200E308 + cmp r0, #0 + beq _02246606 + ldr r0, [r5, #0x68] + cmp r0, #0 + bne _02246606 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465C6: + add r0, r6, #0 + bl MOD18_0224648C + cmp r0, #0 + beq _02246606 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465D8: + ldr r0, [r4, #0x14] + add r1, sp, #0xc + str r0, [sp, #0xc] + ldr r0, [r4, #0x18] + str r0, [sp, #0x10] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x14] + ldr r0, [r4, #0x20] + str r0, [sp, #0x18] + ldr r0, [r4, #0x24] + str r0, [sp, #0x1c] + add r0, r6, #0 + bl FUN_02049CB0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465FC: + add r0, r6, #0 + bl MOD18_022464D0 + cmp r0, #0 + bne _02246608 +_02246606: + b _02246848 +_02246608: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_02246610: + add r0, r5, #0 + bl MOD18_02244824 + str r0, [r5, #0x68] + bl FUN_0200E31C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x13 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_0224663A: + bl FUN_0200E308 + cmp r0, #0 + beq _0224670E + bl FUN_0202EDD8 + cmp r0, #0 + beq _02246660 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + bl MOD18_0223E2F4 + cmp r0, #0 + bne _02246660 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2e + strb r1, [r0] + b _02246668 +_02246660: + add r0, r4, #0 + mov r1, #1 + add r0, #0x2e + strb r1, [r0] +_02246668: + bl FUN_02030FA8 + bl FUN_0204F7E4 + mov r3, #0x80 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _02246854 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + cmp r0, #0 + beq _022466BA + bl FUN_0204F7D4 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x33 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #8 + str r0, [r4, #0xc] + b _02246848 +_022466BA: + ldr r0, _02246858 ; =0x022513EC + ldr r1, [r0] + ldr r0, _0224685C ; =0x000013E6 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _022466CC + mov r0, #0xd + str r0, [r4, #0xc] + b _02246848 +_022466CC: + add r0, r4, #0 + mov r1, #0 + add r0, #0x29 + strb r1, [r0] + mov r0, #9 + str r0, [r4, #0xc] + b _02246848 +_022466DA: + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x29 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x29 + strb r1, [r0] + mov r0, #0xa + str r0, [r4, #0xc] + b _02246848 +_022466F6: + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x29 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #0xa + bhi _02246710 +_0224670E: + b _02246848 +_02246710: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02246722 + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + cmp r0, #0 + bne _02246728 +_02246722: + mov r0, #0xd + str r0, [r4, #0xc] + b _02246848 +_02246728: + mov r0, #0xb + str r0, [r4, #0xc] + b _02246848 +_0224672E: + bl FUN_0204FB14 + mov r0, #1 + mov r1, #0x24 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02057260 + mov r0, #1 + bl FUN_0204F6DC + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x44 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _02246860 ; =0x00000604 + bl FUN_020054C8 + mov r0, #0xc + str r0, [r4, #0xc] + b _02246848 +_02246762: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246848 + ldr r0, _02246864 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02246848 + mov r0, #0xd + str r0, [r4, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0 + bl FUN_0204F6DC + b _02246848 +_0224678C: + bl FUN_0202EDD8 + cmp r0, #0 + beq _022467A6 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + bl MOD18_0223E2F4 + cmp r0, #0 + bne _022467A6 + bl FUN_0204FD24 + b _022467AA +_022467A6: + bl FUN_0204FDE4 +_022467AA: + bl FUN_0204F7FC + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_0202EDD8 + cmp r0, #0 + beq _022467CE + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + bl MOD18_0223E2F4 + cmp r0, #0 + beq _022467CE + bl MOD18_0223E444 + b _022467D2 +_022467CE: + bl MOD18_0223E458 +_022467D2: + ldr r0, _02246858 ; =0x022513EC + ldr r2, _02246868 ; =0x000012E4 + ldr r0, [r0] + ldrb r1, [r0, r2] + cmp r1, #4 + bne _022467EC + ldr r1, _0224685C ; =0x000013E6 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _022467EC + mov r1, #6 + strb r1, [r0, r2] + b _022467F2 +_022467EC: + ldr r1, _02246868 ; =0x000012E4 + mov r2, #0 + strb r2, [r0, r1] +_022467F2: + bl MOD18_022479A0 + mov r0, #1 + bl MOD18_02247970 + add sp, #0x20 + mov r0, #1 + pop {r4, r5, r6, pc} +_02246802: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224682A + ldr r0, _02246864 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224682A + mov r0, #0xd + str r0, [r4, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x20 + mov r0, #0 + pop {r4, r5, r6, pc} +_0224682A: + bl FUN_02030F20 + cmp r0, #1 + ble _02246848 + add r0, r4, #0 + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #0 + bne _02246848 + mov r0, #0xd + str r0, [r4, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DD94 +_02246848: + mov r0, #0 + add sp, #0x20 + pop {r4, r5, r6, pc} + nop +_02246850: .word 0x00000603 +_02246854: .word 0x000003D9 +_02246858: .word 0x022513EC +_0224685C: .word 0x000013E6 +_02246860: .word 0x00000604 +_02246864: .word 0x021C48B8 +_02246868: .word 0x000012E4 + thumb_func_end MOD18_02246514 + + thumb_func_start MOD18_0224686C +MOD18_0224686C: ; 0x0224686C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r5, [sp, #0x18] + add r4, r0, #0 + str r5, [sp] + str r5, [sp, #4] + bl MOD18_02245A50 + add r2, r0, #0 + beq _0224688E + ldr r1, [sp, #0x1c] + add r0, #0x2d + strb r1, [r0] + ldr r1, _02246894 ; =MOD18_02246514 + add r0, r4, #0 + bl FUN_020463CC +_0224688E: + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02246894: .word MOD18_02246514 + thumb_func_end MOD18_0224686C + + thumb_func_start MOD18_02246898 +MOD18_02246898: ; 0x02246898 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp, #4] + ldr r0, [r4, #0xc] + mov r7, #0 + ldr r5, [r4] + cmp r0, #0xa + bhi _0224692C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022468B6: ; jump table + .short _022468CC - _022468B6 - 2 ; case 0 + .short _02246914 - _022468B6 - 2 ; case 1 + .short _02246934 - _022468B6 - 2 ; case 2 + .short _02246980 - _022468B6 - 2 ; case 3 + .short _022469C6 - _022468B6 - 2 ; case 4 + .short _022469E0 - _022468B6 - 2 ; case 5 + .short _02246A04 - _022468B6 - 2 ; case 6 + .short _02246A80 - _022468B6 - 2 ; case 7 + .short _02246A80 - _022468B6 - 2 ; case 8 + .short _02246A28 - _022468B6 - 2 ; case 9 + .short _02246A40 - _022468B6 - 2 ; case 10 +_022468CC: + ldr r0, [r5, #0xc] + bl FUN_02026CA8 + bl FUN_02026CA0 + strb r0, [r4, #0x12] + bl FUN_0204F7E4 + bl MOD18_0223D638 + mov r1, #0x21 + bl MOD18_0224DDE8 + ldr r0, _02246AD0 ; =0x0000061E + bl FUN_020054C8 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r1, r7, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E5E8C + bl MOD18_0223D638 + add r2, r7, #0 + mov r1, #0x21 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #1 + str r0, [r4, #0xc] + add r0, r7, #0 + strb r0, [r4, #0x11] + b _02246A80 +_02246914: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224692C + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #0x1e + bhi _0224692E +_0224692C: + b _02246A80 +_0224692E: + mov r0, #2 + str r0, [r4, #0xc] + b _02246A80 +_02246934: + bl FUN_02031190 + bl FUN_0204E4D4 + add r6, r0, #0 + bl FUN_02031190 + bl FUN_0204E50C + str r0, [sp, #8] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + bl FUN_0204F610 + str r0, [sp, #0xc] + bl MOD18_0223D638 + add r2, r7, #0 + mov r1, #0x22 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r6, #0 + mov r3, #0x10 + bl MOD18_0224630C + ldr r3, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl FUN_021E5B30 + mov r0, #3 + str r0, [r4, #0xc] + b _02246A80 +_02246980: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246A80 + bl FUN_02031190 + add r1, r7, #0 + bl MOD18_02245AA8 + cmp r0, #0 + beq _022469A2 + mov r0, #4 + mov r6, #0x39 + str r0, [r4, #0xc] + b _022469B6 +_022469A2: + ldrb r0, [r4, #0x12] + cmp r0, #0 + beq _022469B0 + mov r0, #5 + mov r6, #0x24 + str r0, [r4, #0xc] + b _022469B6 +_022469B0: + mov r0, #5 + mov r6, #0x23 + str r0, [r4, #0xc] +_022469B6: + bl MOD18_0223D638 + mov r2, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _02246A80 +_022469C6: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246A80 + ldr r0, _02246AD4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r1, r0 + beq _02246A80 + add r7, r0, #0 + b _02246A80 +_022469E0: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246A80 + mov r0, #4 + str r0, [sp] + ldr r0, [r5, #8] + ldr r1, _02246AD8 ; =0x022504F8 + ldr r2, _02246ADC ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #8] + mov r0, #6 + str r0, [r4, #0xc] + b _02246A80 +_02246A04: + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02246A1A + mov r0, #9 + str r0, [r4, #0xc] + add r0, r7, #0 + str r0, [r4, #8] + b _02246A80 +_02246A1A: + sub r1, r7, #1 + cmp r0, r1 + beq _02246A80 + mov r0, #0 + mov r7, #1 + str r0, [r4, #8] + b _02246A80 +_02246A28: + mov r0, #0x21 + bl MOD18_02249AD8 + bl MOD18_0223D638 + bl MOD18_0224DD94 + bl FUN_0204FCF4 + mov r0, #0xa + str r0, [r4, #0xc] + b _02246A80 +_02246A40: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02246A80 + bl FUN_02031190 + cmp r0, #0 + bne _02246A80 + mov r1, #2 + add r0, sp, #0x10 + strb r1, [r0] + ldrb r1, [r4, #0x12] + cmp r1, #0 + beq _02246A60 + mov r1, #3 + strb r1, [r0] +_02246A60: + bl MOD18_02246FB4 + mov r0, #0x56 + add r1, sp, #0x10 + bl FUN_020311D0 + ldr r0, [sp, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_02246A80: + cmp r7, #0 + beq _02246ACA + bl MOD18_0223D638 + ldr r3, _02246AE0 ; =MOD18_022453E0 + mov r1, #0x38 + mov r2, #1 + bl MOD18_0224DCB8 + mov r0, #0x10 + bl MOD18_02246430 + bl FUN_02031190 + bl FUN_0204E4D4 + add r6, r0, #0 + bl FUN_02031190 + bl FUN_0204E50C + add r3, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl FUN_021E5B30 + ldr r0, [sp, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + bl MOD18_022479A0 +_02246ACA: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02246AD0: .word 0x0000061E +_02246AD4: .word 0x021C48B8 +_02246AD8: .word 0x022504F8 +_02246ADC: .word 0x000003D9 +_02246AE0: .word MOD18_022453E0 + thumb_func_end MOD18_02246898 + + thumb_func_start MOD18_02246AE4 +MOD18_02246AE4: ; 0x02246AE4 + push {r3, lr} + mov r1, #0 + add r0, sp, #0 + strb r1, [r0] + mov r0, #0x56 + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02246AE4 + + thumb_func_start MOD18_02246AF8 +MOD18_02246AF8: ; 0x02246AF8 + mov r0, #2 + bx lr + thumb_func_end MOD18_02246AF8 + + thumb_func_start MOD18_02246AFC +MOD18_02246AFC: ; 0x02246AFC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + add r6, r2, #0 + bl FUN_0204E62C + add r4, r0, #0 + add r0, r7, #0 + bl FUN_0204E664 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_0204E6CC + str r0, [sp, #4] + add r0, r7, #0 + bl FUN_0204E544 + add r0, r7, #0 + bl FUN_0204E598 + sub r0, r5, r0 + beq _02246B38 + add r0, r4, #1 + str r0, [sp, #0x10] + sub r0, r4, #1 + str r0, [sp, #8] + str r5, [sp, #0xc] + str r5, [sp] + b _02246B44 +_02246B38: + add r0, r5, #1 + str r0, [sp, #0xc] + sub r0, r5, #1 + str r0, [sp] + str r4, [sp, #0x10] + str r4, [sp, #8] +_02246B44: + add r0, sp, #0x14 + strb r7, [r0] + ldrb r1, [r6] + cmp r1, #0 + bne _02246B52 + mov r1, #0 + b _02246B54 +_02246B52: + mov r1, #5 +_02246B54: + strb r1, [r0, #1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_022453E8 + ldrb r1, [r6] + cmp r1, #0 + bne _02246B68 + cmp r0, #0xff + bne _02246BFE +_02246B68: + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02246B7C + mov r1, #6 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246B7C: + ldr r0, _02246C0C ; =0x022513EC + add r1, r4, #0 + ldr r0, [r0] + add r2, r5, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _02246BFE + ldr r0, _02246C0C ; =0x022513EC + ldr r1, [sp, #0x10] + ldr r0, [r0] + ldr r2, [sp, #0xc] + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _02246BFE + ldr r0, _02246C0C ; =0x022513EC + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r2, [sp] + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _02246BFE + ldrb r0, [r6] + cmp r0, #0 + bne _02246BC0 + mov r1, #1 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246BC0: + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #0x10 + bl MOD18_02245F70 + mov r0, #0x10 + add r1, r7, #0 + bl MOD18_02245528 + cmp r0, #0 + beq _02246BFE + ldrb r0, [r6] + cmp r0, #1 + beq _02246BE8 + cmp r0, #2 + beq _02246BF8 + cmp r0, #3 + beq _02246BF0 + b _02246BFE +_02246BE8: + mov r1, #2 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246BF0: + mov r1, #3 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246BF8: + mov r1, #4 + add r0, sp, #0x14 + strb r1, [r0, #1] +_02246BFE: + mov r0, #0x57 + add r1, sp, #0x14 + bl FUN_02030C4C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246C0C: .word 0x022513EC + thumb_func_end MOD18_02246AFC + + thumb_func_start MOD18_02246C10 +MOD18_02246C10: ; 0x02246C10 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x10 + bl MOD18_02246430 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02246C28 + mov r1, #4 + bl FUN_020021EC +_02246C28: + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + bl FUN_0204F7FC + bl MOD18_022479A0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_02246C10 + + thumb_func_start MOD18_02246C44 +MOD18_02246C44: ; 0x02246C44 + push {r4, lr} + bl MOD18_02247984 + mov r0, #4 + mov r1, #0x14 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4, #0xc] + bl FUN_02031190 + strb r0, [r4, #0x10] + ldr r0, _02246C88 ; =0x022513EC + add r1, r4, #0 + ldr r0, [r0] + mov r2, #0x64 + ldr r0, [r0] + str r0, [r4] + ldr r0, _02246C8C ; =MOD18_02246898 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _02246C90 ; =MOD18_02246C10 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, pc} + nop +_02246C88: .word 0x022513EC +_02246C8C: .word MOD18_02246898 +_02246C90: .word MOD18_02246C10 + thumb_func_end MOD18_02246C44 + + thumb_func_start MOD18_02246C94 +MOD18_02246C94: ; 0x02246C94 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02246D94 ; =0x022513EC + add r5, r2, #0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CB4 + ldrb r4, [r5] + add r7, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _02246D92 + ldrb r0, [r5, #1] + cmp r0, #0 + bne _02246CD0 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _02246D98 ; =MOD18_022453E0 + mov r1, #0x36 + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_022479A0 + pop {r3, r4, r5, r6, r7, pc} +_02246CD0: + cmp r0, #1 + bne _02246CDA + bl MOD18_02246C44 + pop {r3, r4, r5, r6, r7, pc} +_02246CDA: + cmp r0, #6 + bne _02246CF6 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _02246D98 ; =MOD18_022453E0 + mov r1, #0x4a + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_022479A0 + pop {r3, r4, r5, r6, r7, pc} +_02246CF6: + cmp r0, #5 + bne _02246D16 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _02246D98 ; =MOD18_022453E0 + mov r1, #0x58 + mov r2, #1 + bl MOD18_0224DCB8 + bl FUN_0204FD24 + bl MOD18_022479A0 + pop {r3, r4, r5, r6, r7, pc} +_02246D16: + add r0, #0xfe + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #2 + bhi _02246D92 + add r0, r4, #0 + bl FUN_0204E4D4 + add r4, r0, #0 + ldrb r0, [r5] + bl FUN_0204E50C + add r6, r0, #0 + ldrb r0, [r5] + bl FUN_0204E69C + str r0, [sp] + ldrb r3, [r5] + ldr r2, [sp] + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02245F70 + ldr r2, [sp] + add r0, r4, #0 + add r1, r6, #0 + mov r3, #0x10 + bl MOD18_02245F70 + ldrb r0, [r5, #1] + cmp r0, #3 + bne _02246D5C + add r0, r7, #0 + bl FUN_02026C38 +_02246D5C: + ldrb r0, [r5, #1] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _02246D92 + mov r0, #0xb + bl FUN_0202916C + add r1, r0, #0 + ldr r0, _02246D94 ; =0x022513EC + mov r2, #1 + ldr r0, [r0] + ldr r0, [r0] + add r0, #0x98 + ldr r0, [r0] + bl FUN_02028AD4 + ldr r0, _02246D94 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x23 + bl FUN_0202A170 +_02246D92: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246D94: .word 0x022513EC +_02246D98: .word MOD18_022453E0 + thumb_func_end MOD18_02246C94 + + thumb_func_start MOD18_02246D9C +MOD18_02246D9C: ; 0x02246D9C + push {r3, r4, r5, r6, r7, lr} + ldr r4, _02246E98 ; =0x022513EC + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02246DAC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02246DAC: + mov r5, #0 +_02246DAE: + ldr r0, [r4] + ldr r1, _02246E9C ; =0x0000137B + add r0, r0, r5 + ldrb r7, [r0, r1] + cmp r7, #0xff + beq _02246DE4 + mov r2, #0xff + strb r2, [r0, r1] + cmp r5, r7 + beq _02246DE4 + add r0, r5, #0 + bl FUN_0202DFA4 + str r0, [sp] + add r0, r7, #0 + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [sp] + mov r2, #0x68 + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _02246DE4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246DE4: + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA0 ; =0x0000134B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246E22 + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA0 ; =0x0000134B + ldrb r0, [r1, r0] + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [r4] + mov r2, #0xff + add r3, r0, r5 + ldr r0, _02246EA0 ; =0x0000134B + strb r2, [r3, r0] + add r0, r7, #0 + mov r2, #0x6c + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _02246E22 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246E22: + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA4 ; =0x0000135B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246E52 + add r0, r5, #0 + bl FUN_0202DFA4 + ldr r2, _02246E98 ; =0x022513EC + mov r1, #0xff + ldr r2, [r2] + add r3, r2, r5 + ldr r2, _02246EA4 ; =0x0000135B + strb r1, [r3, r2] + mov r1, #0 + mov r2, #0x6d + add r3, r6, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _02246E92 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246E52: + ldr r0, _02246EA8 ; =0x00001353 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246E8C + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA8 ; =0x00001353 + ldrb r0, [r1, r0] + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [r4] + mov r2, #0xff + add r3, r0, r5 + ldr r0, _02246EA8 ; =0x00001353 + strb r2, [r3, r0] + add r0, r7, #0 + mov r2, #0x6e + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _02246E8C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246E8C: + add r5, r5, #1 + cmp r5, #8 + blt _02246DAE +_02246E92: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246E98: .word 0x022513EC +_02246E9C: .word 0x0000137B +_02246EA0: .word 0x0000134B +_02246EA4: .word 0x0000135B +_02246EA8: .word 0x00001353 + thumb_func_end MOD18_02246D9C + + thumb_func_start MOD18_02246EAC +MOD18_02246EAC: ; 0x02246EAC + ldr r0, _02246EC8 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _02246EC2 + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246EC2 + add r0, r0, #2 + bx lr +_02246EC2: + mov r0, #0 + bx lr + nop +_02246EC8: .word 0x022513EC + thumb_func_end MOD18_02246EAC + + thumb_func_start MOD18_02246ECC +MOD18_02246ECC: ; 0x02246ECC + ldr r0, _02246EEC ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _02246EE6 + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246EE6 + ldrb r1, [r0] + ldr r0, _02246EF0 ; =0x02251238 + ldrb r0, [r0, r1] + bx lr +_02246EE6: + mov r0, #0 + bx lr + nop +_02246EEC: .word 0x022513EC +_02246EF0: .word 0x02251238 + thumb_func_end MOD18_02246ECC + + thumb_func_start MOD18_02246EF4 +MOD18_02246EF4: ; 0x02246EF4 + ldr r0, _02246F14 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _02246F0E + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246F0E + ldrb r1, [r0] + ldr r0, _02246F18 ; =0x0225124C + ldrb r0, [r0, r1] + bx lr +_02246F0E: + mov r0, #0 + bx lr + nop +_02246F14: .word 0x022513EC +_02246F18: .word 0x0225124C + thumb_func_end MOD18_02246EF4 + + thumb_func_start MOD18_02246F1C +MOD18_02246F1C: ; 0x02246F1C + push {r4, r5, r6, r7} + add r7, r0, #0 + ldr r0, _02246FA4 ; =0x022513EC + add r5, r1, #0 + ldr r0, [r0] + mov ip, r0 + cmp r0, #0 + bne _02246F32 + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_02246F32: + cmp r5, #0x40 + blt _02246F3C + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_02246F3C: + asr r0, r7, #4 + asr r1, r5, #4 + lsr r0, r0, #0x1b + lsr r1, r1, #0x1b + add r0, r7, r0 + add r1, r5, r1 + ldr r3, _02246FA8 ; =0x02251238 + ldr r4, _02246FAC ; =0x0225124C + asr r0, r0, #5 + asr r1, r1, #5 + mov r2, #0 +_02246F52: + ldrb r6, [r3] + cmp r0, r6 + bne _02246F92 + ldrb r6, [r4] + cmp r1, r6 + bne _02246F92 + lsr r4, r7, #0x1f + lsl r3, r7, #0x1b + sub r3, r3, r4 + mov r1, #0x1b + ror r3, r1 + mov r0, #1 + add r4, r4, r3 + add r3, r0, #0 + lsl r3, r4 + lsl r4, r2, #7 + mov r2, ip + add r2, r2, r4 + lsr r6, r5, #0x1f + lsl r4, r5, #0x1b + sub r4, r4, r6 + ror r4, r1 + add r1, r6, r4 + lsl r1, r1, #2 + add r2, r2, r1 + ldr r1, _02246FB0 ; =0x00000A04 + ldr r1, [r2, r1] + tst r1, r3 + bne _02246F9E + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_02246F92: + add r2, r2, #1 + add r3, r3, #1 + add r4, r4, #1 + cmp r2, #0x11 + blt _02246F52 + mov r0, #1 +_02246F9E: + pop {r4, r5, r6, r7} + bx lr + nop +_02246FA4: .word 0x022513EC +_02246FA8: .word 0x02251238 +_02246FAC: .word 0x0225124C +_02246FB0: .word 0x00000A04 + thumb_func_end MOD18_02246F1C + + thumb_func_start MOD18_02246FB4 +MOD18_02246FB4: ; 0x02246FB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xb0 + ldr r0, _02247108 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CA8 + str r0, [sp, #0xc] + ldr r0, _02247108 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0 + mov r0, #0 + bl FUN_0204E62C + str r0, [sp, #8] + mov r0, #0 + bl FUN_0204E664 + str r0, [sp, #4] + mov r0, #0 + bl FUN_0204E6CC + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #0x28] + mov r0, #0xc + str r0, [sp, #0x2c] + ldr r0, _02247108 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDD8 + ldr r0, [sp, #0xc] + bl FUN_020266E0 + add r0, r4, #0 + bl FUN_02025F44 + add r0, sp, #0x10 + bl FUN_020312BC + mov r4, #0 +_0224701C: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + bl _ll_mul + ldr r2, [sp, #0x20] + ldr r6, [sp, #0x24] + add r7, r2, r0 + adc r6, r1 + mov r1, #0 + add r0, r6, #0 + mov r2, #5 + mov r3, #0 + str r7, [sp, #0x10] + str r6, [sp, #0x14] + bl _ll_mul + cmp r1, #2 + bge _0224704A + lsl r5, r1, #1 + add r5, #0xa + b _02247050 +_0224704A: + sub r0, r1, #3 + lsl r5, r0, #1 + add r5, #0x12 +_02247050: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, r7, #0 + add r3, r6, #0 + bl _ll_mul + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + add r0, r2, r0 + adc r3, r1 + str r0, [sp, #0x10] + str r3, [sp, #0x14] + add r0, r3, #0 + mov r1, #0 + mov r2, #6 + mov r3, #0 + bl _ll_mul + lsl r6, r1, #1 + add r6, #0xc + mov r0, #1 + mov r1, #0 + cmp r4, #0 + blt _0224709A + add r2, sp, #0x28 +_02247082: + ldr r3, [r2] + cmp r5, r3 + bne _02247092 + ldr r3, [r2, #4] + cmp r6, r3 + bne _02247092 + mov r0, #0 + b _0224709A +_02247092: + add r1, r1, #1 + add r2, #8 + cmp r1, r4 + ble _02247082 +_0224709A: + cmp r0, #0 + bne _022470A2 + sub r4, r4, #1 + b _022470BA +_022470A2: + add r1, r4, #0 + ldr r0, [sp, #0xc] + add r1, #0x10 + add r2, r5, #0 + add r3, r6, #0 + bl FUN_02026778 + add r1, sp, #0x28 + lsl r0, r4, #3 + add r0, r1, r0 + str r5, [r0, #8] + str r6, [r0, #0xc] +_022470BA: + add r4, r4, #1 + cmp r4, #0x10 + blt _0224701C + ldr r0, _02247108 ; =0x022513EC + mov r2, #0x22 + ldr r1, [r0] + ldr r0, _0224710C ; =0x00000A04 + lsl r2, r2, #6 + add r0, r1, r0 + mov r1, #0xff + bl MI_CpuFill8 + ldr r0, [sp] + bl FUN_0204F610 + add r3, r0, #0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_02026C68 + ldr r1, _02247108 ; =0x022513EC + ldr r0, [sp, #0xc] + ldr r2, [r1] + ldr r1, _02247110 ; =0x0000096A + add r1, r2, r1 + mov r2, #0x94 + bl MI_CpuCopy8 + ldr r1, _02247108 ; =0x022513EC + ldr r0, [sp, #0xc] + ldr r2, [r1] + ldr r1, _02247114 ; =0x00001204 + add r1, r2, r1 + bl MOD18_02245128 + add sp, #0xb0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247108: .word 0x022513EC +_0224710C: .word 0x00000A04 +_02247110: .word 0x0000096A +_02247114: .word 0x00001204 + thumb_func_end MOD18_02246FB4 + + thumb_func_start MOD18_02247118 +MOD18_02247118: ; 0x02247118 + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D668 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + thumb_func_end MOD18_02247118 + + thumb_func_start MOD18_0224712C +MOD18_0224712C: ; 0x0224712C + push {r3, lr} + bl MOD18_0223D668 + bl MOD18_0224DD94 + pop {r3, pc} + thumb_func_end MOD18_0224712C + + thumb_func_start MOD18_02247138 +MOD18_02247138: ; 0x02247138 + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D668 + mov r1, #0 + add r2, r4, #0 + bl MOD18_0224DF18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247138 + + thumb_func_start MOD18_0224714C +MOD18_0224714C: ; 0x0224714C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D668 + add r1, r4, #0 + add r2, r5, #0 + bl MOD18_0224DEA4 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224714C + + thumb_func_start MOD18_02247160 +MOD18_02247160: ; 0x02247160 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + str r1, [sp] + str r2, [sp, #4] + mov r4, #0 +_0224716C: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020267C4 + str r0, [sp, #8] + cmp r0, #0 + beq _022471C4 + cmp r4, #0 + beq _022471C4 + cmp r4, #0x10 + bge _022471C4 + bl FUN_0204CAA0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026810 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026840 + ldr r1, [sp] + ldr r2, [sp, #4] + sub r1, r1, r7 + sub r2, r2, r0 + cmp r1, #0 + blt _022471C4 + cmp r1, #2 + bgt _022471C4 + cmp r2, #0 + blt _022471C4 + cmp r2, #2 + bgt _022471C4 + lsl r0, r2, #1 + add r2, r2, r0 + add r0, r6, r1 + ldrb r0, [r2, r0] + cmp r0, #0 + beq _022471C4 + ldr r0, [sp, #8] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_022471C4: + add r4, r4, #1 + cmp r4, #0x20 + blt _0224716C + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_02247160 + + thumb_func_start MOD18_022471D0 +MOD18_022471D0: ; 0x022471D0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + ldrh r4, [r1] + ldrh r6, [r1, #2] + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02246F1C + cmp r0, #0 + bne _0224723C + add r0, sp, #0 + strb r5, [r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02244DE8 + ldr r1, _02247244 ; =0x022513EC + mov r3, #0x1b + ldr r2, [r1] + mov r1, #0x96 + add r2, #0xa + mul r1, r0 + add r0, r2, r1 + lsr r2, r4, #0x1f + lsl r1, r4, #0x1b + sub r1, r1, r2 + ror r1, r3 + add r1, r2, r1 + lsr r4, r6, #0x1f + lsl r2, r6, #0x1b + sub r2, r2, r4 + ror r2, r3 + add r2, r4, r2 + bl MOD18_02247160 + bl FUN_0204CAF0 + add r1, sp, #0 + strb r0, [r1, #1] + ldrb r0, [r1, #1] + cmp r0, #0 + beq _0224723C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + mov r0, #0x3c + add r1, sp, #0 + bl FUN_02030C4C + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0224723C: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02247244: .word 0x022513EC + thumb_func_end MOD18_022471D0 + + thumb_func_start MOD18_02247248 +MOD18_02247248: ; 0x02247248 + push {r3, r4, r5, lr} + ldr r0, _02247274 ; =0x022513EC + add r5, r2, #0 + ldr r1, [r0] + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + add r0, r0, #2 + bl FUN_02026CC0 + add r4, r0, #0 + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _02247270 + ldrb r1, [r5, #1] + add r0, r4, #0 + bl MOD18_0224D79C +_02247270: + pop {r3, r4, r5, pc} + nop +_02247274: .word 0x022513EC + thumb_func_end MOD18_02247248 + + thumb_func_start MOD18_02247278 +MOD18_02247278: ; 0x02247278 + mov r0, #2 + bx lr + thumb_func_end MOD18_02247278 + + thumb_func_start MOD18_0224727C +MOD18_0224727C: ; 0x0224727C + ldr r2, _0224728C ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _0224728A + add r2, r2, r0 + ldr r0, _02247290 ; =0x0000134B + strb r1, [r2, r0] +_0224728A: + bx lr + .align 2, 0 +_0224728C: .word 0x022513EC +_02247290: .word 0x0000134B + thumb_func_end MOD18_0224727C + + thumb_func_start MOD18_02247294 +MOD18_02247294: ; 0x02247294 + ldr r2, _022472A4 ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _022472A2 + add r2, r2, r0 + ldr r0, _022472A8 ; =0x00001353 + strb r1, [r2, r0] +_022472A2: + bx lr + .align 2, 0 +_022472A4: .word 0x022513EC +_022472A8: .word 0x00001353 + thumb_func_end MOD18_02247294 + + thumb_func_start MOD18_022472AC +MOD18_022472AC: ; 0x022472AC + ldr r1, _022472C0 ; =0x022513EC + ldr r1, [r1] + cmp r1, #0 + beq _022472BC + add r1, r1, r0 + ldr r0, _022472C4 ; =0x0000135B + mov r2, #1 + strb r2, [r1, r0] +_022472BC: + bx lr + nop +_022472C0: .word 0x022513EC +_022472C4: .word 0x0000135B + thumb_func_end MOD18_022472AC + + thumb_func_start MOD18_022472C8 +MOD18_022472C8: ; 0x022472C8 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _0224731C ; =0x022513EC + mov r1, #0 + ldr r0, [r0] + ldr r0, [r0] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7ED0 + add r1, r0, #0 + add r0, sp, #8 + bl FUN_021E7EA0 + ldr r1, _0224731C ; =0x022513EC + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1] + add r1, #0xa0 + ldr r1, [r1] + bl FUN_021E7C80 + ldr r0, _0224731C ; =0x022513EC + ldr r2, _02247320 ; =0x0000013D + ldr r0, [r0] + ldr r1, [r0] + mov r0, #0 + str r0, [sp] + ldr r0, [r1, #0x4c] + str r0, [sp, #4] + add r0, r1, #0 + ldrb r3, [r4, #5] + add r0, #0xa0 + ldr r0, [r0] + add r2, r3, r2 + ldr r1, [r1, #0x2c] + add r3, sp, #8 + bl FUN_021E7FBC + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_0224731C: .word 0x022513EC +_02247320: .word 0x0000013D + thumb_func_end MOD18_022472C8 + + thumb_func_start MOD18_02247324 +MOD18_02247324: ; 0x02247324 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247324 + + thumb_func_start MOD18_02247338 +MOD18_02247338: ; 0x02247338 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _02247406 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02247352: ; jump table + .short _0224735C - _02247352 - 2 ; case 0 + .short _0224737C - _02247352 - 2 ; case 1 + .short _022473AA - _02247352 - 2 ; case 2 + .short _022473DA - _02247352 - 2 ; case 3 + .short _022473F6 - _02247352 - 2 ; case 4 +_0224735C: + bl FUN_0204F7E4 + bl MOD18_0223D648 + mov r2, #0 + mov r1, #7 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224740C ; =0x000005E3 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + str r0, [r4] + pop {r4, r5, pc} +_0224737C: + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02247406 + ldr r0, _02247410 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02247406 + bl MOD18_0223D648 + ldrb r1, [r4, #5] + mov r2, #0 + add r3, r2, #0 + add r1, #0xe + bl MOD18_0224DCB8 + mov r0, #2 + add sp, #0xc + str r0, [r4] + pop {r4, r5, pc} +_022473AA: + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02247406 + ldr r0, _02247410 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02247406 + add r0, r4, #0 + bl MOD18_022472C8 + mov r0, #4 + str r0, [r4] + bl MOD18_0223D648 + bl MOD18_0224DD94 + bl FUN_0204F7FC + add sp, #0xc + pop {r4, r5, pc} +_022473DA: + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {r4, r5, pc} +_022473F6: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + bl MOD18_0223E6A0 +_02247406: + add sp, #0xc + pop {r4, r5, pc} + nop +_0224740C: .word 0x000005E3 +_02247410: .word 0x021C48B8 + thumb_func_end MOD18_02247338 + + thumb_func_start MOD18_02247414 +MOD18_02247414: ; 0x02247414 + push {r3, lr} + add r1, sp, #0 + strb r0, [r1] + ldrb r0, [r2] + strb r0, [r1, #1] + mov r0, #0x61 + add r1, sp, #0 + bl FUN_02030C4C + pop {r3, pc} + thumb_func_end MOD18_02247414 + + thumb_func_start MOD18_02247428 +MOD18_02247428: ; 0x02247428 + push {r3, r4, r5, lr} + add r5, r2, #0 + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _02247464 + mov r0, #0xb + mov r1, #8 + bl FUN_02016998 + mov r1, #0 + mov r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + ldrb r0, [r5, #1] + add r1, r4, #0 + mov r2, #0x64 + strb r0, [r4, #5] + ldr r0, _02247468 ; =MOD18_02247338 + bl FUN_0200CA44 + add r1, r0, #0 + ldr r2, _0224746C ; =MOD18_02247324 + add r0, r4, #0 + bl MOD18_0223E688 +_02247464: + pop {r3, r4, r5, pc} + nop +_02247468: .word MOD18_02247338 +_0224746C: .word MOD18_02247324 + thumb_func_end MOD18_02247428 + + thumb_func_start MOD18_02247470 +MOD18_02247470: ; 0x02247470 + mov r0, #2 + bx lr + thumb_func_end MOD18_02247470 + + thumb_func_start MOD18_02247474 +MOD18_02247474: ; 0x02247474 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + mov r4, #0 +_02247480: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020267C4 + str r0, [sp, #4] + cmp r0, #0 + beq _022474C0 + cmp r4, #0 + beq _022474C0 + cmp r4, #0x10 + bge _022474C0 + bl FUN_0204CAA0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026810 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026840 + ldr r1, [sp] + sub r2, r7, r6 + sub r0, r1, r0 + cmp r2, #0 + bne _022474C0 + cmp r0, #0 + bne _022474C0 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022474C0: + add r4, r4, #1 + cmp r4, #0x20 + blt _02247480 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02247474 + + thumb_func_start MOD18_022474CC +MOD18_022474CC: ; 0x022474CC + sub r0, #0x38 + cmp r0, #0xf + bhi _0224753E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022474DE: ; jump table + .short _022474FE - _022474DE - 2 ; case 0 + .short _02247502 - _022474DE - 2 ; case 1 + .short _02247506 - _022474DE - 2 ; case 2 + .short _0224750A - _022474DE - 2 ; case 3 + .short _0224750E - _022474DE - 2 ; case 4 + .short _02247512 - _022474DE - 2 ; case 5 + .short _02247516 - _022474DE - 2 ; case 6 + .short _0224751A - _022474DE - 2 ; case 7 + .short _0224751E - _022474DE - 2 ; case 8 + .short _02247522 - _022474DE - 2 ; case 9 + .short _02247526 - _022474DE - 2 ; case 10 + .short _0224752A - _022474DE - 2 ; case 11 + .short _0224752E - _022474DE - 2 ; case 12 + .short _02247532 - _022474DE - 2 ; case 13 + .short _02247536 - _022474DE - 2 ; case 14 + .short _0224753A - _022474DE - 2 ; case 15 +_022474FE: + mov r0, #0xb + bx lr +_02247502: + mov r0, #0xc + bx lr +_02247506: + mov r0, #0x12 + bx lr +_0224750A: + mov r0, #0x13 + bx lr +_0224750E: + mov r0, #0x14 + bx lr +_02247512: + mov r0, #0x15 + bx lr +_02247516: + mov r0, #0x16 + bx lr +_0224751A: + mov r0, #0x17 + bx lr +_0224751E: + mov r0, #0x18 + bx lr +_02247522: + mov r0, #0x19 + bx lr +_02247526: + mov r0, #0x1a + bx lr +_0224752A: + mov r0, #0x1b + bx lr +_0224752E: + mov r0, #0x1c + bx lr +_02247532: + mov r0, #0x1d + bx lr +_02247536: + mov r0, #0x1e + bx lr +_0224753A: + mov r0, #0x1f + bx lr +_0224753E: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_022474CC + + thumb_func_start MOD18_02247544 +MOD18_02247544: ; 0x02247544 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0204E544 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E598 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E6CC + str r0, [sp, #8] + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _02247572 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02247572: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_02246F1C + cmp r0, #1 + bne _022475EA + ldr r0, _022475F0 ; =0x022513EC + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _022475F4 ; =0x00001383 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _022475EA + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_02244DE8 + ldr r1, _022475F0 ; =0x022513EC + lsr r3, r6, #0x1f + ldr r2, [r1] + mov r1, #0x96 + add r2, #0xa + mul r1, r0 + add r0, r2, r1 + lsl r2, r6, #0x1b + sub r2, r2, r3 + mov r1, #0x1b + ror r2, r1 + add r1, r3, r2 + lsr r3, r4, #0x1f + lsl r7, r4, #0x1b + sub r7, r7, r3 + mov r2, #0x1b + ror r7, r2 + add r2, r3, r7 + bl MOD18_02247474 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD18_022474CC + add r2, r0, #0 + beq _022475EA + ldr r1, _022475F0 ; =0x022513EC + mov r0, #1 + ldr r1, [r1] + add r3, r1, r5 + ldr r1, _022475F4 ; =0x00001383 + strb r0, [r3, r1] + ldr r0, [sp, #8] + str r4, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0xff + add r3, r6, #0 + bl MOD18_0223F858 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022475EA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022475F0: .word 0x022513EC +_022475F4: .word 0x00001383 + thumb_func_end MOD18_02247544 + + thumb_func_start MOD18_022475F8 +MOD18_022475F8: ; 0x022475F8 + ldr r1, _0224760C ; =0x022513EC + ldr r1, [r1] + cmp r1, #0 + beq _02247608 + add r1, r1, r0 + ldr r0, _02247610 ; =0x00001383 + mov r2, #0 + strb r2, [r1, r0] +_02247608: + mov r0, #0 + bx lr + .align 2, 0 +_0224760C: .word 0x022513EC +_02247610: .word 0x00001383 + thumb_func_end MOD18_022475F8 + + thumb_func_start MOD18_02247614 +MOD18_02247614: ; 0x02247614 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r0, sp, #4 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r4, #0 + add r5, sp, #4 +_02247626: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _022476A2 + add r0, r4, #0 + bl FUN_0204E544 + str r0, [sp] + add r0, r4, #0 + bl FUN_0204E598 + add r7, r0, #0 + ldr r1, [sp] + ldr r0, _02247714 ; =0x0000FFFF + cmp r1, r0 + bne _0224764E + cmp r7, r0 + beq _022476A2 +_0224764E: + ldr r0, [sp] + add r1, r7, #0 + bl MOD18_02244DE8 + add r6, r0, #0 + cmp r4, r6 + beq _022476A2 + cmp r6, #0x10 + beq _022476A2 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _022476A2 + ldr r0, _02247718 ; =0x022513EC + ldr r1, _0224771C ; =0x0000136B + ldr r0, [r0] + add r0, r0, r4 + ldrb r1, [r0, r1] + cmp r1, #0xff + bne _022476A2 + ldr r1, _02247720 ; =0x00001373 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _022476A2 + ldr r0, [sp] + add r1, r7, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _022476A2 + ldrb r0, [r5] + cmp r0, #0 + bne _022476A2 + add r0, r6, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_022455D0 + mov r0, #1 + strb r0, [r5] +_022476A2: + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #8 + blt _02247626 + bl FUN_02031190 + ldr r1, _02247718 ; =0x022513EC + add r4, r0, #0 + ldr r2, [r1] + ldr r1, _02247724 ; =0x000012E4 + ldrb r1, [r2, r1] + cmp r1, #6 + bne _0224770E + bl FUN_0204E544 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E598 + add r5, r0, #0 + ldr r0, _02247714 ; =0x0000FFFF + cmp r6, r0 + bne _022476D4 + cmp r5, r0 + beq _022476FC +_022476D4: + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _022476FC + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02244DE8 + add r5, sp, #4 + ldrb r1, [r5, r4] + cmp r1, #0 + bne _022476FC + add r1, r4, #0 + mov r2, #1 + bl MOD18_022455D0 + mov r0, #1 + strb r0, [r5, r4] +_022476FC: + add r0, sp, #4 + ldrb r0, [r0, r4] + cmp r0, #0 + beq _0224770E + ldr r0, _02247718 ; =0x022513EC + mov r2, #0 + ldr r1, [r0] + ldr r0, _02247724 ; =0x000012E4 + strb r2, [r1, r0] +_0224770E: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02247714: .word 0x0000FFFF +_02247718: .word 0x022513EC +_0224771C: .word 0x0000136B +_02247720: .word 0x00001373 +_02247724: .word 0x000012E4 + thumb_func_end MOD18_02247614 + + thumb_func_start MOD18_02247728 +MOD18_02247728: ; 0x02247728 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _022477F8 ; =0x022513EC + str r1, [sp, #8] + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _022477FC ; =0x00001363 + ldrb r0, [r1, r0] + cmp r0, #0xff + bne _02247744 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02247744: + bl FUN_02031190 + bl FUN_0204E3EC + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E440 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _02247774 + ldr r0, _022477F8 ; =0x022513EC + mov r2, #0xff + ldr r0, [r0] + add sp, #0x10 + add r1, r0, r5 + ldr r0, _022477FC ; =0x00001363 + strb r2, [r1, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02247774: + bl MOD18_0224D344 + bl MOD18_02248FC8 + bl MOD18_0223E6B8 + bl FUN_02031190 + mov r1, #0 + bl MOD18_0223FCE8 + ldr r0, _022477F8 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02247800 ; =0x000013DC + add r1, r0, #2 + ldrh r6, [r2, r0] + add r0, r0, #4 + ldrh r4, [r2, r1] + ldrb r7, [r2, r0] + cmp r6, #0 + beq _022477A2 + cmp r4, #0 + bne _022477A6 +_022477A2: + bl ErrorHandling +_022477A6: + add r0, r7, #0 + bl FUN_02059BF4 + str r0, [sp, #0xc] + add r0, r7, #0 + bl FUN_02059C00 + add r2, r0, #0 + ldr r0, _022477F8 ; =0x022513EC + mov r3, #0 + ldr r1, [r0] + ldr r0, _02247804 ; =0x000013E6 + add r2, r4, r2 + strb r3, [r1, r0] + ldr r1, [sp, #0xc] + ldr r0, [sp, #8] + str r5, [sp] + str r0, [sp, #4] + ldr r0, _022477F8 ; =0x022513EC + add r1, r6, r1 + ldr r0, [r0] + add r3, r7, #0 + ldr r0, [r0] + bl MOD18_0224686C + bl FUN_0204FD38 + ldr r1, _022477F8 ; =0x022513EC + mov r0, #0xa + ldr r2, [r1] + mov r3, #0 + lsl r0, r0, #8 + str r3, [r2, r0] + ldr r0, [r1] + mov r2, #0xff + add r1, r0, r5 + ldr r0, _022477FC ; =0x00001363 + strb r2, [r1, r0] + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022477F8: .word 0x022513EC +_022477FC: .word 0x00001363 +_02247800: .word 0x000013DC +_02247804: .word 0x000013E6 + thumb_func_end MOD18_02247728 + + thumb_func_start MOD18_02247808 +MOD18_02247808: ; 0x02247808 + push {r3, lr} + ldr r0, _02247828 ; =0x022513EC + ldr r2, [r0] + ldr r0, _0224782C ; =0x000012E4 + ldrb r1, [r2, r0] + cmp r1, #1 + bne _02247824 + mov r1, #2 + strb r1, [r2, r0] + bl FUN_0204CF60 + mov r0, #0 + bl MOD18_02245358 +_02247824: + pop {r3, pc} + nop +_02247828: .word 0x022513EC +_0224782C: .word 0x000012E4 + thumb_func_end MOD18_02247808 + + thumb_func_start MOD18_02247830 +MOD18_02247830: ; 0x02247830 + ldr r0, _02247844 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02247848 ; =0x000012E4 + ldrb r1, [r2, r0] + cmp r1, #5 + bne _02247840 + mov r1, #4 + strb r1, [r2, r0] +_02247840: + bx lr + nop +_02247844: .word 0x022513EC +_02247848: .word 0x000012E4 + thumb_func_end MOD18_02247830 + + thumb_func_start MOD18_0224784C +MOD18_0224784C: ; 0x0224784C + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_0204E5EC + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204E60C + add r4, r0, #0 + ldr r0, _022478BC ; =0x022513EC + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + bne _0224787C + cmp r6, #0 + beq _022478BA + bl FUN_0202EDD8 + cmp r0, #0 + bne _022478BA +_0224787C: + ldr r0, _022478C0 ; =0x0000FFFF + cmp r5, r0 + bne _02247892 + cmp r4, r0 + bne _02247892 + add r0, r6, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD18_022455D0 + pop {r4, r5, r6, pc} +_02247892: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _022478B0 + ldr r0, _022478BC ; =0x022513EC + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _022478BA +_022478B0: + add r0, r6, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD18_022455D0 +_022478BA: + pop {r4, r5, r6, pc} + .align 2, 0 +_022478BC: .word 0x022513EC +_022478C0: .word 0x0000FFFF + thumb_func_end MOD18_0224784C + + thumb_func_start MOD18_022478C4 +MOD18_022478C4: ; 0x022478C4 + ldr r0, _022478D8 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _022478D2 + ldr r0, _022478DC ; =0x000013DC + ldrh r0, [r1, r0] + bx lr +_022478D2: + mov r0, #0x48 + bx lr + nop +_022478D8: .word 0x022513EC +_022478DC: .word 0x000013DC + thumb_func_end MOD18_022478C4 + + thumb_func_start MOD18_022478E0 +MOD18_022478E0: ; 0x022478E0 + ldr r0, _022478F4 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _022478EE + ldr r0, _022478F8 ; =0x000013DE + ldrh r0, [r1, r0] + bx lr +_022478EE: + ldr r0, _022478FC ; =0x000001B5 + bx lr + nop +_022478F4: .word 0x022513EC +_022478F8: .word 0x000013DE +_022478FC: .word 0x000001B5 + thumb_func_end MOD18_022478E0 + + thumb_func_start MOD18_02247900 +MOD18_02247900: ; 0x02247900 + ldr r0, _02247914 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _0224790E + ldr r0, _02247918 ; =0x000013E0 + ldrb r0, [r1, r0] + bx lr +_0224790E: + mov r0, #1 + bx lr + nop +_02247914: .word 0x022513EC +_02247918: .word 0x000013E0 + thumb_func_end MOD18_02247900 + + thumb_func_start MOD18_0224791C +MOD18_0224791C: ; 0x0224791C + ldr r2, _02247930 ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _0224792C + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _02247934 ; =0x000013AC + strh r1, [r2, r0] +_0224792C: + bx lr + nop +_02247930: .word 0x022513EC +_02247934: .word 0x000013AC + thumb_func_end MOD18_0224791C + + thumb_func_start MOD18_02247938 +MOD18_02247938: ; 0x02247938 + ldr r2, _0224794C ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _02247948 + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _02247950 ; =0x000013BC + strh r1, [r2, r0] +_02247948: + bx lr + nop +_0224794C: .word 0x022513EC +_02247950: .word 0x000013BC + thumb_func_end MOD18_02247938 + + thumb_func_start MOD18_02247954 +MOD18_02247954: ; 0x02247954 + ldr r2, _02247968 ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _02247964 + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _0224796C ; =0x000013CC + strh r1, [r2, r0] +_02247964: + bx lr + nop +_02247968: .word 0x022513EC +_0224796C: .word 0x000013CC + thumb_func_end MOD18_02247954 + + thumb_func_start MOD18_02247970 +MOD18_02247970: ; 0x02247970 + ldr r1, _0224797C ; =0x022513EC + ldr r2, [r1] + ldr r1, _02247980 ; =0x000013E5 + strb r0, [r2, r1] + bx lr + nop +_0224797C: .word 0x022513EC +_02247980: .word 0x000013E5 + thumb_func_end MOD18_02247970 + + thumb_func_start MOD18_02247984 +MOD18_02247984: ; 0x02247984 + push {r3, lr} + mov r0, #1 + bl FUN_0202D380 + mov r0, #1 + bl FUN_0202D344 + mov r0, #1 + bl FUN_020318A4 + bl FUN_0202F0B8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02247984 + + thumb_func_start MOD18_022479A0 +MOD18_022479A0: ; 0x022479A0 + push {r3, lr} + mov r0, #0 + bl FUN_0202D380 + mov r0, #0 + bl FUN_0202D344 + mov r0, #0 + bl FUN_020318A4 + bl FUN_0202F0B8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_022479A0 + + thumb_func_start MOD18_022479BC +MOD18_022479BC: ; 0x022479BC + push {r3, lr} + ldrh r2, [r0, #0x2c] + add r0, sp, #0 + strb r2, [r0] + strb r1, [r0, #1] + mov r0, #0x4a + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, pc} + thumb_func_end MOD18_022479BC + + thumb_func_start MOD18_022479D0 +MOD18_022479D0: ; 0x022479D0 + push {r3, lr} + ldrh r2, [r0, #0x30] + add r0, sp, #0 + strb r2, [r0] + strb r1, [r0, #1] + mov r0, #0x49 + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, pc} + thumb_func_end MOD18_022479D0 + + thumb_func_start MOD18_022479E4 +MOD18_022479E4: ; 0x022479E4 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0x88 + blt _022479FC + ldrh r0, [r0, #0x30] + bl FUN_0202DFA4 + bl FUN_020239CC + cmp r0, #1 + bne _022479FC + add r4, #0x13 +_022479FC: + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + thumb_func_end MOD18_022479E4 + + thumb_func_start MOD18_02247A0C +MOD18_02247A0C: ; 0x02247A0C + push {r4, lr} + add r4, r1, #0 + cmp r4, #0x88 + blt _02247A24 + ldrh r0, [r0, #0x2c] + bl FUN_0202DFA4 + bl FUN_020239CC + cmp r0, #1 + bne _02247A24 + add r4, #0x13 +_02247A24: + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + thumb_func_end MOD18_02247A0C + + thumb_func_start MOD18_02247A34 +MOD18_02247A34: ; 0x02247A34 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x21 + mov r1, #0x3c + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02247A98 ; =0x022513F0 + mov r1, #1 + str r4, [r0, #4] + str r7, [r4, #8] + str r6, [r4, #0x2c] + add r0, r4, #0 + strh r5, [r4, #0x30] + add r0, #0x37 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x29 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r4, #0 + ldrh r1, [r4, #0x30] + add r0, #0x28 + strb r1, [r0] + ldr r0, _02247A9C ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD18_022479E4 + ldr r0, _02247AA0 ; =MOD18_02248054 + ldr r2, _02247AA4 ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02247A98: .word 0x022513F0 +_02247A9C: .word 0x000005DC +_02247AA0: .word MOD18_02248054 +_02247AA4: .word 0x00002710 + thumb_func_end MOD18_02247A34 + + thumb_func_start MOD18_02247AA8 +MOD18_02247AA8: ; 0x02247AA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x1c] + mov r3, #1 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02247B50 ; =0x000002DD + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, #0xc + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02247B54 ; =0x000003D9 + add r0, #0xc + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02247B58 ; =0x0000023F + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + ldr r4, _02247B5C ; =0x02250548 + add r7, r0, #0 + mov r6, #0 +_02247AFA: + ldr r0, [r5, #0x1c] + ldr r2, [r4] + ldr r3, [r4, #4] + add r1, r7, #0 + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, #4 + blo _02247AFA + add r0, r7, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x14 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x1c] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xc + str r0, [sp, #0x20] + mov r3, #4 + add r0, sp, #0x14 + strh r3, [r0, #0x10] + strh r3, [r0, #0x12] + strh r1, [r5, #0x3a] + add r0, sp, #0x14 + add r2, r1, #0 + bl FUN_020010A8 + str r0, [r5, #0x20] + add r5, #0xc + add r0, r5, #0 + bl FUN_020191D0 + bl FUN_0204F7E4 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02247B50: .word 0x000002DD +_02247B54: .word 0x000003D9 +_02247B58: .word 0x0000023F +_02247B5C: .word 0x02250548 + thumb_func_end MOD18_02247AA8 + + thumb_func_start MOD18_02247B60 +MOD18_02247B60: ; 0x02247B60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _02247B76 + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x24] +_02247B76: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02247B88 + mov r1, #1 + mvn r1, r1 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 +_02247B88: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247FC0 + ldr r1, [r4, #0x2c] + cmp r1, #0 + beq _02247B9A + mov r0, #0 + blx r1 +_02247B9A: + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_0204F7FC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _02247BB4 ; =0x022513F0 + mov r1, #0 + str r1, [r0, #4] + pop {r3, r4, r5, pc} + nop +_02247BB4: .word 0x022513F0 + thumb_func_end MOD18_02247B60 + + thumb_func_start MOD18_02247BB8 +MOD18_02247BB8: ; 0x02247BB8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x1c] + mov r3, #1 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02247C88 ; =0x000002AD + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, #0xc + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02247C8C ; =0x000003D9 + add r0, #0xc + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02247C90 ; =0x0000023E + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + mov r4, #0 + add r7, sp, #0x14 +_02247C0A: + bl FUN_0201BA60 + mov r1, #0xc + bl _u32_div_f + add r2, r1, #0 + mov r1, #0 + cmp r4, #0 + ble _02247C2C + add r3, r7, #0 +_02247C1E: + ldrb r0, [r3] + cmp r0, r2 + beq _02247C2C + add r1, r1, #1 + add r3, r3, #1 + cmp r1, r4 + blt _02247C1E +_02247C2C: + cmp r1, r4 + bne _02247C3E + strb r2, [r7, r4] + ldr r0, [r5, #0x1c] + add r1, r6, #0 + add r3, r2, #0 + bl FUN_02012880 + b _02247C40 +_02247C3E: + sub r4, r4, #1 +_02247C40: + add r4, r4, #1 + cmp r4, #4 + blt _02247C0A + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r4, _02247C94 ; =0x02250528 + add r3, sp, #0x18 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x1c] + mov r1, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r0, #0xc + str r0, [sp, #0x24] + add r0, r2, #0 + strh r1, [r5, #0x3a] + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x20] + add r5, #0xc + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02247C88: .word 0x000002AD +_02247C8C: .word 0x000003D9 +_02247C90: .word 0x0000023E +_02247C94: .word 0x02250528 + thumb_func_end MOD18_02247BB8 + + thumb_func_start MOD18_02247C98 +MOD18_02247C98: ; 0x02247C98 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x20] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_02248FEC + bl FUN_020311F0 + cmp r0, #0 + beq _02247CCC + add r0, r5, #0 + mov r1, #3 + add r0, #0x37 + strb r1, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02247CCC: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02247CDA + add r0, r0, #1 + cmp r4, r0 + bne _02247CE0 +_02247CDA: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02247CE0: + ldr r0, _02247D18 ; =0x000005DC + bl FUN_020054C8 + add r0, sp, #0 + strb r4, [r0] + ldrh r1, [r5, #0x30] + strb r1, [r0, #1] + mov r1, #0 + strb r1, [r0, #2] + mov r0, #0x4f + add r1, sp, #0 + bl FUN_020311D0 + add r0, r5, #0 + add r0, #0x32 + strb r4, [r0] + add r0, r5, #0 + mov r1, #0x1e + add r0, #0x37 + strb r1, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02247D18: .word 0x000005DC + thumb_func_end MOD18_02247C98 + + thumb_func_start MOD18_02247D1C +MOD18_02247D1C: ; 0x02247D1C + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x1c] + mov r3, #1 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02247DC8 ; =0x000002AD + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, #0xc + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02247DCC ; =0x000003D9 + add r0, #0xc + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02247DD0 ; =0x0000023D + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + mov r4, #0 +_02247D6C: + add r2, r5, #0 + add r2, #0x32 + ldrb r2, [r2] + ldr r0, [r5, #0x1c] + add r1, r6, #0 + lsl r2, r2, #2 + add r2, r4, r2 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #4 + blt _02247D6C + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r4, _02247DD4 ; =0x02250528 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x1c] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xc + str r0, [sp, #0x20] + add r0, r2, #0 + strh r1, [r5, #0x3a] + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x20] + add r5, #0xc + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02247DC8: .word 0x000002AD +_02247DCC: .word 0x000003D9 +_02247DD0: .word 0x0000023D +_02247DD4: .word 0x02250528 + thumb_func_end MOD18_02247D1C + + thumb_func_start MOD18_02247DD8 +MOD18_02247DD8: ; 0x02247DD8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x20] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_02248FEC + bl FUN_020311F0 + cmp r0, #0 + beq _02247E0A + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + mov r0, #3 + add r5, #0x37 + strb r0, [r5] + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02247E0A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02247E18 + add r0, r0, #1 + cmp r4, r0 + bne _02247E1E +_02247E18: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02247E1E: + ldr r0, _02247E9C ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + add r0, r5, #0 + add r0, #0x32 + ldrb r0, [r0] + lsl r0, r0, #2 + add r1, r4, r0 + add r0, sp, #0 + strb r1, [r0] + ldrh r1, [r5, #0x30] + strb r1, [r0, #1] + mov r1, #2 + strb r1, [r0, #2] + mov r0, #0x4f + add r1, sp, #0 + bl FUN_020311D0 + bl MOD18_0223D638 + add r1, sp, #0 + ldrb r1, [r1] + bl MOD18_0224DE18 + bl MOD18_0223D638 + add r2, r5, #0 + add r2, #0x33 + ldrb r2, [r2] + mov r1, #6 + bl MOD18_0224DE30 + add r0, r5, #0 + add r0, #0x33 + ldrb r1, [r0] + add r0, sp, #0 + ldrb r0, [r0] + cmp r1, r0 + bne _02247E7E + add r0, r5, #0 + mov r1, #0x8d + bl MOD18_022479E4 + b _02247E86 +_02247E7E: + add r0, r5, #0 + mov r1, #0x8c + bl MOD18_022479E4 +_02247E86: + add r0, r5, #0 + mov r1, #0x24 + add r0, #0x37 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x1b + bl MOD18_022479D0 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02247E9C: .word 0x000005DC + thumb_func_end MOD18_02247DD8 + + thumb_func_start MOD18_02247EA0 +MOD18_02247EA0: ; 0x02247EA0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD18_0223D638 + add r5, r0, #0 + ldrh r0, [r4, #0x30] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + add r1, r4, #0 + add r1, #0x2a + ldrb r1, [r1] + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0xe + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, [r4, #8] + bl FUN_020377AC + bl FUN_02026CB4 + bl FUN_02026940 + add r4, #0x2a + ldrb r0, [r4] + bl MOD18_022493A4 + ldr r0, _02247EF4 ; =0x000005E3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_02247EF4: .word 0x000005E3 + thumb_func_end MOD18_02247EA0 + + thumb_func_start MOD18_02247EF8 +MOD18_02247EF8: ; 0x02247EF8 + push {r4, lr} + add r4, r1, #0 + bl MOD18_0223D638 + add r1, r4, #0 + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0xc + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247EF8 + + thumb_func_start MOD18_02247F18 +MOD18_02247F18: ; 0x02247F18 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x24] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02247F5A + cmp r0, #0 + bne _02247F46 + ldrh r1, [r4, #0x30] + add r0, r4, #0 + add r0, #0x28 + strb r1, [r0] + add r1, r4, #0 + mov r0, #0x4d + add r1, #0x28 + bl FUN_020311D0 + mov r1, #0x15 + b _02247F50 +_02247F46: + add r0, r4, #0 + mov r1, #0xb + bl MOD18_022479E4 + mov r1, #0xf +_02247F50: + add r0, r4, #0 + add r0, #0x37 + strb r1, [r0] + mov r0, #0 + str r0, [r4, #0x24] +_02247F5A: + pop {r4, pc} + thumb_func_end MOD18_02247F18 + + thumb_func_start MOD18_02247F5C +MOD18_02247F5C: ; 0x02247F5C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x20] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_02248FEC + bl FUN_020311F0 + cmp r0, #0 + beq _02247F7C + mov r4, #1 + mvn r4, r4 +_02247F7C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02247F8E + add r0, r0, #1 + cmp r4, r0 + bne _02247FA4 + mov r0, #0 + pop {r4, r5, r6, pc} +_02247F8E: + ldr r0, _02247FBC ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_0224865C + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + b _02247FB6 +_02247FA4: + ldr r0, _02247FBC ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + blx r4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 +_02247FB6: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_02247FBC: .word 0x000005DC + thumb_func_end MOD18_02247F5C + + thumb_func_start MOD18_02247FC0 +MOD18_02247FC0: ; 0x02247FC0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02247FF8 + add r0, r4, #0 + add r0, #0xc + mov r1, #0 + bl FUN_0200CCF8 + mov r1, #0 + ldr r0, [r4, #0x20] + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0xc + bl FUN_02019570 + add r0, r4, #0 + add r0, #0xc + bl FUN_02019178 + ldr r0, [r4, #0x1c] + bl FUN_02012870 + mov r0, #0 + str r0, [r4, #0x1c] +_02247FF8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247FC0 + + thumb_func_start MOD18_02247FFC +MOD18_02247FFC: ; 0x02247FFC + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #7 + bl MOD18_022479E4 + mov r0, #5 + add r4, #0x37 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247FFC + + thumb_func_start MOD18_02248018 +MOD18_02248018: ; 0x02248018 + push {r4, lr} + mov r1, #0x16 + add r4, r0, #0 + bl MOD18_022479D0 + mov r0, #0x1b + add r4, #0x37 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02248018 + + thumb_func_start MOD18_0224802C +MOD18_0224802C: ; 0x0224802C + mov r1, #0x10 + add r0, #0x37 + strb r1, [r0] + bx lr + thumb_func_end MOD18_0224802C + + thumb_func_start MOD18_02248034 +MOD18_02248034: ; 0x02248034 + ldr r1, _02248048 ; =0x022513F0 + ldr r2, [r1, #4] + add r2, #0x2a + strb r0, [r2] + ldr r0, [r1, #4] + mov r2, #0x12 + add r0, #0x37 + strb r2, [r0] + bx lr + nop +_02248048: .word 0x022513F0 + thumb_func_end MOD18_02248034 + + thumb_func_start MOD18_0224804C +MOD18_0224804C: ; 0x0224804C + mov r1, #0xb + add r0, #0x37 + strb r1, [r0] + bx lr + thumb_func_end MOD18_0224804C + + thumb_func_start MOD18_02248054 +MOD18_02248054: ; 0x02248054 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #0x11 + beq _02248080 + ldrh r0, [r4, #0x30] + bl FUN_02030E7C + cmp r0, #0 + bne _02248080 + mov r0, #0 + str r0, [r4, #4] + bl MOD18_0224D344 + add r0, r4, #0 + mov r1, #4 + add r0, #0x37 + strb r1, [r0] +_02248080: + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #0x29 + bhi _02248134 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02248096: ; jump table + .short _022485F6 - _02248096 - 2 ; case 0 + .short _022480EA - _02248096 - 2 ; case 1 + .short _0224810C - _02248096 - 2 ; case 2 + .short _02248116 - _02248096 - 2 ; case 3 + .short _02248116 - _02248096 - 2 ; case 4 + .short _02248128 - _02248096 - 2 ; case 5 + .short _02248174 - _02248096 - 2 ; case 6 + .short _02248186 - _02248096 - 2 ; case 7 + .short _02248162 - _02248096 - 2 ; case 8 + .short _022481A6 - _02248096 - 2 ; case 9 + .short _022485F6 - _02248096 - 2 ; case 10 + .short _022481D8 - _02248096 - 2 ; case 11 + .short _022481FC - _02248096 - 2 ; case 12 + .short _0224821A - _02248096 - 2 ; case 13 + .short _0224822E - _02248096 - 2 ; case 14 + .short _02248240 - _02248096 - 2 ; case 15 + .short _02248262 - _02248096 - 2 ; case 16 + .short _022485F6 - _02248096 - 2 ; case 17 + .short _02248276 - _02248096 - 2 ; case 18 + .short _0224830C - _02248096 - 2 ; case 19 + .short _02248348 - _02248096 - 2 ; case 20 + .short _02248352 - _02248096 - 2 ; case 21 + .short _022483BC - _02248096 - 2 ; case 22 + .short _02248398 - _02248096 - 2 ; case 23 + .short _022483AA - _02248096 - 2 ; case 24 + .short _022483F6 - _02248096 - 2 ; case 25 + .short _02248400 - _02248096 - 2 ; case 26 + .short _02248420 - _02248096 - 2 ; case 27 + .short _02248432 - _02248096 - 2 ; case 28 + .short _0224844E - _02248096 - 2 ; case 29 + .short _02248458 - _02248096 - 2 ; case 30 + .short _02248478 - _02248096 - 2 ; case 31 + .short _0224849A - _02248096 - 2 ; case 32 + .short _022484F4 - _02248096 - 2 ; case 33 + .short _0224851C - _02248096 - 2 ; case 34 + .short _02248538 - _02248096 - 2 ; case 35 + .short _02248542 - _02248096 - 2 ; case 36 + .short _0224856E - _02248096 - 2 ; case 37 + .short _0224858E - _02248096 - 2 ; case 38 + .short _022485AA - _02248096 - 2 ; case 39 + .short _022485C6 - _02248096 - 2 ; case 40 + .short _022485E4 - _02248096 - 2 ; case 41 +_022480EA: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248134 + add r0, r4, #0 + bl MOD18_02247AA8 + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224810C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247F5C + b _022485F6 +_02248116: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247B60 + b _022485F6 +_02248128: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02248136 +_02248134: + b _022485F6 +_02248136: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #9 + bne _0224814E + add r0, r4, #0 + mov r1, #9 + add r0, #0x37 + strb r1, [r0] + ldrh r0, [r4, #0x30] + bl MOD18_0224D698 +_0224814E: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #6 + bne _02248256 + add r0, r4, #0 + mov r1, #6 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248162: + add r0, r4, #0 + mov r1, #0xf + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #7 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248174: + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #7 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248186: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248256 + ldr r0, _022484C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02248256 + add r0, r4, #0 + mov r1, #4 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022481A6: + bl MOD18_0224D774 + cmp r0, #0 + beq _02248256 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldrh r0, [r4, #0x30] + bl FUN_0202DFA4 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #8] + ldr r2, _022484C4 ; =MOD18_0224804C + ldr r0, [r0, #8] + add r3, r4, #0 + bl MOD18_0224D5CC + add r0, r4, #0 + mov r1, #0xa + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022481D8: + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x20 + bl FUN_0202A170 + bl MOD18_0224D784 + add r0, r4, #0 + mov r1, #9 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xc + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022481FC: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248256 + add r0, r4, #0 + mov r1, #0xe + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #0xd + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224821A: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0xd + bne _02248256 + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224822E: + add r0, r4, #0 + mov r1, #0xa + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #1 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248240: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248256 + ldr r0, _022484C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _02248258 +_02248256: + b _022485F6 +_02248258: + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248262: + ldr r0, _022484C8 ; =MOD18_02248034 + ldr r1, [r4, #8] + bl MOD18_0224AF28 + str r0, [r4, #4] + add r0, r4, #0 + mov r1, #0x11 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248276: + mov r0, #0 + str r0, [r4, #4] + ldr r0, _022484CC ; =0x022513F0 + ldr r0, [r0, #4] + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #0 + bne _02248298 + add r0, r4, #0 + mov r1, #0xb + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248298: + ldrh r0, [r4, #0x30] + bl FUN_0202E068 + cmp r0, #0 + beq _022482B4 + add r0, r4, #0 + mov r1, #0x57 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022482B4: + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02025C18 + cmp r0, #0 + bne _022482D2 + add r0, r4, #0 + mov r1, #0x57 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022482D2: + ldr r0, _022484CC ; =0x022513F0 + ldr r0, [r0, #4] + add r0, #0x2a + ldrb r0, [r0] + bl FUN_0204CB10 + cmp r0, #0 + beq _022482F4 + add r0, r4, #0 + mov r1, #0x56 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022482F4: + ldr r1, _022484CC ; =0x022513F0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r1, #0x2a + ldrb r1, [r1] + bl MOD18_02247EF8 + add r0, r4, #0 + mov r1, #0x13 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224830C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224838C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, _022484D0 ; =0x02250520 + ldr r0, [r0, #8] + ldr r2, _022484D4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x24] + add r0, r4, #0 + mov r1, #0x14 + add r0, #0x37 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #8 + beq _0224838C + add r0, r4, #0 + mov r1, #1 + add r0, #0x38 + strb r1, [r0] + b _022485F6 +_02248348: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247F18 + b _022485F6 +_02248352: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224838C + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x16 + bne _02248370 + add r0, r4, #0 + mov r1, #0x16 + add r0, #0x37 + strb r1, [r0] +_02248370: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x18 + bne _02248382 + add r0, r4, #0 + mov r1, #0x18 + add r0, #0x37 + strb r1, [r0] +_02248382: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x17 + beq _0224838E +_0224838C: + b _022485F6 +_0224838E: + add r0, r4, #0 + mov r1, #0x17 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248398: + add r0, r4, #0 + mov r1, #0x1e + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022483AA: + add r0, r4, #0 + mov r1, #0xd + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022483BC: + add r0, r4, #0 + bl MOD18_02247EA0 + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r6, r0, #0 + bl FUN_0205F720 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_0205F730 + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x1f + bl FUN_0202A170 + add r0, r4, #0 + mov r1, #0x19 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022483F6: + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248400: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224848E + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0xf + bne _0224848E + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248420: + add r0, r4, #0 + mov r1, #0x88 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1c + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248432: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224848E + add r0, r4, #0 + bl MOD18_02247BB8 + add r0, r4, #0 + mov r1, #0x1d + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224844E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247C98 + b _022485F6 +_02248458: + bl MOD18_0223D638 + add r1, r4, #0 + add r1, #0x32 + ldrb r1, [r1] + bl MOD18_0224DE00 + add r0, r4, #0 + mov r1, #0x89 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1f + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248478: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224848E + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x20 + beq _02248490 +_0224848E: + b _022485F6 +_02248490: + add r0, r4, #0 + mov r1, #0x20 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224849A: + add r0, r4, #0 + add r0, #0x33 + ldrb r6, [r0] + cmp r6, #0x33 + bne _022484D8 + add r0, r4, #0 + mov r1, #0x8b + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x21 + add r0, #0x37 + strb r1, [r0] + b _022485F6 + nop +_022484C0: .word 0x021C48B8 +_022484C4: .word MOD18_0224804C +_022484C8: .word MOD18_02248034 +_022484CC: .word 0x022513F0 +_022484D0: .word 0x02250520 +_022484D4: .word 0x000003D9 +_022484D8: + bl MOD18_0223D638 + add r1, r6, #0 + bl MOD18_0224DE18 + add r0, r4, #0 + mov r1, #0x8a + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x22 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022484F4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x2a + bne _022485F6 + add r0, r4, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224851C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + add r0, r4, #0 + bl MOD18_02247D1C + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248538: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247DD8 + b _022485F6 +_02248542: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x21 + bl FUN_0202A170 + add r0, r4, #0 + mov r1, #0x8e + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x25 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224856E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + ldr r0, _02248658 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _022485F6 + add r0, r4, #0 + mov r1, #0x26 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224858E: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x25 + bne _022485F6 + add r0, r4, #0 + mov r1, #0x64 + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #0x27 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022485AA: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x64 + bne _022485F6 + add r0, r4, #0 + mov r1, #0x96 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x28 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022485C6: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + add r0, r4, #0 + mov r1, #0x65 + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #0x29 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022485E4: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x65 + bne _022485F6 + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] +_022485F6: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #8 + bne _02248652 + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #4 + beq _02248652 + cmp r0, #7 + beq _02248652 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _0224861E + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x24] +_0224861E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0224863C + mov r1, #1 + mvn r1, r1 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 + bl MOD18_0223D678 + bl MOD18_0224DD94 + mov r0, #0 + str r0, [r4, #4] +_0224863C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247FC0 + add r0, r4, #0 + mov r1, #8 + add r0, #0x37 + strb r1, [r0] + mov r0, #0 + add r4, #0x38 + strb r0, [r4] +_02248652: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02248658: .word 0x021C48B8 + thumb_func_end MOD18_02248054 + + thumb_func_start MOD18_0224865C +MOD18_0224865C: ; 0x0224865C + push {r4, lr} + add r4, r0, #0 + mov r1, #0xf + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479D0 + mov r0, #7 + add r4, #0x37 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224865C + + thumb_func_start MOD18_02248678 +MOD18_02248678: ; 0x02248678 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022486B6 + cmp r0, #0 + bne _022486A2 + add r0, r4, #0 + mov r1, #9 + bl MOD18_022479BC + ldrh r0, [r4, #0x2c] + bl MOD18_0224D698 + mov r1, #0xa + b _022486AC +_022486A2: + add r0, r4, #0 + mov r1, #6 + bl MOD18_022479BC + mov r1, #8 +_022486AC: + add r0, r4, #0 + add r0, #0x34 + strb r1, [r0] + mov r0, #0 + str r0, [r4, #0x20] +_022486B6: + pop {r4, pc} + thumb_func_end MOD18_02248678 + + thumb_func_start MOD18_022486B8 +MOD18_022486B8: ; 0x022486B8 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224873A + cmp r0, #0 + bne _0224871E + add r0, r4, #0 + add r0, #0x26 + ldrb r0, [r0] + bl MOD18_022494B4 + cmp r0, #0 + beq _02248704 + ldr r0, [r4, #4] + bl FUN_020377AC + bl FUN_02026CB4 + bl FUN_02026B90 + ldr r0, _0224873C ; =0x000005E3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x16 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x13 + add r0, #0x34 + strb r1, [r0] + b _02248736 +_02248704: + add r0, r4, #0 + mov r1, #0x17 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x15 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x15 + add r0, #0x34 + strb r1, [r0] + b _02248736 +_0224871E: + add r0, r4, #0 + mov r1, #0x18 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x1d + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x15 + add r0, #0x34 + strb r1, [r0] +_02248736: + mov r0, #0 + str r0, [r4, #0x20] +_0224873A: + pop {r4, pc} + .align 2, 0 +_0224873C: .word 0x000005E3 + thumb_func_end MOD18_022486B8 + + thumb_func_start MOD18_02248740 +MOD18_02248740: ; 0x02248740 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02248756 + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x20] +_02248756: + ldr r1, [r4, #0x28] + cmp r1, #0 + beq _02248760 + mov r0, #0 + blx r1 +_02248760: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248784 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_0204F7FC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _02248780 ; =0x022513F0 + mov r1, #0 + str r1, [r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02248780: .word 0x022513F0 + thumb_func_end MOD18_02248740 + + thumb_func_start MOD18_02248784 +MOD18_02248784: ; 0x02248784 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _022487BC + add r0, r4, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200CCF8 + mov r1, #0 + ldr r0, [r4, #0x1c] + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + ldr r0, [r4, #0x18] + bl FUN_02012870 + mov r0, #0 + str r0, [r4, #0x18] +_022487BC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02248784 + + thumb_func_start MOD18_022487C0 +MOD18_022487C0: ; 0x022487C0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl MOD18_0223D638 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r6, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_022487C0 + + thumb_func_start MOD18_022487EC +MOD18_022487EC: ; 0x022487EC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD18_0223D638 + add r4, r0, #0 + ldrh r0, [r5, #0x2c] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + add r5, #0x26 + ldrb r1, [r5] + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x1f + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_022487EC + + thumb_func_start MOD18_02248820 +MOD18_02248820: ; 0x02248820 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #5 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x18] + mov r3, #1 + add r1, r5, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _022488E0 ; =0x0000028D + add r1, #8 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _022488E4 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _022488E8 ; =0x0000023D + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + mov r4, #0 +_02248870: + add r2, r5, #0 + add r2, #0x2e + ldrb r2, [r2] + ldr r0, [r5, #0x18] + add r1, r6, #0 + lsl r2, r2, #2 + add r2, r4, r2 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #4 + blt _02248870 + ldr r0, [r5, #0x18] + add r1, r6, #0 + mov r2, #0x30 + mov r3, #0x33 + bl FUN_02012880 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r4, _022488EC ; =0x02250528 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x18] + mov r1, #5 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x20] + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + mov r1, #0 + add r0, r2, #0 + strh r1, [r5, #0x36] + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x1c] + add r5, #8 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022488E0: .word 0x0000028D +_022488E4: .word 0x000003D9 +_022488E8: .word 0x0000023D +_022488EC: .word 0x02250528 + thumb_func_end MOD18_02248820 + + thumb_func_start MOD18_022488F0 +MOD18_022488F0: ; 0x022488F0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5, #0x1c] + bl FUN_02001204 + add r4, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x1c] + add r1, #0x36 + ldrh r6, [r5, #0x36] + bl FUN_0200143C + ldrh r0, [r5, #0x36] + cmp r6, r0 + beq _02248916 + ldr r0, _022489C0 ; =0x000005DC + bl FUN_020054C8 +_02248916: + bl FUN_020311F0 + cmp r0, #0 + beq _02248922 + mov r4, #1 + mvn r4, r4 +_02248922: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02248934 + add r0, r0, #1 + cmp r4, r0 + bne _02248936 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02248934: + mov r4, #0x33 +_02248936: + ldr r0, _022489C0 ; =0x000005DC + bl FUN_020054C8 + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_02248784 + cmp r4, #0x33 + beq _02248978 + add r0, r5, #0 + add r0, #0x2e + ldrb r0, [r0] + lsl r0, r0, #2 + add r1, r4, r0 + add r0, r5, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x1a + add r0, #0x34 + strb r1, [r0] + bl MOD18_0223D638 + add r1, r5, #0 + add r1, #0x2f + ldrb r1, [r1] + bl MOD18_0224DE18 + add r0, r5, #0 + mov r1, #0x92 + bl MOD18_02247A0C + b _02248998 +_02248978: + add r0, r5, #0 + mov r1, #0x33 + add r0, #0x2f + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x10 + add r0, #0x34 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0x35 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x91 + bl MOD18_02247A0C +_02248998: + add r0, r5, #0 + add r0, #0x2f + ldrb r1, [r0] + add r0, sp, #0 + strb r1, [r0] + ldrh r1, [r5, #0x2c] + strb r1, [r0, #1] + mov r1, #1 + strb r1, [r0, #2] + mov r0, #0x4f + add r1, sp, #0 + bl FUN_020311D0 + add r0, r5, #0 + mov r1, #0x20 + bl MOD18_022479BC + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_022489C0: .word 0x000005DC + thumb_func_end MOD18_022488F0 + + thumb_func_start MOD18_022489C4 +MOD18_022489C4: ; 0x022489C4 + mov r1, #0xc + add r0, #0x34 + strb r1, [r0] + bx lr + thumb_func_end MOD18_022489C4 + + thumb_func_start MOD18_022489CC +MOD18_022489CC: ; 0x022489CC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x2c] + bl FUN_02030E7C + cmp r0, #0 + bne _022489EA + bl MOD18_0224D344 + add r0, r4, #0 + mov r1, #4 + add r0, #0x34 + strb r1, [r0] +_022489EA: + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #0x20 + bls _022489F6 + b _02248DB6 +_022489F6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02248A02: ; jump table + .short _02248DB6 - _02248A02 - 2 ; case 0 + .short _02248DB6 - _02248A02 - 2 ; case 1 + .short _02248A56 - _02248A02 - 2 ; case 2 + .short _02248DB6 - _02248A02 - 2 ; case 3 + .short _02248A44 - _02248A02 - 2 ; case 4 + .short _02248A9C - _02248A02 - 2 ; case 5 + .short _02248AAE - _02248A02 - 2 ; case 6 + .short _02248AD8 - _02248A02 - 2 ; case 7 + .short _02248AE2 - _02248A02 - 2 ; case 8 + .short _02248AF4 - _02248A02 - 2 ; case 9 + .short _02248B14 - _02248A02 - 2 ; case 10 + .short _02248DB6 - _02248A02 - 2 ; case 11 + .short _02248B46 - _02248A02 - 2 ; case 12 + .short _02248B5E - _02248A02 - 2 ; case 13 + .short _02248B7C - _02248A02 - 2 ; case 14 + .short _02248B92 - _02248A02 - 2 ; case 15 + .short _02248BA4 - _02248A02 - 2 ; case 16 + .short _02248BC2 - _02248A02 - 2 ; case 17 + .short _02248BEC - _02248A02 - 2 ; case 18 + .short _02248BF6 - _02248A02 - 2 ; case 19 + .short _02248C06 - _02248A02 - 2 ; case 20 + .short _02248C10 - _02248A02 - 2 ; case 21 + .short _02248C38 - _02248A02 - 2 ; case 22 + .short _02248C50 - _02248A02 - 2 ; case 23 + .short _02248C82 - _02248A02 - 2 ; case 24 + .short _02248CA0 - _02248A02 - 2 ; case 25 + .short _02248CAA - _02248A02 - 2 ; case 26 + .short _02248CD2 - _02248A02 - 2 ; case 27 + .short _02248D1C - _02248A02 - 2 ; case 28 + .short _02248D3A - _02248A02 - 2 ; case 29 + .short _02248D50 - _02248A02 - 2 ; case 30 + .short _02248D74 - _02248A02 - 2 ; case 31 + .short _02248D9C - _02248A02 - 2 ; case 32 +_02248A44: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248740 + b _02248DB6 +_02248A56: + add r0, r4, #0 + mov r1, #0xc + add r0, #0x2e + strb r1, [r0] + ldr r0, _02248D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _02248A7A + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #8 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248A7A: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #5 + bne _02248A8E + add r0, r4, #0 + mov r1, #5 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248A8E: + cmp r0, #0x16 + bne _02248B86 + add r0, r4, #0 + mov r1, #0x16 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248A9C: + add r0, r4, #0 + mov r1, #0x18 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #6 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248AAE: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248B86 + add r0, r4, #0 + mov r1, #7 + add r0, #0x34 + strb r1, [r0] + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _02248D90 ; =0x02250520 + ldr r0, [r0, #8] + ldr r2, _02248D94 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x20] + b _02248DB6 +_02248AD8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248678 + b _02248DB6 +_02248AE2: + add r0, r4, #0 + mov r1, #0xf + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #9 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248AF4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248B86 + ldr r0, _02248D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02248B86 + add r0, r4, #0 + mov r1, #4 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B14: + bl MOD18_0224D774 + cmp r0, #0 + beq _02248B86 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldrh r0, [r4, #0x2c] + bl FUN_0202DFA4 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r2, _02248D98 ; =MOD18_022489C4 + ldr r0, [r0, #8] + add r3, r4, #0 + bl MOD18_0224D5CC + add r0, r4, #0 + mov r1, #0xb + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B46: + bl MOD18_0224D784 + ldrh r1, [r4, #0x2c] + add r0, r4, #0 + mov r2, #0x1a + bl MOD18_022487C0 + add r0, r4, #0 + mov r1, #0xd + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B5E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248B86 + add r0, r4, #0 + mov r1, #0xd + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0xe + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B7C: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0xe + beq _02248B88 +_02248B86: + b _02248DB6 +_02248B88: + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B92: + add r0, r4, #0 + mov r1, #0x1b + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #2 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248BA4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x2a + bl MOD18_022479BC + b _02248DB6 +_02248BC2: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + add r0, r4, #0 + mov r1, #0x12 + add r0, #0x34 + strb r1, [r0] + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _02248D90 ; =0x02250520 + ldr r0, [r0, #8] + ldr r2, _02248D94 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x20] + b _02248DB6 +_02248BEC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_022486B8 + b _02248DB6 +_02248BF6: + add r0, r4, #0 + bl MOD18_022487EC + add r0, r4, #0 + mov r1, #0x14 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C06: + add r0, r4, #0 + mov r1, #0x15 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C10: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + ldr r0, _02248D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02248C8E + add r0, r4, #0 + mov r1, #0xf + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C38: + add r0, r4, #0 + mov r1, #0x8f + bl MOD18_02247A0C + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C50: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + add r0, r4, #0 + add r0, #0x2e + ldrb r6, [r0] + cmp r6, #0xc + beq _02248C8E + bl MOD18_0223D638 + add r1, r6, #0 + bl MOD18_0224DE00 + add r0, r4, #0 + mov r1, #0x90 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x18 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C82: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02248C90 +_02248C8E: + b _02248DB6 +_02248C90: + add r0, r4, #0 + bl MOD18_02248820 + add r0, r4, #0 + mov r1, #0x19 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248CA0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_022488F0 + b _02248DB6 +_02248CAA: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x1b + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x25 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x1b + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248CD2: + bl MOD18_0223D638 + add r1, r4, #0 + add r1, #0x30 + ldrb r1, [r1] + bl MOD18_0224DE18 + bl MOD18_0223D638 + add r2, r4, #0 + add r2, #0x2f + ldrb r2, [r2] + mov r1, #6 + bl MOD18_0224DE30 + add r0, r4, #0 + add r0, #0x2f + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x30 + ldrb r0, [r0] + cmp r1, r0 + bne _02248D0A + add r0, r4, #0 + mov r1, #0x94 + bl MOD18_02247A0C + b _02248D12 +_02248D0A: + add r0, r4, #0 + mov r1, #0x93 + bl MOD18_02247A0C +_02248D12: + add r0, r4, #0 + mov r1, #0x1c + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D1C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x95 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x1d + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D3A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x1e + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D50: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x64 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x64 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x96 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x1f + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D74: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x20 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 + nop +_02248D8C: .word 0x021C48B8 +_02248D90: .word 0x02250520 +_02248D94: .word 0x000003D9 +_02248D98: .word MOD18_022489C4 +_02248D9C: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x65 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x65 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] +_02248DB6: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #8 + bne _02248DF4 + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #4 + beq _02248DF4 + cmp r0, #9 + beq _02248DF4 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02248DDE + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x20] +_02248DDE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248784 + add r0, r4, #0 + mov r1, #8 + add r0, #0x34 + strb r1, [r0] + mov r0, #0 + add r4, #0x35 + strb r0, [r4] +_02248DF4: + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD18_022489CC + + thumb_func_start MOD18_02248DF8 +MOD18_02248DF8: ; 0x02248DF8 + push {r4, r5, r6, lr} + ldr r0, _02248E60 ; =0x022513F0 + add r5, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + cmp r0, #0 + beq _02248E0C + bl ErrorHandling + pop {r4, r5, r6, pc} +_02248E0C: + mov r0, #0x21 + mov r1, #0x38 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x38 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02248E60 ; =0x022513F0 + mov r1, #2 + str r4, [r0] + str r6, [r4, #4] + add r0, r4, #0 + strh r5, [r4, #0x2c] + add r0, #0x34 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x35 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0xc + add r0, #0x2e + strb r1, [r0] + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x16 + add r3, r2, #0 + bl MOD18_0224DCB8 + bl FUN_0204FB14 + ldr r0, _02248E64 ; =MOD18_022489CC + ldr r2, _02248E68 ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r4, r5, r6, pc} + nop +_02248E60: .word 0x022513F0 +_02248E64: .word MOD18_022489CC +_02248E68: .word 0x00002710 + thumb_func_end MOD18_02248DF8 + + thumb_func_start MOD18_02248E6C +MOD18_02248E6C: ; 0x02248E6C + ldr r3, _02248E74 ; =0x02030C4D + mov r0, #0x4b + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248E74: .word 0x02030C4D + thumb_func_end MOD18_02248E6C + + thumb_func_start MOD18_02248E78 +MOD18_02248E78: ; 0x02248E78 + ldr r3, _02248E80 ; =0x02030C4D + mov r0, #0x4c + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248E80: .word 0x02030C4D + thumb_func_end MOD18_02248E78 + + thumb_func_start MOD18_02248E84 +MOD18_02248E84: ; 0x02248E84 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02248EAE + ldr r0, _02248EB0 ; =0x022513F0 + ldr r0, [r0] + cmp r0, #0 + beq _02248EAE + cmp r5, #2 + beq _02248EA4 + bl ErrorHandling +_02248EA4: + ldr r0, _02248EB0 ; =0x022513F0 + ldrb r1, [r4, #1] + ldr r0, [r0] + add r0, #0x35 + strb r1, [r0] +_02248EAE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248EB0: .word 0x022513F0 + thumb_func_end MOD18_02248E84 + + thumb_func_start MOD18_02248EB4 +MOD18_02248EB4: ; 0x02248EB4 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02248EEA + ldr r0, _02248EEC ; =0x022513F0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _02248EEA + cmp r5, #2 + beq _02248ED4 + bl ErrorHandling +_02248ED4: + ldr r0, _02248EEC ; =0x022513F0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _02248EE0 + bl ErrorHandling +_02248EE0: + ldr r0, _02248EEC ; =0x022513F0 + ldrb r1, [r4, #1] + ldr r0, [r0, #4] + add r0, #0x38 + strb r1, [r0] +_02248EEA: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248EEC: .word 0x022513F0 + thumb_func_end MOD18_02248EB4 + + thumb_func_start MOD18_02248EF0 +MOD18_02248EF0: ; 0x02248EF0 + mov r0, #2 + bx lr + thumb_func_end MOD18_02248EF0 + + thumb_func_start MOD18_02248EF4 +MOD18_02248EF4: ; 0x02248EF4 + ldr r3, _02248EFC ; =0x02030C4D + mov r0, #0x4e + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248EFC: .word 0x02030C4D + thumb_func_end MOD18_02248EF4 + + thumb_func_start MOD18_02248F00 +MOD18_02248F00: ; 0x02248F00 + push {r3, r4, r5, lr} + ldr r0, _02248F70 ; =0x022513F0 + add r5, r2, #0 + ldr r4, [r0] + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _02248F6E + ldr r0, _02248F70 ; =0x022513F0 + ldr r0, [r0] + cmp r0, #0 + bne _02248F1E + bl ErrorHandling +_02248F1E: + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #2 + beq _02248F38 + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479BC + mov r0, #8 + add r4, #0x34 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02248F38: + ldrb r1, [r5] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r4, #0 + ldrb r1, [r5, #1] + add r0, #0x25 + strb r1, [r0] + add r0, r4, #0 + ldrb r1, [r5, #2] + add r0, #0x26 + add r4, #0x34 + strb r1, [r0] + mov r0, #0x11 + strb r0, [r4] + bl MOD18_0223D638 + ldrb r1, [r5, #2] + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x1c + add r3, r2, #0 + bl MOD18_0224DCB8 +_02248F6E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248F70: .word 0x022513F0 + thumb_func_end MOD18_02248F00 + + thumb_func_start MOD18_02248F74 +MOD18_02248F74: ; 0x02248F74 + mov r0, #3 + bx lr + thumb_func_end MOD18_02248F74 + + thumb_func_start MOD18_02248F78 +MOD18_02248F78: ; 0x02248F78 + ldr r3, _02248F80 ; =0x02030C4D + mov r0, #0x50 + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248F80: .word 0x02030C4D + thumb_func_end MOD18_02248F78 + + thumb_func_start MOD18_02248F84 +MOD18_02248F84: ; 0x02248F84 + push {r4, r5, r6, lr} + ldr r0, _02248FC0 ; =0x022513F0 + add r5, r2, #0 + ldr r4, [r0] + ldr r6, [r0, #4] + bl FUN_02031190 + ldrb r1, [r5, #1] + cmp r1, r0 + bne _02248FBE + ldrb r0, [r5, #2] + cmp r0, #0 + beq _02248FA8 + cmp r0, #1 + beq _02248FB0 + cmp r0, #2 + beq _02248FB8 + pop {r4, r5, r6, pc} +_02248FA8: + ldrb r0, [r5] + add r4, #0x2e + strb r0, [r4] + pop {r4, r5, r6, pc} +_02248FB0: + ldrb r0, [r5] + add r6, #0x33 + strb r0, [r6] + pop {r4, r5, r6, pc} +_02248FB8: + ldrb r0, [r5] + add r4, #0x30 + strb r0, [r4] +_02248FBE: + pop {r4, r5, r6, pc} + .align 2, 0 +_02248FC0: .word 0x022513F0 + thumb_func_end MOD18_02248F84 + + thumb_func_start MOD18_02248FC4 +MOD18_02248FC4: ; 0x02248FC4 + mov r0, #3 + bx lr + thumb_func_end MOD18_02248FC4 + + thumb_func_start MOD18_02248FC8 +MOD18_02248FC8: ; 0x02248FC8 + push {r3, lr} + ldr r0, _02248FE8 ; =0x022513F0 + ldr r1, [r0, #4] + cmp r1, #0 + beq _02248FD8 + ldr r0, [r1] + bl MOD18_02247B60 +_02248FD8: + ldr r0, _02248FE8 ; =0x022513F0 + ldr r1, [r0] + cmp r1, #0 + beq _02248FE6 + ldr r0, [r1] + bl MOD18_02248740 +_02248FE6: + pop {r3, pc} + .align 2, 0 +_02248FE8: .word 0x022513F0 + thumb_func_end MOD18_02248FC8 + + thumb_func_start MOD18_02248FEC +MOD18_02248FEC: ; 0x02248FEC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x20] + add r1, #0x3a + ldrh r4, [r5, #0x3a] + bl FUN_0200143C + ldrh r0, [r5, #0x3a] + cmp r4, r0 + beq _02249008 + ldr r0, _0224900C ; =0x000005DC + bl FUN_020054C8 +_02249008: + pop {r3, r4, r5, pc} + nop +_0224900C: .word 0x000005DC + thumb_func_end MOD18_02248FEC + + thumb_func_start MOD18_02249010 +MOD18_02249010: ; 0x02249010 + push {r4, r5, r6, r7, lr} + sub sp, #0xb4 + ldr r4, _022491BC ; =0x02250580 + add r3, sp, #0x9c + str r2, [sp, #0x14] + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #0xc] + add r1, r2, #0 + add r0, #0x74 + mov r2, #8 + mov r3, #0xb + bl FUN_021D959C + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x74 + mov r2, #9 + mov r3, #0 + bl FUN_021D967C + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x74 + mov r2, #1 + mov r3, #0 + bl FUN_021D96F4 + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r2, #0 + add r0, #0x74 + mov r1, #0x42 + add r3, r2, #0 + bl FUN_021D9708 + mov r0, #1 + str r0, [sp] + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x74 + mov r2, #2 + mov r3, #0 + bl FUN_021D971C + ldr r0, [sp, #0xc] + ldr r1, _022491C0 ; =0x022505F0 + add r0, #0x74 + bl FUN_021D9820 + mov r2, #0x76 + ldr r1, [sp, #0xc] + lsl r2, r2, #2 + str r0, [r1, r2] + add r0, r1, #0 + ldr r0, [r0, r2] + add r2, #0x60 + ldrh r1, [r1, r2] + ldr r0, [r0] + bl MOD18_02249240 + ldr r0, _022491C4 ; =0x000038C1 + mov r1, #0x42 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r2, #8 + add r0, #0x74 + mov r3, #0 + bl FUN_021D96F4 + ldr r0, _022491C4 ; =0x000038C1 + mov r1, #0x42 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r2, #7 + add r0, #0x74 + mov r3, #0 + bl FUN_021D9708 + mov r0, #1 + str r0, [sp] + ldr r0, _022491C4 ; =0x000038C1 + mov r1, #0x42 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r2, #0xa + add r0, #0x74 + mov r3, #0 + bl FUN_021D971C + ldr r0, [sp, #0x14] + mov r4, #0 + cmp r0, #0 + bls _02249184 + ldr r5, [sp, #0xc] + ldr r3, _022491C8 ; =0x02250624 + add r7, r4, #0 + add r2, sp, #0x28 + mov r6, #6 +_02249102: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r6, r6, #1 + bne _02249102 + ldr r0, [r3] + ldr r3, _022491CC ; =0x02250574 + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0xc] + str r0, [sp, #0x18] + add r0, #0x74 + str r0, [sp, #0x18] +_02249122: + add r6, sp, #0x28 + add r3, sp, #0x68 + mov r2, #6 +_02249128: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249128 + ldr r0, [r6] + add r1, sp, #0x68 + str r0, [r3] + mov r0, #2 + ldrsh r0, [r1, r0] + add r1, r0, r7 + add r0, sp, #0x68 + strh r1, [r0, #2] + ldr r0, [sp, #0x10] + ldrb r1, [r0, r4] + lsl r0, r1, #1 + add r1, r1, r0 + add r0, sp, #0x68 + strh r1, [r0, #6] + ldr r0, [sp, #0x18] + add r1, sp, #0x68 + bl FUN_021D9820 + mov r1, #0x77 + lsl r1, r1, #2 + add r2, sp, #0x5c + add r3, sp, #0x1c + str r0, [r5, r1] + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r6, #0 + str r0, [r2] + mov r0, #0x77 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #1 + ldr r0, [r0] + bl FUN_02020074 + ldr r0, [sp, #0x14] + add r4, r4, #1 + add r7, #0x18 + add r5, r5, #4 + cmp r4, r0 + blo _02249122 +_02249184: + mov r1, #0x8e + ldr r0, [sp, #0xc] + lsl r1, r1, #2 + ldrh r0, [r0, r1] + sub r1, #0x60 + add r0, r0, #1 + lsl r2, r0, #2 + ldr r0, [sp, #0xc] + add r0, r0, r2 + ldr r0, [r0, r1] + mov r1, #2 + ldr r0, [r0] + mov r2, #1 + bl MOD18_02249270 + ldr r0, [sp, #0x14] + mov r1, #0x7e + add r2, r0, #1 + ldr r0, [sp, #0xc] + lsl r1, r1, #2 + str r2, [r0, r1] + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0xb4 + pop {r4, r5, r6, r7, pc} + nop +_022491BC: .word 0x02250580 +_022491C0: .word 0x022505F0 +_022491C4: .word 0x000038C1 +_022491C8: .word 0x02250624 +_022491CC: .word 0x02250574 + thumb_func_end MOD18_02249010 + + thumb_func_start MOD18_022491D0 +MOD18_022491D0: ; 0x022491D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r4, #0 + cmp r0, #0 + bls _022491FE + mov r7, #0x76 + lsl r7, r7, #2 + add r6, r7, #0 + add r6, #0x20 +_022491E8: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r7] + bl FUN_0200C3DC + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _022491E8 +_022491FE: + add r5, #0x74 + add r0, r5, #0 + bl FUN_021D99F8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_022491D0 + + thumb_func_start MOD18_02249208 +MOD18_02249208: ; 0x02249208 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r4, #0 + cmp r0, #0 + bls _0224923C + mov r7, #0x76 + lsl r7, r7, #2 + add r6, r7, #0 + add r6, #0x20 +_02249220: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r7] + mov r1, #1 + ldr r0, [r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _02249220 +_0224923C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02249208 + + thumb_func_start MOD18_02249240 +MOD18_02249240: ; 0x02249240 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + mov r0, #0x18 + mul r0, r4 + add r0, #0x14 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r5, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD18_02249240 + + thumb_func_start MOD18_02249270 +MOD18_02249270: ; 0x02249270 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl FUN_020201DC + mov r1, #3 + bl _u32_div_f + add r2, r0, #0 + lsl r1, r2, #1 + add r1, r2, r1 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_02020130 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0202027C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_02249270 + + thumb_func_start MOD18_0224929C +MOD18_0224929C: ; 0x0224929C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #1 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x76 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + add r4, r2, #0 + ldr r0, [r0] + add r2, r1, #0 + bl MOD18_02249270 + add r0, r4, #1 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x76 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + ldr r0, [r0] + add r2, r1, #0 + bl MOD18_02249270 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224929C + + thumb_func_start MOD18_022492D0 +MOD18_022492D0: ; 0x022492D0 + push {r4, lr} + add r4, r0, #0 + bl FUN_020201DC + mov r1, #3 + bl _u32_div_f + cmp r1, #1 + bne _022492F6 + add r0, r4, #0 + bl FUN_02020388 + cmp r0, #0 + bne _022492F6 + add r0, r4, #0 + mov r1, #2 + mov r2, #1 + bl MOD18_02249270 +_022492F6: + pop {r4, pc} + thumb_func_end MOD18_022492D0 + + thumb_func_start MOD18_022492F8 +MOD18_022492F8: ; 0x022492F8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xf + mov r1, #8 + bl FUN_02016998 + ldr r1, _02249324 ; =0x022513F8 + mov r2, #8 + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _02249324 ; =0x022513F8 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #4] + ldr r1, [r0] + strb r2, [r1, #5] + ldr r0, [r0] + str r4, [r0] + pop {r4, pc} + nop +_02249324: .word 0x022513F8 + thumb_func_end MOD18_022492F8 + + thumb_func_start MOD18_02249328 +MOD18_02249328: ; 0x02249328 + ldr r0, _02249330 ; =0x022513F8 + ldr r3, _02249334 ; =0x02016A19 + ldr r0, [r0] + bx r3 + .align 2, 0 +_02249330: .word 0x022513F8 +_02249334: .word 0x02016A19 + thumb_func_end MOD18_02249328 + + thumb_func_start MOD18_02249338 +MOD18_02249338: ; 0x02249338 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_0202623C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02249338 + + thumb_func_start MOD18_0224934C +MOD18_0224934C: ; 0x0224934C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02025DB0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224934C + + thumb_func_start MOD18_02249360 +MOD18_02249360: ; 0x02249360 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02025DC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249360 + + thumb_func_start MOD18_02249378 +MOD18_02249378: ; 0x02249378 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02025F80 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02249378 + + thumb_func_start MOD18_0224938C +MOD18_0224938C: ; 0x0224938C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02025F98 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224938C + + thumb_func_start MOD18_022493A4 +MOD18_022493A4: ; 0x022493A4 + push {r3, lr} + ldr r1, _022493C4 ; =0x022513F8 + ldr r1, [r1] + ldrb r1, [r1, #5] + cmp r1, r0 + beq _022493B4 + bl ErrorHandling +_022493B4: + ldr r0, _022493C4 ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02025FA4 + pop {r3, pc} + nop +_022493C4: .word 0x022513F8 + thumb_func_end MOD18_022493A4 + + thumb_func_start MOD18_022493C8 +MOD18_022493C8: ; 0x022493C8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02026050 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_022493C8 + + thumb_func_start MOD18_022493DC +MOD18_022493DC: ; 0x022493DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026258 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_022493DC + + thumb_func_start MOD18_022493F4 +MOD18_022493F4: ; 0x022493F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026068 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_022493F4 + + thumb_func_start MOD18_0224940C +MOD18_0224940C: ; 0x0224940C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026074 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224940C + + thumb_func_start MOD18_02249424 +MOD18_02249424: ; 0x02249424 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_0202616C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02249424 + + thumb_func_start MOD18_02249438 +MOD18_02249438: ; 0x02249438 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026188 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249438 + + thumb_func_start MOD18_02249450 +MOD18_02249450: ; 0x02249450 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0xb + blt _0224945E + bl ErrorHandling +_0224945E: + cmp r5, #6 + blt _02249464 + sub r5, r5, #5 +_02249464: + cmp r4, #0x63 + ble _0224946A + mov r4, #0x63 +_0224946A: + ldr r0, _0224947C ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_020260C4 + pop {r3, r4, r5, pc} + nop +_0224947C: .word 0x022513F8 + thumb_func_end MOD18_02249450 + + thumb_func_start MOD18_02249480 +MOD18_02249480: ; 0x02249480 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x3c + blt _0224948C + bl ErrorHandling +_0224948C: + ldr r0, _0224949C ; =0x022513F8 + add r1, r4, #0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020261C8 + pop {r4, pc} + nop +_0224949C: .word 0x022513F8 + thumb_func_end MOD18_02249480 + + thumb_func_start MOD18_022494A0 +MOD18_022494A0: ; 0x022494A0 + add r1, r0, #0 + ldr r0, _022494AC ; =0x022513F8 + ldr r3, _022494B0 ; =0x02026299 + ldr r0, [r0] + ldr r0, [r0] + bx r3 + .align 2, 0 +_022494AC: .word 0x022513F8 +_022494B0: .word 0x02026299 + thumb_func_end MOD18_022494A0 + + thumb_func_start MOD18_022494B4 +MOD18_022494B4: ; 0x022494B4 + add r1, r0, #0 + ldr r0, _022494C0 ; =0x022513F8 + ldr r3, _022494C4 ; =0x02025FD9 + ldr r0, [r0] + ldr r0, [r0] + bx r3 + .align 2, 0 +_022494C0: .word 0x022513F8 +_022494C4: .word 0x02025FD9 + thumb_func_end MOD18_022494B4 + + thumb_func_start MOD18_022494C8 +MOD18_022494C8: ; 0x022494C8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _02249534 ; =0x000005FD + add r6, r1, #0 + bl FUN_020054C8 + mov r0, #2 + bl MOD18_0223E56C + mov r1, #0x25 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x7f + str r6, [r4, #0xc] + lsl r0, r0, #2 + str r5, [r4, r0] + mov r1, #0 + add r0, #0x4a + strb r1, [r4, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + ldr r0, _02249538 ; =MOD18_02249684 + ldr r2, _0224953C ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _02249540 ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, r5, r6, pc} + nop +_02249534: .word 0x000005FD +_02249538: .word MOD18_02249684 +_0224953C: .word 0x00002710 +_02249540: .word MOD18_0224AFE8 + thumb_func_end MOD18_022494C8 + + thumb_func_start MOD18_02249544 +MOD18_02249544: ; 0x02249544 + mov r1, #0 + strb r1, [r0] + mov r1, #1 + strb r1, [r0, #1] + mov r1, #2 + strb r1, [r0, #2] + mov r1, #3 + strb r1, [r0, #3] + mov r1, #4 + strb r1, [r0, #4] + mov r1, #5 + strb r1, [r0, #5] + mov r1, #6 + strb r1, [r0, #6] + mov r0, #7 + bx lr + thumb_func_end MOD18_02249544 + + thumb_func_start MOD18_02249564 +MOD18_02249564: ; 0x02249564 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, sp, #0x18 + bl MOD18_02249544 + mov r0, #7 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r0, #1 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0x15 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02249674 ; =0x000002E7 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + add r1, #0x10 + ldr r0, [r0, #8] + mov r2, #3 + mov r3, #0x14 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02249678 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r4, _0224967C ; =0x022505B8 + str r0, [sp, #0x14] + mov r6, #0 +_022495BA: + cmp r6, #4 + bne _022495E2 + ldr r0, [r5, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + mov r1, #4 + bl FUN_020239A0 + add r7, r0, #0 + ldr r0, [r5, #0x40] + ldr r2, [r4, #4] + add r1, r7, #0 + bl FUN_020128A0 + add r0, r7, #0 + bl FUN_02021A20 + b _022495EE +_022495E2: + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x14] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 +_022495EE: + add r6, r6, #1 + add r4, #8 + cmp r6, #7 + blo _022495BA + ldr r0, [r5, #0xc] + mov r3, #0x8e + add r0, #0x8c + ldr r0, [r0] + lsl r3, r3, #2 + strh r0, [r5, r3] + ldr r0, [r5, #0x40] + mov r1, #1 + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x24] + add r0, sp, #0x18 + strb r1, [r0, #0x10] + strb r1, [r0, #0x11] + mov r1, #7 + strb r1, [r0, #0x12] + ldrb r2, [r0, #0x13] + mov r1, #0xf + bic r2, r1 + mov r1, #8 + orr r1, r2 + strb r1, [r0, #0x13] + ldrb r2, [r0, #0x13] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x10 + orr r1, r2 + strb r1, [r0, #0x13] + ldrb r2, [r0, #0x13] + mov r1, #0xc0 + bic r2, r1 + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, #0x13] + mov r0, #0xb + str r0, [sp] + ldr r0, _02249680 ; =0x00000402 + mov r1, #0x1c + str r0, [sp, #4] + ldrh r3, [r5, r3] + add r0, sp, #0x20 + mov r2, #4 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02001B8C + str r0, [r5, #0x54] + mov r0, #0 + str r0, [r5, #0x48] + add r0, r5, #0 + add r0, #0x10 + bl FUN_02019220 + add r0, r5, #0 + add r1, sp, #0x18 + mov r2, #7 + bl MOD18_02249010 + bl FUN_0204F7E4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02249674: .word 0x000002E7 +_02249678: .word 0x000003D9 +_0224967C: .word 0x022505B8 +_02249680: .word 0x00000402 + thumb_func_end MOD18_02249564 + + thumb_func_start MOD18_02249684 +MOD18_02249684: ; 0x02249684 + push {r3, r4, r5, lr} + ldr r2, _022497BC ; =0x00000246 + add r4, r1, #0 + ldrb r2, [r4, r2] + add r5, r0, #0 + cmp r2, #0x13 + bls _02249694 + b _022497BA +_02249694: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_022496A0: ; jump table + .short _022496C8 - _022496A0 - 2 ; case 0 + .short _022496D8 - _022496A0 - 2 ; case 1 + .short _022496DE - _022496A0 - 2 ; case 2 + .short _022496F4 - _022496A0 - 2 ; case 3 + .short _022497BA - _022496A0 - 2 ; case 4 + .short _0224970A - _022496A0 - 2 ; case 5 + .short _02249710 - _022496A0 - 2 ; case 6 + .short _02249716 - _022496A0 - 2 ; case 7 + .short _0224971C - _022496A0 - 2 ; case 8 + .short _02249722 - _022496A0 - 2 ; case 9 + .short _022497BA - _022496A0 - 2 ; case 10 + .short _02249728 - _022496A0 - 2 ; case 11 + .short _0224972E - _022496A0 - 2 ; case 12 + .short _02249734 - _022496A0 - 2 ; case 13 + .short _02249762 - _022496A0 - 2 ; case 14 + .short _02249788 - _022496A0 - 2 ; case 15 + .short _022497AA - _022496A0 - 2 ; case 16 + .short _022497B0 - _022496A0 - 2 ; case 17 + .short _022497A4 - _022496A0 - 2 ; case 18 + .short _022497B6 - _022496A0 - 2 ; case 19 +_022496C8: + add r0, r4, #0 + bl MOD18_02249564 + ldr r0, _022497BC ; =0x00000246 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_022496D8: + bl MOD18_022497C8 + pop {r3, r4, r5, pc} +_022496DE: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD18_0224A8AC + pop {r3, r4, r5, pc} +_022496F4: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_0224A8AC + pop {r3, r4, r5, pc} +_0224970A: + bl MOD18_02249CC8 + pop {r3, r4, r5, pc} +_02249710: + bl MOD18_0224A0EC + pop {r3, r4, r5, pc} +_02249716: + bl MOD18_0224A47C + pop {r3, r4, r5, pc} +_0224971C: + bl MOD18_0224AC24 + pop {r3, r4, r5, pc} +_02249722: + bl MOD18_0224AE68 + pop {r3, r4, r5, pc} +_02249728: + bl MOD18_0224A710 + pop {r3, r4, r5, pc} +_0224972E: + bl MOD18_0224A74C + pop {r3, r4, r5, pc} +_02249734: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022497BA + ldr r0, _022497C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _022497BA + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD18_0224A8AC + bl MOD18_0223E6A0 + pop {r3, r4, r5, pc} +_02249762: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022497BA + ldr r0, _022497C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _022497BA + ldr r1, [r4] + add r0, r4, #0 + blx r1 + ldr r0, _022497C4 ; =0x00000245 + ldrb r1, [r4, r0] + add r0, r0, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02249788: + add r0, r4, #0 + bl MOD18_022498EC + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_0224A8AC + bl MOD18_0223E6A0 + ldr r0, [r4, #0xc] + bl FUN_02049824 + pop {r3, r4, r5, pc} +_022497A4: + bl MOD18_02249DB8 + pop {r3, r4, r5, pc} +_022497AA: + bl MOD18_0224A1C0 + pop {r3, r4, r5, pc} +_022497B0: + bl MOD18_0224A550 + pop {r3, r4, r5, pc} +_022497B6: + bl MOD18_0224AD04 +_022497BA: + pop {r3, r4, r5, pc} + .align 2, 0 +_022497BC: .word 0x00000246 +_022497C0: .word 0x021C48B8 +_022497C4: .word 0x00000245 + thumb_func_end MOD18_02249684 + + thumb_func_start MOD18_022497C8 +MOD18_022497C8: ; 0x022497C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x54] + bl FUN_02001E5C + add r5, r0, #0 + mov r1, #0x5e + ldr r0, [r4, #0x54] + lsl r1, r1, #4 + bl FUN_02001D2C + mov r1, #0x8f + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, #0x54] + bl FUN_02001E5C + mov r2, #0x8e + lsl r2, r2, #2 + strh r0, [r4, r2] + ldrh r1, [r4, r2] + cmp r5, r1 + beq _0224981A + sub r2, #0x60 + ldr r0, [r4, r2] + ldr r0, [r0] + bl MOD18_02249240 + mov r2, #0x8e + lsl r2, r2, #2 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224929C + mov r0, #0x8e + lsl r0, r0, #2 + ldrh r1, [r4, r0] + ldr r0, [r4, #0xc] + add r0, #0x8c + str r1, [r0] +_0224981A: + mov r0, #0x8e + lsl r0, r0, #2 + ldrh r1, [r4, r0] + sub r0, #0x60 + add r1, r1, #1 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + ldr r0, [r0] + bl MOD18_022492D0 + bl FUN_020311F0 + cmp r0, #0 + beq _02249842 + mov r1, #1 + mov r0, #0x8f + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r4, r0] +_02249842: + mov r1, #0x8f + lsl r1, r1, #2 + mov r2, #1 + ldr r0, [r4, r1] + mvn r2, r2 + cmp r0, r2 + beq _02249866 + add r1, r2, #1 + cmp r0, r1 + bne _0224986E + add r0, r4, #0 + bl MOD18_02249208 + ldr r0, [r4, #0x74] + bl FUN_0201FDEC + mov r0, #0 + pop {r3, r4, r5, pc} +_02249866: + mov r0, #2 + add r1, #0xa + strb r0, [r4, r1] + b _022498D6 +_0224986E: + ldr r1, _022498DC ; =MOD18_02249B50 + cmp r0, r1 + beq _02249886 + ldr r1, _022498E0 ; =MOD18_02249F2C + cmp r0, r1 + beq _02249886 + ldr r1, _022498E4 ; =MOD18_0224AA4C + cmp r0, r1 + beq _02249886 + ldr r1, _022498E8 ; =MOD18_0224A30C + cmp r0, r1 + bne _022498AC +_02249886: + mov r0, #4 + bl FUN_0205EB38 + str r0, [r4, #8] + mov r1, #0xc8 + mov r2, #0x14 + mov r3, #0x7a + bl FUN_0205EC48 + mov r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_022498AC: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022498CC + add r0, r4, #0 + bl MOD18_022491D0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_02001C5C + mov r0, #0x7e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_022498CC: + mov r1, #0x8f + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + blx r1 +_022498D6: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_022498DC: .word MOD18_02249B50 +_022498E0: .word MOD18_02249F2C +_022498E4: .word MOD18_0224AA4C +_022498E8: .word MOD18_0224A30C + thumb_func_end MOD18_022497C8 + + thumb_func_start MOD18_022498EC +MOD18_022498EC: ; 0x022498EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _02249902 + mov r1, #0 + add r2, r1, #0 + bl MOD18_02244318 + mov r0, #0 + str r0, [r4, #0x4c] +_02249902: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _02249916 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + mov r0, #0 + str r0, [r4, #0x48] + b _02249936 +_02249916: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02249936 + add r0, r4, #0 + bl MOD18_022491D0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_02001C5C + mov r0, #0x7e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02249936: + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019048 + cmp r0, #0 + beq _02249968 + add r0, r4, #0 + add r0, #0x10 + mov r1, #1 + bl FUN_0200CCF8 + ldrb r1, [r4, #0x14] + ldr r0, [r4, #0x10] + bl FUN_0201AC68 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + ldr r0, [r4, #0x40] + bl FUN_02012870 + add r0, r4, #0 + bl MOD18_0224CBAC +_02249968: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_022498EC + + thumb_func_start MOD18_0224996C +MOD18_0224996C: ; 0x0224996C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + mov r0, #6 + str r0, [sp, #0x1c] + mov r0, #0x19 + mov r7, #0xb + str r0, [sp, #0x18] + cmp r1, #1 + beq _0224998A + cmp r1, #2 + beq _02249990 + cmp r1, #3 + beq _02249998 + b _022499A2 +_0224998A: + mov r6, #3 + ldr r4, _02249A4C ; =0x02251270 + b _022499A2 +_02249990: + mov r6, #2 + mov r7, #0xd + ldr r4, _02249A50 ; =0x02251260 + b _022499A2 +_02249998: + mov r0, #0x14 + ldr r4, _02249A54 ; =0x02251288 + mov r6, #3 + str r7, [sp, #0x1c] + str r0, [sp, #0x18] +_022499A2: + add r0, r6, #0 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x44] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r6, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02249A58 ; =0x000002E7 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + lsl r3, r3, #0x18 + ldr r0, [r0, #8] + add r1, #0x20 + mov r2, #3 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02249A5C ; =0x000003D9 + add r0, #0x20 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + mov r7, #0 + str r0, [sp, #0x14] + cmp r6, #0 + ble _02249A0E +_022499FA: + ldr r0, [r5, #0x44] + ldr r1, [sp, #0x14] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r7, r7, #1 + add r4, #8 + cmp r7, r6 + blt _022499FA +_02249A0E: + ldr r4, _02249A60 ; =0x02250598 + add r3, sp, #0x20 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + lsl r0, r6, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x20 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #0x44] + mov r1, #0 + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x20 + str r0, [sp, #0x2c] + add r0, r2, #0 + add r2, r1, #0 + mov r3, #4 + str r5, [sp, #0x3c] + bl FUN_020010A8 + str r0, [r5, #0x50] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249A4C: .word 0x02251270 +_02249A50: .word 0x02251260 +_02249A54: .word 0x02251288 +_02249A58: .word 0x000002E7 +_02249A5C: .word 0x000003D9 +_02249A60: .word 0x02250598 + thumb_func_end MOD18_0224996C + + thumb_func_start MOD18_02249A64 +MOD18_02249A64: ; 0x02249A64 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _02249A8C + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + add r1, r4, #0 + add r1, #0x24 + ldrb r1, [r1] + ldr r0, [r4, #0x20] + bl FUN_0201AC68 + ldr r0, [r4, #0x44] + bl FUN_02012870 + mov r0, #0 + str r0, [r4, #0x50] +_02249A8C: + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + beq _02249AAA + add r0, r4, #0 + add r0, #0x20 + mov r1, #1 + bl FUN_0200CCF8 + add r4, #0x20 + add r0, r4, #0 + bl FUN_02019178 +_02249AAA: + pop {r4, pc} + thumb_func_end MOD18_02249A64 + + thumb_func_start MOD18_02249AAC +MOD18_02249AAC: ; 0x02249AAC + push {r4, lr} + add r4, r0, #0 + bl MOD18_022498EC + ldr r0, [r4, #8] + cmp r0, #0 + beq _02249AC2 + bl FUN_0205EBEC + mov r0, #0 + str r0, [r4, #8] +_02249AC2: + ldr r0, _02249AD4 ; =0x00000246 + mov r1, #0 + strb r1, [r4, r0] + bl MOD18_0223D678 + bl MOD18_0224DD94 + pop {r4, pc} + nop +_02249AD4: .word 0x00000246 + thumb_func_end MOD18_02249AAC + + thumb_func_start MOD18_02249AD8 +MOD18_02249AD8: ; 0x02249AD8 + push {r3, lr} + ldr r1, _02249AF0 ; =0x022513F8 + ldr r2, [r1] + ldrb r1, [r2, #5] + cmp r1, r0 + bne _02249AEC + ldrb r1, [r2, #4] + ldr r0, [r2] + bl FUN_02026264 +_02249AEC: + pop {r3, pc} + nop +_02249AF0: .word 0x022513F8 + thumb_func_end MOD18_02249AD8 + + thumb_func_start MOD18_02249AF4 +MOD18_02249AF4: ; 0x02249AF4 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _02249B16 + mov r4, #0x44 + b _02249B1A +_02249B16: + add r4, r0, #0 + add r4, #0x22 +_02249B1A: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249AF4 + + thumb_func_start MOD18_02249B2C +MOD18_02249B2C: ; 0x02249B2C + mov r1, #2 + ldr r2, _02249B44 ; =MOD18_02249338 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _02249B48 ; =MOD18_022493DC + add r1, r1, #4 + str r2, [r0, r1] + mov r1, #0 + ldr r3, _02249B4C ; =MOD18_02249BA8 + str r1, [r0, #0x64] + bx r3 + nop +_02249B44: .word MOD18_02249338 +_02249B48: .word MOD18_022493DC +_02249B4C: .word MOD18_02249BA8 + thumb_func_end MOD18_02249B2C + + thumb_func_start MOD18_02249B50 +MOD18_02249B50: ; 0x02249B50 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #8 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _02249B98 ; =MOD18_02249338 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _02249B9C ; =MOD18_022493DC + sub r0, #0x2c + str r2, [r4, r0] + ldr r0, _02249BA0 ; =MOD18_02249AF4 + str r0, [r4, #0x60] + mov r0, #0 + str r0, [r4, #0x64] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _02249BA4 ; =0x020262BD + add r0, r4, #0 + bl MOD18_02249BA8 + pop {r4, pc} + nop +_02249B98: .word MOD18_02249338 +_02249B9C: .word MOD18_022493DC +_02249BA0: .word MOD18_02249AF4 +_02249BA4: .word 0x020262BD + thumb_func_end MOD18_02249B50 + + thumb_func_start MOD18_02249BA8 +MOD18_02249BA8: ; 0x02249BA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r1, [sp, #0x14] + mov r1, #0x81 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r7, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _02249CB0 ; =0x0000023B + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02249CB4 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02249CB8 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _02249C30 +_02249C18: + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blt _02249C18 +_02249C30: + mov r2, #0x22 + add r3, r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, #0x24 + bl FUN_02012880 + ldr r3, _02249CBC ; =0x02250598 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x1c + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x1c] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [r5, #0x60] + str r0, [sp, #0x20] + ldr r0, [r5, #0x64] + str r0, [sp, #0x24] + str r5, [sp, #0x38] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _02249CC0 ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _02249CC4 ; =0x00000246 + mov r1, #5 + strb r1, [r5, r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_02249CB0: .word 0x0000023B +_02249CB4: .word 0x00000257 +_02249CB8: .word 0x000003D9 +_02249CBC: .word 0x02250598 +_02249CC0: .word 0x022513F8 +_02249CC4: .word 0x00000246 + thumb_func_end MOD18_02249BA8 + + thumb_func_start MOD18_02249CC8 +MOD18_02249CC8: ; 0x02249CC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #8 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _02249D12 + mov r4, #1 + mvn r4, r4 +_02249D12: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _02249D1C + add r4, r0, #0 +_02249D1C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02249D2E + add r0, r0, #1 + cmp r4, r0 + bne _02249D36 + mov r0, #0 + pop {r3, r4, r5, pc} +_02249D2E: + add r0, r5, #0 + bl MOD18_02249AAC + b _02249DAC +_02249D36: + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _02249DB0 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_022493DC + ldr r1, _02249DB0 ; =0x022513F8 + ldr r2, [r1] + strb r0, [r2, #5] + ldr r0, [r1] + ldrb r0, [r0, #5] + cmp r0, #0x21 + bne _02249D66 + bl MOD18_02246AE4 + ldr r0, _02249DB4 ; =0x00000246 + mov r1, #3 + strb r1, [r5, r0] + b _02249D98 +_02249D66: + add r0, r5, #0 + bl MOD18_022498EC + add r0, r5, #0 + mov r1, #1 + bl MOD18_0224996C + ldr r0, _02249DB4 ; =0x00000246 + mov r1, #0x12 + strb r1, [r5, r0] + bl MOD18_0223D638 + ldr r2, _02249DB0 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF04 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 +_02249D98: + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_02249DAC: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_02249DB0: .word 0x022513F8 +_02249DB4: .word 0x00000246 + thumb_func_end MOD18_02249CC8 + + thumb_func_start MOD18_02249DB8 +MOD18_02249DB8: ; 0x02249DB8 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _02249DE2 + ldr r0, _02249E80 ; =0x000005DC + bl FUN_020054C8 +_02249DE2: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02249DF4 + add r0, r0, #1 + cmp r4, r0 + bne _02249E0E + mov r0, #0 + pop {r4, r5, r6, pc} +_02249DF4: + ldr r0, _02249E80 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_02249B50 + ldr r0, _02249E84 ; =0x00000246 + mov r1, #5 + strb r1, [r5, r0] + b _02249E7C +_02249E0E: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #1 + bne _02249E3A + ldr r0, _02249E88 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + ldrb r0, [r0, #4] + bl MOD18_022493DC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD18_0223EF60 + ldr r0, _02249E8C ; =0x00000631 + bl FUN_020054C8 + ldr r0, _02249E84 ; =0x00000246 + mov r1, #3 + strb r1, [r5, r0] + b _02249E7C +_02249E3A: + cmp r4, #2 + bne _02249E7C + ldr r0, _02249E80 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02249E88 ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl MOD18_02249AD8 + bl MOD18_0223D638 + ldr r2, _02249E88 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF04 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _02249E90 ; =MOD18_02249B50 + mov r1, #5 + str r0, [r5] + ldr r0, _02249E94 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_02249E7C: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_02249E80: .word 0x000005DC +_02249E84: .word 0x00000246 +_02249E88: .word 0x022513F8 +_02249E8C: .word 0x00000631 +_02249E90: .word MOD18_02249B50 +_02249E94: .word 0x00000245 + thumb_func_end MOD18_02249DB8 + + thumb_func_start MOD18_02249E98 +MOD18_02249E98: ; 0x02249E98 + push {r3, lr} + ldr r1, _02249EB8 ; =0x022513F8 + ldr r1, [r1] + ldrb r1, [r1, #5] + cmp r1, r0 + beq _02249EA8 + bl ErrorHandling +_02249EA8: + ldr r0, _02249EB8 ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02026080 + pop {r3, pc} + nop +_02249EB8: .word 0x022513F8 + thumb_func_end MOD18_02249E98 + + thumb_func_start MOD18_02249EBC +MOD18_02249EBC: ; 0x02249EBC + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _02249EDE + mov r4, #0x3d + b _02249EE2 +_02249EDE: + add r4, r0, #0 + add r4, #0x3e +_02249EE2: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249EBC + + thumb_func_start MOD18_02249EF4 +MOD18_02249EF4: ; 0x02249EF4 + mov r2, #2 + ldr r1, _02249F14 ; =MOD18_022493C8 + lsl r2, r2, #8 + str r1, [r0, r2] + add r1, r2, #4 + ldr r3, _02249F18 ; =MOD18_022493F4 + add r2, #8 + str r3, [r0, r1] + ldr r1, _02249F1C ; =MOD18_0224940C + ldr r3, _02249F20 ; =MOD18_02249F8C + str r1, [r0, r2] + ldr r1, _02249F24 ; =MOD18_02249EBC + str r1, [r0, #0x60] + ldr r1, _02249F28 ; =0x020260ED + bx r3 + nop +_02249F14: .word MOD18_022493C8 +_02249F18: .word MOD18_022493F4 +_02249F1C: .word MOD18_0224940C +_02249F20: .word MOD18_02249F8C +_02249F24: .word MOD18_02249EBC +_02249F28: .word 0x020260ED + thumb_func_end MOD18_02249EF4 + + thumb_func_start MOD18_02249F2C +MOD18_02249F2C: ; 0x02249F2C + push {r4, lr} + add r4, r0, #0 + mov r0, #9 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #9 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _02249F78 ; =MOD18_022493C8 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _02249F7C ; =MOD18_022493F4 + sub r0, #0x2c + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _02249F80 ; =MOD18_0224940C + sub r0, #0x28 + str r2, [r4, r0] + ldr r0, _02249F84 ; =MOD18_02249EBC + str r0, [r4, #0x60] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _02249F88 ; =0x020260ED + add r0, r4, #0 + bl MOD18_02249F8C + pop {r4, pc} + nop +_02249F78: .word MOD18_022493C8 +_02249F7C: .word MOD18_022493F4 +_02249F80: .word MOD18_0224940C +_02249F84: .word MOD18_02249EBC +_02249F88: .word 0x020260ED + thumb_func_end MOD18_02249F2C + + thumb_func_start MOD18_02249F8C +MOD18_02249F8C: ; 0x02249F8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + mov r2, #0x81 + add r5, r0, #0 + lsl r2, r2, #2 + str r1, [sp, #0x14] + ldr r1, [r5, r2] + str r1, [sp, #0x1c] + add r1, r2, #4 + ldr r7, [r5, r1] + sub r1, r2, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _0224A0D4 ; =0x00000239 + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224A0D8 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224A0DC ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _0224A058 +_0224A002: + ldr r2, [sp, #0x1c] + add r0, r4, #0 + add r1, r5, #0 + blx r2 + add r2, r0, #0 + ldr r0, [r5, #0x70] + mov r1, #2 + bl FUN_0200B164 + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x70] + mov r1, #6 + mov r3, #2 + bl FUN_0200AD38 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r2, [r5, #0x6c] + mov r1, #0x80 + bl FUN_0200A8E0 + ldr r0, [r5, #0x70] + ldr r1, [r5, #0x68] + ldr r2, [r5, #0x6c] + bl FUN_0200B7B8 + ldr r0, [r5, #0x40] + ldr r1, [r5, #0x68] + add r2, r4, #0 + bl FUN_020128A0 + add r4, r4, #1 + cmp r4, r6 + blt _0224A002 +_0224A058: + mov r2, #0x3c + add r3, r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, #0x3e + bl FUN_02012880 + ldr r3, _0224A0E0 ; =0x02250598 + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x20 + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x60] + str r0, [sp, #0x24] + str r5, [sp, #0x3c] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _0224A0E4 ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x20 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _0224A0E8 ; =0x00000246 + mov r1, #6 + strb r1, [r5, r0] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A0D4: .word 0x00000239 +_0224A0D8: .word 0x00000257 +_0224A0DC: .word 0x000003D9 +_0224A0E0: .word 0x02250598 +_0224A0E4: .word 0x022513F8 +_0224A0E8: .word 0x00000246 + thumb_func_end MOD18_02249F8C + + thumb_func_start MOD18_0224A0EC +MOD18_0224A0EC: ; 0x0224A0EC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #9 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _0224A136 + mov r4, #1 + mvn r4, r4 +_0224A136: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224A140 + add r4, r0, #0 +_0224A140: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A152 + add r0, r0, #1 + cmp r4, r0 + bne _0224A15A + mov r0, #0 + pop {r3, r4, r5, pc} +_0224A152: + add r0, r5, #0 + bl MOD18_02249AAC + b _0224A1B4 +_0224A15A: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, _0224A1B8 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_022493F4 + ldr r1, _0224A1B8 ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + add r0, r5, #0 + mov r1, #1 + bl MOD18_0224996C + ldr r0, _0224A1BC ; =0x00000246 + mov r1, #0x10 + strb r1, [r5, r0] + bl MOD18_0223D638 + ldr r2, _0224A1B8 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224A1B4: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A1B8: .word 0x022513F8 +_0224A1BC: .word 0x00000246 + thumb_func_end MOD18_0224A0EC + + thumb_func_start MOD18_0224A1C0 +MOD18_0224A1C0: ; 0x0224A1C0 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _0224A1EA + ldr r0, _0224A2A0 ; =0x000005DC + bl FUN_020054C8 +_0224A1EA: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A1FC + add r0, r0, #1 + cmp r4, r0 + bne _0224A216 + mov r0, #0 + pop {r4, r5, r6, pc} +_0224A1FC: + ldr r0, _0224A2A0 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_02249F2C + ldr r0, _0224A2A4 ; =0x00000246 + mov r1, #6 + strb r1, [r5, r0] + b _0224A29C +_0224A216: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #1 + bne _0224A25A + bl FUN_02031190 + add r4, r0, #0 + bl FUN_0204E4D4 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E50C + add r4, r0, #0 + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _0224A2A8 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + ldrb r0, [r0, #4] + bl MOD18_0224940C + add r1, r0, #0 + ldr r0, _0224A2A8 ; =0x022513F8 + add r2, r6, #0 + ldr r0, [r0] + add r3, r4, #0 + ldrb r0, [r0, #5] + bl MOD18_0223CF9C + b _0224A28C +_0224A25A: + cmp r4, #2 + bne _0224A28C + ldr r0, _0224A2A0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224A2A8 ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl MOD18_02249E98 + bl MOD18_0223D638 + ldr r2, _0224A2A8 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224A28C: + ldr r0, _0224A2AC ; =MOD18_02249F2C + mov r1, #6 + str r0, [r5] + ldr r0, _0224A2B0 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_0224A29C: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224A2A0: .word 0x000005DC +_0224A2A4: .word 0x00000246 +_0224A2A8: .word 0x022513F8 +_0224A2AC: .word MOD18_02249F2C +_0224A2B0: .word 0x00000245 + thumb_func_end MOD18_0224A1C0 + + thumb_func_start MOD18_0224A2B4 +MOD18_0224A2B4: ; 0x0224A2B4 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _0224A2D6 + mov r4, #0x3d + b _0224A2DA +_0224A2D6: + add r4, r0, #0 + add r4, #0x3e +_0224A2DA: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224A2B4 + + thumb_func_start MOD18_0224A2EC +MOD18_0224A2EC: ; 0x0224A2EC + mov r1, #2 + ldr r2, _0224A300 ; =MOD18_02249424 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224A304 ; =MOD18_02249438 + add r1, r1, #4 + str r2, [r0, r1] + ldr r3, _0224A308 ; =MOD18_0224A360 + mov r1, #0 + bx r3 + .align 2, 0 +_0224A300: .word MOD18_02249424 +_0224A304: .word MOD18_02249438 +_0224A308: .word MOD18_0224A360 + thumb_func_end MOD18_0224A2EC + + thumb_func_start MOD18_0224A30C +MOD18_0224A30C: ; 0x0224A30C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xb + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _0224A350 ; =MOD18_02249424 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _0224A354 ; =MOD18_02249438 + sub r0, #0x2c + str r2, [r4, r0] + ldr r0, _0224A358 ; =MOD18_0224A2B4 + str r0, [r4, #0x60] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _0224A35C ; =0x020261ED + add r0, r4, #0 + bl MOD18_0224A360 + pop {r4, pc} + nop +_0224A350: .word MOD18_02249424 +_0224A354: .word MOD18_02249438 +_0224A358: .word MOD18_0224A2B4 +_0224A35C: .word 0x020261ED + thumb_func_end MOD18_0224A30C + + thumb_func_start MOD18_0224A360 +MOD18_0224A360: ; 0x0224A360 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r1, [sp, #0x14] + mov r1, #0x81 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r7, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _0224A464 ; =0x00000239 + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224A468 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224A46C ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _0224A3E8 +_0224A3D0: + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blt _0224A3D0 +_0224A3E8: + mov r2, #0x3c + add r3, r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, #0x3e + bl FUN_02012880 + ldr r3, _0224A470 ; =0x02250598 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x1c + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x1c] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [r5, #0x60] + str r0, [sp, #0x20] + str r5, [sp, #0x38] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _0224A474 ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _0224A478 ; =0x00000246 + mov r1, #7 + strb r1, [r5, r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_0224A464: .word 0x00000239 +_0224A468: .word 0x00000257 +_0224A46C: .word 0x000003D9 +_0224A470: .word 0x02250598 +_0224A474: .word 0x022513F8 +_0224A478: .word 0x00000246 + thumb_func_end MOD18_0224A360 + + thumb_func_start MOD18_0224A47C +MOD18_0224A47C: ; 0x0224A47C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0xb + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _0224A4C6 + mov r4, #1 + mvn r4, r4 +_0224A4C6: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224A4D0 + add r4, r0, #0 +_0224A4D0: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A4E2 + add r0, r0, #1 + cmp r4, r0 + bne _0224A4EA + mov r0, #0 + pop {r3, r4, r5, pc} +_0224A4E2: + add r0, r5, #0 + bl MOD18_02249AAC + b _0224A544 +_0224A4EA: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, _0224A548 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_02249438 + ldr r1, _0224A548 ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + add r0, r5, #0 + mov r1, #3 + bl MOD18_0224996C + bl MOD18_0223D638 + ldr r2, _0224A548 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 + ldr r0, _0224A54C ; =0x00000246 + mov r1, #0x11 + strb r1, [r5, r0] + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224A544: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A548: .word 0x022513F8 +_0224A54C: .word 0x00000246 + thumb_func_end MOD18_0224A47C + + thumb_func_start MOD18_0224A550 +MOD18_0224A550: ; 0x0224A550 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _0224A57A + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 +_0224A57A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A58C + add r0, r0, #1 + cmp r4, r0 + bne _0224A5A6 + mov r0, #0 + pop {r4, r5, r6, pc} +_0224A58C: + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_0224A30C + ldr r0, _0224A698 ; =0x00000246 + mov r1, #7 + strb r1, [r5, r0] + b _0224A68E +_0224A5A6: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #3 + bne _0224A64A + ldr r0, _0224A69C ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl FUN_02025D48 + add r4, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + add r6, r0, #0 + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 + lsl r1, r4, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #1 + mov r3, #4 + bl FUN_0206ED38 + cmp r0, #0 + beq _0224A62A + ldr r0, _0224A69C ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02026194 + bl MOD18_0223D638 + ldr r2, _0224A69C ; =0x022513F8 + mov r1, #0 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + ldr r0, _0224A69C ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + add r0, #0xe3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _0224A61A + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x51 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224A67E +_0224A61A: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4f + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224A67E +_0224A62A: + bl MOD18_0223D638 + ldr r2, _0224A69C ; =0x022513F8 + mov r1, #0 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x50 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224A67E +_0224A64A: + cmp r4, #2 + bne _0224A67E + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224A69C ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02026194 + bl MOD18_0223D638 + ldr r2, _0224A69C ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224A67E: + ldr r0, _0224A6A0 ; =MOD18_0224A30C + mov r1, #7 + str r0, [r5] + ldr r0, _0224A6A4 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_0224A68E: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_0224A694: .word 0x000005DC +_0224A698: .word 0x00000246 +_0224A69C: .word 0x022513F8 +_0224A6A0: .word MOD18_0224A30C +_0224A6A4: .word 0x00000245 + thumb_func_end MOD18_0224A550 + + thumb_func_start MOD18_0224A6A8 +MOD18_0224A6A8: ; 0x0224A6A8 + ldr r1, _0224A6B0 ; =0x00000246 + mov r2, #2 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_0224A6B0: .word 0x00000246 + thumb_func_end MOD18_0224A6A8 + + thumb_func_start MOD18_0224A6B4 +MOD18_0224A6B4: ; 0x0224A6B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD18_022498EC + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0224A6F0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x42 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224A70C ; =0x00000246 + mov r1, #0xd + strb r1, [r5, r0] + pop {r3, r4, r5, pc} +_0224A6F0: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x34 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0xb + add r1, #0x1e + strb r0, [r5, r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A70C: .word 0x00000246 + thumb_func_end MOD18_0224A6B4 + + thumb_func_start MOD18_0224A710 +MOD18_0224A710: ; 0x0224A710 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224A73C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _0224A740 ; =0x0225056C + ldr r0, [r0, #8] + ldr r2, _0224A744 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x5c] + ldr r0, _0224A748 ; =0x00000246 + mov r1, #0xc + strb r1, [r4, r0] +_0224A73C: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224A740: .word 0x0225056C +_0224A744: .word 0x000003D9 +_0224A748: .word 0x00000246 + thumb_func_end MOD18_0224A710 + + thumb_func_start MOD18_0224A74C +MOD18_0224A74C: ; 0x0224A74C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224A77E + cmp r0, #0 + bne _0224A76C + ldr r0, _0224A780 ; =0x00000246 + mov r1, #0xf + strb r1, [r4, r0] + b _0224A77A +_0224A76C: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r4, #0 + bl MOD18_02249AAC +_0224A77A: + mov r0, #0 + str r0, [r4, #0x5c] +_0224A77E: + pop {r4, pc} + .align 2, 0 +_0224A780: .word 0x00000246 + thumb_func_end MOD18_0224A74C + + thumb_func_start MOD18_0224A784 +MOD18_0224A784: ; 0x0224A784 + ldr r3, _0224A788 ; =MOD18_02249AAC + bx r3 + .align 2, 0 +_0224A788: .word MOD18_02249AAC + thumb_func_end MOD18_0224A784 + + thumb_func_start MOD18_0224A78C +MOD18_0224A78C: ; 0x0224A78C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD18_022498EC + bl MOD18_0224D704 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r2, _0224A7C0 ; =MOD18_0224A784 + ldr r0, [r0, #8] + add r3, r4, #0 + bl MOD18_0224D5CC + ldr r0, _0224A7C4 ; =0x00000246 + mov r1, #0xa + strb r1, [r4, r0] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224A7C0: .word MOD18_0224A784 +_0224A7C4: .word 0x00000246 + thumb_func_end MOD18_0224A78C + + thumb_func_start MOD18_0224A7C8 +MOD18_0224A7C8: ; 0x0224A7C8 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x25 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x7f + str r6, [r4, #0xc] + lsl r0, r0, #2 + str r5, [r4, r0] + mov r1, #0 + add r0, #0x4a + strb r1, [r4, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + bl FUN_0204F7E4 + bl MOD18_0223D648 + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD18_0224DCB8 + ldr r0, _0224A838 ; =MOD18_0224A914 + ldr r2, _0224A83C ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _0224A840 ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224A838: .word MOD18_0224A914 +_0224A83C: .word 0x00002710 +_0224A840: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224A7C8 + + thumb_func_start MOD18_0224A844 +MOD18_0224A844: ; 0x0224A844 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224A870 + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _0224A874 ; =0x0225056C + ldr r0, [r0, #8] + ldr r2, _0224A878 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x5c] + ldr r0, _0224A87C ; =0x00000246 + mov r1, #1 + strb r1, [r4, r0] +_0224A870: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224A874: .word 0x0225056C +_0224A878: .word 0x000003D9 +_0224A87C: .word 0x00000246 + thumb_func_end MOD18_0224A844 + + thumb_func_start MOD18_0224A880 +MOD18_0224A880: ; 0x0224A880 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224A8A6 + cmp r0, #0 + bne _0224A89C + mov r1, #3 + b _0224A89E +_0224A89C: + mov r1, #2 +_0224A89E: + ldr r0, _0224A8A8 ; =0x00000246 + strb r1, [r4, r0] + mov r0, #0 + str r0, [r4, #0x5c] +_0224A8A6: + pop {r4, pc} + .align 2, 0 +_0224A8A8: .word 0x00000246 + thumb_func_end MOD18_0224A880 + + thumb_func_start MOD18_0224A8AC +MOD18_0224A8AC: ; 0x0224A8AC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x5c] + add r4, r2, #0 + cmp r0, #0 + beq _0224A8C0 + mov r1, #4 + bl FUN_020021EC +_0224A8C0: + ldr r0, [r5, #0x68] + bl FUN_02021A20 + ldr r0, [r5, #0x6c] + bl FUN_02021A20 + ldr r0, [r5, #0x70] + bl FUN_0200AB18 + bl MOD18_0223D648 + bl MOD18_0224DD94 + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #0 + beq _0224A8F0 + mov r0, #0 + blx r1 +_0224A8F0: + mov r0, #0 + str r0, [r5, #4] + ldr r0, [r5, #8] + cmp r0, #0 + beq _0224A8FE + bl FUN_0205EBEC +_0224A8FE: + add r0, r5, #0 + bl FUN_02016A18 + cmp r4, #0 + bne _0224A90C + bl FUN_0204F7FC +_0224A90C: + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + thumb_func_end MOD18_0224A8AC + + thumb_func_start MOD18_0224A914 +MOD18_0224A914: ; 0x0224A914 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + bl FUN_0204EE9C + cmp r0, #0 + bne _0224A932 + ldr r0, _0224A9AC ; =0x00000246 + ldrb r1, [r4, r0] + cmp r1, #1 + bhi _0224A932 + mov r1, #2 + strb r1, [r4, r0] +_0224A932: + ldr r0, _0224A9AC ; =0x00000246 + ldrb r0, [r4, r0] + cmp r0, #4 + bhi _0224A9AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224A946: ; jump table + .short _0224A950 - _0224A946 - 2 ; case 0 + .short _0224A958 - _0224A946 - 2 ; case 1 + .short _0224A960 - _0224A946 - 2 ; case 2 + .short _0224A970 - _0224A946 - 2 ; case 3 + .short _0224A98E - _0224A946 - 2 ; case 4 +_0224A950: + add r0, r4, #0 + bl MOD18_0224A844 + pop {r3, r4, r5, pc} +_0224A958: + add r0, r4, #0 + bl MOD18_0224A880 + pop {r3, r4, r5, pc} +_0224A960: + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD18_0224A8AC + pop {r3, r4, r5, pc} +_0224A970: + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_0224A8AC + mov r1, #0 + add r0, sp, #0 + strb r1, [r0] + mov r0, #0x54 + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, r4, r5, pc} +_0224A98E: + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224A9AA + ldr r0, _0224A9B0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224A9AA + ldr r0, _0224A9AC ; =0x00000246 + mov r1, #2 + strb r1, [r4, r0] +_0224A9AA: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A9AC: .word 0x00000246 +_0224A9B0: .word 0x021C48B8 + thumb_func_end MOD18_0224A914 + + thumb_func_start MOD18_0224A9B4 +MOD18_0224A9B4: ; 0x0224A9B4 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _0224A9D6 + mov r4, #0x8b + b _0224A9DA +_0224A9D6: + add r4, r0, #0 + add r4, #0x8a +_0224A9DA: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224A9B4 + + thumb_func_start MOD18_0224A9EC +MOD18_0224A9EC: ; 0x0224A9EC + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x13 + add r5, r0, #0 + bl FUN_02001470 + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _0224AA1A + add r0, r5, #0 + mov r1, #1 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, r4, r5, pc} +_0224AA1A: + mov r1, #2 + add r0, r5, #0 + mov r2, #0xf + add r3, r1, #0 + bl FUN_020013E8 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224A9EC + + thumb_func_start MOD18_0224AA28 +MOD18_0224AA28: ; 0x0224AA28 + mov r1, #2 + ldr r2, _0224AA40 ; =MOD18_02249378 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224AA44 ; =MOD18_0224938C + add r1, r1, #4 + str r2, [r0, r1] + mov r1, #0 + ldr r3, _0224AA48 ; =MOD18_0224AB08 + str r1, [r0, #0x64] + bx r3 + nop +_0224AA40: .word MOD18_02249378 +_0224AA44: .word MOD18_0224938C +_0224AA48: .word MOD18_0224AB08 + thumb_func_end MOD18_0224AA28 + + thumb_func_start MOD18_0224AA4C +MOD18_0224AA4C: ; 0x0224AA4C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xa + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xa + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _0224AA94 ; =MOD18_02249378 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _0224AA98 ; =MOD18_0224938C + sub r0, #0x2c + str r2, [r4, r0] + ldr r0, _0224AA9C ; =MOD18_0224A9B4 + str r0, [r4, #0x60] + mov r0, #0 + str r0, [r4, #0x64] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _0224AAA0 ; =0x02025FFD + add r0, r4, #0 + bl MOD18_0224AB08 + pop {r4, pc} + nop +_0224AA94: .word MOD18_02249378 +_0224AA98: .word MOD18_0224938C +_0224AA9C: .word MOD18_0224A9B4 +_0224AAA0: .word 0x02025FFD + thumb_func_end MOD18_0224AA4C + + thumb_func_start MOD18_0224AAA4 +MOD18_0224AAA4: ; 0x0224AAA4 + mov r1, #2 + ldr r2, _0224AAC0 ; =MOD18_02249378 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224AAC4 ; =MOD18_0224938C + add r1, r1, #4 + str r2, [r0, r1] + ldr r1, _0224AAC8 ; =MOD18_0224A9B4 + ldr r3, _0224AACC ; =MOD18_0224AB08 + str r1, [r0, #0x60] + mov r1, #0 + str r1, [r0, #0x64] + ldr r1, _0224AAD0 ; =0x02025FFD + bx r3 + .align 2, 0 +_0224AAC0: .word MOD18_02249378 +_0224AAC4: .word MOD18_0224938C +_0224AAC8: .word MOD18_0224A9B4 +_0224AACC: .word MOD18_0224AB08 +_0224AAD0: .word 0x02025FFD + thumb_func_end MOD18_0224AAA4 + + thumb_func_start MOD18_0224AAD4 +MOD18_0224AAD4: ; 0x0224AAD4 + mov r1, #2 + ldr r2, _0224AAF0 ; =MOD18_0224934C + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224AAF4 ; =MOD18_02249360 + add r1, r1, #4 + str r2, [r0, r1] + ldr r1, _0224AAF8 ; =MOD18_0224A9B4 + ldr r3, _0224AAFC ; =MOD18_0224AB08 + str r1, [r0, #0x60] + ldr r1, _0224AB00 ; =MOD18_0224A9EC + str r1, [r0, #0x64] + ldr r1, _0224AB04 ; =0x02025E21 + bx r3 + .align 2, 0 +_0224AAF0: .word MOD18_0224934C +_0224AAF4: .word MOD18_02249360 +_0224AAF8: .word MOD18_0224A9B4 +_0224AAFC: .word MOD18_0224AB08 +_0224AB00: .word MOD18_0224A9EC +_0224AB04: .word 0x02025E21 + thumb_func_end MOD18_0224AAD4 + + thumb_func_start MOD18_0224AB08 +MOD18_0224AB08: ; 0x0224AB08 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r1, [sp, #0x14] + mov r1, #0x81 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r7, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _0224AC0C ; =0x00000237 + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224AC10 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224AC14 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _0224AB90 +_0224AB78: + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blt _0224AB78 +_0224AB90: + mov r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, r2, #2 + bl FUN_02012880 + ldr r3, _0224AC18 ; =0x02250598 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x1c + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x64] + str r0, [sp, #0x24] + ldr r0, [r5, #0x40] + str r0, [sp, #0x1c] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [r5, #0x60] + str r0, [sp, #0x20] + str r5, [sp, #0x38] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _0224AC1C ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _0224AC20 ; =0x00000246 + mov r1, #8 + strb r1, [r5, r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224AC0C: .word 0x00000237 +_0224AC10: .word 0x00000257 +_0224AC14: .word 0x000003D9 +_0224AC18: .word 0x02250598 +_0224AC1C: .word 0x022513F8 +_0224AC20: .word 0x00000246 + thumb_func_end MOD18_0224AB08 + + thumb_func_start MOD18_0224AC24 +MOD18_0224AC24: ; 0x0224AC24 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0xa + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _0224AC6E + mov r4, #1 + mvn r4, r4 +_0224AC6E: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224AC78 + add r4, r0, #0 +_0224AC78: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224AC8A + add r0, r0, #1 + cmp r4, r0 + bne _0224AC98 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224AC8A: + ldr r0, _0224ACF8 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249AAC + b _0224ACF2 +_0224AC98: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, _0224ACFC ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_0224938C + ldr r1, _0224ACFC ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + add r0, r5, #0 + mov r1, #2 + bl MOD18_0224996C + bl MOD18_0223D638 + ldr r2, _0224ACFC ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF18 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 + ldr r0, _0224AD00 ; =0x00000246 + mov r1, #0x13 + strb r1, [r5, r0] + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224ACF2: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224ACF8: .word 0x000005DC +_0224ACFC: .word 0x022513F8 +_0224AD00: .word 0x00000246 + thumb_func_end MOD18_0224AC24 + + thumb_func_start MOD18_0224AD04 +MOD18_0224AD04: ; 0x0224AD04 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _0224AD2E + ldr r0, _0224ADA8 ; =0x000005DC + bl FUN_020054C8 +_0224AD2E: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224AD40 + add r0, r0, #1 + cmp r4, r0 + bne _0224AD5A + mov r0, #0 + pop {r4, r5, r6, pc} +_0224AD40: + ldr r0, _0224ADA8 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_0224AA4C + ldr r0, _0224ADAC ; =0x00000246 + mov r1, #8 + strb r1, [r5, r0] + b _0224ADA4 +_0224AD5A: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #2 + bne _0224AD94 + ldr r0, _0224ADA8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224ADB0 ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02025FA4 + bl MOD18_0223D638 + ldr r2, _0224ADB0 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF18 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224AD94: + ldr r0, _0224ADB4 ; =MOD18_0224AA4C + mov r1, #8 + str r0, [r5] + ldr r0, _0224ADB8 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_0224ADA4: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224ADA8: .word 0x000005DC +_0224ADAC: .word 0x00000246 +_0224ADB0: .word 0x022513F8 +_0224ADB4: .word MOD18_0224AA4C +_0224ADB8: .word 0x00000245 + thumb_func_end MOD18_0224AD04 + + thumb_func_start MOD18_0224ADBC +MOD18_0224ADBC: ; 0x0224ADBC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_022498EC + bl MOD18_0223E458 + bl MOD18_0224D344 + bl MOD18_02240C14 + bl MOD18_0223C848 + bl MOD18_0223D370 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224ADE8 + bl MOD18_0224DAA8 +_0224ADE8: + ldr r0, [r5, #0x5c] + cmp r0, #0 + beq _0224ADF4 + mov r1, #4 + bl FUN_020021EC +_0224ADF4: + add r0, r5, #0 + bl MOD18_02249A64 + ldr r0, [r5, #8] + cmp r0, #0 + beq _0224AE04 + bl FUN_0205EBEC +_0224AE04: + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224AE34 + ldr r0, _0224AE64 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_0224938C + ldr r1, _0224AE64 ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + mov r1, #0x7f + lsl r1, r1, #2 + ldr r1, [r5, r1] + mov r0, #0 + blx r1 + mov r0, #0x7f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0224AE34: + ldr r0, [r5, #0x68] + cmp r0, #0 + beq _0224AE3E + bl FUN_02021A20 +_0224AE3E: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _0224AE48 + bl FUN_02021A20 +_0224AE48: + ldr r0, [r5, #0x70] + cmp r0, #0 + beq _0224AE52 + bl FUN_0200AB18 +_0224AE52: + ldr r0, [r5, #4] + cmp r0, #0 + beq _0224AE5C + bl FUN_0200CAB4 +_0224AE5C: + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224AE64: .word 0x022513F8 + thumb_func_end MOD18_0224ADBC + + thumb_func_start MOD18_0224AE68 +MOD18_0224AE68: ; 0x0224AE68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + bl FUN_020311F0 + cmp r0, #0 + beq _0224AE80 + mov r4, #1 + mvn r4, r4 +_0224AE80: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224AE8A + add r4, r0, #0 +_0224AE8A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224AE9C + add r0, r0, #1 + cmp r4, r0 + bne _0224AEDA + mov r0, #0 + pop {r3, r4, r5, pc} +_0224AE9C: + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r5, r1] + cmp r0, #0 + beq _0224AEC2 + ldr r0, _0224AF24 ; =0x022513F8 + mov r3, #0 + ldr r2, [r0] + strb r4, [r2, #4] + ldr r2, [r0] + strb r3, [r2, #5] + ldr r0, [r0] + ldr r1, [r5, r1] + ldrb r0, [r0, #5] + blx r1 + mov r0, #0x7f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0224AEC2: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224AEDA: + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224AF0C + ldr r0, _0224AF24 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_0224938C + ldr r1, _0224AF24 ; =0x022513F8 + ldr r2, [r1] + strb r0, [r2, #5] + ldr r0, [r1] + mov r1, #0x7f + lsl r1, r1, #2 + ldrb r0, [r0, #5] + ldr r1, [r5, r1] + blx r1 + mov r0, #0x7f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0224AF0C: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224AF24: .word 0x022513F8 + thumb_func_end MOD18_0224AE68 + + thumb_func_start MOD18_0224AF28 +MOD18_0224AF28: ; 0x0224AF28 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x25 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x7f + lsl r0, r0, #2 + str r6, [r4, #0xc] + add r1, r0, #0 + str r5, [r4, r0] + mov r2, #0 + add r1, #0x4a + strb r2, [r4, r1] + sub r0, r0, #4 + str r2, [r4, r0] + str r2, [r4, #0x48] + str r2, [r4, #0x60] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + add r0, r4, #0 + bl MOD18_0224AA4C + ldr r0, _0224AFA0 ; =0x00000246 + mov r1, #9 + strb r1, [r4, r0] + ldr r0, _0224AFA4 ; =MOD18_02249684 + ldr r2, _0224AFA8 ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _0224AFAC ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_0224AFA0: .word 0x00000246 +_0224AFA4: .word MOD18_02249684 +_0224AFA8: .word 0x00002710 +_0224AFAC: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224AF28 + + thumb_func_start MOD18_0224AFB0 +MOD18_0224AFB0: ; 0x0224AFB0 + push {r3, r4} + mov r3, #0x23 + lsl r3, r3, #4 + ldr r4, [r0, r3] + add r4, r4, r1 + cmp r4, r2 + blt _0224AFCC + sub r1, r2, r1 + str r1, [r0, r3] + ldr r1, [r0, r3] + cmp r1, #0 + bge _0224AFCC + mov r1, #0 + str r1, [r0, r3] +_0224AFCC: + mov r1, #0x8b + lsl r1, r1, #2 + ldr r3, [r0, r1] + sub r2, r2, #1 + cmp r3, r2 + blt _0224AFE4 + str r2, [r0, r1] + ldr r2, [r0, r1] + cmp r2, #0 + bge _0224AFE4 + mov r2, #0 + str r2, [r0, r1] +_0224AFE4: + pop {r3, r4} + bx lr + thumb_func_end MOD18_0224AFB0 + + thumb_func_start MOD18_0224AFE8 +MOD18_0224AFE8: ; 0x0224AFE8 + push {r4, lr} + add r4, r1, #0 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + mov r1, #1 + add r0, r4, #0 + mvn r1, r1 + bl MOD18_0224ADBC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224AFE8 + + thumb_func_start MOD18_0224B004 +MOD18_0224B004: ; 0x0224B004 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r7, r3, #0 + add r5, r0, #0 + add r4, r1, #0 + cmp r6, r7 + ble _0224B04A + cmp r4, #0 + ldr r0, [r5, #8] + beq _0224B022 + mov r1, #0 + mov r2, #1 + bl FUN_0205EC6C + b _0224B02A +_0224B022: + mov r1, #0 + add r2, r1, #0 + bl FUN_0205EC6C +_0224B02A: + add r0, r4, r7 + cmp r6, r0 + ldr r0, [r5, #8] + beq _0224B03C + mov r1, #1 + add r2, r1, #0 + bl FUN_0205EC6C + b _0224B044 +_0224B03C: + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224B044: + ldr r0, [r5, #8] + bl FUN_0205EC18 +_0224B04A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224B004 + + thumb_func_start MOD18_0224B04C +MOD18_0224B04C: ; 0x0224B04C + ldrh r2, [r0] + ldrh r3, [r0, #2] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _0224B060 + cmp r1, #0 + beq _0224B060 + mov r0, #0xff + bx lr +_0224B060: + cmp r3, #0xc + bne _0224B068 + mov r3, #0 + b _0224B074 +_0224B068: + cmp r3, #0x2c + bne _0224B070 + mov r3, #8 + b _0224B074 +_0224B070: + mov r0, #0xff + bx lr +_0224B074: + add r0, r2, #0 + sub r0, #0xf + cmp r0, #1 + bhi _0224B080 + mov r0, #0 + bx lr +_0224B080: + mov r1, #0 +_0224B082: + add r0, r2, #0 + sub r0, #0x2f + cmp r0, #1 + bhi _0224B08E + add r0, r1, r3 + bx lr +_0224B08E: + add r1, r1, #1 + sub r2, #0x20 + cmp r1, #8 + blt _0224B082 + mov r0, #0xff + bx lr + .align 2, 0 + thumb_func_end MOD18_0224B04C + + thumb_func_start MOD18_0224B09C +MOD18_0224B09C: ; 0x0224B09C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0204E6CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0224B04C + add r4, r0, #0 + bl FUN_0204E69C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224B0BE + mov r4, #0xff +_0224B0BE: + cmp r4, #0xff + beq _0224B118 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, sp, #0 + strb r4, [r0, #2] + strb r5, [r0, #1] + mov r1, #0 + strb r1, [r0, #3] + cmp r4, r5 + beq _0224B0EA + add r0, r5, #0 + bl FUN_0204EE9C + cmp r0, #0 + bne _0224B10A + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #3] + b _0224B10A +_0224B0EA: + add r0, r5, #0 + bl FUN_0204EE9C + cmp r0, #0 + beq _0224B10A + mov r1, #3 + add r0, sp, #0 + strb r1, [r0] + add r0, r5, #0 + mov r1, #1 + add r2, sp, #0 + mov r3, #0 + bl FUN_0204F0C8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B10A: + add r1, sp, #0 + mov r0, #0x53 + add r1, #1 + bl FUN_02030C4C + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B118: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224B09C + + thumb_func_start MOD18_0224B11C +MOD18_0224B11C: ; 0x0224B11C + ldr r3, _0224B124 ; =0x0204F775 + mov r0, #0x40 + bx r3 + nop +_0224B124: .word 0x0204F775 + thumb_func_end MOD18_0224B11C + + thumb_func_start MOD18_0224B128 +MOD18_0224B128: ; 0x0224B128 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl FUN_02030FE0 + cmp r0, #0 + beq _0224B180 + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _0224B180 + bl FUN_02031190 + ldrb r1, [r5, #1] + cmp r1, r0 + bne _0224B15C + ldr r0, _0224B184 ; =0x0000060C + bl FUN_020054C8 + bl FUN_0204F7E4 + add r0, r4, #0 + bl MOD18_0224BD54 + pop {r3, r4, r5, pc} +_0224B15C: + mov r0, #0x40 + bl FUN_0204F74C + ldrb r0, [r5, #2] + cmp r0, #0 + beq _0224B172 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224BEA4 + pop {r3, r4, r5, pc} +_0224B172: + bl MOD18_0223D648 + ldr r3, _0224B188 ; =MOD18_0224B11C + mov r1, #9 + mov r2, #1 + bl MOD18_0224DCB8 +_0224B180: + pop {r3, r4, r5, pc} + nop +_0224B184: .word 0x0000060C +_0224B188: .word MOD18_0224B11C + thumb_func_end MOD18_0224B128 + + thumb_func_start MOD18_0224B18C +MOD18_0224B18C: ; 0x0224B18C + mov r0, #3 + bx lr + thumb_func_end MOD18_0224B18C + + thumb_func_start MOD18_0224B190 +MOD18_0224B190: ; 0x0224B190 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0 + add r1, r5, #0 + bl FUN_02025F98 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02025D6C + cmp r0, #0 + beq _0224B1BE + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02025FA4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B1BE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224B190 + + thumb_func_start MOD18_0224B1C4 +MOD18_0224B1C4: ; 0x0224B1C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r5, #0 + add r4, r0, #0 + bl FUN_02025F0C + cmp r0, #0 + beq _0224B1E4 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} +_0224B1E4: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02025DC8 + bl MOD18_022494B4 + cmp r0, #0 + beq _0224B200 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02025DD4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B200: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224B1C4 + + thumb_func_start MOD18_0224B204 +MOD18_0224B204: ; 0x0224B204 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B218 + mov r4, #5 +_0224B218: + bl MOD18_0223D658 + mov r2, #0 + add r1, r4, #6 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + thumb_func_end MOD18_0224B204 + + thumb_func_start MOD18_0224B228 +MOD18_0224B228: ; 0x0224B228 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B23C + mov r4, #3 +_0224B23C: + bl MOD18_0223D658 + add r4, #0x2c + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224B228 + + thumb_func_start MOD18_0224B250 +MOD18_0224B250: ; 0x0224B250 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x48] + bl FUN_02001204 + add r5, r0, #0 + add r1, sp, #0 + ldr r0, [r4, #0x48] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0x17 + bl MOD18_0223E57C + add r0, r4, #0 + bl MOD18_0224BF84 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bhi _0224B29E + bhs _0224B2AA + cmp r5, #4 + bhi _0224B33E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B294: ; jump table + .short _0224B2B8 - _0224B294 - 2 ; case 0 + .short _0224B324 - _0224B294 - 2 ; case 1 + .short _0224B332 - _0224B294 - 2 ; case 2 + .short _0224B316 - _0224B294 - 2 ; case 3 + .short _0224B308 - _0224B294 - 2 ; case 4 +_0224B29E: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _0224B33E + mov r0, #0 + pop {r3, r4, r5, pc} +_0224B2AA: + ldr r0, _0224B344 ; =0x0000060E + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #2 + strb r1, [r4, r0] + b _0224B33E +_0224B2B8: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + bl FUN_02025DB0 + cmp r0, #0 + bne _0224B2DE + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x3c + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x17 + strb r1, [r4, r0] + b _0224B33E +_0224B2DE: + bl FUN_0202EDD8 + cmp r0, #0 + beq _0224B2F2 + bl MOD18_0223E6A0 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #3 + strb r1, [r4, r0] + b _0224B33E +_0224B2F2: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x17 + strb r1, [r4, r0] + b _0224B33E +_0224B308: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #8 + strb r1, [r4, r0] + b _0224B33E +_0224B316: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #6 + strb r1, [r4, r0] + b _0224B33E +_0224B324: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x11 + strb r1, [r4, r0] + b _0224B33E +_0224B332: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x14 + strb r1, [r4, r0] +_0224B33E: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224B344: .word 0x0000060E +_0224B348: .word 0x00000246 +_0224B34C: .word 0x000005DC + thumb_func_end MOD18_0224B250 + + thumb_func_start MOD18_0224B350 +MOD18_0224B350: ; 0x0224B350 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r0, r2, #1 + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + add r6, r1, #0 + ldr r0, [r0, #0xc] + str r3, [sp, #0x14] + bl FUN_02026CB4 + bl FUN_020269A0 + cmp r0, #3 + bge _0224B374 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] +_0224B374: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, [sp, #0x18] + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + str r2, [sp] + mov r0, #0xe + str r0, [sp, #4] + ldr r0, [sp, #0x18] + add r1, r5, #0 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224B45C ; =0x000002F9 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x11 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224B460 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x91 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [sp, #0x18] + mov r4, #0 + cmp r0, #0 + ble _0224B3FC + sub r0, r0, #1 + str r0, [sp, #0x1c] +_0224B3D4: + ldr r0, [sp, #0x1c] + cmp r4, r0 + ldr r0, [r5, #0x40] + bne _0224B3EA + mov r3, #1 + add r1, r7, #0 + add r2, r6, #5 + mvn r3, r3 + bl FUN_02012880 + b _0224B3F4 +_0224B3EA: + add r1, r7, #0 + add r2, r6, r4 + add r3, r4, #0 + bl FUN_02012880 +_0224B3F4: + ldr r0, [sp, #0x18] + add r4, r4, #1 + cmp r4, r0 + blt _0224B3D4 +_0224B3FC: + add r0, r7, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x20 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [sp, #0x18] + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x20 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0224B42C + str r0, [sp, #0x24] +_0224B42C: + str r5, [sp, #0x3c] + add r2, sp, #0x20 + ldrh r2, [r2, #0x10] + ldr r1, [sp, #0x18] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x20 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B45C: .word 0x000002F9 +_0224B460: .word 0x000003D9 + thumb_func_end MOD18_0224B350 + + thumb_func_start MOD18_0224B464 +MOD18_0224B464: ; 0x0224B464 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + add r1, r2, #0 + add r1, r1, #1 + str r1, [sp, #0x1c] + add r5, r0, #0 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + bl MOD18_022498EC + ldr r0, [sp, #0x1c] + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xe + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r1, #0x10 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224B558 ; =0x00000219 + mov r3, #0x11 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224B55C ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x91 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [sp, #0x1c] + mov r4, #0 + cmp r0, #0 + ble _0224B4F8 +_0224B4D0: + ldr r0, [sp, #0x14] + cmp r4, r0 + ldr r0, [r5, #0x40] + bne _0224B4E6 + mov r3, #1 + add r1, r7, #0 + add r2, r6, r4 + mvn r3, r3 + bl FUN_02012880 + b _0224B4F0 +_0224B4E6: + add r1, r7, #0 + add r2, r6, r4 + add r3, r4, #0 + bl FUN_02012880 +_0224B4F0: + ldr r0, [sp, #0x1c] + add r4, r4, #1 + cmp r4, r0 + blt _0224B4D0 +_0224B4F8: + add r0, r7, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x20 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [sp, #0x14] + add r1, sp, #0x20 + add r0, r0, #1 + strh r0, [r1, #0x10] + ldr r0, [sp, #0x1c] + strh r0, [r1, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _0224B528 + str r0, [sp, #0x24] +_0224B528: + str r5, [sp, #0x3c] + add r2, sp, #0x20 + ldrh r2, [r2, #0x10] + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x20 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B558: .word 0x00000219 +_0224B55C: .word 0x000003D9 + thumb_func_end MOD18_0224B464 + + thumb_func_start MOD18_0224B560 +MOD18_0224B560: ; 0x0224B560 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x48] + bl FUN_02001204 + add r4, r0, #0 + add r1, sp, #0 + ldr r0, [r5, #0x48] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0x16 + bl MOD18_0223E57C + add r0, r5, #0 + bl MOD18_0224BF84 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bhi _0224B5A6 + bhs _0224B5B0 + cmp r4, #2 + bhi _0224B600 + cmp r4, #0 + beq _0224B5BE + cmp r4, #1 + beq _0224B5D4 + cmp r4, #2 + beq _0224B5EA + b _0224B600 +_0224B5A6: + add r0, r0, #1 + cmp r4, r0 + bne _0224B600 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224B5B0: + ldr r0, _0224B60C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B610 ; =0x00000246 + mov r1, #0 + strb r1, [r5, r0] + b _0224B606 +_0224B5BE: + bl FUN_0202EDD8 + cmp r0, #0 + ldr r0, _0224B610 ; =0x00000246 + beq _0224B5CE + mov r1, #0xb + strb r1, [r5, r0] + b _0224B606 +_0224B5CE: + mov r1, #0xa + strb r1, [r5, r0] + b _0224B606 +_0224B5D4: + bl FUN_0202EDD8 + cmp r0, #0 + ldr r0, _0224B610 ; =0x00000246 + beq _0224B5E4 + mov r1, #0xd + strb r1, [r5, r0] + b _0224B606 +_0224B5E4: + mov r1, #0xc + strb r1, [r5, r0] + b _0224B606 +_0224B5EA: + bl FUN_0202EDD8 + cmp r0, #0 + ldr r0, _0224B610 ; =0x00000246 + beq _0224B5FA + mov r1, #0xf + strb r1, [r5, r0] + b _0224B606 +_0224B5FA: + mov r1, #0xe + strb r1, [r5, r0] + b _0224B606 +_0224B600: + ldr r0, _0224B610 ; =0x00000246 + mov r1, #2 + strb r1, [r5, r0] +_0224B606: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224B60C: .word 0x000005DC +_0224B610: .word 0x00000246 + thumb_func_end MOD18_0224B560 + + thumb_func_start MOD18_0224B614 +MOD18_0224B614: ; 0x0224B614 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #2 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B65E + add r4, r0, #0 +_0224B65E: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224B672 + add r0, r0, #1 + cmp r4, r0 + bne _0224B682 + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0224B672: + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _0224B6DC ; =0x00000246 + mov r1, #0 + strb r1, [r5, r0] + b _0224B6D4 +_0224B682: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224938C + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224B190 + cmp r0, #0 + beq _0224B6BA + bl MOD18_0223D658 + add r1, r6, #0 + bl MOD18_0224DE44 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x25 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224B6C8 +_0224B6BA: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x26 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224B6C8: + ldr r0, _0224B6DC ; =0x00000246 + mov r1, #0x13 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD18_022498EC +_0224B6D4: + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0224B6DC: .word 0x00000246 + thumb_func_end MOD18_0224B614 + + thumb_func_start MOD18_0224B6E0 +MOD18_0224B6E0: ; 0x0224B6E0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #6 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B72A + add r4, r0, #0 +_0224B72A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224B73E + add r0, r0, #1 + cmp r4, r0 + bne _0224B74E + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0224B73E: + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _0224B7D4 ; =0x00000246 + mov r1, #0 + strb r1, [r5, r0] + b _0224B7B8 +_0224B74E: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_02249360 + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224B1C4 + cmp r0, #1 + bne _0224B786 + bl MOD18_0223D658 + add r1, r6, #0 + bl MOD18_0224DE44 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x24 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224B7AC +_0224B786: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224B79E + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x37 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224B7AC +_0224B79E: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x27 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224B7AC: + ldr r0, _0224B7D4 ; =0x00000246 + mov r1, #0x16 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD18_022498EC +_0224B7B8: + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0224B7D4: .word 0x00000246 + thumb_func_end MOD18_0224B6E0 + + thumb_func_start MOD18_0224B7D8 +MOD18_0224B7D8: ; 0x0224B7D8 + push {r3, lr} + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224B7FC + ldr r0, _0224B800 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224B7FC + bl MOD18_0223D658 + bl MOD18_0224DD94 + mov r0, #1 + pop {r3, pc} +_0224B7FC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0224B800: .word 0x021C48B8 + thumb_func_end MOD18_0224B7D8 + + thumb_func_start MOD18_0224B804 +MOD18_0224B804: ; 0x0224B804 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + str r0, [sp, #4] + ldr r0, [r4, #0x38] + bl FUN_02055320 + lsl r1, r0, #0x10 + mov r0, #0xf + lsl r0, r0, #0x10 + sub r0, r0, r1 + str r0, [sp] + ldr r0, [r4, #0x38] + bl FUN_0205532C + lsl r1, r0, #0x10 + mov r0, #0x11 + lsl r0, r0, #0x10 + sub r1, r0, r1 + str r1, [sp, #8] + cmp r5, #0 + bne _0224B83E + ldr r0, [sp] + neg r0, r0 + str r0, [sp] + neg r0, r1 + str r0, [sp, #8] +_0224B83E: + ldr r1, [r4, #0x20] + add r0, sp, #0 + bl FUN_0201EF70 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224B804 + + thumb_func_start MOD18_0224B84C +MOD18_0224B84C: ; 0x0224B84C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #5 + bls _0224B868 + b _0224B970 +_0224B868: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B874: ; jump table + .short _0224B880 - _0224B874 - 2 ; case 0 + .short _0224B8A4 - _0224B874 - 2 ; case 1 + .short _0224B8D8 - _0224B874 - 2 ; case 2 + .short _0224B8EE - _0224B874 - 2 ; case 3 + .short _0224B912 - _0224B874 - 2 ; case 4 + .short _0224B946 - _0224B874 - 2 ; case 5 +_0224B880: + ldr r0, _0224B978 ; =0x0000060D + bl FUN_020054C8 + mov r1, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r5] + b _0224B970 +_0224B8A4: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_0205537C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224B804 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x29 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] + b _0224B970 +_0224B8D8: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_0224EA74 + mov r0, #3 + str r0, [r5] + b _0224B970 +_0224B8EE: + ldr r0, _0224B97C ; =0x0000060E + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x28 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r5] + b _0224B970 +_0224B912: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_0205537C + mov r0, #0 + add r1, r4, #0 + bl MOD18_0224B804 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + add r1, r0, #0 + add r2, r0, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r5] + b _0224B970 +_0224B946: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + add r0, r4, #0 + bl MOD18_02245054 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205EDE8 + add r0, r4, #0 + bl MOD18_0224BD54 + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0224B970: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0224B978: .word 0x0000060D +_0224B97C: .word 0x0000060E + thumb_func_end MOD18_0224B84C + + thumb_func_start MOD18_0224B980 +MOD18_0224B980: ; 0x0224B980 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02021A20 + ldr r0, [r4, #0x6c] + bl FUN_02021A20 + ldr r0, [r4, #0x70] + bl FUN_0200AB18 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _0224B9A6 + mov r0, #0 + blx r1 +_0224B9A6: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224B9B4 + bl FUN_0205EBEC + mov r0, #0 + str r0, [r4, #8] +_0224B9B4: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223D658 + bl MOD18_0224DD94 + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224B980 + + thumb_func_start MOD18_0224B9D0 +MOD18_0224B9D0: ; 0x0224B9D0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + ldr r2, _0224BD40 ; =0x00000246 + add r4, r1, #0 + ldrb r3, [r4, r2] + add r6, r0, #0 + cmp r3, #0x17 + bhi _0224BABE + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0224B9EC: ; jump table + .short _0224BA1C - _0224B9EC - 2 ; case 0 + .short _0224BA54 - _0224B9EC - 2 ; case 1 + .short _0224BA5C - _0224B9EC - 2 ; case 2 + .short _0224BC5C - _0224B9EC - 2 ; case 3 + .short _0224BD3A - _0224B9EC - 2 ; case 4 + .short _0224BD3A - _0224B9EC - 2 ; case 5 + .short _0224BA70 - _0224B9EC - 2 ; case 6 + .short _0224BAB4 - _0224B9EC - 2 ; case 7 + .short _0224BAD8 - _0224B9EC - 2 ; case 8 + .short _0224BB1A - _0224B9EC - 2 ; case 9 + .short _0224BB22 - _0224B9EC - 2 ; case 10 + .short _0224BB56 - _0224B9EC - 2 ; case 11 + .short _0224BB6E - _0224B9EC - 2 ; case 12 + .short _0224BBA2 - _0224B9EC - 2 ; case 13 + .short _0224BBBA - _0224B9EC - 2 ; case 14 + .short _0224BBEE - _0224B9EC - 2 ; case 15 + .short _0224BC06 - _0224B9EC - 2 ; case 16 + .short _0224BC92 - _0224B9EC - 2 ; case 17 + .short _0224BCC2 - _0224B9EC - 2 ; case 18 + .short _0224BCCA - _0224B9EC - 2 ; case 19 + .short _0224BCDE - _0224B9EC - 2 ; case 20 + .short _0224BD0E - _0224B9EC - 2 ; case 21 + .short _0224BD16 - _0224B9EC - 2 ; case 22 + .short _0224BD2A - _0224B9EC - 2 ; case 23 +_0224BA1C: + mov r0, #0x17 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x17 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1a + strh r0, [r4, r1] + mov r1, #0 + ldr r3, _0224BD44 ; =MOD18_0224B204 + add r0, r4, #0 + mov r2, #5 + str r1, [sp] + bl MOD18_0224B350 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #1 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BA54: + bl MOD18_0224B250 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BA5C: + bl FUN_0204F7FC + bl MOD18_0223E6A0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0224B980 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BA70: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223D658 + bl MOD18_0224DD94 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + mov r3, #0 + str r3, [sp] + add r2, r0, #0 + ldr r0, [r4, #0xc] + add r1, r5, #0 + ldr r0, [r0, #8] + bl MOD18_0224DA00 + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #7 + add r1, #0x3a + add sp, #4 + strb r0, [r4, r1] + pop {r3, r4, r5, r6, pc} +_0224BAB4: + ldr r0, _0224BD48 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _0224BAC0 +_0224BABE: + b _0224BD3A +_0224BAC0: + sub r2, #0x3a + ldr r0, [r4, r2] + bl MOD18_0224DAA8 + mov r0, #0x83 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, #0x3a + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BAD8: + bl MOD18_0223D658 + bl MOD18_0224DD94 + mov r0, #0x16 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x16 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1a + strh r0, [r4, r1] + mov r0, #1 + str r0, [sp] + ldr r3, _0224BD4C ; =MOD18_0224B228 + add r0, r4, #0 + mov r1, #0x28 + mov r2, #3 + bl MOD18_0224B464 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #9 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BB1A: + bl MOD18_0224B560 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BB22: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E494 + bl MOD18_0223C7D4 + mov r0, #1 + sub r1, r0, #7 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x30 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BB56: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x39 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BB6E: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E46C + bl MOD18_0223D30C + mov r0, #1 + sub r1, r0, #7 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x31 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BBA2: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x3a + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BBBA: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E480 + bl MOD18_02240BB8 + mov r0, #1 + sub r1, r0, #7 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x32 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BBEE: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x3b + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BC06: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224BC1C + ldr r0, _0224BD48 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _0224BC1E +_0224BC1C: + b _0224BD3A +_0224BC1E: + mov r0, #1 + mov r1, #0 + sub r2, r1, #6 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + bl MOD18_0224DD94 + bl FUN_0202EDD8 + cmp r0, #0 + beq _0224BC42 + bl MOD18_0223E444 + b _0224BC46 +_0224BC42: + bl MOD18_0223E458 +_0224BC46: + bl MOD18_02240C14 + bl MOD18_0223C848 + bl MOD18_0223D370 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #8 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BC5C: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _0224BC86 + mov r0, #0xb + mov r1, #0xc + bl FUN_020169D8 + mov r1, #0 + mov r2, #0xc + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r5] + str r0, [r5, #4] + ldr r0, [r4, #0xc] + ldr r1, _0224BD50 ; =MOD18_0224B84C + add r2, r5, #0 + bl FUN_020463CC +_0224BC86: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0224B980 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BC92: + mov r0, #2 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #2 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD18_0224AAA4 + add r0, r4, #0 + mov r1, #0x1c + bl MOD18_0224CB34 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x12 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BCC2: + bl MOD18_0224B614 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BCCA: + add r0, r4, #0 + bl MOD18_0224B7D8 + cmp r0, #0 + beq _0224BD3A + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x11 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BCDE: + mov r0, #6 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #6 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD18_0224AAD4 + add r0, r4, #0 + mov r1, #0x20 + bl MOD18_0224CB34 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x15 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BD0E: + bl MOD18_0224B6E0 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BD16: + add r0, r4, #0 + bl MOD18_0224B7D8 + cmp r0, #0 + beq _0224BD3A + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x14 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BD2A: + add r0, r4, #0 + bl MOD18_0224B7D8 + cmp r0, #0 + beq _0224BD3A + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0 + strb r1, [r4, r0] +_0224BD3A: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0224BD40: .word 0x00000246 +_0224BD44: .word MOD18_0224B204 +_0224BD48: .word 0x021C48B8 +_0224BD4C: .word MOD18_0224B228 +_0224BD50: .word MOD18_0224B84C + thumb_func_end MOD18_0224B9D0 + + thumb_func_start MOD18_0224BD54 +MOD18_0224BD54: ; 0x0224BD54 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #1 + bl MOD18_0223E56C + mov r1, #0x25 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + str r5, [r4, #0xc] + bl MOD18_0223D658 + mov r1, #0x91 + lsl r1, r1, #2 + mov r2, #1 + bl MOD18_0224DB80 + ldr r0, _0224BDE4 ; =0x00000246 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + mov r0, #4 + bl FUN_0205EB38 + str r0, [r4, #8] + mov r1, #0xc8 + mov r2, #0x14 + mov r3, #0x7a + bl FUN_0205EC48 + mov r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C + ldr r0, _0224BDE8 ; =MOD18_0224B9D0 + ldr r2, _0224BDEC ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _0224BDF0 ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224BDE4: .word 0x00000246 +_0224BDE8: .word MOD18_0224B9D0 +_0224BDEC: .word 0x00002710 +_0224BDF0: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224BD54 + + thumb_func_start MOD18_0224BDF4 +MOD18_0224BDF4: ; 0x0224BDF4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224BE0A + cmp r0, #1 + beq _0224BE30 + cmp r0, #2 + beq _0224BE68 + pop {r3, r4, r5, pc} +_0224BE0A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224BE78 + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _0224BE7C ; =0x0225065C + ldr r0, [r0, #8] + ldr r2, _0224BE80 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #8] + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_0224BE30: + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224BE78 + cmp r0, #0 + bne _0224BE50 + add r1, r4, #0 + mov r0, #0x59 + add r1, #0xc + bl FUN_020311D0 + b _0224BE5E +_0224BE50: + mov r0, #0x40 + bl FUN_0204F774 + bl MOD18_0223D638 + bl MOD18_0224DD94 +_0224BE5E: + mov r0, #2 + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224BE68: + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224BE78: + pop {r3, r4, r5, pc} + nop +_0224BE7C: .word 0x0225065C +_0224BE80: .word 0x000003D9 + thumb_func_end MOD18_0224BDF4 + + thumb_func_start MOD18_0224BE84 +MOD18_0224BE84: ; 0x0224BE84 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224BE96 + mov r1, #4 + bl FUN_020021EC +_0224BE96: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224BE84 + + thumb_func_start MOD18_0224BEA4 +MOD18_0224BEA4: ; 0x0224BEA4 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x25 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + ldr r0, _0224BF0C ; =MOD18_0224BDF4 + ldr r2, _0224BF10 ; =0x00002710 + str r6, [r4, #4] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + bl MOD18_0223D638 + add r6, r0, #0 + ldrb r0, [r5, #1] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r6, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x43 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldrb r0, [r5] + ldr r2, _0224BF14 ; =MOD18_0224BE84 + strb r0, [r4, #0xc] + ldrb r0, [r5, #1] + strb r0, [r4, #0xd] + ldrb r0, [r5, #2] + strb r0, [r4, #0xe] + ldr r1, [r4, #0x10] + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, r5, r6, pc} + nop +_0224BF0C: .word MOD18_0224BDF4 +_0224BF10: .word 0x00002710 +_0224BF14: .word MOD18_0224BE84 + thumb_func_end MOD18_0224BEA4 + + thumb_func_start MOD18_0224BF18 +MOD18_0224BF18: ; 0x0224BF18 + push {r4, lr} + add r4, r2, #0 + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl FUN_0204EEBC + cmp r0, #0 + beq _0224BF30 + mov r0, #0x5a + add r1, r4, #0 + bl FUN_02030C4C +_0224BF30: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224BF18 + + thumb_func_start MOD18_0224BF34 +MOD18_0224BF34: ; 0x0224BF34 + push {r3, r4, r5, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0224BF6A + bl MOD18_0223D648 + add r5, r0, #0 + ldrb r0, [r4, #1] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D648 + ldr r3, _0224BF7C ; =MOD18_0224B11C + mov r1, #8 + mov r2, #1 + bl MOD18_0224DCB8 + ldr r0, _0224BF80 ; =0x00000425 + bl FUN_0200521C +_0224BF6A: + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl FUN_0204EEBC + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl MOD18_0224727C + pop {r3, r4, r5, pc} + .align 2, 0 +_0224BF7C: .word MOD18_0224B11C +_0224BF80: .word 0x00000425 + thumb_func_end MOD18_0224BF34 + + thumb_func_start MOD18_0224BF84 +MOD18_0224BF84: ; 0x0224BF84 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, _0224BFA4 ; =0x0000024A + ldr r0, [r5, #0x48] + ldrh r4, [r5, r1] + add r1, r5, r1 + bl FUN_0200143C + ldr r0, _0224BFA4 ; =0x0000024A + ldrh r0, [r5, r0] + cmp r4, r0 + beq _0224BFA2 + ldr r0, _0224BFA8 ; =0x000005DC + bl FUN_020054C8 +_0224BFA2: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224BFA4: .word 0x0000024A +_0224BFA8: .word 0x000005DC + thumb_func_end MOD18_0224BF84 + + thumb_func_start MOD18_0224BFAC +MOD18_0224BFAC: ; 0x0224BFAC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + ldr r0, [r6, #0xc] + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02025D40 + add r7, r4, r0 + mov r4, #0 +_0224BFC6: + cmp r4, #0 + bne _0224BFCE + mov r5, #0x21 + b _0224BFE6 +_0224BFCE: + ldr r0, _0224C09C ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C0A0 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #5 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224BFE6: + mov r0, #0 + cmp r4, #0 + ble _0224C002 + mov r1, #0x21 + add r3, r0, #0 + lsl r1, r1, #4 +_0224BFF2: + add r2, r6, r0 + ldrb r2, [r2, r1] + cmp r5, r2 + bne _0224BFFC + add r5, r3, #0 +_0224BFFC: + add r0, r0, #1 + cmp r0, r4 + blt _0224BFF2 +_0224C002: + cmp r5, #0 + bne _0224C00A + sub r4, r4, #1 + b _0224C092 +_0224C00A: + add r0, r5, #0 + bl MOD18_0224DFFC + str r0, [sp, #4] + add r0, r5, #0 + bl MOD18_0224E00C + str r0, [sp, #8] + ldr r0, [sp, #4] + cmp r0, #0 + bne _0224C02A + ldr r0, [sp, #8] + cmp r0, #0 + bne _0224C02A + sub r4, r4, #1 + b _0224C092 +_0224C02A: + mov r1, #0x21 + add r0, r6, r4 + lsl r1, r1, #4 + str r0, [sp] + strb r5, [r0, r1] + add r0, r5, #0 + bl MOD18_0224DFEC + ldr r1, _0224C0A4 ; =0x00000215 + ldr r2, [sp] + strb r0, [r2, r1] + add r0, r2, #0 + ldrb r0, [r0, r1] + cmp r0, #6 + bne _0224C064 + ldr r0, _0224C09C ; =0x5D588B65 + add r2, r7, #0 + mul r2, r0 + ldr r0, _0224C0A0 ; =0x00269EC3 + add r7, r2, r0 + lsr r2, r7, #0x10 + lsl r0, r2, #2 + add r0, r2, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r2, r0, #1 + ldr r0, [sp] + strb r2, [r0, r1] +_0224C064: + ldr r0, _0224C09C ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C0A0 ; =0x00269EC3 + add r7, r1, r0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + sub r0, r1, r0 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + bne _0224C07E + lsr r0, r7, #0x10 + b _0224C084 +_0224C07E: + lsr r0, r7, #0x10 + mul r1, r0 + lsr r0, r1, #0x10 +_0224C084: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #4] + add r2, r0, r1 + ldr r1, _0224C0A8 ; =0x0000021A + ldr r0, [sp] + strb r2, [r0, r1] +_0224C092: + add r4, r4, #1 + cmp r4, #5 + blt _0224BFC6 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C09C: .word 0x5D588B65 +_0224C0A0: .word 0x00269EC3 +_0224C0A4: .word 0x00000215 +_0224C0A8: .word 0x0000021A + thumb_func_end MOD18_0224BFAC + + thumb_func_start MOD18_0224C0AC +MOD18_0224C0AC: ; 0x0224C0AC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + ldr r0, [r6, #0xc] + add r4, r1, #0 + bl FUN_020377AC + add r5, r0, #0 + bl FUN_02026CC4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02024DA0 + bl FUN_02024CA4 + str r0, [sp, #4] + add r0, r7, #0 + bl FUN_02025D40 + add r7, r4, r0 + mov r4, #0 +_0224C0D8: + ldr r0, _0224C1B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C1B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + mov r0, #0x8a + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 + mov r0, #0 + cmp r4, #0 + ble _0224C10C + mov r1, #0x21 + add r3, r0, #0 + lsl r1, r1, #4 +_0224C0FC: + add r2, r6, r0 + ldrb r2, [r2, r1] + cmp r5, r2 + bne _0224C106 + add r5, r3, #0 +_0224C106: + add r0, r0, #1 + cmp r0, r4 + blt _0224C0FC +_0224C10C: + cmp r5, #0 + bne _0224C114 + sub r4, r4, #1 + b _0224C1A6 +_0224C114: + mov r1, #0x21 + add r0, r6, r4 + lsl r1, r1, #4 + str r0, [sp] + strb r5, [r0, r1] + add r0, r5, #0 + bl FUN_0204CAB0 + ldr r2, _0224C1B8 ; =0x00000215 + ldr r1, [sp] + strb r0, [r1, r2] + ldr r0, [sp, #4] + cmp r0, #0 + bne _0224C13E + add r0, r5, #0 + bl FUN_0204CB00 + cmp r0, #1 + bne _0224C13E + sub r4, r4, #1 + b _0224C1A6 +_0224C13E: + ldr r0, _0224C1B8 ; =0x00000215 + ldr r1, [sp] + ldrb r1, [r1, r0] + cmp r1, #0 + bne _0224C14C + sub r4, r4, #1 + b _0224C1A6 +_0224C14C: + cmp r1, #6 + bne _0224C16C + ldr r1, _0224C1B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C1B4 ; =0x00269EC3 + add r7, r2, r1 + lsr r2, r7, #0x10 + lsl r1, r2, #2 + add r1, r2, r1 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r2, r1, #1 + ldr r1, [sp] + strb r2, [r1, r0] +_0224C16C: + add r0, r5, #0 + bl FUN_0204CAC0 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_0204CAD0 + ldr r1, _0224C1B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C1B4 ; =0x00269EC3 + add r7, r2, r1 + ldr r1, [sp, #8] + sub r0, r0, r1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + bne _0224C192 + lsr r0, r7, #0x10 + b _0224C198 +_0224C192: + lsr r0, r7, #0x10 + mul r1, r0 + lsr r0, r1, #0x10 +_0224C198: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #8] + add r2, r0, r1 + ldr r1, _0224C1BC ; =0x0000021A + ldr r0, [sp] + strb r2, [r0, r1] +_0224C1A6: + add r4, r4, #1 + cmp r4, #5 + blt _0224C0D8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C1B0: .word 0x5D588B65 +_0224C1B4: .word 0x00269EC3 +_0224C1B8: .word 0x00000215 +_0224C1BC: .word 0x0000021A + thumb_func_end MOD18_0224C0AC + + thumb_func_start MOD18_0224C1C0 +MOD18_0224C1C0: ; 0x0224C1C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0xc] + add r7, r2, #0 + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_022493F4 + ldr r1, _0224C260 ; =0x00000215 + add r2, r5, r4 + ldrb r1, [r2, r1] + cmp r1, r0 + beq _0224C1EE + ldr r0, _0224C264 ; =0x0000FFFD + pop {r3, r4, r5, r6, r7, pc} +_0224C1EE: + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_0224940C + ldr r1, _0224C268 ; =0x0000021A + add r2, r5, r4 + add r3, r0, #0 + ldrb r0, [r2, r1] + cmp r0, r3 + ble _0224C206 + ldr r0, _0224C26C ; =0x0000FFFB + pop {r3, r4, r5, r6, r7, pc} +_0224C206: + add r0, r1, #0 + add r0, #0x2e + ldrb r0, [r5, r0] + cmp r0, #1 + bne _0224C21E + sub r1, #0xa + ldrb r1, [r2, r1] + add r0, r6, #0 + bl FUN_02026298 + str r0, [sp] + b _0224C240 +_0224C21E: + cmp r0, #0 + bne _0224C230 + sub r1, #0xa + ldrb r1, [r2, r1] + add r0, r6, #0 + bl FUN_02025FD8 + str r0, [sp] + b _0224C240 +_0224C230: + cmp r0, #2 + bne _0224C240 + sub r1, #0xa + ldrb r1, [r2, r1] + add r0, r6, #0 + bl FUN_020261C8 + str r0, [sp] +_0224C240: + ldr r0, [sp] + cmp r0, #0 + beq _0224C250 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02026080 + b _0224C254 +_0224C250: + ldr r0, _0224C270 ; =0x0000FFFC + pop {r3, r4, r5, r6, r7, pc} +_0224C254: + mov r0, #0x21 + add r1, r5, r4 + lsl r0, r0, #4 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C260: .word 0x00000215 +_0224C264: .word 0x0000FFFD +_0224C268: .word 0x0000021A +_0224C26C: .word 0x0000FFFB +_0224C270: .word 0x0000FFFC + thumb_func_end MOD18_0224C1C0 + + thumb_func_start MOD18_0224C274 +MOD18_0224C274: ; 0x0224C274 + push {r4, r5, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r4, #3 + cmp r0, #2 + bne _0224C288 + mov r4, #2 +_0224C288: + add r0, r5, #0 + bl MOD18_022498EC + add r0, r4, #0 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + lsl r0, r4, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224C410 ; =0x00000391 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224C414 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r5, r1] + cmp r0, #1 + bne _0224C31E + sub r1, #0x24 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD18_0224BFAC + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0xd + mov r3, #0 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0xe + mov r3, #1 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + mov r2, #0xf + add r1, r0, #0 + add r3, r2, #0 + ldr r0, [r5, #0x40] + sub r3, #0x11 + bl FUN_02012880 + b _0224C396 +_0224C31E: + cmp r0, #0 + bne _0224C36C + sub r1, #0x24 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD18_0224C0AC + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0x10 + mov r3, #0 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0x11 + mov r3, #1 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + mov r2, #0x12 + add r1, r0, #0 + add r3, r2, #0 + ldr r0, [r5, #0x40] + sub r3, #0x14 + bl FUN_02012880 + b _0224C396 +_0224C36C: + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0x1c + mov r3, #0 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + mov r2, #0x16 + add r1, r0, #0 + add r3, r2, #0 + ldr r0, [r5, #0x40] + sub r3, #0x18 + bl FUN_02012880 +_0224C396: + bl MOD18_0224DAD8 + add r1, sp, #0x14 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x40] + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x20] + lsl r0, r4, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + mov r0, #0x13 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0x13 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r5, r1] + add r2, sp, #0x14 + ldrh r1, [r2, #0x12] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x14 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + mov r0, #0x8b + lsl r0, r0, #2 + ldr r1, [r5, r0] + add r0, #0x1e + strh r1, [r5, r0] + add r0, r5, #0 + add r0, #0x10 + bl FUN_020191D0 + add r0, r5, #0 + add sp, #0x34 + pop {r4, r5, pc} + nop +_0224C410: .word 0x00000391 +_0224C414: .word 0x000003D9 + thumb_func_end MOD18_0224C274 + + thumb_func_start MOD18_0224C418 +MOD18_0224C418: ; 0x0224C418 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + mov r1, #0x13 + add r7, r0, #0 + add r6, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + cmp r6, #0 + beq _0224C434 + add r0, r7, #0 + bl FUN_02001B80 +_0224C434: + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xf + bl FUN_02019620 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r1, _0224C504 ; =0x00000247 + ldr r2, [r4, #0x68] + ldrb r1, [r4, r1] + add r1, #0x17 + bl FUN_0200A8E0 + mov r3, #1 + add r0, r4, #0 + str r3, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r4, #0x68] + add r0, #0x20 + bl FUN_0201BD84 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224C4C2 + ldr r2, _0224C508 ; =0x00000215 + add r3, r4, r5 + ldrb r2, [r3, r2] + ldr r0, [r4, #0x70] + mov r1, #2 + bl FUN_0200B164 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r2, _0224C50C ; =0x0000021A + add r3, r4, r5 + ldrb r2, [r3, r2] + ldr r0, [r4, #0x70] + mov r1, #6 + mov r3, #2 + bl FUN_0200AD38 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r4, #0x68] + mov r1, #0x19 + bl FUN_0200A8E0 + ldr r0, [r4, #0x70] + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x68] + bl FUN_0200B7B8 + mov r0, #0x11 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x6c] + add r0, #0x20 + mov r3, #1 + bl FUN_0201BD84 +_0224C4C2: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _0224C4CC + add r5, r0, #0 +_0224C4CC: + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224C4E4 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_02249AF4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224C4E4: + cmp r0, #0 + bne _0224C4F6 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_0224A9B4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224C4F6: + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_0224A2B4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C504: .word 0x00000247 +_0224C508: .word 0x00000215 +_0224C50C: .word 0x0000021A + thumb_func_end MOD18_0224C418 + + thumb_func_start MOD18_0224C510 +MOD18_0224C510: ; 0x0224C510 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r6, r1, #0 + mov r1, #0x13 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + bl FUN_02001470 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + str r0, [sp, #0x2c] + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xf + mov r5, #0 + bl FUN_02019620 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224C546 + ldr r0, [sp, #0xc] + bl FUN_02001B80 +_0224C546: + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + bne _0224C550 + b _0224C6C4 +_0224C550: + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224C5D4 + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_022493DC + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + bl FUN_02025D40 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r1, r1, r0 + ldr r0, [sp, #0x24] + add r7, r0, r1 + bl MOD18_0224DFEC + add r5, r0, #0 + cmp r5, #6 + bne _0224C598 + ldr r0, _0224C7B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C7B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #2 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224C598: + ldr r0, [sp, #0x24] + bl MOD18_0224DFFC + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + bl MOD18_0224E00C + ldr r1, _0224C7B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C7B4 ; =0x00269EC3 + add r1, r2, r1 + ldr r2, [sp, #0x28] + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + bne _0224C5BC + b _0224C5C2 +_0224C5BC: + lsr r0, r1, #0x10 + add r1, r0, #0 + mul r1, r2 +_0224C5C2: + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x28] + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r7, r0, #1 + b _0224C6C4 +_0224C5D4: + cmp r0, #0 + bne _0224C652 + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0224938C + str r0, [sp, #0x20] + ldr r0, [sp, #0x2c] + bl FUN_02025D40 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r1, r1, r0 + ldr r0, [sp, #0x20] + add r7, r0, r1 + bl FUN_0204CAB0 + add r5, r0, #0 + cmp r5, #6 + bne _0224C616 + ldr r0, _0224C7B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C7B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #2 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224C616: + ldr r0, [sp, #0x20] + bl FUN_0204CAC0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + bl FUN_0204CAD0 + ldr r1, _0224C7B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C7B4 ; =0x00269EC3 + add r1, r2, r1 + ldr r2, [sp, #0x14] + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + bne _0224C63A + b _0224C640 +_0224C63A: + lsr r0, r1, #0x10 + add r1, r0, #0 + mul r1, r2 +_0224C640: + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x14] + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r7, r0, #1 + b _0224C6C4 +_0224C652: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_02249438 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x2c] + bl FUN_02025D40 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r1, r1, r0 + ldr r0, [sp, #0x1c] + add r7, r0, r1 + bl MOD18_0224DFBC + add r5, r0, #0 + cmp r5, #6 + bne _0224C690 + ldr r0, _0224C7B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C7B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #2 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224C690: + ldr r0, [sp, #0x1c] + bl MOD18_0224DFCC + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + bl MOD18_0224DFDC + ldr r1, _0224C7B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C7B4 ; =0x00269EC3 + add r1, r2, r1 + ldr r2, [sp, #0x18] + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + bne _0224C6B4 + b _0224C6BA +_0224C6B4: + lsr r0, r1, #0x10 + add r1, r0, #0 + mul r1, r2 +_0224C6BA: + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x18] + add r7, r0, r1 +_0224C6C4: + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r1, _0224C7B8 ; =0x00000247 + ldr r2, [r4, #0x68] + ldrb r1, [r4, r1] + add r1, #0x17 + bl FUN_0200A8E0 + mov r3, #1 + add r0, r4, #0 + str r3, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r4, #0x68] + add r0, #0x20 + bl FUN_0201BD84 + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _0224C778 + cmp r5, #0 + beq _0224C74E + ldr r0, [r4, #0x70] + mov r1, #2 + add r2, r5, #0 + bl FUN_0200B164 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x70] + mov r1, #6 + add r2, r7, #0 + mov r3, #2 + bl FUN_0200AD38 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r4, #0x68] + mov r1, #0x19 + bl FUN_0200A8E0 + ldr r0, [r4, #0x70] + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x68] + bl FUN_0200B7B8 + mov r0, #0x11 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x6c] + add r0, #0x20 + mov r3, #1 + bl FUN_0201BD84 + ldr r0, _0224C7BC ; =0x00000215 + strb r5, [r4, r0] + add r0, r0, #5 + strb r7, [r4, r0] + b _0224C778 +_0224C74E: + ldr r0, _0224C7BC ; =0x00000215 + strb r5, [r4, r0] + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r4, #0x68] + mov r1, #0x1a + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x68] + add r0, #0x20 + mov r3, #1 + bl FUN_0201BD84 +_0224C778: + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224C790 + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD18_02249AF4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_0224C790: + cmp r0, #0 + bne _0224C7A2 + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD18_0224A9B4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_0224C7A2: + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD18_0224A2B4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224C7B0: .word 0x5D588B65 +_0224C7B4: .word 0x00269EC3 +_0224C7B8: .word 0x00000247 +_0224C7BC: .word 0x00000215 + thumb_func_end MOD18_0224C510 + + thumb_func_start MOD18_0224C7C0 +MOD18_0224C7C0: ; 0x0224C7C0 + cmp r0, #5 + blt _0224C7C8 + mov r0, #0 + bx lr +_0224C7C8: + add r1, r1, r0 + mov r0, #0x21 + lsl r0, r0, #4 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224C7C0 + + thumb_func_start MOD18_0224C7D4 +MOD18_0224C7D4: ; 0x0224C7D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + bl MOD18_022498EC + mov r0, #6 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224C930 ; =0x00000301 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224C934 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x92 + lsl r2, r2, #2 + ldrb r0, [r5, r2] + cmp r0, #1 + bne _0224C83C + mov r0, #0 + mov r1, #0x1a + sub r2, #0xd + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + bl MOD18_0223D678 + ldr r1, _0224C938 ; =0x0000023B + mov r2, #0 + bl MOD18_0224DB80 + b _0224C876 +_0224C83C: + cmp r0, #0 + bne _0224C85C + mov r0, #0 + mov r1, #0x1a + sub r2, #0x11 + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + bl MOD18_0223D678 + ldr r1, _0224C93C ; =0x00000237 + mov r2, #0 + bl MOD18_0224DB80 + b _0224C876 +_0224C85C: + mov r0, #0 + mov r1, #0x1a + sub r2, #0xf + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + bl MOD18_0223D678 + ldr r1, _0224C940 ; =0x00000239 + mov r2, #0 + bl MOD18_0224DB80 +_0224C876: + mov r7, #0x21 + mov r4, #0 + lsl r7, r7, #4 +_0224C87C: + add r2, r5, r4 + ldrb r2, [r2, r7] + ldr r0, [r5, #0x40] + add r1, r6, #0 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #5 + blt _0224C87C + mov r2, #0 + ldr r0, [r5, #0x40] + add r1, r6, #0 + sub r3, r2, #2 + bl FUN_02012880 + add r0, r6, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x14 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x40] + mov r1, #6 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x20] + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _0224C944 ; =MOD18_0224C418 + ldr r1, _0224C948 ; =MOD18_0224C7C0 + str r0, [sp, #0x18] + mov r0, #0x81 + str r5, [sp, #0x30] + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, #0x44 + ldrb r0, [r5, r0] + add r0, #0xd + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r5, r1] + add r1, #0x18 + ldrb r0, [r5, r1] + add r0, #0xd + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, #0x1e + strh r0, [r5, r1] + add r2, sp, #0x14 + ldrh r1, [r2, #0x12] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x14 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + add r5, #0x10 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C930: .word 0x00000301 +_0224C934: .word 0x000003D9 +_0224C938: .word 0x0000023B +_0224C93C: .word 0x00000237 +_0224C940: .word 0x00000239 +_0224C944: .word MOD18_0224C418 +_0224C948: .word MOD18_0224C7C0 + thumb_func_end MOD18_0224C7D4 + + thumb_func_start MOD18_0224C94C +MOD18_0224C94C: ; 0x0224C94C + push {r4, lr} + add r4, r0, #0 + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + beq _0224C96C + add r0, r4, #0 + add r0, #0x20 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019178 +_0224C96C: + add r0, r4, #0 + bl MOD18_022498EC + pop {r4, pc} + thumb_func_end MOD18_0224C94C + + thumb_func_start MOD18_0224C974 +MOD18_0224C974: ; 0x0224C974 + push {r4, lr} + mov r2, #0x92 + add r4, r1, #0 + lsl r2, r2, #2 + ldrb r2, [r4, r2] + cmp r2, #1 + bne _0224C990 + bl MOD18_022493DC + add r1, r0, #0 + mov r0, #2 + bl MOD18_0224CAB4 + b _0224C9AE +_0224C990: + cmp r2, #0 + bne _0224C9A2 + bl MOD18_0224938C + add r1, r0, #0 + mov r0, #2 + bl MOD18_0224CAC8 + b _0224C9AE +_0224C9A2: + bl MOD18_02249438 + add r1, r0, #0 + mov r0, #2 + bl MOD18_0224CAA0 +_0224C9AE: + ldr r1, _0224C9C0 ; =0x00000215 + mov r0, #4 + ldrb r1, [r4, r1] + bl MOD18_0224CAA0 + mov r0, #0xa + bl MOD18_0224CA58 + pop {r4, pc} + .align 2, 0 +_0224C9C0: .word 0x00000215 + thumb_func_end MOD18_0224C974 + + thumb_func_start MOD18_0224C9C4 +MOD18_0224C9C4: ; 0x0224C9C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + ldr r1, _0224CA24 ; =0x00000215 + add r4, r0, #0 + ldrb r0, [r5, r1] + add r1, r1, #5 + ldrb r1, [r5, r1] + bl MOD18_02249450 + cmp r0, #0 + beq _0224CA1E + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r5, r1] + cmp r0, #1 + bne _0224C9FA + sub r1, r1, #4 + ldrb r1, [r5, r1] + add r0, r4, #0 + bl FUN_02026264 + b _0224CA18 +_0224C9FA: + cmp r0, #0 + bne _0224CA0A + sub r1, r1, #4 + ldrb r1, [r5, r1] + add r0, r4, #0 + bl FUN_02025FA4 + b _0224CA18 +_0224CA0A: + cmp r0, #2 + bne _0224CA18 + sub r1, r1, #4 + ldrb r1, [r5, r1] + add r0, r4, #0 + bl FUN_02026194 +_0224CA18: + ldr r0, _0224CA24 ; =0x00000215 + ldrb r0, [r5, r0] + pop {r3, r4, r5, pc} +_0224CA1E: + ldr r0, _0224CA28 ; =0x0000FFFC + pop {r3, r4, r5, pc} + nop +_0224CA24: .word 0x00000215 +_0224CA28: .word 0x0000FFFC + thumb_func_end MOD18_0224C9C4 + + thumb_func_start MOD18_0224CA2C +MOD18_0224CA2C: ; 0x0224CA2C + ldr r0, _0224CA30 ; =0x0000FFFE + bx lr + .align 2, 0 +_0224CA30: .word 0x0000FFFE + thumb_func_end MOD18_0224CA2C + + thumb_func_start MOD18_0224CA34 +MOD18_0224CA34: ; 0x0224CA34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02021A20 + ldr r0, [r4, #0x6c] + bl FUN_02021A20 + ldr r0, [r4, #0x70] + bl FUN_0200AB18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224CA34 + + thumb_func_start MOD18_0224CA54 +MOD18_0224CA54: ; 0x0224CA54 + mov r0, #0 + bx lr + thumb_func_end MOD18_0224CA54 + + thumb_func_start MOD18_0224CA58 +MOD18_0224CA58: ; 0x0224CA58 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD18_0223D658 + ldr r1, _0224CA90 ; =0x00000241 + mov r2, #1 + bl MOD18_0224DB80 + bl MOD18_0223D658 + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D658 + mov r2, #0 + add r1, r5, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r3, r4, r5, pc} + nop +_0224CA90: .word 0x00000241 + thumb_func_end MOD18_0224CA58 + + thumb_func_start MOD18_0224CA94 +MOD18_0224CA94: ; 0x0224CA94 + push {r3, lr} + bl MOD18_0223D658 + bl MOD18_0224DD94 + pop {r3, pc} + thumb_func_end MOD18_0224CA94 + + thumb_func_start MOD18_0224CAA0 +MOD18_0224CAA0: ; 0x0224CAA0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D658 + add r1, r5, #0 + add r2, r4, #0 + bl MOD18_0224DEF0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224CAA0 + + thumb_func_start MOD18_0224CAB4 +MOD18_0224CAB4: ; 0x0224CAB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D658 + add r1, r5, #0 + add r2, r4, #0 + bl MOD18_0224DF04 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224CAB4 + + thumb_func_start MOD18_0224CAC8 +MOD18_0224CAC8: ; 0x0224CAC8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D658 + add r1, r5, #0 + add r2, r4, #0 + bl MOD18_0224DF18 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224CAC8 + + thumb_func_start MOD18_0224CADC +MOD18_0224CADC: ; 0x0224CADC + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + bne _0224CB1A + mov r0, #0xc + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r3, #1 + str r3, [sp, #0x10] + ldr r0, [r4, #0xc] + add r1, r4, #0 + ldr r0, [r0, #8] + add r1, #0x20 + mov r2, #3 + bl FUN_02019064 + add r0, r4, #0 + ldr r2, _0224CB30 ; =0x000003D9 + add r0, #0x20 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 +_0224CB1A: + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xf + bl FUN_02019620 + add r4, #0x20 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_0224CB30: .word 0x000003D9 + thumb_func_end MOD18_0224CADC + + thumb_func_start MOD18_0224CB34 +MOD18_0224CB34: ; 0x0224CB34 + push {r4, r5, lr} + sub sp, #0x14 + mov r3, #1 + add r5, r0, #0 + str r3, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x33 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r1, r5, #0 + ldr r0, [r0, #8] + add r1, #0x30 + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224CBA8 ; =0x000003D9 + add r0, #0x30 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x30 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x30 + bl FUN_020191D0 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r5, #0x68] + add r1, r4, #0 + bl FUN_0200A8E0 + mov r3, #1 + add r0, r5, #0 + str r3, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r5, #0x68] + add r0, #0x30 + bl FUN_0201BD84 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0224CBA8: .word 0x000003D9 + thumb_func_end MOD18_0224CB34 + + thumb_func_start MOD18_0224CBAC +MOD18_0224CBAC: ; 0x0224CBAC + push {r4, lr} + add r4, r0, #0 + add r0, #0x30 + bl FUN_02019048 + cmp r0, #0 + beq _0224CBCC + add r0, r4, #0 + add r0, #0x30 + mov r1, #1 + bl FUN_0200CCF8 + add r4, #0x30 + add r0, r4, #0 + bl FUN_02019178 +_0224CBCC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224CBAC + + thumb_func_start MOD18_0224CBD0 +MOD18_0224CBD0: ; 0x0224CBD0 + push {r3, r4, r5, lr} + ldr r5, _0224CC00 ; =0x022512A0 + mov r3, #0 +_0224CBD6: + ldrh r4, [r5, #2] + cmp r0, r4 + bne _0224CBF0 + ldrh r4, [r5, #4] + cmp r1, r4 + bne _0224CBF0 + mov r0, #6 + add r1, r3, #0 + mul r1, r0 + ldr r0, _0224CC00 ; =0x022512A0 + str r3, [r2] + ldrh r0, [r0, r1] + pop {r3, r4, r5, pc} +_0224CBF0: + add r3, r3, #1 + add r5, r5, #6 + cmp r3, #0x14 + blt _0224CBD6 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224CC00: .word 0x022512A0 + thumb_func_end MOD18_0224CBD0 + + thumb_func_start MOD18_0224CC04 +MOD18_0224CC04: ; 0x0224CC04 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _0224CF50 ; =0x00000246 + add r5, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0x13 + bhi _0224CCD6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224CC20: ; jump table + .short _0224CC48 - _0224CC20 - 2 ; case 0 + .short _0224CC68 - _0224CC20 - 2 ; case 1 + .short _0224CC7E - _0224CC20 - 2 ; case 2 + .short _0224CC8E - _0224CC20 - 2 ; case 3 + .short _0224CD32 - _0224CC20 - 2 ; case 4 + .short _0224CD48 - _0224CC20 - 2 ; case 5 + .short _0224CE38 - _0224CC20 - 2 ; case 6 + .short _0224CE68 - _0224CC20 - 2 ; case 7 + .short _0224CF40 - _0224CC20 - 2 ; case 8 + .short _0224CFA8 - _0224CC20 - 2 ; case 9 + .short _0224CF30 - _0224CC20 - 2 ; case 10 + .short _0224CFCE - _0224CC20 - 2 ; case 11 + .short _0224D046 - _0224CC20 - 2 ; case 12 + .short _0224D0DA - _0224CC20 - 2 ; case 13 + .short _0224D104 - _0224CC20 - 2 ; case 14 + .short _0224D14E - _0224CC20 - 2 ; case 15 + .short _0224D190 - _0224CC20 - 2 ; case 16 + .short _0224D1A0 - _0224CC20 - 2 ; case 17 + .short _0224CDE2 - _0224CC20 - 2 ; case 18 + .short _0224CE20 - _0224CC20 - 2 ; case 19 +_0224CC48: + add r0, r1, #2 + ldrb r0, [r4, r0] + cmp r0, #2 + bne _0224CC58 + mov r0, #0x1b + bl MOD18_0224CA58 + b _0224CC5E +_0224CC58: + mov r0, #0 + bl MOD18_0224CA58 +_0224CC5E: + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #1 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CC68: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224CCD6 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CC7E: + add r0, r4, #0 + bl MOD18_0224C274 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #3 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CC8E: + ldr r0, [r4, #0x48] + bl FUN_02001204 + add r5, r0, #0 + add r1, sp, #4 + ldr r0, [r4, #0x48] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + add r2, sp, #4 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0x13 + bl MOD18_0223E57C + ldr r1, _0224CF54 ; =0x0000024A + ldr r0, [r4, #0x48] + ldrh r6, [r4, r1] + add r1, r4, r1 + bl FUN_0200143C + ldr r0, _0224CF54 ; =0x0000024A + ldrh r0, [r4, r0] + cmp r6, r0 + beq _0224CCC8 + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 +_0224CCC8: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224CCDA + add r0, r0, #1 + cmp r5, r0 + bne _0224CCD8 +_0224CCD6: + b _0224D1CE +_0224CCD8: + b _0224CCF2 +_0224CCDA: + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD18_0224C94C + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0x10 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CCF2: + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r4, r1] + cmp r0, #2 + bne _0224CD0C + mov r2, #1 + sub r0, r1, #1 + strb r2, [r4, r0] + mov r2, #0xb + sub r0, r1, #2 + add sp, #8 + strb r2, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD0C: + sub r0, r1, #1 + strb r5, [r4, r0] + cmp r5, #0 + ldr r0, _0224CF58 ; =0x000005DC + bne _0224CD24 + bl FUN_020054C8 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #4 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD24: + bl FUN_020054C8 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0xb + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD32: + add r0, r4, #0 + bl MOD18_0224CADC + add r0, r4, #0 + bl MOD18_0224C7D4 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #5 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD48: + ldr r0, [r4, #0x48] + bl FUN_02001204 + add r5, r0, #0 + add r1, sp, #4 + ldr r0, [r4, #0x48] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r2, sp, #4 + ldrh r1, [r2] + add r0, #0xd + lsl r0, r0, #0x10 + ldrh r2, [r2, #2] + lsr r0, r0, #0x10 + bl MOD18_0223E57C + ldr r1, _0224CF54 ; =0x0000024A + ldr r0, [r4, #0x48] + ldrh r6, [r4, r1] + add r1, r4, r1 + bl FUN_0200143C + ldr r0, _0224CF54 ; =0x0000024A + ldrh r0, [r4, r0] + cmp r6, r0 + beq _0224CD8C + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 +_0224CD8C: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _0224CD96 + add r5, r0, #0 +_0224CD96: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0224CDA6 + bl MOD18_0223D678 + bl MOD18_0224DD94 +_0224CDA6: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224CDB6 + add r0, r0, #1 + cmp r5, r0 + beq _0224CE2C + b _0224CDCE +_0224CDB6: + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CDCE: + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0x12 + strb r1, [r4, r0] + sub r0, r0, #2 + add sp, #8 + strb r5, [r4, r0] + pop {r4, r5, r6, pc} +_0224CDE2: + add r0, r1, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224CDFC + sub r2, r1, #2 + ldrb r2, [r4, r2] + sub r1, #0x36 + mov r0, #2 + add r2, r4, r2 + ldrb r1, [r2, r1] + bl MOD18_0224CAB4 + b _0224CE10 +_0224CDFC: + cmp r0, #0 + bne _0224CE10 + sub r2, r1, #2 + ldrb r2, [r4, r2] + sub r1, #0x36 + mov r0, #2 + add r2, r4, r2 + ldrb r1, [r2, r1] + bl MOD18_0224CAC8 +_0224CE10: + mov r0, #1 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0x13 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CE20: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + beq _0224CE2E +_0224CE2C: + b _0224D1CE +_0224CE2E: + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #6 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CE38: + mov r0, #0xc + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD18_02249EF4 + add r0, r4, #0 + mov r1, #0x13 + bl MOD18_0224CB34 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #7 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CE68: + ldr r0, [r4, #0x4c] + bl MOD18_02244140 + add r5, r0, #0 + ldr r0, [r4, #0x4c] + add r1, sp, #4 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + add r2, sp, #4 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0xc + bl MOD18_0223E57C + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0224CE9A + bl MOD18_0223D678 + bl MOD18_0224DD94 +_0224CE9A: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224CEAA + add r0, r0, #1 + cmp r5, r0 + beq _0224CF6C + b _0224CEBA +_0224CEAA: + add r0, r4, #0 + bl MOD18_0224CBAC + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #4 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CEBA: + mov r1, #0x91 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r4, #0 + add r2, r5, #0 + bl MOD18_0224C1C0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + add r0, r4, #0 + bl MOD18_0224CBAC + ldr r1, _0224CF5C ; =0x0000FFFC + cmp r5, r1 + bne _0224CEEE + mov r0, #3 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CEEE: + add r0, r1, #1 + cmp r5, r0 + bne _0224CF04 + mov r0, #4 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF04: + sub r0, r1, #1 + cmp r5, r0 + bne _0224CF1A + mov r0, #5 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF1A: + mov r0, #0x91 + lsl r0, r0, #2 + strb r5, [r4, r0] + mov r0, #2 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #8 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF30: + mov r0, #3 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF40: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224CF6C + ldr r0, _0224CF60 ; =0x021C48B8 + b _0224CF64 + .align 2, 0 +_0224CF50: .word 0x00000246 +_0224CF54: .word 0x0000024A +_0224CF58: .word 0x000005DC +_0224CF5C: .word 0x0000FFFC +_0224CF60: .word 0x021C48B8 +_0224CF64: + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0224CF6E +_0224CF6C: + b _0224D1CE +_0224CF6E: + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r4, r1] + cmp r0, #1 + bne _0224CF84 + sub r1, r1, #4 + ldrb r1, [r4, r1] + mov r0, #2 + bl MOD18_0224CAB4 + b _0224CF92 +_0224CF84: + cmp r0, #0 + bne _0224CF92 + sub r1, r1, #4 + ldrb r1, [r4, r1] + mov r0, #2 + bl MOD18_0224CAC8 +_0224CF92: + mov r0, #6 + bl MOD18_0224CA58 + ldr r0, _0224D1D4 ; =0x000005E3 + bl FUN_020054C8 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CFA8: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D0AA + ldr r0, _0224D1DC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224D0AA + mov r0, #8 + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CFCE: + add r0, r4, #0 + bl MOD18_0224CADC + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + add r1, #0x1c + ldrb r0, [r4, r1] + add r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, _0224D1E0 ; =MOD18_0224C510 + add r1, #0x18 + str r0, [r4, #0x60] + ldrb r0, [r4, r1] + cmp r0, #1 + bne _0224D01A + add r0, r4, #0 + bl MOD18_02249B2C + add r0, r4, #0 + mov r1, #0x14 + bl MOD18_0224CB34 + b _0224D03C +_0224D01A: + cmp r0, #0 + bne _0224D02E + add r0, r4, #0 + bl MOD18_0224AA28 + add r0, r4, #0 + mov r1, #0x15 + bl MOD18_0224CB34 + b _0224D03C +_0224D02E: + add r0, r4, #0 + bl MOD18_0224A2EC + add r0, r4, #0 + mov r1, #0x1d + bl MOD18_0224CB34 +_0224D03C: + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xc + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D046: + ldr r0, [r4, #0x4c] + bl MOD18_02244140 + add r5, r0, #0 + ldr r0, [r4, #0x4c] + add r1, sp, #4 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r2, sp, #4 + ldrh r1, [r2] + add r0, #0x10 + lsl r0, r0, #0x10 + ldrh r2, [r2, #2] + lsr r0, r0, #0x10 + bl MOD18_0223E57C + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224D082 + add r0, r0, #1 + cmp r5, r0 + beq _0224D0AA + b _0224D0A2 +_0224D082: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + add r0, r4, #0 + bl MOD18_0224CBAC + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D0A2: + ldr r0, _0224D1E4 ; =0x00000215 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0224D0AC +_0224D0AA: + b _0224D1CE +_0224D0AC: + bl MOD18_0223D678 + bl MOD18_0224DD94 + mov r0, #0x91 + lsl r0, r0, #2 + strb r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + add r0, r4, #0 + bl MOD18_0224CBAC + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0224C974 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xd + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D0DA: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D1CE + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _0224D1E8 ; =0x0225066C + ldr r0, [r0, #8] + ldr r2, _0224D1EC ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x5c] + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xe + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D104: + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224D1CE + cmp r0, #0 + bne _0224D140 + add r0, r4, #0 + bl MOD18_0224C9C4 + ldr r1, _0224D1F0 ; =0x0000FFFC + cmp r0, r1 + bne _0224D132 + mov r0, #3 + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #9 + strb r1, [r4, r0] + b _0224D146 +_0224D132: + mov r0, #0xb + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xf + strb r1, [r4, r0] + b _0224D146 +_0224D140: + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0x10 + strb r1, [r4, r0] +_0224D146: + mov r0, #0 + add sp, #8 + str r0, [r4, #0x5c] + pop {r4, r5, r6, pc} +_0224D14E: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D1CE + ldr r0, _0224D1DC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224D1CE + bl MOD18_0223D658 + ldr r1, _0224D1F4 ; =0x0000021A + ldrb r1, [r4, r1] + bl MOD18_0224DE7C + ldr r1, _0224D1E4 ; =0x00000215 + mov r0, #2 + ldrb r1, [r4, r1] + bl MOD18_0224CAA0 + mov r0, #7 + bl MOD18_0224CA58 + ldr r0, _0224D1D4 ; =0x000005E3 + bl FUN_020054C8 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D190: + mov r0, #9 + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0x11 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D1A0: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D1CE + ldr r0, _0224D1DC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224D1CE + bl MOD18_0224CA94 + add r0, r4, #0 + bl MOD18_0224CA34 + bl MOD18_0223E6A0 + add r0, r5, #0 + bl FUN_0200CAB4 + bl FUN_0204F7FC +_0224D1CE: + add sp, #8 + pop {r4, r5, r6, pc} + nop +_0224D1D4: .word 0x000005E3 +_0224D1D8: .word 0x00000246 +_0224D1DC: .word 0x021C48B8 +_0224D1E0: .word MOD18_0224C510 +_0224D1E4: .word 0x00000215 +_0224D1E8: .word 0x0225066C +_0224D1EC: .word 0x000003D9 +_0224D1F0: .word 0x0000FFFC +_0224D1F4: .word 0x0000021A + thumb_func_end MOD18_0224CC04 + + thumb_func_start MOD18_0224D1F8 +MOD18_0224D1F8: ; 0x0224D1F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E4D4 + str r0, [sp, #8] + bl FUN_02031190 + bl FUN_0204E50C + str r0, [sp, #4] + bl FUN_02031190 + bl FUN_0204E69C + bl FUN_0204F610 + str r0, [sp] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + add r2, sp, #0xc + bl MOD18_0224CBD0 + add r5, r0, #0 + add r0, r5, #3 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E56C + mov r1, #0x25 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r6, r0, #0 + bl MI_CpuFill8 + mov r0, #0x92 + str r4, [r6, #0xc] + lsl r0, r0, #2 + strb r5, [r6, r0] + ldr r1, [sp, #0xc] + sub r0, #0x24 + str r1, [r6, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r6, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r6, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r6, #0x70] + ldr r0, _0224D2DC ; =0x00000246 + mov r1, #0 + strb r1, [r6, r0] + ldr r0, _0224D2E0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224D2E4 ; =MOD18_0224CC04 + ldr r2, _0224D2E8 ; =0x00002710 + add r1, r6, #0 + bl FUN_0200CA44 + str r0, [r6, #4] + ldr r1, [r6, #4] + ldr r2, _0224D2EC ; =MOD18_0224AFE8 + add r0, r6, #0 + bl MOD18_0223E688 + ldr r0, [r6, #0xc] + bl FUN_02034B64 + add r7, r0, #0 + ldr r0, [r6, #0xc] + bl FUN_02034B6C + add r5, r0, #0 + mov r4, #0 + cmp r7, #0 + ble _0224D2D6 +_0224D2AE: + ldrh r1, [r5, #0x18] + ldr r0, [sp, #8] + cmp r0, r1 + bne _0224D2CE + ldrh r1, [r5, #0x1a] + ldr r0, [sp, #4] + cmp r0, r1 + bne _0224D2CE + ldr r0, [r6, #0xc] + add r1, r4, #0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + ldr r1, [sp] + bl FUN_020584AC +_0224D2CE: + add r4, r4, #1 + add r5, #0x20 + cmp r4, r7 + blt _0224D2AE +_0224D2D6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D2DC: .word 0x00000246 +_0224D2E0: .word 0x000005DC +_0224D2E4: .word MOD18_0224CC04 +_0224D2E8: .word 0x00002710 +_0224D2EC: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224D1F8 + + thumb_func_start MOD18_0224D2F0 +MOD18_0224D2F0: ; 0x0224D2F0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + mov r1, #0 + mov r2, #0x30 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, _0224D320 ; =0x022513FC + str r5, [r0] + str r6, [r5, #8] + ldr r0, [r0] + str r4, [r0, #0xc] + mov r0, #0xf + bl FUN_02025964 + ldr r1, _0224D320 ; =0x022513FC + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + add r0, #0x14 + bl FUN_020312BC + pop {r4, r5, r6, pc} + .align 2, 0 +_0224D320: .word 0x022513FC + thumb_func_end MOD18_0224D2F0 + + thumb_func_start MOD18_0224D324 +MOD18_0224D324: ; 0x0224D324 + push {r3, lr} + ldr r0, _0224D340 ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl FUN_02016A18 + ldr r0, _0224D340 ; =0x022513FC + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _0224D340 ; =0x022513FC + mov r1, #0 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_0224D340: .word 0x022513FC + thumb_func_end MOD18_0224D324 + + thumb_func_start MOD18_0224D344 +MOD18_0224D344: ; 0x0224D344 + push {r3, lr} + ldr r0, _0224D358 ; =0x022513FC + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #0 + beq _0224D356 + ldr r1, [r1] + bl MOD18_0224D56C +_0224D356: + pop {r3, pc} + .align 2, 0 +_0224D358: .word 0x022513FC + thumb_func_end MOD18_0224D344 + + thumb_func_start MOD18_0224D35C +MOD18_0224D35C: ; 0x0224D35C + bx lr + .align 2, 0 + thumb_func_end MOD18_0224D35C + + thumb_func_start MOD18_0224D360 +MOD18_0224D360: ; 0x0224D360 + mov r0, #0x30 + bx lr + thumb_func_end MOD18_0224D360 + + thumb_func_start MOD18_0224D364 +MOD18_0224D364: ; 0x0224D364 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r0, #0 + mov r0, #4 + str r1, [sp, #0xc] + add r5, r2, #0 + str r3, [sp, #0x10] + bl FUN_0200AA80 + str r0, [sp, #0x1c] + mov r0, #0x1e + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x1e + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + mov r1, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #1 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #2 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x84 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r5, #0 + bl FUN_020239C0 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + mov r1, #6 + mov r3, #5 + bl FUN_0200AD38 + ldr r0, [sp, #0xc] + mov r1, #5 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r2, [sp, #0x18] + add r0, r7, #0 + mov r3, #0x94 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x1c] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200ABC0 + ldr r0, [sp, #0xc] + mov r1, #4 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r2, [sp, #0x18] + add r0, r7, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl FUN_020269A0 + add r1, r0, #0 + ldr r0, [sp, #0xc] + add r1, #0x14 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r5, #0 + mov r6, #0x27 +_0224D4D0: + ldr r0, [sp, #0xc] + add r1, r5, #6 + add r2, r4, #0 + bl FUN_0200A8E0 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r7, #0 + mov r1, #0 + add r2, r4, #0 + mov r3, #2 + bl FUN_0201BD84 + add r5, r5, #1 + add r6, #0x10 + cmp r5, #7 + blt _0224D4D0 + mov r0, #0 + ldr r6, _0224D568 ; =0x02251318 + str r0, [sp, #0x14] + mov r5, #0x27 +_0224D500: + ldr r0, [sp, #0x10] + ldr r1, [r6] + blx r1 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r1, #6 + ldr r0, [sp, #0x1c] + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0xc] + mov r1, #0xd + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + str r5, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r2, [sp, #0x18] + add r0, r7, #0 + mov r1, #0 + mov r3, #0x94 + bl FUN_0201BD84 + ldr r0, [sp, #0x14] + add r6, r6, #4 + add r0, r0, #1 + add r5, #0x10 + str r0, [sp, #0x14] + cmp r0, #7 + blt _0224D500 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_0200AB18 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D568: .word 0x02251318 + thumb_func_end MOD18_0224D364 + + thumb_func_start MOD18_0224D56C +MOD18_0224D56C: ; 0x0224D56C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + ldr r1, [r4] + cmp r1, #0 + beq _0224D596 + ldr r0, [r4, #4] + blx r1 +_0224D596: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _0224D5B0 ; =0x022513FC + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + str r2, [r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224D5B0: .word 0x022513FC + thumb_func_end MOD18_0224D56C + + thumb_func_start MOD18_0224D5B4 +MOD18_0224D5B4: ; 0x0224D5B4 + push {r3, lr} + ldr r2, _0224D5C8 ; =0x021C48B8 + ldr r3, [r2, #0x48] + mov r2, #3 + tst r2, r3 + beq _0224D5C4 + bl MOD18_0224D56C +_0224D5C4: + pop {r3, pc} + nop +_0224D5C8: .word 0x021C48B8 + thumb_func_end MOD18_0224D5B4 + + thumb_func_start MOD18_0224D5CC +MOD18_0224D5CC: ; 0x0224D5CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp, #0x14] + mov r0, #4 + mov r1, #0x2c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x2c + bl MI_CpuFill8 + str r5, [r4] + add r1, r4, #0 + str r6, [r4, #4] + mov r0, #2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, #8 + mov r2, #3 + mov r3, #4 + bl FUN_02019064 + add r0, r4, #0 + ldr r2, _0224D684 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _0224D688 ; =0x00000245 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r5, r0, #0 + add r0, r4, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _0224D644 + ldr r0, _0224D68C ; =0x022513FC + ldr r0, [r0] + ldr r3, [r0, #0xc] + b _0224D64A +_0224D644: + ldr r0, _0224D68C ; =0x022513FC + ldr r0, [r0] + ldr r3, [r0, #0x10] +_0224D64A: + add r0, r4, #0 + ldr r2, [sp, #0x14] + add r0, #8 + add r1, r5, #0 + bl MOD18_0224D364 + add r0, r4, #0 + add r0, #8 + bl FUN_02019220 + ldr r0, _0224D690 ; =0x000005FD + bl FUN_020054C8 + ldr r0, _0224D694 ; =MOD18_0224D5B4 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA44 + ldr r1, _0224D68C ; =0x022513FC + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + str r4, [r0] + add r0, r5, #0 + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D684: .word 0x000003D9 +_0224D688: .word 0x00000245 +_0224D68C: .word 0x022513FC +_0224D690: .word 0x000005FD +_0224D694: .word MOD18_0224D5B4 + thumb_func_end MOD18_0224D5CC + + thumb_func_start MOD18_0224D698 +MOD18_0224D698: ; 0x0224D698 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02025960 + add r4, r0, #0 + ldr r0, _0224D6FC ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #8] + bl FUN_02029FC8 + bl FUN_0202A1B8 + add r6, r0, #0 + mov r0, #4 + add r1, r4, #1 + bl FUN_02016998 + mov r1, #0 + add r2, r4, #1 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, _0224D700 ; =0x000F423F + strb r7, [r5] + cmp r6, r0 + blt _0224D6CE + add r6, r0, #0 +_0224D6CE: + ldr r0, _0224D6FC ; =0x022513FC + add r1, r6, #0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020268E8 + ldr r0, _0224D6FC ; =0x022513FC + add r1, r5, #1 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0, #0xc] + bl MI_CpuCopy8 + mov r0, #0x51 + add r1, r5, #0 + add r2, r4, #1 + bl FUN_02030ADC + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D6FC: .word 0x022513FC +_0224D700: .word 0x000F423F + thumb_func_end MOD18_0224D698 + + thumb_func_start MOD18_0224D704 +MOD18_0224D704: ; 0x0224D704 + push {r3, lr} + ldr r0, _0224D72C ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #8] + bl FUN_02029FC8 + bl FUN_0202A1B8 + add r1, r0, #0 + ldr r0, _0224D730 ; =0x000F423F + cmp r1, r0 + blt _0224D71E + add r1, r0, #0 +_0224D71E: + ldr r0, _0224D72C ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020268E8 + pop {r3, pc} + nop +_0224D72C: .word 0x022513FC +_0224D730: .word 0x000F423F + thumb_func_end MOD18_0224D704 + + thumb_func_start MOD18_0224D734 +MOD18_0224D734: ; 0x0224D734 + add r3, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _0224D740 ; =0x02030BC5 + mov r0, #0x52 + bx r3 + .align 2, 0 +_0224D740: .word 0x02030BC5 + thumb_func_end MOD18_0224D734 + + thumb_func_start MOD18_0224D744 +MOD18_0224D744: ; 0x0224D744 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0224D76C + ldr r1, _0224D770 ; =0x022513FC + add r0, r4, #1 + ldr r1, [r1] + sub r2, r5, #1 + ldr r1, [r1, #0x10] + bl MI_CpuCopy8 + ldr r0, _0224D770 ; =0x022513FC + mov r1, #1 + ldr r0, [r0] + add r0, #0x2c + strb r1, [r0] +_0224D76C: + pop {r3, r4, r5, pc} + nop +_0224D770: .word 0x022513FC + thumb_func_end MOD18_0224D744 + + thumb_func_start MOD18_0224D774 +MOD18_0224D774: ; 0x0224D774 + ldr r0, _0224D780 ; =0x022513FC + ldr r0, [r0] + add r0, #0x2c + ldrb r0, [r0] + bx lr + nop +_0224D780: .word 0x022513FC + thumb_func_end MOD18_0224D774 + + thumb_func_start MOD18_0224D784 +MOD18_0224D784: ; 0x0224D784 + ldr r0, _0224D790 ; =0x022513FC + mov r1, #0 + ldr r0, [r0] + add r0, #0x2c + strb r1, [r0] + bx lr + .align 2, 0 +_0224D790: .word 0x022513FC + thumb_func_end MOD18_0224D784 + + thumb_func_start MOD18_0224D794 +MOD18_0224D794: ; 0x0224D794 + ldr r3, _0224D798 ; =0x0204F7FD + bx r3 + .align 2, 0 +_0224D798: .word 0x0204F7FD + thumb_func_end MOD18_0224D794 + + thumb_func_start MOD18_0224D79C +MOD18_0224D79C: ; 0x0224D79C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + sub r0, #0x20 + lsl r1, r0, #2 + ldr r0, _0224D808 ; =0x02251318 + cmp r5, #0x20 + ldr r4, [r0, r1] + bge _0224D7B4 + bl ErrorHandling +_0224D7B4: + cmp r5, #0x2d + ble _0224D7BC + bl ErrorHandling +_0224D7BC: + bl FUN_0204F7E4 + bl MOD18_0223D658 + ldr r1, _0224D80C ; =0x00000245 + mov r2, #1 + bl MOD18_0224DB80 + mov r0, #4 + bl FUN_02025964 + add r6, r0, #0 + bl FUN_02025960 + add r2, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MI_CpuCopy8 + add r0, r6, #0 + blx r4 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02016A18 + bl MOD18_0223D658 + add r1, r4, #0 + bl MOD18_0224DEC8 + bl MOD18_0223D658 + ldr r3, _0224D810 ; =MOD18_0224D794 + add r1, r5, #0 + mov r2, #1 + bl MOD18_0224DCB8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224D808: .word 0x02251318 +_0224D80C: .word 0x00000245 +_0224D810: .word MOD18_0224D794 + thumb_func_end MOD18_0224D79C + + thumb_func_start MOD18_0224D814 +MOD18_0224D814: ; 0x0224D814 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0xc] + ldr r0, [sp, #0x40] + str r1, [sp, #0x10] + str r0, [sp, #0x40] + mov r0, #4 + add r5, r2, #0 + str r3, [sp, #0x14] + bl FUN_0200AA80 + add r7, r0, #0 + mov r0, #0x28 + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x28 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r7, #0 + mov r1, #1 + add r2, r5, #0 + bl FUN_0200ABC0 + ldr r0, [sp, #0x10] + mov r1, #0xc + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r6, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + mov r1, #0xd + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x12 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x14] + bl FUN_020269CC + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r1, #6 + str r0, [sp, #4] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + mov r1, #0xe + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #0x12 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r6, #0 + mov r3, #0x66 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + mov r1, #0xf + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x34 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r5, #0 + str r5, [sp, #0x20] +_0224D8FA: + ldr r0, [sp, #0x40] + ldr r2, [sp, #0x20] + mov r1, #4 + bl FUN_02025CD8 + str r0, [sp, #0x24] + cmp r0, #0 + beq _0224D994 + ldr r2, [sp, #0x24] + add r0, r7, #0 + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [sp, #0x10] + mov r1, #0x10 + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0x45 + str r0, [sp, #0x1c] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #0 + add r2, r6, #0 + mov r3, #2 + bl FUN_0201BD84 + ldr r0, [sp, #0x24] + bl FUN_020239C0 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + mov r1, #5 + str r0, [sp, #4] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + mov r1, #0x11 + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #0x1c] + mov r1, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r2, r6, #0 + mov r3, #0x66 + bl FUN_0201BD84 + ldr r0, [sp, #0x24] + bl FUN_02016A18 + b _0224D9DE +_0224D994: + ldr r0, [sp, #0x10] + mov r1, #0x33 + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r5, #0 + str r0, [sp, #0x18] + add r0, #0x45 + str r0, [sp, #0x18] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #0 + add r2, r4, #0 + mov r3, #2 + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + mov r1, #0x34 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x18] + mov r1, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r2, r4, #0 + mov r3, #0x66 + bl FUN_0201BD84 +_0224D9DE: + ldr r0, [sp, #0x20] + add r5, #0x11 + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blt _0224D8FA + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200AB18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224D814 + + thumb_func_start MOD18_0224DA00 +MOD18_0224DA00: ; 0x0224DA00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp, #0x14] + mov r0, #4 + mov r1, #0x2c + add r6, r2, #0 + add r4, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x2c + add r5, r0, #0 + bl MI_CpuFill8 + add r1, r5, #0 + ldr r0, [sp, #0x30] + str r4, [r5] + str r0, [r5, #4] + mov r0, #2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, #8 + mov r2, #3 + mov r3, #4 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224DA9C ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x91 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + add r4, r0, #0 + add r0, r5, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + ldr r3, _0224DAA0 ; =0x022513FC + str r6, [sp] + ldr r3, [r3] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0xc] + add r0, #8 + add r1, r4, #0 + bl MOD18_0224D814 + ldr r0, _0224DAA4 ; =0x000005FD + bl FUN_020054C8 + add r0, r5, #0 + add r0, #8 + bl FUN_02019220 + add r0, r4, #0 + bl FUN_0200A8B8 + add r0, r5, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224DA9C: .word 0x000003D9 +_0224DAA0: .word 0x022513FC +_0224DAA4: .word 0x000005FD + thumb_func_end MOD18_0224DA00 + + thumb_func_start MOD18_0224DAA8 +MOD18_0224DAA8: ; 0x0224DAA8 + push {r4, lr} + add r4, r0, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + ldr r1, [r4] + cmp r1, #0 + beq _0224DACE + ldr r0, [r4, #4] + blx r1 +_0224DACE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DAA8 + + thumb_func_start MOD18_0224DAD8 +MOD18_0224DAD8: ; 0x0224DAD8 + ldr r0, _0224DADC ; =0x02250674 + bx lr + .align 2, 0 +_0224DADC: .word 0x02250674 + thumb_func_end MOD18_0224DAD8 + + thumb_func_start MOD18_0224DAE0 +MOD18_0224DAE0: ; 0x0224DAE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x44 + add r7, r2, #0 + str r3, [sp, #4] + ldr r6, [sp, #0x20] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x44 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _0224DB08 + mov r6, #0xe6 +_0224DB08: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020219F4 + str r0, [r4] + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020219F4 + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_0200AA80 + str r0, [r4, #0x28] + ldr r0, [sp] + ldr r2, [sp] + str r0, [r4, #0x2c] + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl FUN_0200A86C + str r0, [r4, #0x24] + str r5, [r4, #0x34] + add r0, r4, #0 + str r7, [r4, #0x18] + add r0, #8 + bl FUN_0201901C + ldr r1, [r4, #0x40] + mov r0, #1 + bic r1, r0 + mov r0, #2 + bic r1, r0 + str r1, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [sp, #4] + str r0, [r4, #0x38] + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224DAE0 + + thumb_func_start MOD18_0224DB5C +MOD18_0224DB5C: ; 0x0224DB5C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02021A20 + ldr r0, [r4, #4] + bl FUN_02021A20 + ldr r0, [r4, #0x28] + bl FUN_0200AB18 + ldr r0, [r4, #0x24] + bl FUN_0200A8B8 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD18_0224DB5C + + thumb_func_start MOD18_0224DB80 +MOD18_0224DB80: ; 0x0224DB80 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, r4 + beq _0224DBAC + str r4, [r5, #0x2c] + ldr r0, [r5, #0x24] + bl FUN_0200A8B8 + ldr r3, [r5, #0x34] + add r0, r6, #0 + mov r1, #0x1a + add r2, r4, #0 + bl FUN_0200A86C + str r0, [r5, #0x24] + cmp r0, #0 + bne _0224DBAC + bl ErrorHandling +_0224DBAC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DB80 + + thumb_func_start MOD18_0224DBB0 +MOD18_0224DBB0: ; 0x0224DBB0 + str r1, [r0, #0x18] + bx lr + thumb_func_end MOD18_0224DBB0 + + thumb_func_start MOD18_0224DBB4 +MOD18_0224DBB4: ; 0x0224DBB4 + ldr r0, [r0, #0x24] + bx lr + thumb_func_end MOD18_0224DBB4 + + thumb_func_start MOD18_0224DBB8 +MOD18_0224DBB8: ; 0x0224DBB8 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x30] + cmp r0, #8 + bge _0224DBCE + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224DBDE +_0224DBCE: + ldr r0, _0224DBE0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224DBDE + add r0, r4, #0 + bl MOD18_0224DD94 +_0224DBDE: + pop {r4, pc} + .align 2, 0 +_0224DBE0: .word 0x021C48B8 + thumb_func_end MOD18_0224DBB8 + + thumb_func_start MOD18_0224DBE4 +MOD18_0224DBE4: ; 0x0224DBE4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + ldr r2, [r4] + lsl r0, r0, #0x1e + asr r0, r0, #0x1f + beq _0224DC04 + ldr r0, [r4, #0x28] + ldr r1, [r4, #4] + bl FUN_0200B7B8 + ldr r1, [r4, #0x40] + mov r0, #2 + ldr r2, [r4, #4] + bic r1, r0 + str r1, [r4, #0x40] +_0224DC04: + add r0, r2, #0 + pop {r4, pc} + thumb_func_end MOD18_0224DBE4 + + thumb_func_start MOD18_0224DC08 +MOD18_0224DC08: ; 0x0224DC08 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD18_0224DD1C + bl MOD18_0223D688 + add r0, r5, #0 + add r0, #8 + bl FUN_02019048 + cmp r0, #0 + bne _0224DC4C + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _0224DCAC ; =0x0000012D + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #8 + mov r2, #3 + mov r3, #2 + bl FUN_02019064 +_0224DC4C: + add r0, r5, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + ldr r2, _0224DCB0 ; =0x000001E2 + add r0, #8 + mov r1, #1 + mov r3, #0xa + bl FUN_0200D0BC + cmp r4, #0 + beq _0224DC74 + ldr r0, _0224DCB4 ; =MOD18_0224DBB8 + add r1, r5, #0 + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r5, #0x20] +_0224DC74: + ldr r1, [r5, #0x40] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r1, r0 + mov r0, #4 + bic r1, r0 + add r0, r5, #0 + str r1, [r5, #0x40] + bl MOD18_0224DBE4 + mov r3, #0 + str r3, [sp] + add r2, r0, #0 + ldr r0, [r5, #0x38] + mov r1, #1 + str r0, [sp, #4] + add r0, r5, #0 + str r3, [sp, #8] + add r0, #8 + bl FUN_0201BD84 + str r0, [r5, #0x30] + str r6, [r5, #0x1c] + str r7, [r5, #0x3c] + ldr r0, [r5, #0x30] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224DCAC: .word 0x0000012D +_0224DCB0: .word 0x000001E2 +_0224DCB4: .word MOD18_0224DBB8 + thumb_func_end MOD18_0224DC08 + + thumb_func_start MOD18_0224DCB8 +MOD18_0224DCB8: ; 0x0224DCB8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + ldr r0, [r5, #0x24] + ldr r2, [r5] + add r6, r3, #0 + bl FUN_0200A8E0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD18_0224DC08 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DCB8 + + thumb_func_start MOD18_0224DCD8 +MOD18_0224DCD8: ; 0x0224DCD8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r4, [r5, #0x38] + mov r6, #0 + str r6, [r5, #0x38] + bl MOD18_0224DCB8 + mov r1, #8 + str r1, [r5, #0x30] + str r4, [r5, #0x38] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DCD8 + + thumb_func_start MOD18_0224DCF0 +MOD18_0224DCF0: ; 0x0224DCF0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + ldr r0, [r5, #0x24] + ldr r2, [r5] + add r6, r3, #0 + bl FUN_0200A8E0 + ldr r3, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD18_0224DC08 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DCF0 + + thumb_func_start MOD18_0224DD10 +MOD18_0224DD10: ; 0x0224DD10 + ldr r2, [r0, #0x40] + mov r1, #4 + orr r1, r2 + str r1, [r0, #0x40] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224DD10 + + thumb_func_start MOD18_0224DD1C +MOD18_0224DD1C: ; 0x0224DD1C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0x40] + lsl r0, r1, #0x1f + asr r0, r0, #0x1f + beq _0224DD92 + mov r0, #1 + bic r1, r0 + str r1, [r5, #0x40] + ldr r0, [r5, #0x30] + cmp r0, #8 + bge _0224DD4C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0224DD4C + ldr r0, [r5, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C +_0224DD4C: + cmp r4, #1 + bne _0224DD6C + add r0, r5, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r5, #0 + add r0, #8 + bl FUN_02019570 + add r0, r5, #0 + add r0, #8 + bl FUN_02019178 + b _0224DD76 +_0224DD6C: + add r0, r5, #0 + add r0, #8 + mov r1, #1 + bl FUN_0200D0E0 +_0224DD76: + mov r0, #8 + str r0, [r5, #0x30] + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0224DD88 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r5, #0x20] +_0224DD88: + ldr r1, [r5, #0x1c] + cmp r1, #0 + beq _0224DD92 + ldr r0, [r5, #0x3c] + blx r1 +_0224DD92: + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224DD1C + + thumb_func_start MOD18_0224DD94 +MOD18_0224DD94: ; 0x0224DD94 + ldr r3, _0224DD9C ; =MOD18_0224DD1C + mov r1, #1 + bx r3 + nop +_0224DD9C: .word MOD18_0224DD1C + thumb_func_end MOD18_0224DD94 + + thumb_func_start MOD18_0224DDA0 +MOD18_0224DDA0: ; 0x0224DDA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #1 + bl FUN_0200ABC0 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDA0 + + thumb_func_start MOD18_0224DDB8 +MOD18_0224DDB8: ; 0x0224DDB8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #0 + bl FUN_0200ABC0 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDB8 + + thumb_func_start MOD18_0224DDD0 +MOD18_0224DDD0: ; 0x0224DDD0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #2 + bl FUN_0200B19C + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDD0 + + thumb_func_start MOD18_0224DDE8 +MOD18_0224DDE8: ; 0x0224DDE8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #3 + bl FUN_0200B1D4 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDE8 + + thumb_func_start MOD18_0224DE00 +MOD18_0224DE00: ; 0x0224DE00 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #5 + bl FUN_0200B2E0 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE00 + + thumb_func_start MOD18_0224DE18 +MOD18_0224DE18: ; 0x0224DE18 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #5 + bl FUN_0200B318 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE18 + + thumb_func_start MOD18_0224DE30 +MOD18_0224DE30: ; 0x0224DE30 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B318 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE30 + + thumb_func_start MOD18_0224DE44 +MOD18_0224DE44: ; 0x0224DE44 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #2 + bl FUN_0200B350 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE44 + + thumb_func_start MOD18_0224DE5C +MOD18_0224DE5C: ; 0x0224DE5C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r0, [r4, #0x28] + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + thumb_func_end MOD18_0224DE5C + + thumb_func_start MOD18_0224DE7C +MOD18_0224DE7C: ; 0x0224DE7C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r2, r1, #0 + ldr r0, [r4, #0x28] + mov r1, #6 + mov r3, #2 + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DE7C + + thumb_func_start MOD18_0224DEA4 +MOD18_0224DEA4: ; 0x0224DEA4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x28] + mov r3, #2 + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DEA4 + + thumb_func_start MOD18_0224DEC8 +MOD18_0224DEC8: ; 0x0224DEC8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + add r2, r1, #0 + str r0, [sp, #4] + mov r1, #6 + ldr r0, [r4, #0x28] + add r3, r1, #0 + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DEC8 + + thumb_func_start MOD18_0224DEF0 +MOD18_0224DEF0: ; 0x0224DEF0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B164 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DEF0 + + thumb_func_start MOD18_0224DF04 +MOD18_0224DF04: ; 0x0224DF04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B1D4 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF04 + + thumb_func_start MOD18_0224DF18 +MOD18_0224DF18: ; 0x0224DF18 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B350 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF18 + + thumb_func_start MOD18_0224DF2C +MOD18_0224DF2C: ; 0x0224DF2C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B19C + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF2C + + thumb_func_start MOD18_0224DF40 +MOD18_0224DF40: ; 0x0224DF40 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B20C + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF40 + + thumb_func_start MOD18_0224DF54 +MOD18_0224DF54: ; 0x0224DF54 + ldr r3, _0224DF5C ; =0x0200B7A9 + ldr r0, [r0, #0x28] + bx r3 + nop +_0224DF5C: .word 0x0200B7A9 + thumb_func_end MOD18_0224DF54 + + thumb_func_start MOD18_0224DF60 +MOD18_0224DF60: ; 0x0224DF60 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #8 + bge _0224DF84 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0224DF84 + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C + mov r0, #8 + str r0, [r4, #0x30] +_0224DF84: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DF60 + + thumb_func_start MOD18_0224DF88 +MOD18_0224DF88: ; 0x0224DF88 + push {r3, lr} + ldr r0, [r0, #0x30] + cmp r0, #8 + bne _0224DF94 + mov r0, #0 + pop {r3, pc} +_0224DF94: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224DF88 + + thumb_func_start MOD18_0224DFA0 +MOD18_0224DFA0: ; 0x0224DFA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #8 + bge _0224DFBA + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224DFBA + mov r0, #8 + str r0, [r4, #0x30] +_0224DFBA: + pop {r4, pc} + thumb_func_end MOD18_0224DFA0 + + thumb_func_start MOD18_0224DFBC +MOD18_0224DFBC: ; 0x0224DFBC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFC8 ; =0x02250694 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFC8: .word 0x02250694 + thumb_func_end MOD18_0224DFBC + + thumb_func_start MOD18_0224DFCC +MOD18_0224DFCC: ; 0x0224DFCC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFD8 ; =0x02250695 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFD8: .word 0x02250695 + thumb_func_end MOD18_0224DFCC + + thumb_func_start MOD18_0224DFDC +MOD18_0224DFDC: ; 0x0224DFDC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFE8 ; =0x02250696 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFE8: .word 0x02250696 + thumb_func_end MOD18_0224DFDC + + thumb_func_start MOD18_0224DFEC +MOD18_0224DFEC: ; 0x0224DFEC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFF8 ; =0x02250748 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFF8: .word 0x02250748 + thumb_func_end MOD18_0224DFEC + + thumb_func_start MOD18_0224DFFC +MOD18_0224DFFC: ; 0x0224DFFC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224E008 ; =0x02250749 + ldrb r0, [r0, r1] + bx lr + nop +_0224E008: .word 0x02250749 + thumb_func_end MOD18_0224DFFC + + thumb_func_start MOD18_0224E00C +MOD18_0224E00C: ; 0x0224E00C + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224E018 ; =0x0225074A + ldrb r0, [r0, r1] + bx lr + nop +_0224E018: .word 0x0225074A + thumb_func_end MOD18_0224E00C + + thumb_func_start MOD18_0224E01C +MOD18_0224E01C: ; 0x0224E01C + ldr r3, _0224E024 ; =0x02016999 + mov r0, #4 + mov r1, #0x44 + bx r3 + .align 2, 0 +_0224E024: .word 0x02016999 + thumb_func_end MOD18_0224E01C + + thumb_func_start MOD18_0224E028 +MOD18_0224E028: ; 0x0224E028 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + str r1, [r0] + mov r5, #0 + add r4, #0x38 + strb r5, [r4] + str r2, [r0, #0x30] + str r3, [r0, #0x34] + add r0, #0x40 + strh r5, [r0] + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r1, #8] + ldr r2, _0224E058 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0224E058: .word 0x000003D9 + thumb_func_end MOD18_0224E028 + + thumb_func_start MOD18_0224E05C +MOD18_0224E05C: ; 0x0224E05C + ldr r3, _0224E060 ; =0x02016A19 + bx r3 + .align 2, 0 +_0224E060: .word 0x02016A19 + thumb_func_end MOD18_0224E05C + + thumb_func_start MOD18_0224E064 +MOD18_0224E064: ; 0x0224E064 + ldr r0, [r0, #0x3c] + bx lr + thumb_func_end MOD18_0224E064 + + thumb_func_start MOD18_0224E068 +MOD18_0224E068: ; 0x0224E068 + push {r3, lr} + add r1, r0, #0 + add r1, #0x38 + ldrb r1, [r1] + cmp r1, #0 + beq _0224E07E + cmp r1, #1 + beq _0224E084 + cmp r1, #2 + beq _0224E08A + b _0224E09A +_0224E07E: + bl MOD18_0224E0CC + b _0224E09A +_0224E084: + bl MOD18_0224E210 + b _0224E09A +_0224E08A: + add r1, r0, #0 + mov r2, #0 + add r1, #0x38 + strb r2, [r1] + bl MOD18_0224E26C + mov r0, #1 + pop {r3, pc} +_0224E09A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224E068 + + thumb_func_start MOD18_0224E0A0 +MOD18_0224E0A0: ; 0x0224E0A0 + push {r4, lr} + sub sp, #0x10 + ldr r3, _0224E0C8 ; =0x022507B0 + add r2, sp, #0 + add r4, r1, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + bl MOD18_0223D668 + lsl r2, r4, #2 + add r1, sp, #0 + ldr r1, [r1, r2] + mov r2, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0224E0C8: .word 0x022507B0 + thumb_func_end MOD18_0224E0A0 + + thumb_func_start MOD18_0224E0CC +MOD18_0224E0CC: ; 0x0224E0CC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x24] + mov r2, #3 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E1F4 ; =0x000002CD + add r1, r5, #4 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + mov r3, #1 + add r1, r5, #0 + str r3, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E1F8 ; =0x000002BF + add r1, #0x14 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + ldr r2, _0224E1FC ; =0x000003D9 + add r0, r5, #4 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + ldr r2, _0224E1FC ; =0x000003D9 + add r0, #0x14 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r3, _0224E200 ; =0x022507C0 + add r2, sp, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r2, _0224E204 ; =0x00000242 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + add r0, r5, #0 + add r0, #0x14 + mov r1, #0xf + bl FUN_02019620 + add r0, r7, #0 + mov r1, #0 + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x14 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + mov r6, #0 + add r4, sp, #0x14 +_0224E186: + ldr r0, [r5, #0x24] + ldr r2, [r4] + add r1, r7, #0 + add r3, r6, #0 + bl FUN_02012880 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0224E186 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r4, _0224E208 ; =0x022507D0 + add r3, sp, #0x24 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r3, #4 + add r0, sp, #0x14 + strh r3, [r0, #0x20] + strh r3, [r0, #0x22] + ldr r0, [r5, #0x24] + str r0, [sp, #0x24] + add r0, r5, #4 + str r0, [sp, #0x30] + ldr r0, _0224E20C ; =MOD18_0224E0A0 + str r0, [sp, #0x28] + add r0, r2, #0 + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x34] + ldrh r1, [r1] + ldrh r2, [r2] + bl FUN_020010A8 + str r0, [r5, #0x28] + add r0, r5, #4 + bl FUN_020191D0 + add r0, r5, #0 + add r0, #0x14 + bl FUN_020191D0 + mov r0, #1 + add r5, #0x38 + strb r0, [r5] + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_0224E1F4: .word 0x000002CD +_0224E1F8: .word 0x000002BF +_0224E1FC: .word 0x000003D9 +_0224E200: .word 0x022507C0 +_0224E204: .word 0x00000242 +_0224E208: .word 0x022507D0 +_0224E20C: .word MOD18_0224E0A0 + thumb_func_end MOD18_0224E0CC + + thumb_func_start MOD18_0224E210 +MOD18_0224E210: ; 0x0224E210 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_0224E73C + cmp r4, #3 + bne _0224E22A + mov r4, #1 + mvn r4, r4 +_0224E22A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224E23A + add r0, r0, #1 + cmp r4, r0 + bne _0224E250 + pop {r3, r4, r5, pc} +_0224E23A: + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + str r4, [r5, #0x3c] + mov r0, #2 + add r5, #0x38 + strb r0, [r5] + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_0224E250: + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + str r4, [r5, #0x3c] + mov r0, #2 + add r5, #0x38 + strb r0, [r5] + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_0224E268: .word 0x000005DC + thumb_func_end MOD18_0224E210 + + thumb_func_start MOD18_0224E26C +MOD18_0224E26C: ; 0x0224E26C + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D668 + bl MOD18_0224DD94 + add r0, r4, #0 + add r0, #0x14 + mov r1, #1 + bl FUN_0200CCF8 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x34] + bl FUN_02001300 + add r0, r4, #4 + mov r1, #1 + bl FUN_0200CCF8 + ldrb r1, [r4, #8] + ldr r0, [r4, #4] + bl FUN_0201AC68 + add r0, r4, #4 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02019178 + ldr r0, [r4, #0x24] + bl FUN_02012870 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224E26C + + thumb_func_start MOD18_0224E2B4 +MOD18_0224E2B4: ; 0x0224E2B4 + push {r3, lr} + mov r2, #1 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + beq _0224E2CC + add r1, r2, #0 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, pc} +_0224E2CC: + mov r1, #2 + mov r2, #0xf + add r3, r1, #0 + bl FUN_020013E8 + pop {r3, pc} + thumb_func_end MOD18_0224E2B4 + + thumb_func_start MOD18_0224E2D8 +MOD18_0224E2D8: ; 0x0224E2D8 + ldr r3, _0224E2E0 ; =0x02016999 + mov r0, #4 + mov r1, #0x4c + bx r3 + .align 2, 0 +_0224E2E0: .word 0x02016999 + thumb_func_end MOD18_0224E2D8 + + thumb_func_start MOD18_0224E2E4 +MOD18_0224E2E4: ; 0x0224E2E4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + str r1, [r0] + mov r5, #0 + add r4, #0x42 + strb r5, [r4] + str r5, [r0, #4] + str r2, [r0, #0x38] + str r3, [r0, #0x3c] + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r1, #8] + ldr r2, _0224E310 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224E310: .word 0x000003D9 + thumb_func_end MOD18_0224E2E4 + + thumb_func_start MOD18_0224E314 +MOD18_0224E314: ; 0x0224E314 + add r3, r0, #0 + add r3, #0x40 + strb r1, [r3] + add r0, #0x41 + strb r2, [r0] + bx lr + thumb_func_end MOD18_0224E314 + + thumb_func_start MOD18_0224E320 +MOD18_0224E320: ; 0x0224E320 + ldr r3, _0224E324 ; =0x02016A19 + bx r3 + .align 2, 0 +_0224E324: .word 0x02016A19 + thumb_func_end MOD18_0224E320 + + thumb_func_start MOD18_0224E328 +MOD18_0224E328: ; 0x0224E328 + ldr r0, [r0, #0x44] + bx lr + thumb_func_end MOD18_0224E328 + + thumb_func_start MOD18_0224E32C +MOD18_0224E32C: ; 0x0224E32C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x42 + ldrb r1, [r1] + cmp r1, #0 + beq _0224E344 + cmp r1, #1 + beq _0224E34A + cmp r1, #2 + beq _0224E350 + b _0224E35E +_0224E344: + bl MOD18_0224E430 + b _0224E35E +_0224E34A: + bl MOD18_0224E36C + b _0224E35E +_0224E350: + mov r1, #0 + add r4, #0x42 + strb r1, [r4] + bl MOD18_0224E6A8 + mov r0, #1 + pop {r4, pc} +_0224E35E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0224E368 + bl FUN_0205EC18 +_0224E368: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD18_0224E32C + + thumb_func_start MOD18_0224E36C +MOD18_0224E36C: ; 0x0224E36C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + bl MOD18_02244140 + add r6, r0, #0 + ldr r0, [r5, #0x48] + lsr r4, r6, #1 + cmp r0, r4 + bne _0224E384 + mov r4, #1 + mvn r4, r4 +_0224E384: + ldr r0, [r5, #0x2c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + ldr r0, [r5, #0x2c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r7, r0, #0 + ldr r0, [r5, #0x2c] + mov r1, #3 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r3, r0, #0 + add r1, sp, #0 + lsl r2, r7, #0x10 + lsl r3, r3, #0x10 + ldrh r1, [r1, #2] + ldr r0, [r5, #4] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD18_0224E6F8 + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _0224E3CC + add r0, r0, #1 + cmp r6, r0 + bne _0224E3DC + pop {r3, r4, r5, r6, r7, pc} +_0224E3CC: + str r0, [r5, #0x44] + mov r0, #2 + add r5, #0x42 + strb r0, [r5] + ldr r0, _0224E3EC ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} +_0224E3DC: + str r4, [r5, #0x44] + mov r0, #2 + add r5, #0x42 + strb r0, [r5] + ldr r0, _0224E3EC ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E3EC: .word 0x000005DC + thumb_func_end MOD18_0224E36C + + thumb_func_start MOD18_0224E3F0 +MOD18_0224E3F0: ; 0x0224E3F0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0x13 + bl FUN_02001470 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl FUN_02001470 + lsr r1, r4, #1 + sub r0, r0, #1 + cmp r1, r0 + bne _0224E412 + ldr r4, _0224E42C ; =0x00000116 + b _0224E41C +_0224E412: + add r0, r6, #0 + bl FUN_02025DC8 + add r4, r0, #0 + add r4, #0x8a +_0224E41C: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224E42C: .word 0x00000116 + thumb_func_end MOD18_0224E3F0 + + thumb_func_start MOD18_0224E430 +MOD18_0224E430: ; 0x0224E430 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r7, r0, #0 + bl FUN_02025DB0 + str r0, [sp, #0x20] + str r0, [r5, #0x48] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #7 + ble _0224E454 + mov r0, #7 + str r0, [sp, #0x1c] +_0224E454: + ldr r0, [sp, #0x20] + mov r1, #4 + add r0, r0, #1 + bl FUN_02012838 + str r0, [r5, #0x28] + mov r2, #3 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r1, r5, #0 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E680 ; =0x00000285 + add r1, #8 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + mov r3, #1 + add r1, r5, #0 + str r3, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E684 ; =0x00000265 + add r1, #0x18 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224E688 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + ldr r2, _0224E688 ; =0x000003D9 + add r0, #0x18 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _0224E68C ; =0x00000237 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x18] + ldr r2, _0224E690 ; =0x00000242 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x24] + add r0, r5, #0 + add r0, #0x18 + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x24] + mov r1, #9 + bl FUN_0200A914 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + mov r1, #0xa + bl FUN_0200A914 + str r0, [sp, #0x2c] + mov r0, #6 + mov r1, #4 + bl FUN_020219F4 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + ldr r2, [sp, #0x28] + add r0, #0x18 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r0, #4 + bl FUN_0200AA80 + mov r1, #1 + str r1, [sp] + add r2, r5, #0 + str r1, [sp, #4] + add r2, #0x40 + ldrb r2, [r2] + mov r1, #0 + mov r3, #2 + add r6, r0, #0 + bl FUN_0200AD38 + mov r1, #1 + str r1, [sp] + add r2, r5, #0 + str r1, [sp, #4] + add r2, #0x41 + ldrb r2, [r2] + add r0, r6, #0 + mov r3, #2 + bl FUN_0200AD38 + ldr r2, [sp, #0x2c] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200B7B8 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r5, #0 + add r0, #0x18 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x24] + bl FUN_0200A8B8 + ldr r0, [sp, #0x20] + mov r4, #0 + cmp r0, #0 + ble _0224E5CE + add r6, r4, #0 +_0224E598: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02025DC8 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _0224E5B2 + mov r3, #1 + b _0224E5B4 +_0224E5B2: + mov r3, #0 +_0224E5B4: + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + ldr r0, [r5, #0x28] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r3, r6, r3 + bl FUN_02012880 + ldr r0, [sp, #0x20] + add r4, r4, #1 + add r6, r6, #2 + cmp r4, r0 + blt _0224E598 +_0224E5CE: + lsl r3, r4, #1 + ldr r0, [r5, #0x28] + ldr r1, [sp, #0x18] + ldr r2, _0224E694 ; =0x00000115 + add r3, r3, #1 + bl FUN_02012880 + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 + bl MOD18_0223D678 + ldr r1, _0224E68C ; =0x00000237 + mov r2, #0 + bl MOD18_0224DB80 + ldr r4, _0224E698 ; =0x022507D0 + add r3, sp, #0x30 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, _0224E69C ; =MOD18_0224E2B4 + add r1, sp, #0x30 + str r0, [sp, #0x38] + ldr r0, [sp, #0x20] + mov r3, #4 + add r0, r0, #1 + strh r0, [r1, #0x10] + ldr r0, [sp, #0x1c] + strh r0, [r1, #0x12] + ldr r0, [r5, #0x28] + str r0, [sp, #0x30] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x3c] + ldr r0, _0224E6A0 ; =MOD18_0224E3F0 + str r7, [sp, #0x4c] + str r0, [sp, #0x34] + ldr r0, _0224E6A4 ; =0x02025E21 + str r0, [sp] + str r7, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + add r0, r2, #0 + ldr r1, [r5, #0x38] + ldr r2, [r5, #0x3c] + ldrh r1, [r1] + ldrh r2, [r2] + bl MOD18_02244028 + str r0, [r5, #0x2c] + add r0, r5, #0 + add r0, #8 + bl FUN_020191D0 + add r0, r5, #0 + add r0, #0x18 + bl FUN_020191D0 + mov r0, #4 + bl FUN_0205EB38 + str r0, [r5, #4] + mov r1, #0xc8 + mov r2, #0x1a + mov r3, #0x86 + bl FUN_0205EC48 + mov r1, #0 + ldr r0, [r5, #4] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #4] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C + mov r0, #1 + add r5, #0x42 + strb r0, [r5] + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E680: .word 0x00000285 +_0224E684: .word 0x00000265 +_0224E688: .word 0x000003D9 +_0224E68C: .word 0x00000237 +_0224E690: .word 0x00000242 +_0224E694: .word 0x00000115 +_0224E698: .word 0x022507D0 +_0224E69C: .word MOD18_0224E2B4 +_0224E6A0: .word MOD18_0224E3F0 +_0224E6A4: .word 0x02025E21 + thumb_func_end MOD18_0224E430 + + thumb_func_start MOD18_0224E6A8 +MOD18_0224E6A8: ; 0x0224E6A8 + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + add r0, #0x18 + mov r1, #1 + bl FUN_0200CCF8 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x38] + ldr r2, [r4, #0x3c] + bl MOD18_02244318 + add r0, r4, #0 + add r0, #8 + mov r1, #1 + bl FUN_0200CCF8 + ldrb r1, [r4, #0xc] + ldr r0, [r4, #8] + bl FUN_0201AC68 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + ldr r0, [r4, #0x28] + bl FUN_02012870 + ldr r0, [r4, #4] + bl FUN_0205EBEC + pop {r4, pc} + thumb_func_end MOD18_0224E6A8 + + thumb_func_start MOD18_0224E6F8 +MOD18_0224E6F8: ; 0x0224E6F8 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r7, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + cmp r4, r7 + bls _0224E738 + cmp r5, #0 + beq _0224E714 + mov r1, #0 + mov r2, #1 + bl FUN_0205EC6C + b _0224E71C +_0224E714: + mov r1, #0 + add r2, r1, #0 + bl FUN_0205EC6C +_0224E71C: + add r0, r5, r7 + cmp r4, r0 + beq _0224E72E + mov r1, #1 + add r0, r6, #0 + add r2, r1, #0 + bl FUN_0205EC6C + pop {r3, r4, r5, r6, r7, pc} +_0224E72E: + add r0, r6, #0 + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224E738: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224E6F8 + + thumb_func_start MOD18_0224E73C +MOD18_0224E73C: ; 0x0224E73C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x40 + ldrh r4, [r0] + add r1, r5, #0 + ldr r0, [r5, #0x28] + add r1, #0x40 + bl FUN_0200143C + add r5, #0x40 + ldrh r0, [r5] + cmp r4, r0 + beq _0224E75C + ldr r0, _0224E760 ; =0x000005DC + bl FUN_020054C8 +_0224E75C: + pop {r3, r4, r5, pc} + nop +_0224E760: .word 0x000005DC + thumb_func_end MOD18_0224E73C + + thumb_func_start MOD18_0224E764 +MOD18_0224E764: ; 0x0224E764 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r6, r0, #0 + add r7, r2, #0 + cmp r5, #0 + bne _0224E776 + bl ErrorHandling +_0224E776: + add r4, r7, #0 + add r4, #0x3c + add r0, r5, #0 + bl FUN_0204CA80 + str r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_0204CA90 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x18] + lsl r1, r0, #0xf + mov r0, #1 + lsl r0, r0, #0x14 + add r1, r1, r0 + lsr r0, r0, #8 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + lsl r1, r0, #0xf + mov r0, #0xd + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_0224FAEC + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #8 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + str r0, [r4, #0x10] + mov r0, #0x10 + str r0, [r7, #0x3c] + mov r0, #0xd + str r0, [r4, #4] + ldr r0, [r4, #0x18] + add r0, #0xf + str r0, [r4, #8] + ldr r0, [r4, #0x1c] + add r0, #0xc + str r0, [r4, #0xc] + str r5, [r4, #0x14] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224E764 + + thumb_func_start MOD18_0224E7E4 +MOD18_0224E7E4: ; 0x0224E7E4 + add r2, r0, #0 + ldr r3, _0224E7F0 ; =0x021E7C81 + add r2, #0xa0 + add r0, r1, #0 + ldr r1, [r2] + bx r3 + .align 2, 0 +_0224E7F0: .word 0x021E7C81 + thumb_func_end MOD18_0224E7E4 + + thumb_func_start MOD18_0224E7F4 +MOD18_0224E7F4: ; 0x0224E7F4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x24 + add r4, r0, #0 + mul r4, r1 + add r0, r5, r4 + ldr r0, [r0, #0x5c] + cmp r0, #0 + bne _0224E80A + bl ErrorHandling +_0224E80A: + add r2, r5, r4 + add r2, #0x60 + add r5, #0x3c + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224E7F4 + + thumb_func_start MOD18_0224E824 +MOD18_0224E824: ; 0x0224E824 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bhi _0224E93C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E848: ; jump table + .short _0224E858 - _0224E848 - 2 ; case 0 + .short _0224E8B4 - _0224E848 - 2 ; case 1 + .short _0224E8C0 - _0224E848 - 2 ; case 2 + .short _0224E8CC - _0224E848 - 2 ; case 3 + .short _0224E8D8 - _0224E848 - 2 ; case 4 + .short _0224E8E4 - _0224E848 - 2 ; case 5 + .short _0224E8F0 - _0224E848 - 2 ; case 6 + .short _0224E91A - _0224E848 - 2 ; case 7 +_0224E858: + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + bl MOD18_0224E01C + ldr r3, _0224E940 ; =0x00000504 + add r1, r6, #0 + add r2, r3, #0 + str r0, [r4, r3] + ldr r0, [r4, r3] + add r2, #0x14 + add r3, #0x18 + add r2, r4, r2 + add r3, r4, r3 + bl MOD18_0224E028 + bl MOD18_0224E2D8 + ldr r3, _0224E944 ; =0x00000508 + add r1, r6, #0 + add r2, r3, #0 + str r0, [r4, r3] + ldr r0, [r4, r3] + add r2, #0x12 + add r3, #0x16 + add r2, r4, r2 + add r3, r4, r3 + bl MOD18_0224E2E4 + add r2, r4, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, #0x5c + bl MOD18_0224F950 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x5c + bl MOD18_0224FA50 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + b _0224E93C +_0224E8B4: + ldr r1, _0224E948 ; =MOD18_0224E960 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8C0: + ldr r1, _0224E94C ; =MOD18_0224EAD4 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8CC: + ldr r1, _0224E950 ; =MOD18_0224EDDC + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8D8: + ldr r1, _0224E954 ; =MOD18_0224F258 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8E4: + ldr r1, _0224E958 ; =MOD18_0224F528 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8F0: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224E93C + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224E93C + bl MOD18_0224712C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + b _0224E93C +_0224E91A: + ldr r0, _0224E944 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E320 + ldr r0, _0224E940 ; =0x00000504 + ldr r0, [r4, r0] + bl MOD18_0224E05C + ldr r0, _0224E95C ; =0x0000050C + ldr r0, [r4, r0] + bl MOD05_021D80A4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, r5, r6, pc} +_0224E93C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224E940: .word 0x00000504 +_0224E944: .word 0x00000508 +_0224E948: .word MOD18_0224E960 +_0224E94C: .word MOD18_0224EAD4 +_0224E950: .word MOD18_0224EDDC +_0224E954: .word MOD18_0224F258 +_0224E958: .word MOD18_0224F528 +_0224E95C: .word 0x0000050C + thumb_func_end MOD18_0224E824 + + thumb_func_start MOD18_0224E960 +MOD18_0224E960: ; 0x0224E960 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, _0224EA68 ; =0x00000504 + ldr r0, [r4, r0] + bl MOD18_0224E068 + cmp r0, #0 + beq _0224EA62 + ldr r0, _0224EA68 ; =0x00000504 + ldr r0, [r4, r0] + bl MOD18_0224E064 + cmp r0, #0 + beq _0224E994 + cmp r0, #1 + beq _0224EA1C + cmp r0, #2 + beq _0224EA34 + b _0224EA4C +_0224E994: + ldr r0, [r5, #0xc] + bl FUN_02026CC4 + bl FUN_02025DB0 + cmp r0, #0 + bne _0224E9BE + mov r0, #0x13 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E9BE: + ldr r3, _0224EA6C ; =0x00000521 + ldrb r1, [r4, r3] + cmp r1, #0xf + bls _0224E9E2 + mov r0, #0x14 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E9E2: + add r0, r3, #3 + ldrb r2, [r4, r0] + add r0, r1, #1 + cmp r0, r2 + ble _0224EA08 + mov r0, #0x14 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA08: + sub r3, #0x19 + ldr r0, [r4, r3] + bl MOD18_0224E314 + mov r0, #2 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA1C: + ldr r2, _0224EA70 ; =0x000004FC + mov r0, #0x10 + ldr r2, [r4, r2] + mov r1, #0xd + bl MOD18_0224FBDC + mov r0, #3 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA34: + ldr r2, _0224EA70 ; =0x000004FC + mov r0, #0x10 + ldr r2, [r4, r2] + mov r1, #0xd + bl MOD18_0224FBDC + mov r0, #4 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA4C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x5c + bl MOD18_0224FAB4 + mov r0, #7 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA62: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224EA68: .word 0x00000504 +_0224EA6C: .word 0x00000521 +_0224EA70: .word 0x000004FC + thumb_func_end MOD18_0224E960 + + thumb_func_start MOD18_0224EA74 +MOD18_0224EA74: ; 0x0224EA74 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _0224EAC0 ; =0x00000528 + mov r0, #0xb + bl FUN_020169D8 + ldr r2, _0224EAC0 ; =0x00000528 + add r4, r0, #0 + mov r1, #0 + bl MI_CpuFill8 + mov r0, #0 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #5 + lsl r0, r0, #8 + str r5, [r4, r0] + ldr r0, [r5, #4] + ldr r1, _0224EAC4 ; =0x0225081C + ldr r0, [r0, #4] + bl MOD05_021D8024 + ldr r1, _0224EAC8 ; =0x0000050C + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_021D80E4 + ldr r1, _0224EACC ; =0x000004FC + add r2, r4, #0 + str r0, [r4, r1] + ldr r1, _0224EAD0 ; =MOD18_0224E824 + add r0, r6, #0 + bl FUN_0204640C + pop {r4, r5, r6, pc} + nop +_0224EAC0: .word 0x00000528 +_0224EAC4: .word 0x0225081C +_0224EAC8: .word 0x0000050C +_0224EACC: .word 0x000004FC +_0224EAD0: .word MOD18_0224E824 + thumb_func_end MOD18_0224EA74 + + thumb_func_start MOD18_0224EAD4 +MOD18_0224EAD4: ; 0x0224EAD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #5 + bhi _0224EB12 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224EAFA: ; jump table + .short _0224EB06 - _0224EAFA - 2 ; case 0 + .short _0224EB88 - _0224EAFA - 2 ; case 1 + .short _0224EBA2 - _0224EAFA - 2 ; case 2 + .short _0224ED42 - _0224EAFA - 2 ; case 3 + .short _0224ED68 - _0224EAFA - 2 ; case 4 + .short _0224ED96 - _0224EAFA - 2 ; case 5 +_0224EB06: + ldr r0, _0224EDC0 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E32C + cmp r0, #0 + bne _0224EB14 +_0224EB12: + b _0224EDBA +_0224EB14: + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + ldr r0, _0224EDC0 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E328 + add r7, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r7, r0 + bne _0224EB42 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224EB42: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02025DC8 + str r0, [sp, #4] + cmp r0, #0 + beq _0224EB82 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _0224EB6C + ldr r1, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + bl MOD18_0224E764 + mov r0, #1 + str r0, [r4, #4] + b _0224EDBA +_0224EB6C: + mov r0, #0x15 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #5 + str r0, [r4, #4] + b _0224EDBA +_0224EB82: + bl ErrorHandling + b _0224EDBA +_0224EB88: + ldr r0, _0224EDC4 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 + ldr r2, _0224EDC4 ; =0x000004DC + ldr r0, [r4, #0x4c] + mov r1, #4 + add r2, r4, r2 + bl MOD18_0224FF14 + mov r0, #2 + str r0, [r4, #4] + b _0224EDBA +_0224EBA2: + ldr r1, _0224EDC4 ; =0x000004DC + add r0, r5, #0 + add r1, r4, r1 + bl MOD18_0224FF24 + add r0, r4, #0 + add r1, r5, #0 + add r2, sp, #8 + bl MOD18_0224FD70 + cmp r0, #0 + bne _0224ECAE + add r3, r4, #0 + add r3, #0x3c + add r2, sp, #0x18 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0224EDC8 ; =0x021C48B8 + mov r1, #0x20 + ldr r0, [r0, #0x4c] + mov r6, #1 + tst r1, r0 + beq _0224EBE8 + ldr r0, _0224EDCC ; =0xFFFF0000 + mov r7, #0 + str r0, [sp] + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224EC3A +_0224EBE8: + mov r1, #0x10 + add r2, r0, #0 + tst r2, r1 + beq _0224EC04 + lsl r0, r1, #0xc + str r0, [sp] + ldr r0, [sp, #0x18] + mov r7, #0 + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224EC3A +_0224EC04: + mov r1, #0x40 + tst r1, r0 + beq _0224EC1E + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + ldr r7, _0224EDCC ; =0xFFFF0000 + sub r0, r0, #1 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + sub r0, r0, #1 + str r0, [sp, #0x24] + b _0224EC3A +_0224EC1E: + mov r1, #0x80 + tst r0, r1 + beq _0224EC38 + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + lsl r7, r1, #9 + add r0, r0, #1 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + b _0224EC3A +_0224EC38: + mov r6, #0 +_0224EC3A: + cmp r6, #0 + beq _0224EC88 + add r0, sp, #0x18 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224EC88 + add r2, r4, #0 + add r3, sp, #0x18 + add r2, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x4c] + bl FUN_021E7EEC + add r6, r0, #0 + add r0, sp, #0xc + add r1, r6, #0 + bl FUN_021E7EA0 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, sp, #0xc + add r0, r0, r7 + str r0, [sp, #0x14] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + add r0, r6, #0 + bl FUN_021E7EB0 +_0224EC88: + ldr r0, _0224EDC8 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #1 + add r1, r2, #0 + tst r1, r0 + beq _0224EC98 + str r0, [sp, #8] + b _0224ECAE +_0224EC98: + mov r0, #2 + tst r0, r2 + beq _0224ECAE + ldr r1, [r4, #0x4c] + add r0, r5, #0 + bl MOD18_0224E7E4 + mov r0, #0 + add sp, #0x28 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_0224ECAE: + ldr r0, [sp, #8] + cmp r0, #0 + bne _0224ECB6 + b _0224EDBA +_0224ECB6: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x3c + add r1, #0x5c + bl MOD18_0224F770 + cmp r0, #0 + beq _0224ED26 + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x3c + add r1, #0x5c + bl MOD18_0224F850 + add r7, r0, #0 + ldr r0, _0224EDC0 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E328 + add r1, r0, #0 + add r0, r6, #0 + add r2, r7, #0 + bl FUN_02025EDC + ldr r0, _0224EDD0 ; =0x000005FE + bl FUN_020054C8 + ldr r0, [r4, #0x50] + bl MOD18_02247138 + mov r0, #0xb + bl MOD18_02247118 + ldr r1, _0224EDC4 ; =0x000004DC + str r0, [r4, #8] + add r0, r5, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + ldr r0, _0224EDD4 ; =0x00000521 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #1 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224EDBA +_0224ED26: + ldr r0, _0224EDD8 ; =0x00000602 + bl FUN_020054C8 + mov r0, #0xc + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r4, #4] + b _0224EDBA +_0224ED42: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224EDBA + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224EDBA + bl MOD18_0224712C + mov r0, #2 + str r0, [r4, #4] + b _0224EDBA +_0224ED68: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224EDBA + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224EDBA + bl MOD18_0224712C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224ED96: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224EDBA + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224EDBA + bl MOD18_0224712C + mov r0, #0 + str r0, [r4, #4] +_0224EDBA: + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224EDC0: .word 0x00000508 +_0224EDC4: .word 0x000004DC +_0224EDC8: .word 0x021C48B8 +_0224EDCC: .word 0xFFFF0000 +_0224EDD0: .word 0x000005FE +_0224EDD4: .word 0x00000521 +_0224EDD8: .word 0x00000602 + thumb_func_end MOD18_0224EAD4 + + thumb_func_start MOD18_0224EDDC +MOD18_0224EDDC: ; 0x0224EDDC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #6 + bls _0224EDF8 + b _0224F252 +_0224EDF8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224EE04: ; jump table + .short _0224EE12 - _0224EE04 - 2 ; case 0 + .short _0224EE52 - _0224EE04 - 2 ; case 1 + .short _0224F122 - _0224EE04 - 2 ; case 2 + .short _0224F192 - _0224EE04 - 2 ; case 3 + .short _0224F1BC - _0224EE04 - 2 ; case 4 + .short _0224F1E2 - _0224EE04 - 2 ; case 5 + .short _0224F224 - _0224EE04 - 2 ; case 6 +_0224EE12: + ldr r0, _0224F148 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + bl MOD18_0224FBD4 + ldr r0, _0224F14C ; =0x000004FC + add r2, r4, #0 + ldr r1, [r4, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #0xc + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224EE4C + ldr r1, [sp, #0xc] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r2, _0224F148 ; =0x000004DC + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r4, r2 + bl MOD18_0224FF14 +_0224EE4C: + mov r0, #1 + str r0, [r4, #4] + b _0224F252 +_0224EE52: + ldr r1, _0224F148 ; =0x000004DC + mov r0, #1 + str r0, [sp] + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF24 + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD18_0224FDDC + ldr r1, _0224F14C ; =0x000004FC + cmp r0, #0 + ldr r2, [r4, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x14] + ldr r2, [r4, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x1c] + ldr r2, [r4, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x18] + ldr r2, [r4, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x20] + ldr r2, [r4, r1] + ldr r6, [r2, #0x58] + ldr r5, [r2, #0x60] + bne _0224EF54 + ldr r0, _0224F150 ; =0x021C48B8 + mov r2, #0x20 + ldr r0, [r0, #0x4c] + tst r2, r0 + beq _0224EEB4 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r6, r6, r0 + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + sub r0, r0, #1 + str r0, [sp, #0x1c] + b _0224EF1E +_0224EEB4: + mov r2, #0x10 + tst r2, r0 + beq _0224EED6 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, r0 + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0224EF1E +_0224EED6: + mov r2, #0x40 + tst r2, r0 + beq _0224EEF8 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r5, r5, r0 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224EF1E +_0224EEF8: + mov r2, #0x80 + tst r0, r2 + beq _0224EF1A + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r5, r5, r0 + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224EF1E +_0224EF1A: + mov r0, #0 + str r0, [sp] +_0224EF1E: + ldr r0, _0224F150 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + add r2, r0, #0 + tst r2, r1 + beq _0224EF2E + str r1, [sp, #0x10] + b _0224EF54 +_0224EF2E: + mov r1, #2 + tst r0, r1 + beq _0224EF54 + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + bl MOD18_0224FBF8 + ldr r1, _0224F148 ; =0x000004DC + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224EF54: + ldr r0, [sp] + cmp r0, #0 + beq _0224EFD6 + add r0, sp, #0x14 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224EFD6 + ldr r0, _0224F14C ; =0x000004FC + add r3, sp, #8 + ldr r1, [r4, r0] + str r6, [r1, #0x58] + ldr r1, [r4, r0] + str r5, [r1, #0x60] + ldr r2, [sp, #0x14] + ldr r1, [r4, r0] + str r2, [r1, #0x64] + ldr r2, [sp, #0x18] + ldr r1, [r4, r0] + str r2, [r1, #0x68] + ldr r1, [r4, r0] + add r2, r4, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r2, #0x5c + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224EFC4 + ldr r0, _0224F148 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF80 + ldr r2, [sp, #8] + mov r1, #0x24 + mul r1, r2 + add r1, r4, r1 + ldr r1, [r1, #0x70] + cmp r0, r1 + beq _0224EFD6 + ldr r1, _0224F148 ; =0x000004DC + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + ldr r2, _0224F148 ; =0x000004DC + ldr r1, [sp, #8] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r4, r2 + bl MOD18_0224FF14 + b _0224EFD6 +_0224EFC4: + ldr r1, _0224F148 ; =0x000004DC + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + ldr r0, _0224F148 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 +_0224EFD6: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224F00E + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + ldr r0, [r0, #0x64] + cmp r0, #0x20 + blt _0224EFEA + bl ErrorHandling +_0224EFEA: + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + ldr r0, [r0, #0x68] + cmp r0, #0x20 + blt _0224EFF8 + bl ErrorHandling +_0224EFF8: + ldr r0, _0224F14C ; =0x000004FC + add r2, r4, #0 + ldr r1, [r4, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #4 + bl MOD18_0224F7EC + cmp r0, #0 + bne _0224F010 +_0224F00E: + b _0224F252 +_0224F010: + ldr r1, [sp, #4] + cmp r1, #0 + beq _0224F10C + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x74] + bl MOD18_02247138 + ldr r1, [sp, #4] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x74] + cmp r0, #6 + bne _0224F09E + ldr r0, _0224F154 ; =0x00000523 + ldrb r1, [r4, r0] + cmp r1, #0x10 + bne _0224F04E + mov r0, #0xf + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224F252 +_0224F04E: + sub r0, r0, #1 + ldrb r0, [r4, r0] + sub r0, r0, #1 + cmp r0, r1 + bge _0224F06E + mov r0, #0x12 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224F252 +_0224F06E: + mov r0, #0x19 + lsl r0, r0, #6 + bl FUN_020054C8 + mov r0, #0xe + bl MOD18_02247118 + str r0, [r4, #8] + ldr r0, _0224F158 ; =0x00000522 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0224F08A + bl ErrorHandling +_0224F08A: + ldr r0, _0224F158 ; =0x00000522 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #2 + strb r1, [r4, r0] + mov r0, #2 + str r0, [r4, #4] + b _0224F0E0 +_0224F09E: + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r5, r0, #0 + ldr r0, _0224F15C ; =0x000005EB + bl FUN_020054C8 + ldr r1, [sp, #4] + add r0, r5, #0 + bl FUN_02025F30 + mov r0, #0xd + bl MOD18_02247118 + str r0, [r4, #8] + ldr r0, _0224F160 ; =0x00000521 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0224F0CE + bl ErrorHandling +_0224F0CE: + ldr r0, _0224F160 ; =0x00000521 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #1 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r4, #4] +_0224F0E0: + ldr r2, [sp, #4] + mov r1, #0x24 + mul r1, r2 + add r1, r4, r1 + ldr r1, [r1, #0x70] + add r0, r7, #0 + bl MOD18_0224E7E4 + add r1, r4, #0 + ldr r0, [sp, #4] + add r1, #0x5c + bl MOD18_0224F8CC + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + bl MOD18_0224FBF8 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + b _0224F252 +_0224F10C: + mov r0, #0x16 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224F252 +_0224F122: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F13E + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + bhs _0224F140 +_0224F13E: + b _0224F252 +_0224F140: + bl MOD18_0224712C + ldr r0, _0224F158 ; =0x00000522 + b _0224F164 + .align 2, 0 +_0224F148: .word 0x000004DC +_0224F14C: .word 0x000004FC +_0224F150: .word 0x021C48B8 +_0224F154: .word 0x00000523 +_0224F158: .word 0x00000522 +_0224F15C: .word 0x000005EB +_0224F160: .word 0x00000521 +_0224F164: + ldrb r1, [r4, r0] + add r0, r0, #1 + ldrb r0, [r4, r0] + sub r5, r1, r0 + bpl _0224F172 + bl ErrorHandling +_0224F172: + cmp r5, #0 + bne _0224F184 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F184: + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #5 + str r0, [r4, #4] + b _0224F252 +_0224F192: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F252 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F252 + bl MOD18_0224712C + mov r0, #0 + str r0, [r4, #4] + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F1BC: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F252 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F252 + bl MOD18_0224712C + mov r0, #1 + str r0, [r4, #4] + b _0224F252 +_0224F1E2: + mov r1, #0x52 + lsl r1, r1, #4 + ldrb r2, [r4, r1] + add r0, r2, #1 + strb r0, [r4, r1] + cmp r2, #0xa + blo _0224F252 + add r0, r1, #2 + ldrb r2, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + mov r1, #0 + sub r5, r2, r0 + add r0, r5, #0 + bl MOD18_0224714C + cmp r5, #1 + bne _0224F20E + mov r0, #0x11 + bl MOD18_02247118 + b _0224F214 +_0224F20E: + mov r0, #0x19 + bl MOD18_02247118 +_0224F214: + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + str r0, [r4, #4] + b _0224F252 +_0224F224: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F252 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F252 + bl MOD18_0224712C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F252: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224EDDC + + thumb_func_start MOD18_0224F258 +MOD18_0224F258: ; 0x0224F258 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _0224F27E + cmp r0, #1 + beq _0224F2BE + cmp r0, #2 + bne _0224F27C + b _0224F4EC +_0224F27C: + b _0224F510 +_0224F27E: + ldr r0, _0224F518 ; =0x000004DC + add r0, r5, r0 + bl MOD18_0224FF00 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + bl MOD18_0224FBD4 + ldr r0, _0224F51C ; =0x000004FC + add r2, r5, #0 + ldr r1, [r5, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #0xc + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224F2B8 + ldr r1, [sp, #0xc] + mov r0, #0x24 + mul r0, r1 + add r0, r5, r0 + ldr r2, _0224F518 ; =0x000004DC + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r5, r2 + bl MOD18_0224FF14 +_0224F2B8: + mov r0, #1 + str r0, [r5, #4] + b _0224F510 +_0224F2BE: + ldr r1, _0224F518 ; =0x000004DC + mov r0, #1 + str r0, [sp] + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF24 + add r0, r5, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD18_0224FE4C + ldr r1, _0224F51C ; =0x000004FC + cmp r0, #0 + ldr r2, [r5, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x14] + ldr r2, [r5, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x1c] + ldr r2, [r5, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x18] + ldr r2, [r5, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x20] + ldr r2, [r5, r1] + ldr r6, [r2, #0x58] + ldr r4, [r2, #0x60] + bne _0224F3C0 + ldr r0, _0224F520 ; =0x021C48B8 + mov r2, #0x20 + ldr r0, [r0, #0x4c] + tst r2, r0 + beq _0224F320 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r6, r6, r0 + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + sub r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F38A +_0224F320: + mov r2, #0x10 + tst r2, r0 + beq _0224F342 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, r0 + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F38A +_0224F342: + mov r2, #0x40 + tst r2, r0 + beq _0224F364 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r4, r4, r0 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224F38A +_0224F364: + mov r2, #0x80 + tst r0, r2 + beq _0224F386 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r4, r4, r0 + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224F38A +_0224F386: + mov r0, #0 + str r0, [sp] +_0224F38A: + ldr r0, _0224F520 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + add r2, r0, #0 + tst r2, r1 + beq _0224F39A + str r1, [sp, #0x10] + b _0224F3C0 +_0224F39A: + mov r1, #2 + tst r0, r1 + beq _0224F3C0 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + bl MOD18_0224FBF8 + ldr r1, _0224F518 ; =0x000004DC + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF64 + mov r0, #1 + add r1, r5, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F3C0: + ldr r0, [sp] + cmp r0, #0 + beq _0224F442 + add r0, sp, #0x14 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224F442 + ldr r0, _0224F51C ; =0x000004FC + add r3, sp, #8 + ldr r1, [r5, r0] + str r6, [r1, #0x58] + ldr r1, [r5, r0] + str r4, [r1, #0x60] + ldr r2, [sp, #0x14] + ldr r1, [r5, r0] + str r2, [r1, #0x64] + ldr r2, [sp, #0x18] + ldr r1, [r5, r0] + str r2, [r1, #0x68] + ldr r1, [r5, r0] + add r2, r5, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r2, #0x5c + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224F430 + ldr r0, _0224F518 ; =0x000004DC + add r0, r5, r0 + bl MOD18_0224FF80 + ldr r2, [sp, #8] + mov r1, #0x24 + mul r1, r2 + add r1, r5, r1 + ldr r1, [r1, #0x70] + cmp r0, r1 + beq _0224F442 + ldr r1, _0224F518 ; =0x000004DC + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF64 + ldr r2, _0224F518 ; =0x000004DC + ldr r1, [sp, #8] + mov r0, #0x24 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r5, r2 + bl MOD18_0224FF14 + b _0224F442 +_0224F430: + ldr r1, _0224F518 ; =0x000004DC + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF64 + ldr r0, _0224F518 ; =0x000004DC + add r0, r5, r0 + bl MOD18_0224FF00 +_0224F442: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224F510 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + ldr r0, [r0, #0x64] + cmp r0, #0x20 + blt _0224F456 + bl ErrorHandling +_0224F456: + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + ldr r0, [r0, #0x68] + cmp r0, #0x20 + blt _0224F464 + bl ErrorHandling +_0224F464: + ldr r0, _0224F51C ; =0x000004FC + add r2, r5, #0 + ldr r1, [r5, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #4 + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224F510 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0224F4D6 + mov r1, #0x24 + mul r1, r0 + add r1, r5, r1 + ldr r1, [r1, #0x74] + cmp r1, #6 + bne _0224F4A2 + mov r0, #0x10 + bl MOD18_02247118 + str r0, [r5, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r5, r0] + mov r0, #2 + str r0, [r5, #4] + b _0224F510 +_0224F4A2: + add r1, r5, #0 + bl MOD18_0224E7F4 + ldr r0, [sp, #4] + add r1, r5, #0 + bl MOD18_0224FB04 + add r1, r5, #0 + ldr r0, [sp, #4] + add r1, #0x5c + bl MOD18_0224F8CC + ldr r0, _0224F524 ; =0x000005EB + bl FUN_020054C8 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + bl MOD18_0224FBF8 + mov r0, #5 + add r1, r5, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F4D6: + mov r0, #0x17 + bl MOD18_02247118 + str r0, [r5, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r5, r0] + mov r0, #2 + str r0, [r5, #4] + b _0224F510 +_0224F4EC: + ldr r0, [r5, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F510 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r5, r0] + add r1, r2, #1 + strb r1, [r5, r0] + cmp r2, #0x1e + blo _0224F510 + bl MOD18_0224712C + mov r0, #1 + str r0, [r5, #4] +_0224F510: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224F518: .word 0x000004DC +_0224F51C: .word 0x000004FC +_0224F520: .word 0x021C48B8 +_0224F524: .word 0x000005EB + thumb_func_end MOD18_0224F258 + + thumb_func_start MOD18_0224F528 +MOD18_0224F528: ; 0x0224F528 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + str r0, [sp] + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #3 + bls _0224F544 + b _0224F750 +_0224F544: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F550: ; jump table + .short _0224F558 - _0224F550 - 2 ; case 0 + .short _0224F572 - _0224F550 - 2 ; case 1 + .short _0224F6FC - _0224F550 - 2 ; case 2 + .short _0224F722 - _0224F550 - 2 ; case 3 +_0224F558: + ldr r0, _0224F758 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 + ldr r2, _0224F758 ; =0x000004DC + ldr r0, [r4, #0x4c] + mov r1, #4 + add r2, r4, r2 + bl MOD18_0224FF14 + mov r0, #1 + str r0, [r4, #4] + b _0224F750 +_0224F572: + ldr r1, _0224F758 ; =0x000004DC + ldr r0, [sp] + add r1, r4, r1 + bl MOD18_0224FF24 + ldr r1, [sp] + add r0, r4, #0 + add r2, sp, #4 + bl MOD18_0224FE94 + cmp r0, #0 + beq _0224F58C + b _0224F692 +_0224F58C: + add r3, r4, #0 + add r3, #0x3c + add r2, sp, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0224F75C ; =0x021C48B8 + mov r1, #0x20 + ldr r0, [r0, #0x4c] + mov r6, #1 + tst r1, r0 + beq _0224F5B8 + ldr r0, [sp, #0x14] + ldr r7, _0224F760 ; =0xFFFF0000 + sub r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + mov r5, #0 + sub r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F604 +_0224F5B8: + mov r1, #0x10 + add r2, r0, #0 + tst r2, r1 + beq _0224F5D2 + ldr r0, [sp, #0x14] + lsl r7, r1, #0xc + add r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + mov r5, #0 + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F604 +_0224F5D2: + mov r1, #0x40 + tst r1, r0 + beq _0224F5EA + ldr r0, [sp, #0x18] + mov r7, #0 + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + ldr r5, _0224F760 ; =0xFFFF0000 + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224F604 +_0224F5EA: + mov r1, #0x80 + tst r0, r1 + beq _0224F602 + ldr r0, [sp, #0x18] + mov r7, #0 + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + lsl r5, r1, #9 + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224F604 +_0224F602: + mov r6, #0 +_0224F604: + cmp r6, #0 + beq _0224F650 + add r0, sp, #0x14 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224F650 + add r2, r4, #0 + add r3, sp, #0x14 + add r2, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [sp] + ldr r1, [r4, #0x4c] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7EEC + add r6, r0, #0 + add r0, sp, #8 + add r1, r6, #0 + bl FUN_021E7EA0 + ldr r0, [sp, #8] + add r1, sp, #8 + add r0, r0, r7 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r0, r0, r5 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, r6, #0 + bl FUN_021E7EB0 +_0224F650: + ldr r0, _0224F75C ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #1 + add r1, r2, #0 + tst r1, r0 + beq _0224F660 + str r0, [sp, #4] + b _0224F692 +_0224F660: + mov r0, #2 + tst r0, r2 + beq _0224F692 + add r0, r4, #0 + add r2, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x1c + add r2, #0x5c + bl MOD18_0224F890 + add r0, r4, #0 + bl MOD18_0224FB64 + ldr r1, _0224F758 ; =0x000004DC + ldr r0, [sp] + add r1, r4, r1 + bl MOD18_0224FF64 + mov r0, #4 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F692: + ldr r0, [sp, #4] + cmp r0, #0 + beq _0224F750 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x3c + add r1, #0x5c + bl MOD18_0224F770 + cmp r0, #0 + beq _0224F6E0 + add r0, r4, #0 + add r2, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x3c + add r2, #0x5c + bl MOD18_0224F890 + ldr r0, _0224F764 ; =0x000005FE + bl FUN_020054C8 + ldr r2, _0224F768 ; =0x000004FC + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x40] + ldr r2, [r4, r2] + bl MOD18_0224FBDC + ldr r1, _0224F758 ; =0x000004DC + ldr r0, [sp] + add r1, r4, r1 + bl MOD18_0224FF64 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r4, #4] + b _0224F750 +_0224F6E0: + ldr r0, _0224F76C ; =0x00000602 + bl FUN_020054C8 + mov r0, #0xc + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #2 + str r0, [r4, #4] + b _0224F750 +_0224F6FC: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F750 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F750 + bl MOD18_0224712C + mov r0, #1 + str r0, [r4, #4] + b _0224F750 +_0224F722: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F750 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F750 + bl MOD18_0224712C + mov r0, #4 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F750: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224F758: .word 0x000004DC +_0224F75C: .word 0x021C48B8 +_0224F760: .word 0xFFFF0000 +_0224F764: .word 0x000005FE +_0224F768: .word 0x000004FC +_0224F76C: .word 0x00000602 + thumb_func_end MOD18_0224F528 + + thumb_func_start MOD18_0224F770 +MOD18_0224F770: ; 0x0224F770 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + add r7, r0, #0 + mov r6, #0 + add r4, r5, #0 +_0224F77C: + ldr r0, [r5] + cmp r0, #1 + bne _0224F794 + add r0, r4, #4 + add r1, r7, #0 + bl MOD18_0224F908 + cmp r0, #0 + beq _0224F794 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F794: + add r6, r6, #1 + add r5, #0x24 + add r4, #0x24 + cmp r6, #0x20 + blt _0224F77C + ldr r4, _0224F7E4 ; =0x0225080C + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r7, #0 + add r1, r2, #0 + bl MOD18_0224F908 + cmp r0, #0 + beq _0224F7BE + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F7BE: + ldr r4, _0224F7E8 ; =0x022507FC + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r7, #0 + add r1, r2, #0 + bl MOD18_0224F908 + cmp r0, #0 + bne _0224F7DE + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224F7DE: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224F7E4: .word 0x0225080C +_0224F7E8: .word 0x022507FC + thumb_func_end MOD18_0224F770 + + thumb_func_start MOD18_0224F7EC +MOD18_0224F7EC: ; 0x0224F7EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r2, #0 + add r7, r0, #0 + str r1, [sp] + str r3, [sp, #4] + mov r6, #0 + add r4, r5, #0 +_0224F7FC: + ldr r0, [r5] + cmp r0, #1 + bne _0224F81A + ldr r2, [sp] + add r0, r4, #4 + add r1, r7, #0 + bl MOD18_0224F930 + cmp r0, #0 + beq _0224F81A + ldr r0, [sp, #4] + add sp, #8 + str r6, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224F81A: + add r6, r6, #1 + add r5, #0x24 + add r4, #0x24 + cmp r6, #0x20 + blt _0224F7FC + ldr r0, [sp, #4] + mov r1, #0x20 + str r1, [r0] + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224F7EC + + thumb_func_start MOD18_0224F830 +MOD18_0224F830: ; 0x0224F830 + ldr r1, [r0] + cmp r1, #0xa + blt _0224F84C + ldr r1, [r0, #8] + cmp r1, #0x15 + bgt _0224F84C + ldr r1, [r0, #4] + cmp r1, #0xc + blt _0224F84C + ldr r0, [r0, #0xc] + cmp r0, #0x17 + bgt _0224F84C + mov r0, #0 + bx lr +_0224F84C: + mov r0, #1 + bx lr + thumb_func_end MOD18_0224F830 + + thumb_func_start MOD18_0224F850 +MOD18_0224F850: ; 0x0224F850 + push {r4, lr} + add r3, r0, #0 + mov r2, #0 + add r4, r1, #0 +_0224F858: + ldr r0, [r4] + cmp r0, #0 + bne _0224F880 + mov r0, #0x24 + add r4, r2, #0 + mul r4, r0 + mov r0, #1 + str r0, [r1, r4] + add r0, r1, r4 + add r4, r0, #4 + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + add r0, r2, #0 + pop {r4, pc} +_0224F880: + add r2, r2, #1 + add r4, #0x24 + cmp r2, #0x20 + blt _0224F858 + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD18_0224F850 + + thumb_func_start MOD18_0224F890 +MOD18_0224F890: ; 0x0224F890 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r4, r2, #0 + cmp r7, #0x20 + blt _0224F8A0 + bl ErrorHandling +_0224F8A0: + mov r0, #0x24 + add r6, r7, #0 + mul r6, r0 + ldr r0, [r4, r6] + cmp r0, #0 + beq _0224F8B0 + bl ErrorHandling +_0224F8B0: + mov r0, #1 + str r0, [r4, r6] + add r0, r4, r6 + add r2, r0, #4 + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224F890 + + thumb_func_start MOD18_0224F8CC +MOD18_0224F8CC: ; 0x0224F8CC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0x20 + blt _0224F8DA + bl ErrorHandling +_0224F8DA: + cmp r5, #0 + bne _0224F8E2 + bl ErrorHandling +_0224F8E2: + mov r0, #0x24 + add r6, r5, #0 + mul r6, r0 + ldr r0, [r4, r6] + cmp r0, #0 + bne _0224F8F2 + bl ErrorHandling +_0224F8F2: + mov r1, #0 + add r0, r4, r6 + str r1, [r0, #0x14] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x10] + str r1, [r0, #0x18] + str r1, [r4, r6] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224F8CC + + thumb_func_start MOD18_0224F908 +MOD18_0224F908: ; 0x0224F908 + ldr r3, [r0] + ldr r2, [r1, #8] + cmp r3, r2 + bgt _0224F92C + ldr r3, [r1] + ldr r2, [r0, #8] + cmp r3, r2 + bgt _0224F92C + ldr r3, [r0, #4] + ldr r2, [r1, #0xc] + cmp r3, r2 + bgt _0224F92C + ldr r1, [r1, #4] + ldr r0, [r0, #0xc] + cmp r1, r0 + bgt _0224F92C + mov r0, #1 + bx lr +_0224F92C: + mov r0, #0 + bx lr + thumb_func_end MOD18_0224F908 + + thumb_func_start MOD18_0224F930 +MOD18_0224F930: ; 0x0224F930 + ldr r3, [r0] + cmp r3, r1 + bgt _0224F94C + ldr r3, [r0, #8] + cmp r1, r3 + bgt _0224F94C + ldr r1, [r0, #4] + cmp r1, r2 + bgt _0224F94C + ldr r0, [r0, #0xc] + cmp r2, r0 + bgt _0224F94C + mov r0, #1 + bx lr +_0224F94C: + mov r0, #0 + bx lr + thumb_func_end MOD18_0224F930 + + thumb_func_start MOD18_0224F950 +MOD18_0224F950: ; 0x0224F950 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, [r0, #0xc] + add r6, r1, #0 + str r2, [sp, #4] + bl FUN_02026CA8 + ldr r1, _0224F9E4 ; =0x00000521 + mov r2, #0 + strb r2, [r6, r1] + add r1, r1, #1 + add r7, r0, #0 + strb r2, [r6, r1] + bl FUN_02026874 + ldr r1, _0224F9E8 ; =0x00000523 + strb r0, [r6, r1] + add r0, r7, #0 + bl FUN_020268A0 + ldr r1, _0224F9EC ; =0x00000524 + mov r4, #0 + strb r0, [r6, r1] +_0224F97E: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_020267C4 + add r5, r0, #0 + beq _0224F9DA + cmp r5, #6 + bne _0224F99A + ldr r0, _0224F9F0 ; =0x00000522 + ldrb r0, [r6, r0] + add r1, r0, #1 + ldr r0, _0224F9F0 ; =0x00000522 + strb r1, [r6, r0] + b _0224F9B8 +_0224F99A: + cmp r5, #1 + beq _0224F9B8 + cmp r5, #2 + beq _0224F9B8 + cmp r5, #3 + beq _0224F9B8 + cmp r5, #4 + beq _0224F9B8 + cmp r5, #5 + beq _0224F9B8 + ldr r0, _0224F9E4 ; =0x00000521 + ldrb r0, [r6, r0] + add r1, r0, #1 + ldr r0, _0224F9E4 ; =0x00000521 + strb r1, [r6, r0] +_0224F9B8: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026810 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026840 + add r3, r0, #0 + ldr r0, [sp, #4] + ldr r2, [sp, #8] + str r0, [sp] + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224F9F4 +_0224F9DA: + add r4, r4, #1 + cmp r4, #0x20 + blt _0224F97E + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224F9E4: .word 0x00000521 +_0224F9E8: .word 0x00000523 +_0224F9EC: .word 0x00000524 +_0224F9F0: .word 0x00000522 + thumb_func_end MOD18_0224F950 + + thumb_func_start MOD18_0224F9F4 +MOD18_0224F9F4: ; 0x0224F9F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r0, #0 + mov r0, #0 + add r5, r2, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r1, #0 + str r1, [sp] + ldr r4, [sp, #0x38] + str r0, [sp, #0x18] + str r5, [sp, #4] + str r6, [sp, #8] + bl FUN_0204CA80 + str r0, [sp, #0x1c] + ldr r0, [sp] + bl FUN_0204CA90 + str r0, [sp, #0x20] + sub r0, r0, #1 + add r0, r6, r0 + ldr r1, [sp, #0x1c] + str r0, [sp, #0x10] + sub r1, r1, #1 + add r1, r5, r1 + mov r0, #0x24 + add r2, r7, #0 + mul r2, r0 + add r0, r4, r2 + add r5, sp, #4 + add r3, r0, #4 + str r1, [sp, #0xc] + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #1 + str r0, [r4, r2] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224F9F4 + + thumb_func_start MOD18_0224FA50 +MOD18_0224FA50: ; 0x0224FA50 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, #0xa0 + ldr r0, [r0] + add r4, r1, #0 + bl MOD05_021E7C1C + mov r7, #1 + mov r6, #0 + lsl r7, r7, #0xc +_0224FA66: + ldr r0, [r4] + cmp r0, #0 + beq _0224FAA8 + ldr r1, [r4, #0x18] + add r0, r5, #0 + bl MOD18_0224FAEC + add r2, r0, #0 + ldr r0, [r4, #4] + ldr r3, [r4, #0x1c] + ldr r1, [r4, #0x20] + lsl r0, r0, #0x10 + lsl r3, r3, #0xf + add r0, r0, r3 + str r0, [sp, #8] + ldr r0, [r4, #8] + lsl r1, r1, #0xf + lsl r0, r0, #0x10 + add r0, r0, r1 + str r0, [sp, #0x10] + str r7, [sp, #0xc] + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x4c] + add r3, sp, #8 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + bl FUN_021E7FBC + str r0, [r4, #0x14] +_0224FAA8: + add r6, r6, #1 + add r4, #0x24 + cmp r6, #0x20 + blt _0224FA66 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224FA50 + + thumb_func_start MOD18_0224FAB4 +MOD18_0224FAB4: ; 0x0224FAB4 + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl FUN_02026CA8 + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_0224FAC4: + ldr r0, [r5] + cmp r0, #1 + bne _0224FAD2 + ldr r2, [r5, #0x18] + ldr r3, [r5, #4] + ldr r0, [r5, #8] + b _0224FAD8 +_0224FAD2: + add r2, r7, #0 + add r3, r7, #0 + add r0, r7, #0 +_0224FAD8: + str r0, [sp] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202671C + add r4, r4, #1 + add r5, #0x24 + cmp r4, #0x20 + blt _0224FAC4 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224FAB4 + + thumb_func_start MOD18_0224FAEC +MOD18_0224FAEC: ; 0x0224FAEC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _0224FAF8 + bl ErrorHandling +_0224FAF8: + ldr r0, [r5, #0x2c] + add r1, r4, #0 + bl MOD05_021F4CD4 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224FAEC + + thumb_func_start MOD18_0224FB04 +MOD18_0224FB04: ; 0x0224FB04 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + mov r0, #0x24 + add r4, r6, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldr r0, [r0, #0x5c] + cmp r0, #0 + bne _0224FB1E + bl ErrorHandling +_0224FB1E: + add r0, r5, #0 + add r0, #0x60 + add r4, r0, r4 + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r5, r0] + ldr r1, [r4, #0x10] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7EEC + add r1, r0, #0 + add r0, sp, #0 + bl FUN_021E7EA0 + add r3, sp, #0 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r6, [r5, #0xc] + add r5, #0x1c + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224FB04 + + thumb_func_start MOD18_0224FB64 +MOD18_0224FB64: ; 0x0224FB64 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0xc] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x5c] + cmp r0, #0 + bne _0224FB7A + bl ErrorHandling +_0224FB7A: + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r1, [r4, #0x2c] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7EEC + add r4, #0x10 + add r1, r4, #0 + bl FUN_021E7EB0 + pop {r4, pc} + thumb_func_end MOD18_0224FB64 + + thumb_func_start MOD18_0224FB94 +MOD18_0224FB94: ; 0x0224FB94 + str r0, [r1] + mov r0, #0 + str r0, [r1, #4] + bx lr + thumb_func_end MOD18_0224FB94 + + thumb_func_start MOD18_0224FB9C +MOD18_0224FB9C: ; 0x0224FB9C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, #0x54 + str r0, [sp] + ldr r1, _0224FBC4 ; =0x02251350 + mov r0, #4 + add r2, r4, #0 + add r3, sp, #4 + bl FUN_0201B21C + mov r0, #0 + str r0, [r4, #0x58] + str r0, [r4, #0x5c] + str r0, [r4, #0x60] + str r0, [r4, #0x64] + str r0, [r4, #0x68] + str r0, [r4, #0x6c] + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0224FBC4: .word 0x02251350 + thumb_func_end MOD18_0224FB9C + + thumb_func_start MOD18_0224FBC8 +MOD18_0224FBC8: ; 0x0224FBC8 + ldr r3, _0224FBD0 ; =0x02016A19 + ldr r0, [r0, #0x54] + bx r3 + nop +_0224FBD0: .word 0x02016A19 + thumb_func_end MOD18_0224FBC8 + + thumb_func_start MOD18_0224FBD4 +MOD18_0224FBD4: ; 0x0224FBD4 + mov r1, #1 + str r1, [r0, #0x6c] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FBD4 + + thumb_func_start MOD18_0224FBDC +MOD18_0224FBDC: ; 0x0224FBDC + str r0, [r2, #0x64] + lsl r3, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + str r1, [r2, #0x68] + add r3, r3, r0 + str r3, [r2, #0x58] + lsr r3, r0, #3 + lsl r1, r1, #0x10 + str r3, [r2, #0x5c] + add r0, r1, r0 + str r0, [r2, #0x60] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FBDC + + thumb_func_start MOD18_0224FBF8 +MOD18_0224FBF8: ; 0x0224FBF8 + mov r1, #0 + str r1, [r0, #0x6c] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FBF8 + + thumb_func_start MOD18_0224FC00 +MOD18_0224FC00: ; 0x0224FC00 + ldr r3, _0224FC14 ; =0x0000FFFF + cmp r0, r3 + beq _0224FC08 + str r0, [r2] +_0224FC08: + ldr r0, _0224FC14 ; =0x0000FFFF + cmp r1, r0 + beq _0224FC10 + str r1, [r2, #4] +_0224FC10: + bx lr + nop +_0224FC14: .word 0x0000FFFF + thumb_func_end MOD18_0224FC00 + + thumb_func_start MOD18_0224FC18 +MOD18_0224FC18: ; 0x0224FC18 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + str r0, [sp] + add r0, #0x88 + ldr r1, _0224FCD4 ; =0x021C48F8 + ldr r6, [r0] + ldrh r0, [r1, #0x1c] + ldrh r1, [r1, #0x1e] + add r4, r2, #0 + bl MOD18_0224FC00 + ldr r1, [r4] + ldr r2, [r4, #4] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #8 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + add r3, r6, #0 + bl MOD05_021F0318 + ldr r1, [sp, #8] + mov r3, #0x1b + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + ldr r1, [sp, #0x10] + str r0, [sp, #4] + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r7, r0, #0x10 + ldr r0, [sp, #4] + ldr r1, [sp, #4] + lsr r0, r0, #0x1f + lsl r1, r1, #0x1b + sub r1, r1, r0 + ror r1, r3 + add r2, r0, r1 + lsr r1, r7, #0x1f + lsl r0, r7, #0x1b + sub r0, r0, r1 + ror r0, r3 + ldr r6, [r5, #0x18] + ldr r4, [r5, #0x1c] + add r0, r1, r0 + sub r1, r6, #1 + add r1, r2, r1 + str r1, [sp, #0x1c] + sub r1, r4, #1 + str r0, [sp, #0x18] + add r0, r0, r1 + str r0, [sp, #0x20] + add r0, sp, #0x14 + str r2, [sp, #0x14] + bl MOD18_0224F830 + cmp r0, #0 + bne _0224FCCE + add r3, sp, #0x14 + add r2, r5, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [sp, #4] + lsl r1, r7, #0x10 + lsl r2, r0, #0x10 + lsl r0, r6, #0xf + str r2, [sp, #8] + add r0, r2, r0 + str r0, [sp, #8] + lsl r0, r4, #0xf + str r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, [sp] + ldr r1, [r5, #0x10] + add r0, #0xa0 + str r0, [sp] + ldr r0, [r0] + bl FUN_021E7EEC + add r1, sp, #8 + bl FUN_021E7EB0 +_0224FCCE: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224FCD4: .word 0x021C48F8 + thumb_func_end MOD18_0224FC18 + + thumb_func_start MOD18_0224FCD8 +MOD18_0224FCD8: ; 0x0224FCD8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + add r0, #0x88 + ldr r1, _0224FD6C ; =0x021C48F8 + ldr r5, [r0] + ldrh r0, [r1, #0x1c] + add r6, r2, #0 + ldrh r1, [r1, #0x1e] + add r2, r4, #0 + bl MOD18_0224FC00 + ldr r1, [r4] + ldr r2, [r4, #4] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + add r3, r5, #0 + bl MOD05_021F0318 + ldr r1, [sp] + mov r2, #0x1b + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + ldr r1, [sp, #8] + asr r4, r0, #0x10 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r5, r0, #0x10 + lsr r1, r4, #0x1f + lsl r0, r4, #0x1b + sub r0, r0, r1 + ror r0, r2 + add r0, r1, r0 + lsr r3, r5, #0x1f + lsl r1, r5, #0x1b + sub r1, r1, r3 + ror r1, r2 + add r1, r3, r1 + str r0, [sp, #0xc] + str r0, [sp, #0x14] + add r0, sp, #0xc + str r1, [sp, #0x10] + str r1, [sp, #0x18] + bl MOD18_0224F830 + cmp r0, #0 + bne _0224FD66 + mov r0, #2 + lsl r1, r4, #0x10 + lsl r0, r0, #0xe + add r1, r1, r0 + str r1, [sp] + lsl r1, r5, #0x10 + add r1, r1, r0 + lsr r0, r0, #3 + add r2, r6, #0 + add r3, sp, #0 + str r1, [sp, #8] + str r0, [sp, #4] + ldmia r3!, {r0, r1} + add r2, #0x58 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r4, [r6, #0x64] + str r5, [r6, #0x68] +_0224FD66: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_0224FD6C: .word 0x021C48F8 + thumb_func_end MOD18_0224FCD8 + + thumb_func_start MOD18_0224FD70 +MOD18_0224FD70: ; 0x0224FD70 + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FDD0 ; =0x021C48F8 + str r0, [r2] + ldrh r5, [r4, #0x20] + cmp r5, #0 + beq _0224FDA0 + ldr r0, _0224FDD4 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FD9C + ldr r2, _0224FDD8 ; =0x000004F8 + mov r0, #1 + str r0, [r3, r2] + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FD9C: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FDA0: + ldrh r4, [r4, #0x22] + cmp r4, #0 + beq _0224FDC0 + ldr r2, _0224FDD8 ; =0x000004F8 + ldr r0, [r3, r2] + cmp r0, #0 + beq _0224FDBC + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FDBC: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FDC0: + ldr r1, _0224FDD8 ; =0x000004F8 + ldr r4, [r3, r1] + cmp r4, #0 + beq _0224FDCE + str r0, [r3, r1] + mov r1, #1 + str r1, [r2] +_0224FDCE: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224FDD0: .word 0x021C48F8 +_0224FDD4: .word 0x021C48B8 +_0224FDD8: .word 0x000004F8 + thumb_func_end MOD18_0224FD70 + + thumb_func_start MOD18_0224FDDC +MOD18_0224FDDC: ; 0x0224FDDC + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FE40 ; =0x021C48F8 + str r0, [r2] + ldrh r5, [r4, #0x20] + cmp r5, #0 + beq _0224FE0E + ldr r0, _0224FE44 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FE0A + ldr r2, _0224FE48 ; =0x000004F8 + mov r0, #1 + str r0, [r3, r2] + add r0, r1, #0 + add r1, r2, #0 + add r2, r2, #4 + sub r1, #8 + ldr r2, [r3, r2] + add r1, r3, r1 + bl MOD18_0224FCD8 +_0224FE0A: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FE0E: + ldrh r4, [r4, #0x22] + cmp r4, #0 + beq _0224FE30 + ldr r2, _0224FE48 ; =0x000004F8 + ldr r0, [r3, r2] + cmp r0, #0 + beq _0224FE2C + add r0, r1, #0 + add r1, r2, #0 + add r2, r2, #4 + sub r1, #8 + ldr r2, [r3, r2] + add r1, r3, r1 + bl MOD18_0224FCD8 +_0224FE2C: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FE30: + ldr r1, _0224FE48 ; =0x000004F8 + ldr r4, [r3, r1] + cmp r4, #0 + beq _0224FE3E + str r0, [r3, r1] + mov r1, #1 + str r1, [r2] +_0224FE3E: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224FE40: .word 0x021C48F8 +_0224FE44: .word 0x021C48B8 +_0224FE48: .word 0x000004F8 + thumb_func_end MOD18_0224FDDC + + thumb_func_start MOD18_0224FE4C +MOD18_0224FE4C: ; 0x0224FE4C + push {r4, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FE88 ; =0x021C48F8 + str r0, [r2] + ldrh r4, [r4, #0x20] + cmp r4, #0 + beq _0224FE80 + ldr r0, _0224FE8C ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FE7C + ldr r4, _0224FE90 ; =0x000004F8 + mov r0, #1 + str r0, [r3, r4] + str r0, [r2] + add r0, r1, #0 + add r1, r4, #0 + add r2, r4, #4 + sub r1, #8 + ldr r2, [r3, r2] + add r1, r3, r1 + bl MOD18_0224FCD8 +_0224FE7C: + mov r0, #1 + pop {r4, pc} +_0224FE80: + ldr r1, _0224FE90 ; =0x000004F8 + str r0, [r3, r1] + pop {r4, pc} + nop +_0224FE88: .word 0x021C48F8 +_0224FE8C: .word 0x021C48B8 +_0224FE90: .word 0x000004F8 + thumb_func_end MOD18_0224FE4C + + thumb_func_start MOD18_0224FE94 +MOD18_0224FE94: ; 0x0224FE94 + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FEF4 ; =0x021C48F8 + str r0, [r2] + ldrh r5, [r4, #0x20] + cmp r5, #0 + beq _0224FEC4 + ldr r0, _0224FEF8 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FEC0 + ldr r2, _0224FEFC ; =0x000004F8 + mov r0, #1 + str r0, [r3, r2] + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FEC0: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FEC4: + ldrh r4, [r4, #0x22] + cmp r4, #0 + beq _0224FEE4 + ldr r2, _0224FEFC ; =0x000004F8 + ldr r0, [r3, r2] + cmp r0, #0 + beq _0224FEE0 + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FEE0: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FEE4: + ldr r1, _0224FEFC ; =0x000004F8 + ldr r4, [r3, r1] + cmp r4, #0 + beq _0224FEF2 + str r0, [r3, r1] + mov r1, #1 + str r1, [r2] +_0224FEF2: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224FEF4: .word 0x021C48F8 +_0224FEF8: .word 0x021C48B8 +_0224FEFC: .word 0x000004F8 + thumb_func_end MOD18_0224FE94 + + thumb_func_start MOD18_0224FF00 +MOD18_0224FF00: ; 0x0224FF00 + mov r2, #0 + str r2, [r0, #4] + ldr r1, _0224FF10 ; =0x0000FFFF + str r2, [r0, #8] + str r1, [r0] + str r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + .align 2, 0 +_0224FF10: .word 0x0000FFFF + thumb_func_end MOD18_0224FF00 + + thumb_func_start MOD18_0224FF14 +MOD18_0224FF14: ; 0x0224FF14 + mov r3, #0 + str r3, [r2, #4] + str r1, [r2, #8] + str r0, [r2] + str r3, [r2, #0xc] + mov r0, #1 + str r0, [r2, #0x10] + bx lr + thumb_func_end MOD18_0224FF14 + + thumb_func_start MOD18_0224FF24 +MOD18_0224FF24: ; 0x0224FF24 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _0224FF60 + ldr r1, [r4, #4] + add r2, r1, #1 + str r2, [r4, #4] + ldr r1, [r4, #8] + cmp r2, r1 + blt _0224FF60 + mov r1, #0 + str r1, [r4, #4] + ldr r1, [r4, #0xc] + add r0, #0xa0 + add r1, r1, #1 + lsr r3, r1, #0x1f + lsl r2, r1, #0x1f + sub r2, r2, r3 + mov r1, #0x1f + ror r2, r1 + add r1, r3, r2 + str r1, [r4, #0xc] + ldr r0, [r0] + ldr r1, [r4] + bl FUN_021E7EEC + ldr r1, [r4, #0xc] + bl FUN_021E7EC0 +_0224FF60: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224FF24 + + thumb_func_start MOD18_0224FF64 +MOD18_0224FF64: ; 0x0224FF64 + push {r3, lr} + ldr r2, [r1, #0x10] + cmp r2, #0 + beq _0224FF7C + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_021E7EEC + mov r1, #0 + bl FUN_021E7EC0 +_0224FF7C: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224FF64 + + thumb_func_start MOD18_0224FF80 +MOD18_0224FF80: ; 0x0224FF80 + ldr r0, [r0] + bx lr + thumb_func_end MOD18_0224FF80 + + thumb_func_start MOD18_0224FF84 +MOD18_0224FF84: ; 0x0224FF84 + ldr r3, _0224FF8C ; =MOD18_0224FB9C + add r0, r2, #0 + bx r3 + nop +_0224FF8C: .word MOD18_0224FB9C + thumb_func_end MOD18_0224FF84 + + thumb_func_start MOD18_0224FF90 +MOD18_0224FF90: ; 0x0224FF90 + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FF90 + + thumb_func_start MOD18_0224FF94 +MOD18_0224FF94: ; 0x0224FF94 + ldr r3, _0224FF9C ; =MOD18_0224FBC8 + add r0, r2, #0 + bx r3 + nop +_0224FF9C: .word MOD18_0224FBC8 + thumb_func_end MOD18_0224FF94 + + thumb_func_start MOD18_0224FFA0 +MOD18_0224FFA0: ; 0x0224FFA0 + push {r3, r4, r5, lr} + sub sp, #0x30 + ldr r0, [r2, #0x6c] + cmp r0, #0 + beq _0224FFD6 + ldr r5, _0224FFDC ; =0x02250834 + add r4, sp, #0xc + mov r3, #4 +_0224FFB0: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _0224FFB0 + ldr r0, [r5] + ldr r5, _0224FFE0 ; =0x022507F0 + str r0, [r4] + add r4, sp, #0 + ldmia r5!, {r0, r1} + add r3, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r0, r2, #0 + add r2, #0x58 + add r1, r2, #0 + add r2, sp, #0xc + bl FUN_0201B26C +_0224FFD6: + add sp, #0x30 + pop {r3, r4, r5, pc} + nop +_0224FFDC: .word 0x02250834 +_0224FFE0: .word 0x022507F0 + thumb_func_end MOD18_0224FFA0 + + .section .data + ; 0x0224FFE4 + .incbin "baserom.nds", 0x281B44, 0x139C + + .section .bss + ; 0x02251380 + .space 0x80 diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s new file mode 100644 index 00000000..76dad3e4 --- /dev/null +++ b/arm9/modules/19/asm/module_19.s @@ -0,0 +1,106 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD19_02252440 +MOD19_02252440: ; 0x02252440 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #3 + mov r1, #8 + lsl r2, r0, #0xf + bl FUN_0201681C + mov r0, #0 + bl GXS_SetGraphicsMode + mov r0, #0x80 + bl GX_SetBankForSubBG + mov r0, #1 + lsl r0, r0, #8 + bl GX_SetBankForSubOBJ + ldr r2, _022524E0 ; =0x04001000 + ldr r0, _022524E4 ; =0xFFCFFFEF + ldr r1, [r2] + mov r3, #0 + and r1, r0 + mov r0, #0x10 + orr r0, r1 + str r0, [r2] + ldr r2, _022524E8 ; =0x02252508 + add r0, r4, #0 + mov r1, #4 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + mov r0, #0xc + mov r1, #0xa + add r2, r4, #0 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + mov r0, #0xc + mov r1, #0xb + add r2, r4, #0 + mov r3, #4 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #0xc + add r1, r0, #0 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + ldr r2, _022524E0 ; =0x04001000 + ldr r0, _022524EC ; =0xFFFF1FFF + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r1, [r2] + ldr r0, _022524F0 ; =0xFFFFE0FF + and r1, r0 + lsr r0, r2, #0x12 + orr r0, r1 + str r0, [r2] + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_022524E0: .word 0x04001000 +_022524E4: .word 0xFFCFFFEF +_022524E8: .word 0x02252508 +_022524EC: .word 0xFFFF1FFF +_022524F0: .word 0xFFFFE0FF + thumb_func_end MOD19_02252440 + + thumb_func_start MOD19_022524F4 +MOD19_022524F4: ; 0x022524F4 + push {r3, lr} + mov r1, #4 + bl FUN_020178A0 + mov r0, #8 + bl FUN_020168D0 + pop {r3, pc} + thumb_func_end MOD19_022524F4 + + thumb_func_start MOD19_02252504 +MOD19_02252504: ; 0x02252504 + mov r0, #1 + bx lr + thumb_func_end MOD19_02252504 + + .section .data + ; 0x02252508 + .incbin "baserom.nds", 0x2830C8, 0x38 diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s new file mode 100644 index 00000000..afe8646c --- /dev/null +++ b/arm9/modules/20/asm/module_20.s @@ -0,0 +1,4570 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 2, 0 + + thumb_func_start MOD20_02252440 +MOD20_02252440: ; 0x02252440 + ldr r3, _02252444 ; =0x02037791 + bx r3 + .align 2, 0 +_02252444: .word 0x02037791 + thumb_func_end MOD20_02252440 + + thumb_func_start MOD20_02252448 +MOD20_02252448: ; 0x02252448 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #3 + str r2, [sp] + mov r1, #7 + lsl r2, r0, #0xe + add r7, r3, #0 + bl FUN_0201681C + mov r0, #3 + mov r1, #8 + lsl r2, r0, #0xe + bl FUN_0201681C + mov r0, #7 + mov r1, #0x60 + bl FUN_02016998 + add r4, r0, #0 + beq _022524B2 + str r4, [r5] + ldr r0, [sp] + str r6, [r4, #0x5c] + str r0, [r4, #0x54] + bl FUN_0204C1A8 + str r0, [r4, #0x58] + ldr r0, [sp, #0x18] + str r7, [r4, #0x4c] + str r0, [r4, #0x50] + add r0, r4, #0 + bl MOD20_0225253C + cmp r0, #0 + beq _022524B2 + bl FUN_0201CC08 + mov r0, #4 + bl FUN_0201CC24 + ldr r0, _022524B4 ; =MOD20_022525F0 + str r5, [r4, #0x34] + add r1, r4, #0 + mov r2, #4 + bl FUN_0200CA44 + str r0, [r4, #0x38] + ldr r0, _022524B8 ; =MOD20_0225259C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 +_022524B2: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022524B4: .word MOD20_022525F0 +_022524B8: .word MOD20_0225259C + thumb_func_end MOD20_02252448 + + thumb_func_start MOD20_022524BC +MOD20_022524BC: ; 0x022524BC + push {r3, lr} + ldrb r1, [r0] + cmp r1, #3 + beq _022524CE + cmp r1, #4 + beq _022524CE + mov r1, #3 + bl MOD20_022525F8 +_022524CE: + pop {r3, pc} + thumb_func_end MOD20_022524BC + + thumb_func_start MOD20_022524D0 +MOD20_022524D0: ; 0x022524D0 + cmp r0, #0 + bne _022524D8 + mov r0, #1 + bx lr +_022524D8: + mov r0, #0 + bx lr + thumb_func_end MOD20_022524D0 + + thumb_func_start MOD20_022524DC +MOD20_022524DC: ; 0x022524DC + push {r4, lr} + add r4, r0, #0 + cmp r1, #5 + bhi _0225252E + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022524F0: ; jump table + .short _0225252E - _022524F0 - 2 ; case 0 + .short _022524FC - _022524F0 - 2 ; case 1 + .short _0225252E - _022524F0 - 2 ; case 2 + .short _0225252E - _022524F0 - 2 ; case 3 + .short _0225251E - _022524F0 - 2 ; case 4 + .short _02252502 - _022524F0 - 2 ; case 5 +_022524FC: + mov r0, #1 + strb r0, [r4, #4] + pop {r4, pc} +_02252502: + ldr r0, [r4, #0x58] + bl FUN_0204BF84 + add r1, r0, #1 + ldr r0, _02252530 ; =0x0001869F + cmp r1, r0 + bls _02252512 + mov r1, #0 +_02252512: + ldr r0, [r4, #0x58] + bl FUN_0204BF88 + mov r0, #1 + strb r0, [r4, #7] + pop {r4, pc} +_0225251E: + ldrb r0, [r4, #2] + cmp r0, #2 + bne _0225252E + ldr r1, [r4, #0x44] + cmp r1, #0 + beq _0225252E + ldr r0, [r4, #0x48] + blx r1 +_0225252E: + pop {r4, pc} + .align 2, 0 +_02252530: .word 0x0001869F + thumb_func_end MOD20_022524DC + + thumb_func_start MOD20_02252534 +MOD20_02252534: ; 0x02252534 + ldrb r0, [r0, #3] + bx lr + thumb_func_end MOD20_02252534 + + thumb_func_start MOD20_02252538 +MOD20_02252538: ; 0x02252538 + ldr r0, [r0, #0x14] + bx lr + thumb_func_end MOD20_02252538 + + thumb_func_start MOD20_0225253C +MOD20_0225253C: ; 0x0225253C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r2, [r4, #0x50] + add r0, #0x1c + add r1, #0x20 + add r3, r4, #0 + bl MOD20_02252C5C + cmp r0, #0 + beq _02252578 + mov r1, #0 + strb r1, [r4] + strb r1, [r4, #1] + strb r1, [r4, #3] + strb r1, [r4, #4] + strb r1, [r4, #7] + strb r1, [r4, #5] + strb r1, [r4, #6] + sub r0, r1, #1 + str r0, [r4, #0x14] + strb r1, [r4, #2] + add r0, r4, #0 + str r1, [r4, #8] + bl MOD20_022529C4 + cmp r0, #0 + beq _02252578 + mov r0, #1 + pop {r4, pc} +_02252578: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD20_0225253C + + thumb_func_start MOD20_0225257C +MOD20_0225257C: ; 0x0225257C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_0200CAB4 + add r0, r4, #0 + bl MOD20_02252A08 + add r0, r4, #0 + bl MOD20_022528FC + ldr r0, [r4, #0x1c] + bl MOD20_02252E18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_0225257C + + thumb_func_start MOD20_0225259C +MOD20_0225259C: ; 0x0225259C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #4 + bhs _022525C0 + cmp r0, #0 + beq _022525B2 + add r0, r4, #0 + bl MOD20_02252A14 +_022525B2: + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022525EC ; =0x022544CC + ldr r1, [r1, r2] + blx r1 + pop {r3, r4, r5, pc} +_022525C0: + beq _022525C6 + bl ErrorHandling +_022525C6: + ldr r0, [r4, #0x34] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl MOD20_0225257C + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #7 + bl FUN_020168D0 + mov r0, #8 + bl FUN_020168D0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022525EC: .word 0x022544CC + thumb_func_end MOD20_0225259C + + thumb_func_start MOD20_022525F0 +MOD20_022525F0: ; 0x022525F0 + mov r0, #0 + strb r0, [r1, #4] + strb r0, [r1, #7] + bx lr + thumb_func_end MOD20_022525F0 + + thumb_func_start MOD20_022525F8 +MOD20_022525F8: ; 0x022525F8 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + thumb_func_end MOD20_022525F8 + + thumb_func_start MOD20_02252600 +MOD20_02252600: ; 0x02252600 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _02252684 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02252616: ; jump table + .short _0225261E - _02252616 - 2 ; case 0 + .short _0225262E - _02252616 - 2 ; case 1 + .short _0225265A - _02252616 - 2 ; case 2 + .short _02252670 - _02252616 - 2 ; case 3 +_0225261E: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_0225262E: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl MOD20_02252EA4 + cmp r0, #0 + beq _02252684 + ldr r0, [r4, #0x58] + bl FUN_0204BF14 + add r5, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD20_022528B0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD20_02252918 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_0225265A: + bl MOD20_0225293C + cmp r0, #0 + beq _02252684 + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_02252670: + ldr r0, [r4, #0x1c] + mov r1, #1 + bl MOD20_02252EA4 + cmp r0, #0 + beq _02252684 + add r0, r4, #0 + mov r1, #1 + bl MOD20_022525F8 +_02252684: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02252600 + + thumb_func_start MOD20_02252688 +MOD20_02252688: ; 0x02252688 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #4 + bls _02252694 + b _022527AA +_02252694: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022526A0: ; jump table + .short _022526AA - _022526A0 - 2 ; case 0 + .short _022526D4 - _022526A0 - 2 ; case 1 + .short _0225271A - _022526A0 - 2 ; case 2 + .short _02252750 - _022526A0 - 2 ; case 3 + .short _0225276C - _022526A0 - 2 ; case 4 +_022526AA: + bl MOD20_02252C08 + cmp r0, #0 + bne _022527AA + ldr r0, [r4, #8] + cmp r0, #3 + beq _022526BC + cmp r0, #5 + bne _022527AA +_022526BC: + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + strb r0, [r4, #5] + ldr r0, [r4, #0x1c] + mov r1, #4 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r4, pc} +_022526D4: + ldr r0, [r4, #8] + cmp r0, #3 + beq _022526DE + cmp r0, #5 + bne _022526E2 +_022526DE: + mov r0, #1 + str r0, [r4, #0xc] +_022526E2: + ldr r0, [r4, #0x1c] + bl MOD20_02252EB0 + cmp r0, #0 + beq _022527AA + ldr r0, [r4, #0x58] + bl FUN_0204BF1C + str r0, [r4, #0x20] + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02252710 + ldr r0, [r4, #0x1c] + mov r1, #9 + bl MOD20_02252E80 + mov r0, #0x1e + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #4 + strb r0, [r4, #1] + pop {r4, pc} +_02252710: + mov r0, #3 + str r0, [r4, #0x10] + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_0225271A: + ldr r1, [r4, #8] + cmp r1, #3 + beq _02252724 + cmp r1, #5 + bne _0225273A +_02252724: + ldr r0, [r4, #0x1c] + mov r1, #9 + bl MOD20_02252E80 + mov r0, #0x1e + str r0, [r4, #0x10] + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #4 + strb r0, [r4, #1] + pop {r4, pc} +_0225273A: + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _02252746 + sub r0, r1, #1 + str r0, [r4, #0x10] + pop {r4, pc} +_02252746: + bl MOD20_0225294C + mov r0, #3 + strb r0, [r4, #1] + pop {r4, pc} +_02252750: + bl MOD20_02252968 + cmp r0, #0 + beq _022527AA + add r0, r4, #0 + bl MOD20_022528FC + bl FUN_020893E0 + add r0, r4, #0 + mov r1, #2 + bl MOD20_022525F8 + pop {r4, pc} +_0225276C: + ldr r0, [r4, #8] + cmp r0, #3 + beq _02252776 + cmp r0, #5 + bne _0225278C +_02252776: + ldr r0, [r4, #0x58] + bl FUN_0204BF1C + str r0, [r4, #0x20] + mov r0, #0x1e + str r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + mov r1, #0xa + bl MOD20_02252E80 + pop {r4, pc} +_0225278C: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02252798 + sub r0, r0, #1 + str r0, [r4, #0x10] + pop {r4, pc} +_02252798: + ldr r0, [r4, #0x1c] + mov r1, #0xb + bl MOD20_02252E80 + add r0, r4, #0 + bl MOD20_0225294C + mov r0, #3 + strb r0, [r4, #1] +_022527AA: + pop {r4, pc} + thumb_func_end MOD20_02252688 + + thumb_func_start MOD20_022527AC +MOD20_022527AC: ; 0x022527AC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _022527C0 + cmp r1, #1 + beq _022527E4 + cmp r1, #2 + beq _022527FC + pop {r3, r4, r5, pc} +_022527C0: + mov r0, #1 + strb r0, [r4, #6] + ldr r0, [r4, #0x58] + bl FUN_0204BF14 + add r5, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD20_022528B0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD20_02252918 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_022527E4: + bl MOD20_0225293C + cmp r0, #0 + beq _02252816 + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD20_02252E80 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + pop {r3, r4, r5, pc} +_022527FC: + ldr r0, [r4, #0x1c] + mov r1, #2 + bl MOD20_02252EA4 + cmp r0, #0 + beq _02252816 + mov r0, #0 + strb r0, [r4, #5] + strb r0, [r4, #6] + add r0, r4, #0 + mov r1, #1 + bl MOD20_022525F8 +_02252816: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022527AC + + thumb_func_start MOD20_02252818 +MOD20_02252818: ; 0x02252818 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _022528AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0225282E: ; jump table + .short _02252836 - _0225282E - 2 ; case 0 + .short _02252866 - _0225282E - 2 ; case 1 + .short _0225287A - _0225282E - 2 ; case 2 + .short _02252890 - _0225282E - 2 ; case 3 +_02252836: + ldrb r1, [r4, #2] + cmp r1, #3 + bhi _022528AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02252848: ; jump table + .short _02252860 - _02252848 - 2 ; case 0 + .short _02252850 - _02252848 - 2 ; case 1 + .short _02252856 - _02252848 - 2 ; case 2 + .short _02252860 - _02252848 - 2 ; case 3 +_02252850: + mov r0, #1 + strb r0, [r4, #1] + pop {r4, pc} +_02252856: + bl MOD20_0225294C + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_02252860: + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_02252866: + bl MOD20_0225293C + cmp r0, #0 + beq _022528AC + add r0, r4, #0 + bl MOD20_0225294C + mov r0, #2 + strb r0, [r4, #1] + pop {r4, pc} +_0225287A: + bl MOD20_02252968 + cmp r0, #0 + beq _022528AC + ldr r0, [r4, #0x1c] + mov r1, #0xe + bl MOD20_02252E80 + mov r0, #3 + strb r0, [r4, #1] + pop {r4, pc} +_02252890: + ldr r0, [r4, #0x1c] + bl MOD20_02252EB0 + cmp r0, #0 + beq _022528AC + add r0, r4, #0 + bl MOD20_022528FC + bl FUN_0201CD04 + add r0, r4, #0 + mov r1, #4 + bl MOD20_022525F8 +_022528AC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02252818 + + thumb_func_start MOD20_022528B0 +MOD20_022528B0: ; 0x022528B0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bmi _022528BC + cmp r4, #0x19 + blo _022528C0 +_022528BC: + bl ErrorHandling +_022528C0: + mov r0, #0 + ldr r1, [r5, #0x14] + mvn r0, r0 + cmp r1, r0 + bne _022528F0 + ldr r2, _022528F4 ; =0x022544DC + mov r1, #0 +_022528CE: + ldr r0, [r2] + cmp r4, r0 + bne _022528E8 + ldr r0, _022528F8 ; =0x022544E0 + lsl r1, r1, #3 + ldr r6, [r0, r1] + mov r1, #2 + add r0, r6, #0 + bl HandleLoadOverlay + str r4, [r5, #0x14] + str r6, [r5, #0x18] + pop {r4, r5, r6, pc} +_022528E8: + add r1, r1, #1 + add r2, #8 + cmp r1, #0x19 + blo _022528CE +_022528F0: + pop {r4, r5, r6, pc} + nop +_022528F4: .word 0x022544DC +_022528F8: .word 0x022544E0 + thumb_func_end MOD20_022528B0 + + thumb_func_start MOD20_022528FC +MOD20_022528FC: ; 0x022528FC + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + ldr r1, [r4, #0x14] + mvn r0, r0 + cmp r1, r0 + beq _02252916 + ldr r0, [r4, #0x18] + bl UnloadOverlayByID + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x14] +_02252916: + pop {r4, pc} + thumb_func_end MOD20_022528FC + + thumb_func_start MOD20_02252918 +MOD20_02252918: ; 0x02252918 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _02252926 + bl ErrorHandling +_02252926: + add r0, r4, #0 + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x14] + ldr r5, [r4, #0x3c] + add r0, #0x24 + add r1, r4, #0 + blx r5 + mov r0, #1 + strb r0, [r4, #2] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02252918 + + thumb_func_start MOD20_0225293C +MOD20_0225293C: ; 0x0225293C + ldrb r0, [r0, #2] + cmp r0, #2 + bne _02252946 + mov r0, #1 + bx lr +_02252946: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_0225293C + + thumb_func_start MOD20_0225294C +MOD20_0225294C: ; 0x0225294C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #2 + beq _0225295A + bl ErrorHandling +_0225295A: + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x40] + blx r1 + mov r0, #3 + strb r0, [r4, #2] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_0225294C + + thumb_func_start MOD20_02252968 +MOD20_02252968: ; 0x02252968 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _02252972 + mov r0, #1 + bx lr +_02252972: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_02252968 + + thumb_func_start MOD20_02252978 +MOD20_02252978: ; 0x02252978 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + str r5, [r0, #0x3c] + str r4, [r0, #0x40] + mov r1, #0 + str r1, [r0, #0x44] + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252978 + + thumb_func_start MOD20_0225298C +MOD20_0225298C: ; 0x0225298C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #1 + beq _0225299A + bl ErrorHandling +_0225299A: + mov r0, #2 + strb r0, [r4, #2] + pop {r4, pc} + thumb_func_end MOD20_0225298C + + thumb_func_start MOD20_022529A0 +MOD20_022529A0: ; 0x022529A0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #2] + cmp r0, #3 + beq _022529AE + bl ErrorHandling +_022529AE: + mov r0, #0 + strb r0, [r4, #2] + pop {r4, pc} + thumb_func_end MOD20_022529A0 + + thumb_func_start MOD20_022529B4 +MOD20_022529B4: ; 0x022529B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + str r5, [r0, #0x44] + str r4, [r0, #0x48] + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022529B4 + + thumb_func_start MOD20_022529C4 +MOD20_022529C4: ; 0x022529C4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #7 + str r0, [sp] + ldr r0, _02252A00 ; =0x022544C4 + ldr r2, _02252A04 ; =MOD20_02252A24 + mov r1, #2 + add r3, r4, #0 + bl MOD20_02254130 + str r0, [r4, #0x28] + cmp r0, #0 + beq _022529F8 + mov r1, #0 + add r2, r1, #0 + mov r3, #7 + bl MOD20_022542AC + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_022529F8: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_02252A00: .word 0x022544C4 +_02252A04: .word MOD20_02252A24 + thumb_func_end MOD20_022529C4 + + thumb_func_start MOD20_02252A08 +MOD20_02252A08: ; 0x02252A08 + ldr r3, _02252A10 ; =MOD20_02254198 + ldr r0, [r0, #0x28] + bx r3 + nop +_02252A10: .word MOD20_02254198 + thumb_func_end MOD20_02252A08 + + thumb_func_start MOD20_02252A14 +MOD20_02252A14: ; 0x02252A14 + ldr r3, _02252A20 ; =MOD20_022541B4 + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r0, #0x28] + bx r3 + nop +_02252A20: .word MOD20_022541B4 + thumb_func_end MOD20_02252A14 + + thumb_func_start MOD20_02252A24 +MOD20_02252A24: ; 0x02252A24 + push {r3, r4, r5, r6, r7, lr} + add r5, r3, #0 + add r4, r0, #0 + add r0, r5, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252A4C + cmp r7, #0 + beq _02252A46 + cmp r7, #1 + bne _02252A50 + mov r0, #1 + strb r0, [r5, #3] + b _02252A50 +_02252A46: + mov r0, #0 + strb r0, [r5, #3] + b _02252A50 +_02252A4C: + mov r0, #0 + strb r0, [r5, #3] +_02252A50: + cmp r4, #1 + bne _02252A6A + add r0, r5, #0 + bl MOD20_02252C08 + cmp r0, #0 + beq _02252AEA + cmp r7, #1 + bne _02252AEA + ldr r0, _02252AEC ; =0x0000066E + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} +_02252A6A: + mov r4, #0 + mvn r4, r4 + cmp r7, #0 + beq _02252A78 + cmp r7, #1 + beq _02252A7C + b _02252A94 +_02252A78: + mov r4, #8 + b _02252A94 +_02252A7C: + add r0, r5, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252A8C + ldrb r0, [r5, #6] + cmp r0, #0 + beq _02252A92 +_02252A8C: + mov r4, #6 + mov r6, #0 + b _02252A94 +_02252A92: + mov r4, #7 +_02252A94: + mov r0, #0 + ldr r1, [r5, #0x2c] + mvn r0, r0 + cmp r1, r0 + beq _02252AA4 + add r0, r4, #0 + add r4, r1, #0 + str r0, [r5, #0x2c] +_02252AA4: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _02252AC0 + ldr r0, [r5, #0x1c] + add r1, r4, #0 + bl MOD20_02252AF0 + cmp r0, #0 + beq _02252AC0 + sub r0, r4, #6 + cmp r0, #1 + bhi _02252AC0 + str r4, [r5, #0x30] +_02252AC0: + cmp r6, #2 + beq _02252AE0 + cmp r6, #3 + beq _02252AD6 + cmp r6, #5 + bne _02252AE8 + ldr r0, [r5, #0x28] + mov r1, #0 + bl MOD20_022542CC + b _02252AE8 +_02252AD6: + ldr r0, [r5, #0x30] + cmp r0, #6 + bne _02252AE8 + mov r6, #0 + b _02252AE8 +_02252AE0: + ldr r0, [r5, #0x30] + cmp r0, #7 + bne _02252AE8 + mov r6, #3 +_02252AE8: + str r6, [r5, #8] +_02252AEA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02252AEC: .word 0x0000066E + thumb_func_end MOD20_02252A24 + + thumb_func_start MOD20_02252AF0 +MOD20_02252AF0: ; 0x02252AF0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_02252AF8: + add r0, r5, #0 + add r1, r6, #0 + bl MOD20_02252EA4 + cmp r0, #0 + bne _02252B08 + mov r0, #0 + pop {r4, r5, r6, pc} +_02252B08: + add r4, r4, #1 + cmp r4, #3 + blo _02252AF8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD20_02252E80 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_02252AF0 + + thumb_func_start MOD20_02252B1C +MOD20_02252B1C: ; 0x02252B1C + push {r3, lr} + bl MOD20_02252440 + ldr r0, [r0, #0x1c] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02252B1C + + thumb_func_start MOD20_02252B28 +MOD20_02252B28: ; 0x02252B28 + push {r4, lr} + add r4, r0, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252B46 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252B46 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020054C8 +_02252B46: + pop {r4, pc} + thumb_func_end MOD20_02252B28 + + thumb_func_start MOD20_02252B48 +MOD20_02252B48: ; 0x02252B48 + push {r4, lr} + add r4, r0, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252B66 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252B66 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 +_02252B66: + pop {r4, pc} + thumb_func_end MOD20_02252B48 + + thumb_func_start MOD20_02252B68 +MOD20_02252B68: ; 0x02252B68 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252BB4 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252BB4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020AB0 + cmp r0, #0 + beq _02252BB4 + ldr r0, [r5] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02252B98 + mov r1, #1 + b _02252B9A +_02252B98: + mov r1, #0 +_02252B9A: + ldr r0, [r4] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02252BA6 + mov r0, #1 + b _02252BA8 +_02252BA6: + mov r0, #0 +_02252BA8: + tst r0, r1 + beq _02252BB0 + mov r0, #1 + pop {r3, r4, r5, pc} +_02252BB0: + mov r0, #0 + pop {r3, r4, r5, pc} +_02252BB4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252B68 + + thumb_func_start MOD20_02252BB8 +MOD20_02252BB8: ; 0x02252BB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252440 + ldrb r1, [r0, #5] + cmp r1, #0 + bne _02252C04 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252C04 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020ACC + cmp r0, #0 + beq _02252C04 + ldr r0, [r5] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02252BE8 + mov r1, #1 + b _02252BEA +_02252BE8: + mov r1, #0 +_02252BEA: + ldr r0, [r4] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02252BF6 + mov r0, #1 + b _02252BF8 +_02252BF6: + mov r0, #0 +_02252BF8: + tst r0, r1 + beq _02252C00 + mov r0, #1 + pop {r3, r4, r5, pc} +_02252C00: + mov r0, #0 + pop {r3, r4, r5, pc} +_02252C04: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252BB8 + + thumb_func_start MOD20_02252C08 +MOD20_02252C08: ; 0x02252C08 + ldr r3, _02252C10 ; =0x0204646D + ldr r0, [r0, #0x5c] + bx r3 + nop +_02252C10: .word 0x0204646D + thumb_func_end MOD20_02252C08 + + thumb_func_start MOD20_02252C14 +MOD20_02252C14: ; 0x02252C14 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02252C2E + ldrb r0, [r5, #5] + cmp r0, #0 + bne _02252C2E + add r0, r4, #0 + bl MOD20_022541B4 +_02252C2E: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252C14 + + thumb_func_start MOD20_02252C30 +MOD20_02252C30: ; 0x02252C30 + ldrb r0, [r0, #4] + bx lr + thumb_func_end MOD20_02252C30 + + thumb_func_start MOD20_02252C34 +MOD20_02252C34: ; 0x02252C34 + ldrb r0, [r0, #7] + bx lr + thumb_func_end MOD20_02252C34 + + thumb_func_start MOD20_02252C38 +MOD20_02252C38: ; 0x02252C38 + ldr r0, [r0, #0x5c] + bx lr + thumb_func_end MOD20_02252C38 + + thumb_func_start MOD20_02252C3C +MOD20_02252C3C: ; 0x02252C3C + ldr r0, [r0, #0x58] + bx lr + thumb_func_end MOD20_02252C3C + + thumb_func_start MOD20_02252C40 +MOD20_02252C40: ; 0x02252C40 + ldr r0, [r0, #0x54] + bx lr + thumb_func_end MOD20_02252C40 + + thumb_func_start MOD20_02252C44 +MOD20_02252C44: ; 0x02252C44 + push {r3, lr} + ldr r0, [r0, #0x54] + bl FUN_020238F4 + bl FUN_020239CC + cmp r0, #1 + beq _02252C58 + mov r0, #1 + pop {r3, pc} +_02252C58: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD20_02252C44 + + thumb_func_start MOD20_02252C5C +MOD20_02252C5C: ; 0x02252C5C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xea + add r5, r0, #0 + mov r0, #7 + lsl r1, r1, #2 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + str r0, [r5] + add r4, r0, #0 + beq _02252D0A + mov r0, #0x15 + lsl r0, r0, #4 + str r7, [r4, r0] + ldr r0, [r4, r0] + bl FUN_020B0888 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #7 + bl MOD20_02253BA4 + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #0 + bne _02252CA6 + ldr r0, [r5] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02252CA6: + mov r0, #7 + str r6, [r4] + bl FUN_02016B94 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + ldr r0, [sp] + add r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD20_02252D44 + mov r1, #0x57 + lsl r1, r1, #2 + add r0, r4, r1 + sub r1, #8 + ldr r1, [r4, r1] + bl MOD20_02253428 + ldr r0, [r5] + mov r1, #8 + add r0, r0, #4 + bl MOD20_022536F4 + ldr r0, [r5] + mov r1, #0x88 + add r0, #0x2c + bl MOD20_02252E5C + ldr r0, [r5] + mov r1, #0x8c + add r0, #0x84 + bl MOD20_02252E5C + ldr r0, [r5] + mov r1, #0x90 + add r0, #0xdc + bl MOD20_02252E5C + ldr r0, _02252D10 ; =MOD20_02252D14 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02252D0A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02252D10: .word MOD20_02252D14 + thumb_func_end MOD20_02252C5C + + thumb_func_start MOD20_02252D14 +MOD20_02252D14: ; 0x02252D14 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r3, _02252D20 ; =MOD20_02253C78 + ldr r0, [r1, r0] + bx r3 + nop +_02252D20: .word MOD20_02253C78 + thumb_func_end MOD20_02252D14 + + thumb_func_start MOD20_02252D24 +MOD20_02252D24: ; 0x02252D24 + push {r3, lr} + bl MOD20_02252B1C + mov r1, #0x55 + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02252D24 + + thumb_func_start MOD20_02252D34 +MOD20_02252D34: ; 0x02252D34 + push {r3, lr} + bl MOD20_02252B1C + mov r1, #6 + lsl r1, r1, #6 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02252D34 + + thumb_func_start MOD20_02252D44 +MOD20_02252D44: ; 0x02252D44 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xc + mov r1, #0 + add r2, sp, #0 + mov r3, #7 + bl FUN_02006C08 + add r4, r0, #0 + beq _02252D7A + ldr r0, [sp] + mov r2, #0x62 + lsl r2, r2, #2 + add r1, r5, r2 + ldr r0, [r0, #0xc] + add r2, #0x78 + bl MIi_CpuCopy32 + mov r1, #0x62 + lsl r1, r1, #2 + add r0, r5, r1 + add r1, #0x78 + bl DC_FlushRange + add r0, r4, #0 + bl FUN_02016A18 +_02252D7A: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252D44 + + thumb_func_start MOD20_02252D7C +MOD20_02252D7C: ; 0x02252D7C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + bl MOD20_02252B1C + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C3C + bl FUN_0204BF44 + mov r1, #0x62 + lsl r1, r1, #2 + add r5, r4, r1 + lsl r4, r0, #6 + add r0, r5, r4 + lsl r1, r6, #5 + mov r2, #0x20 + bl GXS_LoadBGPltt + add r0, r5, r4 + add r1, r7, #0 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02252D7C + + thumb_func_start MOD20_02252DB4 +MOD20_02252DB4: ; 0x02252DB4 + push {r3, r4, r5, lr} + bl MOD20_02252B1C + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C3C + bl FUN_0204BF44 + mov r1, #0x62 + lsl r0, r0, #5 + lsl r1, r1, #2 + add r0, #0x10 + add r4, r4, r1 + lsl r5, r0, #1 + add r0, r4, r5 + mov r1, #0 + mov r2, #0x20 + bl GXS_LoadBGPltt + add r0, r4, r5 + mov r1, #0 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252DB4 + + thumb_func_start MOD20_02252DEC +MOD20_02252DEC: ; 0x02252DEC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD20_02252B1C + add r4, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C3C + bl FUN_0204BF44 + mov r1, #0x62 + lsl r1, r1, #2 + add r1, r4, r1 + lsl r0, r0, #6 + add r0, r1, r0 + add r1, r5, #0 + mov r2, #0x20 + bl MIi_CpuCopy16 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02252DEC + + thumb_func_start MOD20_02252E18 +MOD20_02252E18: ; 0x02252E18 + push {r4, lr} + add r4, r0, #0 + beq _02252E58 + mov r0, #0x57 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD20_022535A4 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02252E36 + bl MOD20_02253C4C +_02252E36: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02252E44 + bl FUN_02016A18 +_02252E44: + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02252E52 + bl FUN_0200CAB4 +_02252E52: + add r0, r4, #0 + bl FUN_02016A18 +_02252E58: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02252E18 + + thumb_func_start MOD20_02252E5C +MOD20_02252E5C: ; 0x02252E5C + push {r4, r5} + mov r2, #0xf + ldr r5, _02252E7C ; =0x022545EC + mov r4, #0 + lsl r2, r2, #0xc +_02252E66: + ldrh r3, [r5] + add r4, r4, #1 + add r5, r5, #2 + add r3, r1, r3 + orr r3, r2 + strh r3, [r0] + add r0, r0, #2 + cmp r4, #0x2c + blo _02252E66 + pop {r4, r5} + bx lr + .align 2, 0 +_02252E7C: .word 0x022545EC + thumb_func_end MOD20_02252E5C + + thumb_func_start MOD20_02252E80 +MOD20_02252E80: ; 0x02252E80 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, r2, #4 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + ldr r0, _02252EA0 ; =0x02254644 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02252EA0: .word 0x02254644 + thumb_func_end MOD20_02252E80 + + thumb_func_start MOD20_02252EA4 +MOD20_02252EA4: ; 0x02252EA4 + ldr r3, _02252EAC ; =MOD20_02253794 + add r0, r0, #4 + bx r3 + nop +_02252EAC: .word MOD20_02253794 + thumb_func_end MOD20_02252EA4 + + thumb_func_start MOD20_02252EB0 +MOD20_02252EB0: ; 0x02252EB0 + ldr r3, _02252EB8 ; =MOD20_022537B8 + add r0, r0, #4 + bx r3 + nop +_02252EB8: .word MOD20_022537B8 + thumb_func_end MOD20_02252EB0 + + thumb_func_start MOD20_02252EBC +MOD20_02252EBC: ; 0x02252EBC + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, r0, #4 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02252EBC + + thumb_func_start MOD20_02252ED0 +MOD20_02252ED0: ; 0x02252ED0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0 + bl GXS_SetGraphicsMode + mov r0, #0x80 + bl GX_SetBankForSubBG + mov r0, #1 + lsl r0, r0, #8 + bl GX_SetBankForSubOBJ + ldr r2, _02252FD8 ; =0x04001000 + ldr r0, _02252FDC ; =0xFFCFFFEF + ldr r1, [r2] + and r1, r0 + mov r0, #0x10 + orr r0, r1 + str r0, [r2] + bl FUN_0201E740 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r2, _02252FE0 ; =0x022545B4 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + ldr r2, _02252FE4 ; =0x022545D0 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0x40 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #7 + str r0, [sp, #0xc] + mov r0, #0xc + lsl r2, r0, #5 + ldr r2, [r4, r2] + mov r1, #0xe + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #7 + str r0, [sp, #0xc] + mov r0, #0xc + lsl r2, r0, #5 + ldr r2, [r4, r2] + mov r1, #0xf + mov r3, #4 + bl FUN_020068C8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02252C44 + add r3, r0, #0 + mov r0, #0x1e + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0xd + mov r2, #4 + lsl r3, r3, #5 + bl FUN_02006948 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r1, #0x18 + str r1, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + mov r2, #0xd8 + bl FUN_02018540 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02017CD0 + ldr r0, _02252FD8 ; =0x04001000 + ldr r1, _02252FE8 ; =0xFFFFE0FF + ldr r2, [r0] + and r2, r1 + mov r1, #0x13 + lsl r1, r1, #8 + orr r1, r2 + str r1, [r0] + ldr r2, [r0] + ldr r1, _02252FEC ; =0xFFFF1FFF + and r1, r2 + str r1, [r0] + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_02252FD8: .word 0x04001000 +_02252FDC: .word 0xFFCFFFEF +_02252FE0: .word 0x022545B4 +_02252FE4: .word 0x022545D0 +_02252FE8: .word 0xFFFFE0FF +_02252FEC: .word 0xFFFF1FFF + thumb_func_end MOD20_02252ED0 + + thumb_func_start MOD20_02252FF0 +MOD20_02252FF0: ; 0x02252FF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r0, r1, #0 + bl MOD20_022538A8 + add r4, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538AC + cmp r0, #0 + beq _0225301C + cmp r0, #1 + beq _02253028 + cmp r0, #2 + beq _022530F6 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0225301C: + mov r0, #0 + strh r0, [r4] + strh r0, [r4, #2] + ldr r0, [sp, #0x10] + bl MOD20_022538B0 +_02253028: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0 + beq _022530FC + mov r0, #0 + strh r0, [r4] + ldrh r0, [r4, #2] + add r0, #0xc + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #0x28 + bls _02253048 + mov r0, #0x28 + strh r0, [r4, #2] +_02253048: + ldrh r1, [r4, #2] + lsr r3, r1, #0x1f + lsl r2, r1, #0x1e + lsr r0, r1, #2 + sub r2, r2, r3 + mov r1, #0x1e + ror r2, r1 + mov r1, #0xc + sub r6, r1, r0 + lsl r0, r0, #1 + str r0, [sp, #0x14] + lsl r0, r6, #0x18 + ldr r1, [sp, #0x14] + add r7, r3, r2 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + lsl r1, r1, #0x18 + str r0, [sp, #4] + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xf + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0x40 + mov r3, #2 + bl FUN_02018540 + cmp r7, #0 + beq _022530DA + sub r0, r6, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r1, #0x18 + add r2, r7, #0 + add r2, #0xd8 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_02018540 + ldr r0, [sp, #0x14] + mov r2, #0xd8 + add r0, r6, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r1, #0x18 + sub r2, r2, r7 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_02018540 +_022530DA: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #5 + bl FUN_02017CD0 + ldrh r0, [r4, #2] + cmp r0, #0x28 + bne _022530FC + ldr r0, [sp, #0x10] + bl MOD20_022538B0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_022530F6: + ldr r0, [sp, #0x10] + bl MOD20_02252EBC +_022530FC: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02252FF0 + + thumb_func_start MOD20_02253100 +MOD20_02253100: ; 0x02253100 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r0, r1, #0 + bl MOD20_022538A8 + add r4, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [sp, #0x10] + bl MOD20_022538AC + cmp r0, #0 + beq _0225312C + cmp r0, #1 + beq _02253138 + cmp r0, #2 + beq _0225321E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0225312C: + mov r0, #0 + strh r0, [r4] + strh r0, [r4, #2] + ldr r0, [sp, #0x10] + bl MOD20_022538B0 +_02253138: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0 + beq _02253224 + mov r0, #0 + strh r0, [r4] + ldrh r0, [r4, #2] + add r0, #8 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #0x28 + bls _02253158 + mov r0, #0x28 + strh r0, [r4, #2] +_02253158: + ldrh r0, [r4, #2] + mov r3, #2 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + lsr r7, r0, #2 + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r6, r2, r1 + mov r0, #0x16 + sub r0, r0, r7 + str r0, [sp, #0x14] + lsl r1, r7, #0x18 + str r3, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xf + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0xd8 + bl FUN_02018540 + ldr r0, [sp, #0x14] + lsl r1, r7, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xf + str r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #5 + mov r2, #0xd8 + mov r3, #2 + bl FUN_02018540 + cmp r6, #0 + beq _02253202 + mov r0, #0 + str r0, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + sub r3, r6, #1 + mov r2, #0xdb + sub r2, r2, r3 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_02018540 + ldr r0, [sp, #0x14] + add r6, #0xd4 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r1, #0x18 + lsl r2, r6, #0x10 + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r5, r0] + mov r1, #5 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_02018540 +_02253202: + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #5 + bl FUN_02017CD0 + ldrh r0, [r4, #2] + cmp r0, #0x28 + bne _02253224 + ldr r0, [sp, #0x10] + bl MOD20_022538B0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0225321E: + ldr r0, [sp, #0x10] + bl MOD20_02252EBC +_02253224: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02253100 + + thumb_func_start MOD20_02253228 +MOD20_02253228: ; 0x02253228 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + add r2, r0, #0 + cmp r2, #4 + bhs _02253280 + mov r3, #2 + str r3, [sp] + mov r1, #0x18 + mov r6, #0xd7 + sub r2, r6, r2 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + lsr r2, r2, #0x10 + bl FUN_02018540 + add r0, r6, #0 + add r0, #0xa9 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_022538B0 + add sp, #0x10 + pop {r4, r5, r6, pc} +_02253280: + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_02253228 + + thumb_func_start MOD20_0225328C +MOD20_0225328C: ; 0x0225328C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + add r2, r0, #0 + cmp r2, #4 + bhs _022532E4 + mov r3, #2 + str r3, [sp] + mov r1, #0x18 + mov r6, #0xdb + sub r2, r6, r2 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + lsr r2, r2, #0x10 + bl FUN_02018540 + add r0, r6, #0 + add r0, #0xa5 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_022538B0 + add sp, #0x10 + pop {r4, r5, r6, pc} +_022532E4: + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_0225328C + + thumb_func_start MOD20_022532F0 +MOD20_022532F0: ; 0x022532F0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0xb + add r2, r4, #0 + str r0, [sp] + mov r1, #4 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + add r2, #0x84 + mov r3, #0x1b + bl FUN_02018148 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_02017CD0 + ldr r0, _02253334 ; =0x00000671 + bl FUN_020054C8 + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02253334: .word 0x00000671 + thumb_func_end MOD20_022532F0 + + thumb_func_start MOD20_02253338 +MOD20_02253338: ; 0x02253338 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0xb + add r2, r4, #0 + str r0, [sp] + mov r1, #4 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + add r2, #0x2c + mov r3, #0x1b + bl FUN_02018148 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02253338 + + thumb_func_start MOD20_02253378 +MOD20_02253378: ; 0x02253378 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #0xb + add r2, r4, #0 + str r0, [sp] + mov r1, #4 + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + add r2, #0xdc + mov r3, #0x1b + bl FUN_02018148 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_02017CD0 + ldr r0, _022533BC ; =0x0000066F + bl FUN_020054C8 + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022533BC: .word 0x0000066F + thumb_func_end MOD20_02253378 + + thumb_func_start MOD20_022533C0 +MOD20_022533C0: ; 0x022533C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + mov r1, #0x57 + add r4, r0, #0 + lsl r1, r1, #2 + add r1, r4, r1 + bl MOD20_02253430 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r1, [r4] + add r0, r4, r0 + bl MOD20_0225354C + add r0, r5, #0 + bl MOD20_02252EBC + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_022533C0 + + thumb_func_start MOD20_022533EC +MOD20_022533EC: ; 0x022533EC + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r1, r0, #0 + mov r0, #0x57 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r1, [r1] + bl MOD20_0225354C + add r0, r4, #0 + bl MOD20_02252EBC + pop {r4, pc} + thumb_func_end MOD20_022533EC + + thumb_func_start MOD20_0225340C +MOD20_0225340C: ; 0x0225340C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + mov r1, #0x57 + lsl r1, r1, #2 + add r0, r0, r1 + bl MOD20_022535A4 + add r0, r4, #0 + bl MOD20_02252EBC + pop {r4, pc} + thumb_func_end MOD20_0225340C + + thumb_func_start MOD20_02253428 +MOD20_02253428: ; 0x02253428 + mov r2, #0 + str r2, [r0] + str r1, [r0, #4] + bx lr + thumb_func_end MOD20_02253428 + + thumb_func_start MOD20_02253430 +MOD20_02253430: ; 0x02253430 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + mov r0, #7 + str r0, [sp] + add r0, r4, #0 + add r0, #8 + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + cmp r0, #0 + beq _022534CC + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0x60 + str r0, [sp] + mov r0, #7 + mov r1, #0 + str r0, [sp, #4] + mov r0, #0xc + mov r2, #5 + add r3, r1, #0 + bl FUN_02006930 + add r0, r5, #0 + mov r1, #0xf + bl MOD20_022534D4 + add r2, r4, #0 + ldr r0, [r4, #4] + ldr r1, _022534D0 ; =0x022545A4 + add r2, #8 + bl MOD20_02253E74 + str r0, [r4, #0x1c] + cmp r0, #0 + beq _022534CC + add r2, r4, #0 + ldr r0, [r4, #4] + ldr r1, _022534D0 ; =0x022545A4 + add r2, #8 + bl MOD20_02253E74 + str r0, [r4, #0x20] + cmp r0, #0 + bne _022534AE + ldr r0, [r4, #4] + ldr r1, [r4, #0x1c] + bl MOD20_02253F14 + add sp, #0xc + pop {r4, r5, pc} +_022534AE: + mov r1, #1 + lsl r1, r1, #0x10 + mov r2, #0 + bl MOD20_02253F54 + ldr r0, [r4, #0x1c] + mov r1, #0xf + bl MOD20_02253F9C + ldr r0, [r4, #0x20] + mov r1, #0xf + bl MOD20_02253F9C + mov r0, #1 + str r0, [r4] +_022534CC: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022534D0: .word 0x022545A4 + thumb_func_end MOD20_02253430 + + thumb_func_start MOD20_022534D4 +MOD20_022534D4: ; 0x022534D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + bl MOD20_02252C3C + bl FUN_0204BF44 + mov r1, #0x62 + lsl r0, r0, #5 + lsl r1, r1, #2 + add r0, r0, #1 + add r2, r5, r1 + lsl r0, r0, #1 + add r0, r2, r0 + add r1, #0x5a + mov r2, #2 + bl GXS_LoadBGPltt + mov r0, #0xe2 + lsl r0, r0, #2 + add r0, r5, r0 + bl MOD20_02252DEC + ldr r1, _02253548 ; =0x0000038A + add r0, r1, #6 + ldrh r2, [r5, r1] + ldrh r0, [r5, r0] + strh r0, [r5, r1] + add r0, r1, #6 + strh r2, [r5, r0] + add r0, r1, #0 + add r2, r1, #0 + add r0, #0xe + add r2, #0x1c + ldrh r3, [r5, r2] + add r2, r1, #0 + ldrh r0, [r5, r0] + add r2, #0xe + strh r3, [r5, r2] + add r2, r1, #0 + add r2, #0x1c + strh r0, [r5, r2] + sub r0, r1, #2 + add r0, r5, r0 + mov r1, #0x20 + bl DC_FlushRange + mov r0, #0xe2 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r1, r4, #5 + mov r2, #0x20 + bl GXS_LoadOBJPltt + pop {r3, r4, r5, pc} + .align 2, 0 +_02253548: .word 0x0000038A + thumb_func_end MOD20_022534D4 + + thumb_func_start MOD20_0225354C +MOD20_0225354C: ; 0x0225354C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02253596 + ldr r0, [r1] + ldr r2, _02253598 ; =0x04000280 + mov r3, #0 + add r0, r0, #1 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_0225356E: + ldrh r1, [r2] + tst r1, r0 + bne _0225356E + ldr r0, _0225359C ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_0225357E: + ldrh r2, [r3] + tst r2, r0 + bne _0225357E + ldr r0, _022535A0 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x1c] + bl MOD20_02253F28 + ldr r0, [r4, #0x20] + add r1, r5, #0 + bl MOD20_02253F28 +_02253596: + pop {r3, r4, r5, pc} + .align 2, 0 +_02253598: .word 0x04000280 +_0225359C: .word 0x040002A0 +_022535A0: .word 0x040002A8 + thumb_func_end MOD20_0225354C + + thumb_func_start MOD20_022535A4 +MOD20_022535A4: ; 0x022535A4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _022535CA + ldr r0, [r4, #4] + ldr r1, [r4, #0x1c] + bl MOD20_02253F14 + ldr r0, [r4, #4] + ldr r1, [r4, #0x20] + bl MOD20_02253F14 + add r0, r4, #0 + add r0, #8 + bl MOD20_02254014 + mov r0, #0 + str r0, [r4] +_022535CA: + pop {r4, pc} + thumb_func_end MOD20_022535A4 + + thumb_func_start MOD20_022535CC +MOD20_022535CC: ; 0x022535CC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r0, r6, #0 + bl MOD20_022538AC + add r5, r0, #0 + cmp r5, #3 + bhi _0225365E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022535F8: ; jump table + .short _02253600 - _022535F8 - 2 ; case 0 + .short _0225361C - _022535F8 - 2 ; case 1 + .short _0225361C - _022535F8 - 2 ; case 2 + .short _0225361C - _022535F8 - 2 ; case 3 +_02253600: + mov r0, #6 + str r0, [sp] + ldr r0, _02253664 ; =0x04001050 + mov r1, #2 + mov r2, #0x1c + mov r3, #0x1a + bl G2x_SetBlendAlpha_ + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_02017CD0 +_0225361C: + mov r3, #2 + str r3, [sp] + mov r1, #0x18 + mov r2, #0xdb + sub r2, r2, r5 + lsl r2, r2, #0x10 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + lsr r2, r2, #0x10 + bl FUN_02018540 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02017CD0 + cmp r5, #3 + bne _02253658 + add r0, r6, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r4, r5, r6, pc} +_02253658: + add r0, r6, #0 + bl MOD20_022538B0 +_0225365E: + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02253664: .word 0x04001050 + thumb_func_end MOD20_022535CC + + thumb_func_start MOD20_02253668 +MOD20_02253668: ; 0x02253668 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + mov r3, #2 + add r4, r0, #0 + str r3, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #0x14 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + lsl r0, r1, #4 + ldr r0, [r4, r0] + mov r1, #5 + mov r2, #0x40 + bl FUN_02018540 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_02017CD0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02017CD0 + mov r1, #0 + ldr r0, _022536C4 ; =0x04001050 + add r2, r1, #0 + mov r3, #0x1f + str r1, [sp] + bl G2x_SetBlendAlpha_ + add r0, r5, #0 + bl MOD20_02252EBC + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_022536C4: .word 0x04001050 + thumb_func_end MOD20_02253668 + + thumb_func_start MOD20_022536C8 +MOD20_022536C8: ; 0x022536C8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_020178A0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD20_02252EBC + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022536C8 + + thumb_func_start MOD20_022536F4 +MOD20_022536F4: ; 0x022536F4 + ldr r2, _02253710 ; =0x12345678 + str r1, [r0] + mov r3, #0 + str r2, [r0, #4] + cmp r1, #0 + bls _0225370C + sub r2, r3, #1 +_02253702: + add r3, r3, #1 + str r2, [r0, #8] + add r0, r0, #4 + cmp r3, r1 + blo _02253702 +_0225370C: + bx lr + nop +_02253710: .word 0x12345678 + thumb_func_end MOD20_022536F4 + + thumb_func_start MOD20_02253714 +MOD20_02253714: ; 0x02253714 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + ldr r0, _02253750 ; =0x12345678 + cmp r1, r0 + beq _02253726 + bl ErrorHandling +_02253726: + ldr r6, [r5] + mov r2, #0 + cmp r6, #0 + bls _0225374A + add r3, r5, #0 + sub r0, r2, #1 +_02253732: + ldr r1, [r3, #8] + cmp r1, r0 + bne _02253742 + lsl r0, r2, #2 + add r0, r5, r0 + str r4, [r0, #8] + mov r0, #1 + pop {r4, r5, r6, pc} +_02253742: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, r6 + blo _02253732 +_0225374A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02253750: .word 0x12345678 + thumb_func_end MOD20_02253714 + + thumb_func_start MOD20_02253754 +MOD20_02253754: ; 0x02253754 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + ldr r0, _02253790 ; =0x12345678 + cmp r1, r0 + beq _02253766 + bl ErrorHandling +_02253766: + ldr r3, [r5] + mov r2, #0 + cmp r3, #0 + bls _0225378A + add r1, r5, #0 +_02253770: + ldr r0, [r1, #8] + cmp r4, r0 + bne _02253782 + mov r1, #0 + lsl r0, r2, #2 + mvn r1, r1 + add r0, r5, r0 + str r1, [r0, #8] + pop {r3, r4, r5, pc} +_02253782: + add r2, r2, #1 + add r1, r1, #4 + cmp r2, r3 + blo _02253770 +_0225378A: + bl ErrorHandling + pop {r3, r4, r5, pc} + .align 2, 0 +_02253790: .word 0x12345678 + thumb_func_end MOD20_02253754 + + thumb_func_start MOD20_02253794 +MOD20_02253794: ; 0x02253794 + push {r3, r4} + ldr r4, [r0] + mov r3, #0 + cmp r4, #0 + bls _022537B2 +_0225379E: + ldr r2, [r0, #8] + cmp r1, r2 + bne _022537AA + mov r0, #0 + pop {r3, r4} + bx lr +_022537AA: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, r4 + blo _0225379E +_022537B2: + mov r0, #1 + pop {r3, r4} + bx lr + thumb_func_end MOD20_02253794 + + thumb_func_start MOD20_022537B8 +MOD20_022537B8: ; 0x022537B8 + push {r3, r4} + ldr r4, [r0] + mov r3, #0 + cmp r4, #0 + bls _022537D8 + sub r1, r3, #1 +_022537C4: + ldr r2, [r0, #8] + cmp r2, r1 + beq _022537D0 + mov r0, #0 + pop {r3, r4} + bx lr +_022537D0: + add r3, r3, #1 + add r0, r0, #4 + cmp r3, r4 + blo _022537C4 +_022537D8: + mov r0, #1 + pop {r3, r4} + bx lr + .align 2, 0 + thumb_func_end MOD20_022537B8 + + thumb_func_start MOD20_022537E0 +MOD20_022537E0: ; 0x022537E0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + str r2, [sp] + mov r0, #0 + add r5, r1, #0 + ldr r2, [r7] + sub r1, r0, #1 + str r3, [sp, #4] + cmp r2, r1 + beq _02253880 + add r3, r7, #0 + sub r1, r0, #1 +_022537FA: + ldr r2, [r3] + cmp r5, r2 + bne _02253876 + add r6, r0, #0 + add r0, r7, #0 + str r0, [sp, #8] + add r0, #8 + mov r1, #0xc + str r0, [sp, #8] + mul r6, r1 + ldr r1, [sp, #8] + ldr r0, [sp, #0x28] + ldr r1, [r1, r6] + add r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _02253870 + ldr r0, [sp, #8] + ldr r0, [r0, r6] + cmp r0, #0 + beq _0225382C + add r0, r4, #0 + add r0, #0x18 + b _0225382E +_0225382C: + mov r0, #0 +_0225382E: + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + add r1, r5, #0 + bl MOD20_02253714 + cmp r0, #0 + beq _02253866 + ldr r0, [sp] + ldr r2, [sp, #0x24] + str r0, [r4, #8] + mov r0, #0 + str r0, [r4, #4] + str r5, [r4] + ldr r0, [sp, #4] + add r5, r7, #4 + str r0, [r4, #0x10] + ldr r0, [r5, r6] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x14] + cmp r0, #0 + beq _02253884 + ldr r2, [r5, r6] + add r1, r4, #0 + blx r2 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02253866: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02253870: + bl ErrorHandling + b _02253880 +_02253876: + add r3, #0xc + ldr r2, [r3] + add r0, r0, #1 + cmp r2, r1 + bne _022537FA +_02253880: + bl ErrorHandling +_02253884: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD20_022537E0 + + thumb_func_start MOD20_02253888 +MOD20_02253888: ; 0x02253888 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + bl MOD20_02253754 + ldr r0, [r4, #0x14] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD20_02253888 + + thumb_func_start MOD20_022538A0 +MOD20_022538A0: ; 0x022538A0 + ldr r0, [r0, #8] + bx lr + thumb_func_end MOD20_022538A0 + + thumb_func_start MOD20_022538A4 +MOD20_022538A4: ; 0x022538A4 + ldr r0, [r0, #0x10] + bx lr + thumb_func_end MOD20_022538A4 + + thumb_func_start MOD20_022538A8 +MOD20_022538A8: ; 0x022538A8 + ldr r0, [r0, #0xc] + bx lr + thumb_func_end MOD20_022538A8 + + thumb_func_start MOD20_022538AC +MOD20_022538AC: ; 0x022538AC + ldr r0, [r0, #4] + bx lr + thumb_func_end MOD20_022538AC + + thumb_func_start MOD20_022538B0 +MOD20_022538B0: ; 0x022538B0 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + bx lr + thumb_func_end MOD20_022538B0 + + thumb_func_start MOD20_022538B8 +MOD20_022538B8: ; 0x022538B8 + str r1, [r0, #4] + bx lr + thumb_func_end MOD20_022538B8 + + thumb_func_start MOD20_022538BC +MOD20_022538BC: ; 0x022538BC + push {r3, r4, r5, r6} + mul r2, r3 + ldr r4, [sp, #0x18] + add r1, r1, r2 + lsl r6, r1, #1 + lsl r4, r4, #0xc + ldr r1, [sp, #0x10] + add r5, r4, #0 + orr r5, r1 + add r2, r0, r6 + strh r5, [r0, r6] + add r0, r1, #1 + orr r0, r4 + strh r0, [r2, #2] + ldr r0, [sp, #0x14] + lsl r3, r3, #1 + add r1, r1, r0 + add r0, r4, #0 + orr r0, r1 + strh r0, [r2, r3] + add r0, r1, #1 + add r1, r4, #0 + orr r1, r0 + add r0, r2, r3 + strh r1, [r0, #2] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD20_022538BC + + thumb_func_start MOD20_022538F4 +MOD20_022538F4: ; 0x022538F4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + bl FUN_02016998 + add r7, r0, #0 + beq _02253960 + bl MOD20_02252DEC + mov r4, #0 + cmp r6, #0 + bls _0225395A +_02253910: + ldrh r3, [r5] + mov r0, #0x1f + lsl r0, r0, #0xa + and r0, r3 + asr r0, r0, #0xa + add r2, r0, #0 + mov r1, #0x72 + mov r0, #0x1f + mul r2, r1 + and r0, r3 + add r1, #0xb9 + mul r1, r0 + mov r0, #0x3e + lsl r0, r0, #4 + and r0, r3 + asr r3, r0, #5 + ldr r0, _02253964 ; =0x0000024B + mul r0, r3 + add r0, r1, r0 + mov r1, #0xfa + add r0, r2, r0 + lsl r1, r1, #2 + bl _u32_div_f + lsr r1, r0, #3 + cmp r1, #3 + bls _02253948 + mov r1, #3 +_02253948: + ldr r0, _02253968 ; =0x0225470C + add r4, r4, #1 + ldrb r0, [r0, r1] + lsl r0, r0, #1 + ldrh r0, [r7, r0] + strh r0, [r5] + add r5, r5, #2 + cmp r4, r6 + blo _02253910 +_0225395A: + add r0, r7, #0 + bl FUN_02016A18 +_02253960: + pop {r3, r4, r5, r6, r7, pc} + nop +_02253964: .word 0x0000024B +_02253968: .word 0x0225470C + thumb_func_end MOD20_022538F4 + + thumb_func_start MOD20_0225396C +MOD20_0225396C: ; 0x0225396C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #8 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0 + beq _022539C2 + mov r0, #8 + mov r1, #0x20 + bl FUN_02016998 + add r5, r0, #0 + add r0, r4, #0 + bl MOD20_02252DEC + cmp r5, #0 + beq _022539BC + mov r0, #0 + add r1, r5, #0 + lsl r3, r6, #1 +_02253998: + ldrh r2, [r4, r3] + add r0, r0, #1 + strh r2, [r1] + add r1, r1, #2 + cmp r0, #0x10 + blt _02253998 + add r0, r5, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r5, #0 + lsl r1, r7, #5 + mov r2, #0x20 + bl GXS_LoadOBJPltt + add r0, r5, #0 + bl FUN_02016A18 +_022539BC: + add r0, r4, #0 + bl FUN_02016A18 +_022539C2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_0225396C + + thumb_func_start MOD20_022539C4 +MOD20_022539C4: ; 0x022539C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_0206B888 + add r1, r0, #0 + mov r0, #0x13 + add r2, sp, #0 + mov r3, #8 + bl FUN_02006C08 + add r4, r0, #0 + beq _02253A02 + ldr r0, [sp] + mov r1, #0x40 + ldr r0, [r0, #0xc] + bl MOD20_022538F4 + ldr r0, [sp] + mov r1, #0x80 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [sp] + lsl r1, r5, #5 + ldr r0, [r0, #0xc] + mov r2, #0x80 + bl GXS_LoadOBJPltt + add r0, r4, #0 + bl FUN_02016A18 +_02253A02: + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022539C4 + + thumb_func_start MOD20_02253A04 +MOD20_02253A04: ; 0x02253A04 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #4] + lsl r0, r3, #1 + str r0, [sp, #0xc] + add r6, r1, #0 + str r2, [sp, #8] + ldr r2, _02253A9C ; =0x02254708 + ldr r1, [sp, #0xc] + mov r0, #8 + ldrh r1, [r2, r1] + bl FUN_02016998 + add r7, r0, #0 + beq _02253A98 + mov r0, #0x13 + mov r1, #8 + bl FUN_02006670 + str r0, [sp, #0x1c] + cmp r0, #0 + beq _02253A92 + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [sp, #8] + cmp r0, #0 + bls _02253A8C + ldr r1, _02253AA0 ; =0x02254704 + ldr r0, [sp, #0xc] + ldr r4, [sp, #0x18] + ldrh r5, [r1, r0] + ldr r1, _02253A9C ; =0x02254708 + ldrh r0, [r1, r0] + str r0, [sp, #0x14] + ldr r0, [sp, #4] + lsl r0, r0, #5 + str r0, [sp, #0x10] +_02253A4E: + str r7, [sp] + ldr r0, [sp, #0x1c] + ldr r1, [r6] + ldr r3, [sp, #0x14] + mov r2, #0 + bl FUN_02006814 + add r0, r7, #0 + add r1, sp, #0x20 + bl FUN_020B0088 + ldr r0, [sp, #0x20] + add r1, r5, #0 + ldr r0, [r0, #0x14] + bl DC_FlushRange + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x10] + ldr r0, [r0, #0x14] + add r1, r1, r4 + add r2, r5, #0 + bl GXS_LoadOBJ + ldr r0, [sp, #0x18] + add r6, r6, #4 + add r1, r0, #1 + ldr r0, [sp, #8] + add r4, r4, r5 + str r1, [sp, #0x18] + cmp r1, r0 + blo _02253A4E +_02253A8C: + ldr r0, [sp, #0x1c] + bl FUN_020066F4 +_02253A92: + add r0, r7, #0 + bl FUN_02016A18 +_02253A98: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02253A9C: .word 0x02254708 +_02253AA0: .word 0x02254704 + thumb_func_end MOD20_02253A04 + + thumb_func_start MOD20_02253AA4 +MOD20_02253AA4: ; 0x02253AA4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + add r4, r2, #0 + mov r1, #2 + add r2, sp, #0xc + strh r1, [r2] + mov r3, #3 + strh r3, [r2, #2] + mov r3, #0xa + strh r3, [r2, #4] + mov r3, #0xb + strh r3, [r2, #6] + str r3, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #9 + add r6, r0, #0 + bl FUN_02018148 + mov r1, #4 + add r0, sp, #0xc + strh r1, [r0] + mov r1, #5 + strh r1, [r0, #2] + mov r1, #0xc + strh r1, [r0, #4] + mov r1, #0xd + strh r1, [r0, #6] + mov r3, #0xb + lsl r1, r4, #0x18 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + bl FUN_02018148 + mov r1, #6 + add r0, sp, #0xc + strh r1, [r0] + mov r1, #7 + strh r1, [r0, #2] + mov r1, #0xe + strh r1, [r0, #4] + mov r1, #0xf + strh r1, [r0, #6] + mov r0, #0xb + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + lsl r1, r4, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #0xd + bl FUN_02018148 + add r0, r5, #0 + mov r1, #0xa + bl _u32_div_f + mov r1, #0xa + mul r1, r0 + add r0, r0, #4 + sub r5, r5, r1 + lsr r1, r0, #2 + lsl r0, r0, #0x1e + lsl r1, r1, #4 + lsr r0, r0, #0x1d + add r2, r1, r0 + add r0, sp, #0xc + strh r2, [r0] + add r1, r2, #1 + strh r1, [r0, #2] + add r1, r2, #0 + add r1, #8 + strh r1, [r0, #4] + add r2, #9 + strh r2, [r0, #6] + mov r0, #0xb + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + lsl r1, r4, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #0xf + bl FUN_02018148 + add r0, r5, #4 + lsr r1, r0, #2 + lsl r0, r0, #0x1e + lsl r1, r1, #4 + lsr r0, r0, #0x1d + add r2, r1, r0 + add r0, sp, #0xc + strh r2, [r0] + add r1, r2, #1 + strh r1, [r0, #2] + add r1, r2, #0 + add r1, #8 + strh r1, [r0, #4] + add r2, #9 + strh r2, [r0, #6] + mov r0, #0xb + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + lsl r1, r4, #0x18 + str r0, [sp, #8] + add r0, r6, #0 + lsr r1, r1, #0x18 + add r2, sp, #0xc + mov r3, #0x11 + bl FUN_02018148 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD20_02253AA4 + + thumb_func_start MOD20_02253BA4 +MOD20_02253BA4: ; 0x02253BA4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x1c + mov r6, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _02253C0E + add r0, r6, #0 + str r0, [r4, #0x14] + str r0, [r4, #0xc] + str r0, [r4, #4] + str r7, [r4] + str r5, [r4, #0x18] + add r0, r7, #0 + bl FUN_020B0830 + strh r0, [r4, #0x10] + ldrh r1, [r4, #0x10] + add r0, r5, #0 + lsl r1, r1, #3 + bl FUN_02016998 + str r0, [r4, #0x14] + cmp r0, #0 + beq _02253C0E + ldrh r2, [r4, #0x10] + mov r1, #0x90 + add r0, r5, #0 + mul r1, r2 + bl FUN_02016998 + str r0, [r4, #0xc] + cmp r0, #0 + beq _02253C0E + ldrh r1, [r4, #0x10] + add r0, r5, #0 + lsl r1, r1, #2 + bl FUN_02016998 + str r0, [r4, #4] + cmp r0, #0 + beq _02253C0E + ldrh r2, [r4, #0x10] + ldr r1, [r4, #0xc] + bl MOD20_0225403C + add r0, r6, #0 + strh r0, [r4, #0x12] + str r0, [r4, #8] + mov r6, #1 +_02253C0E: + cmp r6, #0 + bne _02253C46 + cmp r4, #0 + beq _02253C42 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _02253C22 + add r0, r5, #0 + bl FUN_02016A8C +_02253C22: + ldr r1, [r4, #0xc] + cmp r1, #0 + beq _02253C2E + add r0, r5, #0 + bl FUN_02016A8C +_02253C2E: + ldr r1, [r4, #4] + cmp r1, #0 + beq _02253C3A + add r0, r5, #0 + bl FUN_02016A8C +_02253C3A: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02016A8C +_02253C42: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02253C46: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD20_02253BA4 + + thumb_func_start MOD20_02253C4C +MOD20_02253C4C: ; 0x02253C4C + push {r4, lr} + add r4, r0, #0 + beq _02253C76 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02253C5C + bl FUN_02016A18 +_02253C5C: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02253C66 + bl FUN_02016A18 +_02253C66: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02253C70 + bl FUN_02016A18 +_02253C70: + add r0, r4, #0 + bl FUN_02016A18 +_02253C76: + pop {r4, pc} + thumb_func_end MOD20_02253C4C + + thumb_func_start MOD20_02253C78 +MOD20_02253C78: ; 0x02253C78 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #0xc] + ldrh r0, [r0, #0x12] + cmp r0, #0 + bne _02253C86 + b _02253E52 +_02253C86: + ldr r0, [sp, #0xc] + ldr r4, [r0, #8] + ldr r5, [r0, #0x14] + ldrh r0, [r0, #0x10] + cmp r4, #0 + str r0, [sp, #0x10] + bne _02253C96 + b _02253E38 +_02253C96: + add r0, r4, #0 + mov r1, #2 + add r0, #8 + lsl r1, r1, #0xc + bl FUN_020B1EC4 + add r0, r4, #0 + add r0, #0x86 + ldrb r0, [r0] + cmp r0, #0 + beq _02253CAE + b _02253E30 +_02253CAE: + add r6, r4, #0 + add r6, #0x40 + mov r0, #0xc + ldrsh r0, [r6, r0] + ldr r1, [r4, #0x64] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x18] + mov r0, #0xe + ldrsh r0, [r6, r0] + ldr r1, [r4, #0x68] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x1c] + add r0, r4, #0 + add r0, #0x87 + ldrb r0, [r0] + cmp r0, #0 + bne _02253CEE + add r0, sp, #0x18 + str r0, [sp] + mov r3, #0 + str r3, [sp, #4] + ldr r1, [sp, #0x10] + str r3, [sp, #8] + lsl r1, r1, #0x10 + ldr r2, [r4, #0x34] + add r0, r5, #0 + lsr r1, r1, #0x10 + bl FUN_020B1AF8 + b _02253D86 +_02253CEE: + ldr r0, [r4, #0x6c] + bl MTX_Identity22_ + ldrh r1, [r6, #0x12] + mov r0, #4 + tst r0, r1 + beq _02253D20 + add r0, r4, #0 + add r0, #0x8c + ldrh r2, [r6, #0x10] + ldrh r0, [r0] + ldr r1, _02253E58 ; =0x020FFA38 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #4 + lsl r3, r0, #2 + add r2, r1, r3 + ldrsh r1, [r1, r3] + mov r3, #2 + ldrsh r2, [r2, r3] + ldr r0, [r4, #0x6c] + bl MTX_Rot22_ + b _02253D3E +_02253D20: + add r0, r4, #0 + add r0, #0x8c + ldrh r0, [r0] + cmp r0, #0 + beq _02253D3E + asr r0, r0, #4 + lsl r3, r0, #2 + ldr r1, _02253E58 ; =0x020FFA38 + ldr r0, [r4, #0x6c] + add r2, r1, r3 + ldrsh r1, [r1, r3] + mov r3, #2 + ldrsh r2, [r2, r3] + bl MTX_Rot22_ +_02253D3E: + ldrh r1, [r6, #0x12] + mov r0, #2 + tst r0, r1 + beq _02253D62 + ldr r0, [r6, #4] + ldr r7, [r4, #0x6c] + bl FX_Inv + str r0, [sp, #0x14] + ldr r0, [r6, #8] + bl FX_Inv + add r3, r0, #0 + ldr r2, [sp, #0x14] + add r0, r7, #0 + add r1, r7, #0 + bl MTX_ScaleApply22 +_02253D62: + ldr r0, [sp, #0xc] + ldr r1, [r4, #0x6c] + ldr r0, [r0] + bl FUN_020B0BB0 + add r1, sp, #0x18 + str r1, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x34] + lsl r1, r1, #0x10 + ldr r3, [r4, #0x6c] + add r0, r5, #0 + lsr r1, r1, #0x10 + bl FUN_020B1AF8 +_02253D86: + ldr r1, [sp, #0x10] + sub r1, r1, r0 + str r1, [sp, #0x10] + add r1, r0, #0 + sub r0, r0, #1 + cmp r1, #0 + beq _02253E30 + ldr r7, _02253E5C ; =0xDFFFFFFF + asr r1, r7, #0x11 +_02253D98: + ldr r3, [r5, #4] + ldr r2, _02253E60 ; =0xFFFFF3FF + add r6, r4, #0 + and r2, r3 + add r3, r4, #0 + add r3, #0x82 + ldrh r3, [r3] + add r6, #0x84 + lsl r3, r3, #0x1e + lsr r3, r3, #0x14 + orr r2, r3 + str r2, [r5, #4] + ldr r3, _02253E64 ; =0xFFFF0FFF + ldrh r6, [r6] + and r3, r2 + lsl r2, r2, #0x10 + lsr r2, r2, #0x1c + add r2, r2, r6 + lsl r2, r2, #0x1c + lsr r2, r2, #0x10 + orr r2, r3 + add r6, r4, #0 + ldr r3, _02253E68 ; =0xFFFFFC00 + str r2, [r5, #4] + add r6, #0x88 + and r3, r2 + lsl r2, r2, #0x16 + ldrh r6, [r6] + lsr r2, r2, #0x16 + add r6, r2, r6 + ldr r2, _02253E6C ; =0x000003FF + and r2, r6 + orr r2, r3 + add r6, r4, #0 + str r2, [r5, #4] + add r6, #0x8a + ldr r2, [r5] + ldr r3, _02253E70 ; =0xEFFFFFFF + ldrb r6, [r6] + and r3, r2 + lsl r2, r2, #3 + lsr r2, r2, #0x1f + eor r2, r6 + lsl r2, r2, #0x1f + lsr r2, r2, #3 + orr r2, r3 + add r6, r4, #0 + add r3, r2, #0 + str r2, [r5] + add r6, #0x8b + lsl r2, r2, #2 + ldrb r6, [r6] + lsr r2, r2, #0x1f + and r3, r7 + eor r2, r6 + lsl r2, r2, #0x1f + lsr r2, r2, #2 + orr r2, r3 + add r6, r4, #0 + add r3, r2, #0 + str r2, [r5] + add r6, #0x8e + lsl r2, r2, #0x13 + ldrb r6, [r6] + lsr r2, r2, #0x1f + and r3, r1 + eor r2, r6 + lsl r2, r2, #0x1f + lsr r2, r2, #0x13 + orr r2, r3 + str r2, [r5] + add r2, r0, #0 + add r5, #8 + sub r0, r0, #1 + cmp r2, #0 + bne _02253D98 +_02253E30: + ldr r4, [r4, #0x5c] + cmp r4, #0 + beq _02253E38 + b _02253C96 +_02253E38: + ldr r0, [sp, #0xc] + ldr r1, [r0, #0x14] + cmp r5, r1 + bls _02253E52 + sub r3, r5, r1 + asr r2, r3, #2 + lsr r2, r2, #0x1d + add r2, r3, r2 + lsl r2, r2, #0xd + ldr r0, [r0] + lsr r2, r2, #0x10 + bl FUN_020B0D58 +_02253E52: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02253E58: .word 0x020FFA38 +_02253E5C: .word 0xDFFFFFFF +_02253E60: .word 0xFFFFF3FF +_02253E64: .word 0xFFFF0FFF +_02253E68: .word 0xFFFFFC00 +_02253E6C: .word 0x000003FF +_02253E70: .word 0xEFFFFFFF + thumb_func_end MOD20_02253C78 + + thumb_func_start MOD20_02253E74 +MOD20_02253E74: ; 0x02253E74 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + bl MOD20_02254068 + add r4, r0, #0 + beq _02253F10 + ldrb r1, [r5, #0xb] + add r0, #0x82 + strh r1, [r0] + add r0, r4, #0 + ldrb r1, [r5, #0xc] + add r0, #0x80 + strh r1, [r0] + add r0, r7, #0 + add r1, r4, #0 + bl MOD20_022540A4 + ldr r0, [r6, #8] + str r0, [r4] + ldr r0, [r6, #0xc] + str r0, [r4, #4] + ldrh r1, [r5, #8] + bl FUN_020AFC04 + add r1, r0, #0 + add r0, r4, #0 + ldr r2, [r4] + add r0, #8 + bl FUN_020B1F80 + ldr r1, [r5] + ldr r0, [r5, #4] + str r1, [r4, #0x64] + add r1, r4, #0 + str r0, [r4, #0x68] + mov r0, #0 + add r1, #0x84 + strh r0, [r1] + add r1, r4, #0 + add r1, #0x88 + strh r0, [r1] + ldrb r2, [r5, #0xa] + mov r1, #1 + tst r2, r1 + beq _02253ED4 + add r0, r1, #0 +_02253ED4: + add r1, r4, #0 + add r1, #0x8a + strb r0, [r1] + ldrb r1, [r5, #0xa] + mov r0, #2 + tst r0, r1 + beq _02253EE6 + mov r1, #1 + b _02253EE8 +_02253EE6: + mov r1, #0 +_02253EE8: + add r0, r4, #0 + add r0, #0x8b + strb r1, [r0] + add r1, r4, #0 + mov r0, #0 + add r1, #0x8e + strb r0, [r1] + add r1, r4, #0 + add r1, #0x8c + strh r0, [r1] + add r1, r4, #0 + add r1, #0x70 + str r1, [r4, #0x6c] + add r1, r4, #0 + ldrb r2, [r5, #0xd] + add r1, #0x87 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x86 + strb r0, [r1] +_02253F10: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02253E74 + + thumb_func_start MOD20_02253F14 +MOD20_02253F14: ; 0x02253F14 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_022540FC + add r0, r5, #0 + add r1, r4, #0 + bl MOD20_02254080 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_02253F14 + + thumb_func_start MOD20_02253F28 +MOD20_02253F28: ; 0x02253F28 + push {r4, lr} + add r4, r0, #0 + lsl r1, r1, #0x10 + ldr r0, [r4, #4] + lsr r1, r1, #0x10 + bl FUN_020AFC04 + add r1, r0, #0 + add r0, r4, #0 + ldr r2, [r4] + add r0, #8 + bl FUN_020B1F80 + pop {r4, pc} + thumb_func_end MOD20_02253F28 + + thumb_func_start MOD20_02253F44 +MOD20_02253F44: ; 0x02253F44 + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _02253F4E + mov r0, #1 + bx lr +_02253F4E: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F44 + + thumb_func_start MOD20_02253F54 +MOD20_02253F54: ; 0x02253F54 + ldr r3, [r0, #0x64] + add r1, r3, r1 + str r1, [r0, #0x64] + ldr r1, [r0, #0x68] + add r1, r1, r2 + str r1, [r0, #0x68] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F54 + + thumb_func_start MOD20_02253F64 +MOD20_02253F64: ; 0x02253F64 + str r1, [r0, #0x64] + str r2, [r0, #0x68] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F64 + + thumb_func_start MOD20_02253F6C +MOD20_02253F6C: ; 0x02253F6C + ldr r3, [r0, #0x64] + str r3, [r1] + ldr r0, [r0, #0x68] + str r0, [r2] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F6C + + thumb_func_start MOD20_02253F78 +MOD20_02253F78: ; 0x02253F78 + add r0, #0x86 + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F78 + + thumb_func_start MOD20_02253F80 +MOD20_02253F80: ; 0x02253F80 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + bl MOD20_022540FC + add r0, r5, #0 + add r0, #0x80 + strh r4, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD20_022540A4 + pop {r4, r5, r6, pc} + thumb_func_end MOD20_02253F80 + + thumb_func_start MOD20_02253F9C +MOD20_02253F9C: ; 0x02253F9C + add r0, #0x84 + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253F9C + + thumb_func_start MOD20_02253FA4 +MOD20_02253FA4: ; 0x02253FA4 + add r0, #0x88 + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253FA4 + + thumb_func_start MOD20_02253FAC +MOD20_02253FAC: ; 0x02253FAC + add r0, #0x8e + strb r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253FAC + + thumb_func_start MOD20_02253FB4 +MOD20_02253FB4: ; 0x02253FB4 + add r0, #0x8c + strh r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD20_02253FB4 + + thumb_func_start MOD20_02253FBC +MOD20_02253FBC: ; 0x02253FBC + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r5, r0, #0 + add r6, r1, #0 + add r1, r2, #0 + add r7, r3, #0 + str r4, [r5, #0x10] + add r0, r6, #0 + add r2, r4, #0 + bl FUN_02006C88 + str r0, [r5] + add r0, r6, #0 + add r1, r7, #0 + add r2, r4, #0 + bl FUN_02006C88 + str r0, [r5, #4] + ldr r0, [r5] + cmp r0, #0 + beq _0225400E + ldr r1, [r5, #4] + cmp r1, #0 + beq _0225400E + add r1, r5, #0 + add r1, #8 + bl FUN_020AFEB8 + cmp r0, #0 + bne _02253FFC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02253FFC: + ldr r0, [r5, #4] + add r5, #0xc + add r1, r5, #0 + bl thunk_FUN_020afda0 + cmp r0, #0 + bne _0225400E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225400E: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD20_02253FBC + + thumb_func_start MOD20_02254014 +MOD20_02254014: ; 0x02254014 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #0 + beq _02254028 + ldr r0, [r4, #0x10] + bl FUN_02016A8C + mov r0, #0 + str r0, [r4] +_02254028: + ldr r1, [r4, #4] + cmp r1, #0 + beq _02254038 + ldr r0, [r4, #0x10] + bl FUN_02016A8C + mov r0, #0 + str r0, [r4, #4] +_02254038: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD20_02254014 + + thumb_func_start MOD20_0225403C +MOD20_0225403C: ; 0x0225403C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + sub r6, r6, #1 + cmp r0, #0 + beq _0225405E +_0225404C: + add r0, r4, #0 + stmia r5!, {r4} + bl MOD20_02254060 + add r0, r6, #0 + add r4, #0x90 + sub r6, r6, #1 + cmp r0, #0 + bne _0225404C +_0225405E: + pop {r4, r5, r6, pc} + thumb_func_end MOD20_0225403C + + thumb_func_start MOD20_02254060 +MOD20_02254060: ; 0x02254060 + mov r1, #0 + str r1, [r0, #0x5c] + str r1, [r0, #0x60] + bx lr + thumb_func_end MOD20_02254060 + + thumb_func_start MOD20_02254068 +MOD20_02254068: ; 0x02254068 + ldrh r2, [r0, #0x12] + ldrh r1, [r0, #0x10] + cmp r2, r1 + bhs _0225407C + add r1, r2, #1 + strh r1, [r0, #0x12] + ldr r1, [r0, #4] + lsl r0, r2, #2 + ldr r0, [r1, r0] + bx lr +_0225407C: + mov r0, #0 + bx lr + thumb_func_end MOD20_02254068 + + thumb_func_start MOD20_02254080 +MOD20_02254080: ; 0x02254080 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r5, #0x12] + add r4, r1, #0 + cmp r0, #0 + beq _022540A0 + add r0, r4, #0 + bl MOD20_02254060 + ldrh r0, [r5, #0x12] + sub r0, r0, #1 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + ldr r1, [r5, #4] + lsl r0, r0, #2 + str r4, [r1, r0] +_022540A0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_02254080 + + thumb_func_start MOD20_022540A4 +MOD20_022540A4: ; 0x022540A4 + push {r4, r5} + ldr r3, [r0, #8] + cmp r3, #0 + bne _022540B8 + str r1, [r0, #8] + mov r0, #0 + str r0, [r1, #0x5c] + str r0, [r1, #0x60] + pop {r4, r5} + bx lr +_022540B8: + add r4, r1, #0 + add r4, #0x80 + ldr r5, [r4] + add r2, r3, #0 +_022540C0: + add r4, r2, #0 + add r4, #0x80 + ldr r4, [r4] + cmp r5, r4 + bhs _022540E2 + cmp r2, r3 + bne _022540D0 + str r1, [r0, #8] +_022540D0: + ldr r0, [r2, #0x60] + str r0, [r1, #0x60] + cmp r0, #0 + beq _022540DA + str r1, [r0, #0x5c] +_022540DA: + str r2, [r1, #0x5c] + str r1, [r2, #0x60] + pop {r4, r5} + bx lr +_022540E2: + ldr r4, [r2, #0x5c] + cmp r4, #0 + bne _022540F4 + str r1, [r2, #0x5c] + str r2, [r1, #0x60] + mov r0, #0 + str r0, [r1, #0x5c] + pop {r4, r5} + bx lr +_022540F4: + add r2, r4, #0 + b _022540C0 + thumb_func_end MOD20_022540A4 + + thumb_func_start MOD20_022540F8 +MOD20_022540F8: ; 0x022540F8 + pop {r4, r5} + bx lr + thumb_func_end MOD20_022540F8 + + thumb_func_start MOD20_022540FC +MOD20_022540FC: ; 0x022540FC + ldr r2, [r1, #0x60] + cmp r2, #0 + beq _02254118 + ldr r0, [r1, #0x5c] + cmp r0, #0 + beq _02254112 + str r0, [r2, #0x5c] + ldr r2, [r1, #0x60] + ldr r0, [r1, #0x5c] + str r2, [r0, #0x60] + bx lr +_02254112: + mov r0, #0 + str r0, [r2, #0x5c] + bx lr +_02254118: + ldr r3, [r1, #0x5c] + cmp r3, #0 + beq _02254128 + mov r2, #0 + str r2, [r3, #0x60] + ldr r1, [r1, #0x5c] + str r1, [r0, #8] + bx lr +_02254128: + mov r1, #0 + str r1, [r0, #8] + bx lr + .align 2, 0 + thumb_func_end MOD20_022540FC + + thumb_func_start MOD20_02254130 +MOD20_02254130: ; 0x02254130 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp] + str r3, [sp, #4] + ldr r5, [sp, #0x20] + bne _02254144 + bl ErrorHandling +_02254144: + add r0, r5, #0 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + beq _02254192 + ldr r0, [sp] + str r5, [r4, #8] + str r0, [r4, #4] + str r6, [r4] + mov r1, #0xe + ldr r0, [sp, #4] + str r7, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r5, #0 + mul r1, r7 + bl FUN_02016998 + str r0, [r4, #0x14] + cmp r0, #0 + beq _02254188 + mov r6, #0 + cmp r7, #0 + bls _02254192 + add r5, r6, #0 +_02254176: + ldr r0, [r4, #0x14] + add r0, r0, r5 + bl MOD20_022542E4 + add r6, r6, #1 + add r5, #0xe + cmp r6, r7 + blo _02254176 + b _02254192 +_02254188: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02016A8C + mov r4, #0 +_02254192: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD20_02254130 + + thumb_func_start MOD20_02254198 +MOD20_02254198: ; 0x02254198 + push {r4, lr} + add r4, r0, #0 + bne _022541A2 + bl ErrorHandling +_022541A2: + ldr r0, [r4, #8] + ldr r1, [r4, #0x14] + bl FUN_02016A8C + ldr r0, [r4, #8] + add r1, r4, #0 + bl FUN_02016A8C + pop {r4, pc} + thumb_func_end MOD20_02254198 + + thumb_func_start MOD20_022541B4 +MOD20_022541B4: ; 0x022541B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_02020A98 + str r0, [sp, #4] + cmp r0, #0 + beq _0225420C + bl FUN_02020AA4 + ldr r1, [r5, #0xc] + mov r7, #0 + str r0, [sp] + cmp r1, #0 + bls _02254232 + add r4, r7, #0 + add r6, r7, #0 +_022541D6: + ldr r0, [r5, #0x14] + add r1, r0, r4 + ldrb r0, [r1, #1] + strb r0, [r1, #2] + ldr r0, [r5, #0x14] + add r0, r0, r4 + ldrb r0, [r0, #1] + cmp r0, #0 + ldr r0, [r5] + beq _022541F2 + add r0, r0, r6 + bl FUN_02020A40 + b _022541F8 +_022541F2: + add r0, r0, r6 + bl FUN_02020A6C +_022541F8: + ldr r1, [r5, #0x14] + add r7, r7, #1 + add r1, r1, r4 + strb r0, [r1, #1] + ldr r1, [r5, #0xc] + add r4, #0xe + add r6, r6, #4 + cmp r7, r1 + blo _022541D6 + b _02254232 +_0225420C: + ldr r1, [r5, #0xc] + mov r2, #0 + str r2, [sp] + cmp r1, #0 + bls _02254232 + add r0, r2, #0 + add r3, r2, #0 +_0225421A: + ldr r1, [r5, #0x14] + add r2, r2, #1 + add r4, r1, r0 + ldrb r1, [r4, #1] + strb r1, [r4, #2] + ldr r1, [r5, #0x14] + add r1, r1, r0 + strb r3, [r1, #1] + ldr r1, [r5, #0xc] + add r0, #0xe + cmp r2, r1 + blo _0225421A +_02254232: + mov r6, #0 + cmp r1, #0 + bls _02254278 + ldr r7, _022542A8 ; =0x02254710 + add r4, r6, #0 +_0225423C: + ldr r3, [r5, #0x14] + ldr r1, [sp, #4] + add r0, r3, r4 + ldrb r3, [r3, r4] + ldr r2, [sp] + lsl r3, r3, #2 + ldr r3, [r7, r3] + blx r3 + add r1, r0, #0 + ldr r0, [r5, #0x14] + add r0, r0, r4 + ldrb r2, [r0, #1] + ldrb r0, [r0, #2] + cmp r2, r0 + bne _0225425C + mov r2, #2 +_0225425C: + cmp r1, #0 + bne _02254264 + cmp r2, #2 + beq _0225426E +_02254264: + ldr r3, [r5, #0x10] + ldr r4, [r5, #4] + add r0, r6, #0 + blx r4 + b _02254278 +_0225426E: + ldr r0, [r5, #0xc] + add r6, r6, #1 + add r4, #0xe + cmp r6, r0 + blo _0225423C +_02254278: + ldr r0, [r5, #0xc] + add r6, r6, #1 + cmp r6, r0 + bhs _022542A2 + mov r0, #0xe + add r4, r6, #0 + ldr r7, _022542A8 ; =0x02254710 + mul r4, r0 +_02254288: + ldr r3, [r5, #0x14] + ldr r1, [sp, #4] + add r0, r3, r4 + ldrb r3, [r3, r4] + ldr r2, [sp] + lsl r3, r3, #2 + ldr r3, [r7, r3] + blx r3 + ldr r0, [r5, #0xc] + add r6, r6, #1 + add r4, #0xe + cmp r6, r0 + blo _02254288 +_022542A2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022542A8: .word 0x02254710 + thumb_func_end MOD20_022541B4 + + thumb_func_start MOD20_022542AC +MOD20_022542AC: ; 0x022542AC + push {r3, r4} + ldr r4, [r0, #0x14] + mov r0, #0xe + mul r0, r1 + add r1, r4, r0 + lsl r0, r2, #1 + add r0, r1, r0 + strh r3, [r0, #8] + pop {r3, r4} + bx lr + thumb_func_end MOD20_022542AC + + thumb_func_start MOD20_022542C0 +MOD20_022542C0: ; 0x022542C0 + ldr r3, [r0, #0x14] + mov r0, #0xe + mul r0, r1 + add r0, r3, r0 + strh r2, [r0, #0xc] + bx lr + thumb_func_end MOD20_022542C0 + + thumb_func_start MOD20_022542CC +MOD20_022542CC: ; 0x022542CC + add r3, r1, #0 + mov r2, #0xe + mul r3, r2 + ldr r1, [r0, #0x14] + mov r2, #0 + add r1, r1, r3 + strh r2, [r1, #4] + ldr r0, [r0, #0x14] + mov r1, #4 + strb r1, [r0, r3] + bx lr + .align 2, 0 + thumb_func_end MOD20_022542CC + + thumb_func_start MOD20_022542E4 +MOD20_022542E4: ; 0x022542E4 + mov r2, #0 + strb r2, [r0] + strb r2, [r0, #1] + strb r2, [r0, #2] + strh r2, [r0, #4] + strh r2, [r0, #6] + add r3, r0, #0 + add r1, r2, #0 +_022542F4: + add r2, r2, #1 + strh r1, [r3, #8] + add r3, r3, #2 + cmp r2, #2 + blo _022542F4 + strh r1, [r0, #0xc] + bx lr + .align 2, 0 + thumb_func_end MOD20_022542E4 + + thumb_func_start MOD20_02254304 +MOD20_02254304: ; 0x02254304 + strb r1, [r0] + mov r1, #0 + strh r1, [r0, #4] + bx lr + thumb_func_end MOD20_02254304 + + thumb_func_start MOD20_0225430C +MOD20_0225430C: ; 0x0225430C + strb r1, [r0] + bx lr + thumb_func_end MOD20_0225430C + + thumb_func_start MOD20_02254310 +MOD20_02254310: ; 0x02254310 + ldrh r2, [r0, #4] + ldr r1, _02254320 ; =0x0000FFFF + cmp r2, r1 + bhs _0225431C + add r1, r2, #1 + strh r1, [r0, #4] +_0225431C: + bx lr + nop +_02254320: .word 0x0000FFFF + thumb_func_end MOD20_02254310 + + thumb_func_start MOD20_02254324 +MOD20_02254324: ; 0x02254324 + ldrh r3, [r0, #4] + mov r2, #0 +_02254328: + ldrh r1, [r0, #8] + cmp r3, r1 + bne _02254332 + add r0, r2, #5 + bx lr +_02254332: + add r2, r2, #1 + add r0, r0, #2 + cmp r2, #2 + blo _02254328 + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD20_02254324 + + thumb_func_start MOD20_02254340 +MOD20_02254340: ; 0x02254340 + push {r3, lr} + ldrb r1, [r0, #1] + cmp r1, #0 + beq _02254356 + cmp r2, #0 + beq _02254356 + mov r1, #1 + bl MOD20_02254304 + mov r0, #1 + pop {r3, pc} +_02254356: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_02254340 + + thumb_func_start MOD20_0225435C +MOD20_0225435C: ; 0x0225435C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD20_02254310 + ldrb r0, [r5, #1] + cmp r0, #0 + beq _0225438A + add r0, r5, #0 + bl MOD20_02254324 + cmp r0, #0 + bne _022543B8 + ldrh r1, [r5, #0xc] + cmp r1, #0 + beq _022543B6 + ldrh r0, [r5, #4] + cmp r0, r1 + blo _022543B6 + mov r0, #0 + strh r0, [r5, #4] + mov r0, #7 + pop {r3, r4, r5, pc} +_0225438A: + cmp r4, #0 + beq _0225439A + add r0, r5, #0 + mov r1, #0 + bl MOD20_02254304 + mov r0, #2 + pop {r3, r4, r5, pc} +_0225439A: + ldrh r0, [r5, #6] + cmp r0, #0 + beq _022543AA + add r0, r5, #0 + mov r1, #2 + bl MOD20_0225430C + b _022543B6 +_022543AA: + add r0, r5, #0 + mov r1, #0 + bl MOD20_02254304 + mov r0, #3 + pop {r3, r4, r5, pc} +_022543B6: + mov r0, #0 +_022543B8: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD20_0225435C + + thumb_func_start MOD20_022543BC +MOD20_022543BC: ; 0x022543BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl MOD20_02254310 + ldrh r1, [r5, #4] + ldrh r0, [r5, #6] + cmp r1, r0 + bls _022543DA + add r0, r5, #0 + mov r1, #0 + bl MOD20_02254304 + mov r0, #3 + pop {r3, r4, r5, pc} +_022543DA: + ldrb r0, [r5, #1] + cmp r0, #0 + beq _022543F0 + cmp r4, #0 + beq _022543F0 + add r0, r5, #0 + mov r1, #3 + bl MOD20_02254304 + mov r0, #4 + pop {r3, r4, r5, pc} +_022543F0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD20_022543BC + + thumb_func_start MOD20_022543F4 +MOD20_022543F4: ; 0x022543F4 + push {r3, lr} + ldrb r1, [r0, #1] + cmp r1, #0 + beq _02254402 + bl MOD20_02254310 + b _02254408 +_02254402: + mov r1, #0 + bl MOD20_02254304 +_02254408: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD20_022543F4 + + thumb_func_start MOD20_0225440C +MOD20_0225440C: ; 0x0225440C + push {r3, lr} + ldrb r1, [r0, #1] + cmp r1, #0 + bne _0225441A + mov r1, #0 + bl MOD20_02254304 +_0225441A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD20_0225440C + + thumb_func_start MOD20_02254420 +MOD20_02254420: ; 0x02254420 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0x1e + blo _02254432 + bl ErrorHandling +_02254432: + cmp r4, #0x21 + blo _0225443A + bl ErrorHandling +_0225443A: + cmp r5, #0x1e + blo _02254440 + mov r5, #0 +_02254440: + cmp r4, #0x21 + blo _02254446 + mov r4, #0 +_02254446: + ldr r0, _02254458 ; =0x02254744 + lsl r1, r5, #1 + ldrh r0, [r0, r1] + lsl r1, r4, #1 + str r0, [r6] + ldr r0, _0225445C ; =0x02254780 + ldrh r0, [r0, r1] + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254458: .word 0x02254744 +_0225445C: .word 0x02254780 + thumb_func_end MOD20_02254420 + + thumb_func_start MOD20_02254460 +MOD20_02254460: ; 0x02254460 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + cmp r5, #4 + blo _02254470 + bl ErrorHandling +_02254470: + ldr r0, _02254480 ; =0x02254724 + lsl r1, r5, #3 + ldr r0, [r0, r1] + str r0, [r4] + ldr r0, _02254484 ; =0x02254728 + ldr r0, [r0, r1] + str r0, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 +_02254480: .word 0x02254724 +_02254484: .word 0x02254728 + thumb_func_end MOD20_02254460 + + thumb_func_start MOD20_02254488 +MOD20_02254488: ; 0x02254488 + push {r4, r5} + ldr r5, _022544B8 ; =0x022547C2 + mov r4, #0 +_0225448E: + ldrh r3, [r5] + cmp r0, r3 + bne _022544A8 + ldr r0, _022544BC ; =0x022547C4 + lsl r3, r4, #2 + ldrb r0, [r0, r3] + str r0, [r1] + ldr r0, _022544C0 ; =0x022547C5 + ldrb r0, [r0, r3] + str r0, [r2] + mov r0, #1 + pop {r4, r5} + bx lr +_022544A8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1d + blo _0225448E + mov r0, #0 + pop {r4, r5} + bx lr + nop +_022544B8: .word 0x022547C2 +_022544BC: .word 0x022547C4 +_022544C0: .word 0x022547C5 + thumb_func_end MOD20_02254488 + + .section .data + ; 0x022544C4 + .incbin "baserom.nds", 0x285284, 0x37C diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s new file mode 100644 index 00000000..cea8f6e8 --- /dev/null +++ b/arm9/modules/21/asm/module_21.s @@ -0,0 +1,726 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD21_02254840 +MOD21_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD21_02254854 + ldr r1, _02254850 ; =MOD21_0225496C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD21_02254854 +_02254850: .word MOD21_0225496C + thumb_func_end MOD21_02254840 + + thumb_func_start MOD21_02254854 +MOD21_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x2c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD21_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD21_02254930 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD21_02254930 + thumb_func_end MOD21_02254854 + + thumb_func_start MOD21_0225489C +MOD21_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + add r0, #0x24 + add r1, #0x14 + bl MOD21_02254A6C + cmp r0, #0 + beq _0225490A + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + strb r1, [r5, #2] + mov r0, #1 + strb r0, [r5, #3] + strb r1, [r5, #6] + add r0, r5, #0 + str r1, [r5, #0x20] + add r0, #0x14 + bl FUN_02012690 + ldr r0, [r5, #0x14] + cmp r0, #0x18 + blo _022548D6 + mov r1, #0x18 + bl _u32_div_f + str r1, [r5, #0x14] +_022548D6: + ldr r0, [r5, #0x18] + cmp r0, #0x3c + blo _022548E6 + ldr r0, [r5, #0x14] + mov r1, #0x3c + bl _u32_div_f + str r1, [r5, #0x14] +_022548E6: + ldr r0, [r5, #0x18] + ldr r2, _02254910 ; =MOD21_02254974 + strb r0, [r5, #5] + mov r0, #8 + str r0, [sp] + ldr r0, _02254914 ; =0x02254D80 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + cmp r0, #0 + bne _02254904 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254904: + str r4, [r5, #0x28] + mov r0, #1 + pop {r3, r4, r5, pc} +_0225490A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02254910: .word MOD21_02254974 +_02254914: .word 0x02254D80 + thumb_func_end MOD21_0225489C + + thumb_func_start MOD21_02254918 +MOD21_02254918: ; 0x02254918 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + bl MOD21_02254B04 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD21_02254918 + + thumb_func_start MOD21_02254930 +MOD21_02254930: ; 0x02254930 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254966 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254968 ; =0x02254D84 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254966 + add r0, r4, #0 + bl MOD21_02254918 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x28] + bl MOD20_022529A0 +_02254966: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254968: .word 0x02254D84 + thumb_func_end MOD21_02254930 + + thumb_func_start MOD21_0225496C +MOD21_0225496C: ; 0x0225496C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD21_0225496C + + thumb_func_start MOD21_02254974 +MOD21_02254974: ; 0x02254974 + cmp r2, #0 + beq _02254984 + cmp r2, #1 + bne _0225498C + mov r0, #1 + str r0, [r3, #0x20] + strb r0, [r3, #6] + bx lr +_02254984: + mov r0, #0 + str r0, [r3, #0x20] + mov r0, #1 + strb r0, [r3, #6] +_0225498C: + bx lr + .align 2, 0 + thumb_func_end MOD21_02254974 + + thumb_func_start MOD21_02254990 +MOD21_02254990: ; 0x02254990 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254998 + b _0225499A +_02254998: + mov r1, #2 +_0225499A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD21_02254990 + + thumb_func_start MOD21_022549A4 +MOD21_022549A4: ; 0x022549A4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549B4 + cmp r0, #1 + beq _022549C4 + b _022549DE +_022549B4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD21_02254B10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549DE +_022549C4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD21_02254B34 + cmp r0, #0 + beq _022549DE + ldr r0, [r4, #0x28] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD21_02254990 +_022549DE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_022549A4 + + thumb_func_start MOD21_022549E4 +MOD21_022549E4: ; 0x022549E4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F8 + mov r1, #2 + bl MOD21_02254990 + mov r0, #0 + pop {r4, pc} +_022549F8: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02254A0A + mov r0, #0 + strb r0, [r4, #6] + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD21_02254B10 +_02254A0A: + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD21_02254B34 + cmp r0, #0 + beq _02254A32 + ldr r0, [r4, #0x18] + strb r0, [r4, #5] + add r0, r4, #0 + add r0, #0x14 + bl FUN_02012690 + ldrb r1, [r4, #5] + ldr r0, [r4, #0x18] + cmp r1, r0 + beq _02254A32 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD21_02254B10 +_02254A32: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_022549E4 + + thumb_func_start MOD21_02254A38 +MOD21_02254A38: ; 0x02254A38 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A48 + cmp r0, #1 + beq _02254A58 + b _02254A66 +_02254A48: + ldr r0, [r4, #0x24] + mov r1, #3 + bl MOD21_02254B10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A66 +_02254A58: + ldr r0, [r4, #0x24] + bl MOD21_02254B40 + cmp r0, #0 + beq _02254A66 + mov r0, #1 + pop {r4, pc} +_02254A66: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254A38 + + thumb_func_start MOD21_02254A6C +MOD21_02254A6C: ; 0x02254A6C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #3 + add r5, r0, #0 + mov r0, #8 + lsl r1, r1, #8 + bl FUN_02016998 + add r4, r0, #0 + beq _02254ACC + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + mov r0, #8 + str r0, [sp] + mov r0, #0xc + mov r1, #0x19 + mov r2, #1 + add r3, sp, #4 + bl FUN_02006BDC + add r6, r0, #0 + bne _02254AB2 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + mov r0, #0 + pop {r4, r5, r6, pc} +_02254AB2: + ldr r0, [sp, #4] + add r1, r4, #0 + add r0, #0xc + add r1, #0x30 + bl MOD21_02254AD4 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #8 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254ACC: + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD21_02254A6C + + thumb_func_start MOD21_02254AD4 +MOD21_02254AD4: ; 0x02254AD4 + push {r3, r4, r5, r6, r7, lr} + mov r6, #9 + add r5, r0, #0 + add r4, r1, #0 + mov r7, #0 + lsl r6, r6, #6 +_02254AE0: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x40 + bl MIi_CpuCopy16 + add r1, r4, #0 + add r0, r5, r6 + add r1, #0x40 + mov r2, #0x10 + bl MIi_CpuCopy16 + add r7, r7, #1 + add r5, #0x40 + add r4, #0x50 + sub r6, #0x30 + cmp r7, #9 + blt _02254AE0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD21_02254AD4 + + thumb_func_start MOD21_02254B04 +MOD21_02254B04: ; 0x02254B04 + push {r3, lr} + cmp r0, #0 + beq _02254B0E + bl FUN_02016A18 +_02254B0E: + pop {r3, pc} + thumb_func_end MOD21_02254B04 + + thumb_func_start MOD21_02254B10 +MOD21_02254B10: ; 0x02254B10 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254B30 ; =0x02254DAC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B30: .word 0x02254DAC + thumb_func_end MOD21_02254B10 + + thumb_func_start MOD21_02254B34 +MOD21_02254B34: ; 0x02254B34 + ldr r3, _02254B3C ; =0x02253795 + add r0, #8 + bx r3 + nop +_02254B3C: .word 0x02253795 + thumb_func_end MOD21_02254B34 + + thumb_func_start MOD21_02254B40 +MOD21_02254B40: ; 0x02254B40 + ldr r3, _02254B48 ; =0x022537B9 + add r0, #8 + bx r3 + nop +_02254B48: .word 0x022537B9 + thumb_func_end MOD21_02254B40 + + thumb_func_start MOD21_02254B4C +MOD21_02254B4C: ; 0x02254B4C + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254B4C + + thumb_func_start MOD21_02254B60 +MOD21_02254B60: ; 0x02254B60 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254BE8 ; =0x02254D90 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x17 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x18 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + bl MOD21_02254C5C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BEC ; =0x04001000 + ldr r0, _02254BF0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD21_02254B4C + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254BE8: .word 0x02254D90 +_02254BEC: .word 0x04001000 +_02254BF0: .word 0xFFFFE0FF + thumb_func_end MOD21_02254B60 + + thumb_func_start MOD21_02254BF4 +MOD21_02254BF4: ; 0x02254BF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD21_02254C5C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD21_02254B4C + pop {r3, r4, r5, pc} + thumb_func_end MOD21_02254BF4 + + thumb_func_start MOD21_02254C14 +MOD21_02254C14: ; 0x02254C14 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02254C30 + mov r0, #0 + add r1, r0, #0 + bl MOD11_02252DB4 + b _02254C38 +_02254C30: + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C +_02254C38: + add r0, r4, #0 + bl MOD21_02254B4C + pop {r4, pc} + thumb_func_end MOD21_02254C14 + + thumb_func_start MOD21_02254C40 +MOD21_02254C40: ; 0x02254C40 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD21_02254B4C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254C40 + + thumb_func_start MOD21_02254C5C +MOD21_02254C5C: ; 0x02254C5C + push {r4, r5, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4] + ldr r2, _02254D74 ; =0x04000280 + ldr r0, [r0] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254C7A: + ldrh r1, [r2] + tst r1, r0 + bne _02254C7A + ldr r0, _02254D78 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254C8A: + ldrh r2, [r3] + tst r2, r0 + bne _02254C8A + ldr r0, _02254D7C ; =0x040002A8 + add r2, r4, #0 + ldr r5, [r0] + mov r0, #4 + str r0, [sp] + mov r0, #9 + lsl r1, r1, #0x1a + str r0, [sp, #4] + add r2, #0x30 + str r2, [sp, #8] + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + mov r3, #7 + bl FUN_02018170 + mov r0, #4 + str r0, [sp] + mov r0, #9 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x30 + str r1, [sp, #8] + lsl r1, r5, #0x1a + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #8 + mov r3, #7 + bl FUN_02018170 + ldr r0, [r4] + ldr r2, _02254D74 ; =0x04000280 + ldr r0, [r0, #4] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254D00: + ldrh r1, [r2] + tst r1, r0 + bne _02254D00 + ldr r0, _02254D78 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254D10: + ldrh r2, [r3] + tst r2, r0 + bne _02254D10 + ldr r0, _02254D7C ; =0x040002A8 + add r2, r4, #0 + ldr r5, [r0] + mov r0, #4 + str r0, [sp] + mov r0, #9 + lsl r1, r1, #0x1a + str r0, [sp, #4] + add r2, #0x30 + str r2, [sp, #8] + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0xf + mov r3, #7 + bl FUN_02018170 + mov r0, #4 + str r0, [sp] + mov r0, #9 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x30 + str r1, [sp, #8] + lsl r1, r5, #0x1a + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0x14 + mov r3, #7 + bl FUN_02018170 + add sp, #0x1c + pop {r4, r5, pc} + nop +_02254D74: .word 0x04000280 +_02254D78: .word 0x040002A0 +_02254D7C: .word 0x040002A8 + thumb_func_end MOD21_02254C5C + + .section .data + ; 0x02254D80 + .incbin "baserom.nds", 0x285B40, 0x80 diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s new file mode 100644 index 00000000..77e6bff4 --- /dev/null +++ b/arm9/modules/22/asm/module_22.s @@ -0,0 +1,1845 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD22_02254840 +MOD22_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD22_02254854 + ldr r1, _02254850 ; =MOD22_022549D8 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD22_02254854 +_02254850: .word MOD22_022549D8 + thumb_func_end MOD22_02254840 + + thumb_func_start MOD22_02254854 +MOD22_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x68 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r2, [sp] + add r1, r7, #0 + bl MOD22_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD22_0225497C + add r1, r4, #0 + mov r2, #1 + str r6, [r4, #0x64] + bl FUN_0200CA44 + cmp r0, #0 + beq _02254892 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD22_0225497C + thumb_func_end MOD22_02254854 + + thumb_func_start MOD22_0225489C +MOD22_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + str r2, [r5, #8] + add r0, r2, #0 + add r1, #0x38 + mov r2, #0x24 + bl FUN_02089418 + cmp r0, #0 + beq _022548F0 + add r0, r5, #0 + add r0, #0x4c + ldmia r0!, {r2, r3} + add r0, r5, #0 + add r0, #0xc + stmia r0!, {r2, r3} + add r0, r5, #0 + add r0, #0x54 + ldmia r0!, {r2, r3} + add r0, r5, #0 + add r0, #0x14 + stmia r0!, {r2, r3} + ldr r0, [r5, #0x3c] + str r0, [r5, #0x30] + ldr r0, [r5, #0x40] + str r0, [r5, #0x2c] + ldr r0, [r5, #0x44] + str r0, [r5, #0x28] + ldr r0, [r5, #0x48] + str r0, [r5, #0x24] + ldr r0, [r5, #0x38] + str r0, [r5, #0x1c] + cmp r0, #0 + beq _022548EA + mov r0, #2 + str r0, [r5, #0x34] + b _022548FA +_022548EA: + mov r0, #0 + str r0, [r5, #0x34] + b _022548FA +_022548F0: + add r0, r5, #0 + bl MOD22_02254CE4 + mov r0, #0 + str r0, [r5, #0x34] +_022548FA: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x60 + add r1, #0x1c + add r2, r4, #0 + bl MOD22_02254E8C + cmp r0, #0 + beq _02254926 + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + ldrb r0, [r5] + strb r0, [r5, #3] + add r0, r5, #0 + strb r1, [r5, #2] + bl MOD22_02254C88 + cmp r0, #0 + beq _02254926 + mov r0, #1 + pop {r3, r4, r5, pc} +_02254926: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD22_0225489C + + thumb_func_start MOD22_0225492C +MOD22_0225492C: ; 0x0225492C + push {r4, lr} + add r4, r0, #0 + add r0, #0xc + ldmia r0!, {r2, r3} + add r0, r4, #0 + add r0, #0x4c + stmia r0!, {r2, r3} + add r0, r4, #0 + add r0, #0x14 + ldmia r0!, {r2, r3} + add r0, r4, #0 + add r0, #0x54 + stmia r0!, {r2, r3} + ldr r0, [r4, #0x30] + add r1, r4, #0 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x2c] + add r1, #0x38 + str r0, [r4, #0x40] + ldr r0, [r4, #0x28] + mov r2, #0x24 + str r0, [r4, #0x44] + ldr r0, [r4, #0x24] + str r0, [r4, #0x48] + ldr r0, [r4, #0x1c] + str r0, [r4, #0x38] + ldr r0, [r4, #8] + bl FUN_020893F0 + add r0, r4, #0 + bl MOD22_02254CD4 + ldr r0, [r4, #0x60] + bl MOD22_02254F10 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_0225492C + + thumb_func_start MOD22_0225497C +MOD22_0225497C: ; 0x0225497C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #6 + bhs _022549D2 + ldrb r0, [r4, #2] + cmp r0, #0 + beq _0225499E + cmp r1, #5 + beq _0225499E + add r0, r4, #0 + mov r1, #5 + bl MOD22_022549E0 + mov r0, #0 + strb r0, [r4, #2] +_0225499E: + ldr r0, [r4, #0x64] + ldr r1, [r4, #0x5c] + bl MOD20_02252C14 + add r1, r4, #0 + add r0, r4, #0 + add r1, #0x1c + bl MOD22_02254D58 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549D4 ; =0x0225561C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _022549D2 + add r0, r4, #0 + bl MOD22_0225492C + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x64] + bl MOD20_022529A0 +_022549D2: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549D4: .word 0x0225561C + thumb_func_end MOD22_0225497C + + thumb_func_start MOD22_022549D8 +MOD22_022549D8: ; 0x022549D8 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD22_022549D8 + + thumb_func_start MOD22_022549E0 +MOD22_022549E0: ; 0x022549E0 + ldrb r2, [r0] + strb r2, [r0, #3] + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549EE + strb r1, [r0] + b _022549F6 +_022549EE: + mov r1, #5 + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #2] +_022549F6: + mov r1, #0 + strb r1, [r0, #1] + bx lr + thumb_func_end MOD22_022549E0 + + thumb_func_start MOD22_022549FC +MOD22_022549FC: ; 0x022549FC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A0C + cmp r0, #1 + beq _02254A1C + b _02254A46 +_02254A0C: + ldr r0, [r4, #0x60] + mov r1, #0 + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A46 +_02254A1C: + ldr r0, [r4, #0x60] + mov r1, #0 + bl MOD22_0225506C + cmp r0, #0 + beq _02254A46 + ldr r0, [r4, #0x64] + bl MOD20_0225298C + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02254A3E + add r0, r4, #0 + mov r1, #2 + bl MOD22_022549E0 + b _02254A46 +_02254A3E: + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 +_02254A46: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_022549FC + + thumb_func_start MOD22_02254A4C +MOD22_02254A4C: ; 0x02254A4C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A5C + cmp r0, #1 + beq _02254A74 + b _02254AC8 +_02254A5C: + ldrb r0, [r4, #4] + cmp r0, #1 + bne _02254AC8 + mov r1, #1 + str r1, [r4, #0x34] + ldr r0, [r4, #0x60] + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AC8 +_02254A74: + ldrb r0, [r4, #4] + cmp r0, #2 + beq _02254A84 + cmp r0, #3 + beq _02254A98 + cmp r0, #5 + beq _02254AB4 + b _02254AC8 +_02254A84: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + ldrb r0, [r4, #1] + sub r0, r0, #1 + strb r0, [r4, #1] + b _02254AC8 +_02254A98: + mov r0, #2 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + bl MOD22_02254D00 + add r0, r4, #0 + mov r1, #2 + bl MOD22_022549E0 + b _02254AC8 +_02254AB4: + mov r0, #3 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #3 + bl MOD22_022549E0 +_02254AC8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD22_02254A4C + + thumb_func_start MOD22_02254ACC +MOD22_02254ACC: ; 0x02254ACC + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254ADC + cmp r1, #1 + beq _02254AFA + b _02254B4A +_02254ADC: + ldrb r1, [r4, #4] + cmp r1, #1 + bne _02254B4A + mov r1, #1 + str r1, [r4, #0x34] + bl MOD22_02254D44 + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B4A +_02254AFA: + ldrb r0, [r4, #4] + cmp r0, #2 + beq _02254B0A + cmp r0, #3 + beq _02254B20 + cmp r0, #5 + beq _02254B36 + b _02254B4A +_02254B0A: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 + b _02254B4A +_02254B20: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 + b _02254B4A +_02254B36: + mov r0, #3 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #3 + bl MOD22_022549E0 +_02254B4A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254ACC + + thumb_func_start MOD22_02254B50 +MOD22_02254B50: ; 0x02254B50 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #4] + cmp r1, #2 + beq _02254B84 + cmp r1, #3 + beq _02254B64 + cmp r1, #6 + beq _02254B9A + b _02254BAE +_02254B64: + ldrb r1, [r4, #3] + cmp r1, #1 + bne _02254B84 + bl MOD22_02254D00 + mov r0, #2 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #2 + bl MOD22_022549E0 + b _02254BAE +_02254B84: + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 + b _02254BAE +_02254B9A: + mov r0, #4 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #4 + bl MOD22_022549E0 +_02254BAE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254B50 + + thumb_func_start MOD22_02254BB4 +MOD22_02254BB4: ; 0x02254BB4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #3 + bhi _02254C4A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254BCA: ; jump table + .short _02254BD2 - _02254BCA - 2 ; case 0 + .short _02254BDC - _02254BCA - 2 ; case 1 + .short _02254C00 - _02254BCA - 2 ; case 2 + .short _02254C2A - _02254BCA - 2 ; case 3 +_02254BD2: + mov r0, #0 + strh r0, [r4, #6] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] +_02254BDC: + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + ldrh r0, [r4, #6] + cmp r0, #0x5a + blo _02254C4A + mov r0, #5 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + mov r0, #0 + strh r0, [r4, #6] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C4A +_02254C00: + ldrh r0, [r4, #6] + add r0, r0, #1 + strh r0, [r4, #6] + ldrh r0, [r4, #6] + cmp r0, #0x3c + blo _02254C4A + mov r0, #6 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + bl MOD22_02254CE4 + mov r0, #0 + strh r0, [r4, #6] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C4A +_02254C2A: + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_0225506C + cmp r0, #0 + beq _02254C4A + mov r0, #0 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #1 + bl MOD22_02255048 + add r0, r4, #0 + mov r1, #1 + bl MOD22_022549E0 +_02254C4A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254BB4 + + thumb_func_start MOD22_02254C50 +MOD22_02254C50: ; 0x02254C50 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254C60 + cmp r0, #1 + beq _02254C74 + b _02254C82 +_02254C60: + mov r0, #7 + str r0, [r4, #0x34] + ldr r0, [r4, #0x60] + mov r1, #3 + bl MOD22_02255048 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C82 +_02254C74: + ldr r0, [r4, #0x60] + bl MOD22_02255078 + cmp r0, #0 + beq _02254C82 + mov r0, #1 + pop {r4, pc} +_02254C82: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254C50 + + thumb_func_start MOD22_02254C88 +MOD22_02254C88: ; 0x02254C88 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #8 + str r0, [sp] + ldr r0, _02254CCC ; =0x02255618 + ldr r2, _02254CD0 ; =MOD22_02254CE0 + mov r1, #1 + add r3, r4, #0 + bl MOD20_02254130 + str r0, [r4, #0x5c] + cmp r0, #0 + beq _02254CC4 + mov r1, #0 + add r2, r1, #0 + mov r3, #0xf + bl MOD20_022542AC + ldr r0, [r4, #0x5c] + mov r1, #0 + mov r2, #1 + mov r3, #0x4b + bl MOD20_022542AC + mov r0, #0 + strb r0, [r4, #4] + add sp, #4 + mov r0, #1 + pop {r3, r4, pc} +_02254CC4: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_02254CCC: .word 0x02255618 +_02254CD0: .word MOD22_02254CE0 + thumb_func_end MOD22_02254C88 + + thumb_func_start MOD22_02254CD4 +MOD22_02254CD4: ; 0x02254CD4 + ldr r3, _02254CDC ; =0x02254199 + ldr r0, [r0, #0x5c] + bx r3 + nop +_02254CDC: .word 0x02254199 + thumb_func_end MOD22_02254CD4 + + thumb_func_start MOD22_02254CE0 +MOD22_02254CE0: ; 0x02254CE0 + strb r1, [r3, #4] + bx lr + thumb_func_end MOD22_02254CE0 + + thumb_func_start MOD22_02254CE4 +MOD22_02254CE4: ; 0x02254CE4 + mov r2, #0 + str r2, [r0, #0x1c] + mov r1, #1 + str r1, [r0, #0x20] + str r2, [r0, #0x24] + str r2, [r0, #0x28] + str r2, [r0, #0x2c] + str r2, [r0, #0x30] + str r2, [r0, #0xc] + str r2, [r0, #0x10] + str r2, [r0, #0x14] + str r2, [r0, #0x18] + bx lr + .align 2, 0 + thumb_func_end MOD22_02254CE4 + + thumb_func_start MOD22_02254D00 +MOD22_02254D00: ; 0x02254D00 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r3, [r4, #0xc] + mov r0, #0 + ldr r2, [r4, #0x10] + mov r1, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _02254D32 + bl FUN_02020BF4 + add r5, r4, #0 + add r5, #0xc + ldr r7, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r6, [r4, #0x18] + sub r0, r0, r7 + sbc r1, r6 + ldr r3, [r5, #4] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + str r3, [r5, #4] + b _02254D3A +_02254D32: + bl FUN_02020BF4 + str r0, [r4, #0xc] + str r1, [r4, #0x10] +_02254D3A: + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #0 + str r0, [r4, #0x20] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD22_02254D00 + + thumb_func_start MOD22_02254D44 +MOD22_02254D44: ; 0x02254D44 + push {r4, lr} + add r4, r0, #0 + bl FUN_02020BF4 + str r0, [r4, #0x14] + str r1, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x1c] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02254D44 + + thumb_func_start MOD22_02254D58 +MOD22_02254D58: ; 0x02254D58 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02254D66 + b _02254E7C +_02254D66: + bl FUN_02020BF4 + ldr r3, [r5, #0xc] + ldr r2, [r5, #0x10] + sub r0, r0, r3 + sbc r1, r2 + bl FUN_02020BFC + ldr r2, _02254E80 ; =0x04000280 + mov r3, #1 + strh r3, [r2] + add r3, r2, #0 + add r3, #0x10 + str r0, [r3] + str r1, [r3, #4] + mov r3, #0xfa + add r0, r2, #0 + lsl r3, r3, #2 + add r0, #0x18 + mov r1, #0 + str r3, [r0] + str r1, [r0, #4] + lsr r0, r2, #0xb +_02254D94: + ldrh r1, [r2] + tst r1, r0 + bne _02254D94 + ldr r0, _02254E84 ; =0x040002A0 + add r3, r0, #0 + ldr r6, [r0] + ldr r5, [r0, #4] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254DA6: + ldrh r1, [r3] + tst r1, r0 + bne _02254DA6 + ldr r2, _02254E88 ; =0x040002A8 + mov r0, #1 + ldr r1, [r2] + ldr r7, [r2, #4] + strh r0, [r3] + add r0, r2, #0 + sub r0, #0x18 + str r1, [r0] + str r7, [r0, #4] + mov r1, #0xa + sub r2, #0x10 + str r1, [r2] + mov r0, #0 + ldr r1, _02254E80 ; =0x04000280 + str r0, [r2, #4] + lsr r0, r1, #0xb +_02254DCC: + ldrh r2, [r1] + tst r2, r0 + bne _02254DCC + ldr r0, _02254E84 ; =0x040002A0 + ldr r2, [r0] + str r2, [r4, #8] + mov r2, #1 + strh r2, [r1] + add r1, r0, #0 + sub r1, #0x10 + str r6, [r1] + str r5, [r1, #4] + mov r2, #0x3c + sub r0, #8 + str r2, [r0] + mov r1, #0 + ldr r2, _02254E80 ; =0x04000280 + str r1, [r0, #4] + lsr r0, r2, #0xb +_02254DF2: + ldrh r1, [r2] + tst r1, r0 + bne _02254DF2 + ldr r0, _02254E84 ; =0x040002A0 + add r1, r0, #0 + ldr r3, [r0] + ldr r2, [r0, #4] + sub r1, #0x20 + lsr r0, r0, #0xb +_02254E04: + ldrh r5, [r1] + tst r5, r0 + bne _02254E04 + ldr r0, _02254E88 ; =0x040002A8 + ldr r5, [r0] + str r5, [r4, #0xc] + mov r5, #1 + strh r5, [r1] + add r1, r0, #0 + sub r1, #0x18 + str r3, [r1] + str r2, [r1, #4] + mov r2, #0x3c + sub r0, #0x10 + str r2, [r0] + mov r1, #0 + ldr r2, _02254E80 ; =0x04000280 + str r1, [r0, #4] + lsr r0, r2, #0xb +_02254E2A: + ldrh r1, [r2] + tst r1, r0 + bne _02254E2A + ldr r0, _02254E84 ; =0x040002A0 + add r2, r0, #0 + ldr r5, [r0] + ldr r3, [r0, #4] + sub r2, #0x20 + lsr r0, r0, #0xb +_02254E3C: + ldrh r1, [r2] + tst r1, r0 + bne _02254E3C + ldr r1, _02254E88 ; =0x040002A8 + mov r6, #0x18 + ldr r0, [r1] + str r0, [r4, #0x10] + mov r0, #0 + sub r6, r5, r6 + mov ip, r3 + mov r6, ip + sbc r6, r0 + blo _02254E7A + mov r0, #1 + strh r0, [r2] + add r0, r1, #0 + sub r0, #0x18 + str r5, [r0] + str r3, [r0, #4] + mov r2, #0x18 + sub r1, #0x10 + str r2, [r1] + mov r0, #0 + ldr r2, _02254E80 ; =0x04000280 + str r0, [r1, #4] + lsr r0, r2, #0xb +_02254E70: + ldrh r1, [r2] + tst r1, r0 + bne _02254E70 + ldr r0, _02254E88 ; =0x040002A8 + ldr r5, [r0] +_02254E7A: + str r5, [r4, #0x14] +_02254E7C: + pop {r3, r4, r5, r6, r7, pc} + nop +_02254E80: .word 0x04000280 +_02254E84: .word 0x040002A0 +_02254E88: .word 0x040002A8 + thumb_func_end MOD22_02254D58 + + thumb_func_start MOD22_02254E8C +MOD22_02254E8C: ; 0x02254E8C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x88 + bl FUN_02016998 + add r4, r0, #0 + beq _02254F08 + str r6, [r4] + bl MOD20_02252D24 + str r0, [r4, #0x5c] + mov r0, #8 + bl FUN_02016B94 + str r0, [r4, #4] + cmp r0, #0 + bne _02254EBA + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02254EBA: + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x34 + mov r1, #0xc + mov r2, #0x12 + mov r3, #0x13 + bl MOD20_02253FBC + cmp r0, #0 + beq _02254F08 + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x48 + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + cmp r0, #0 + beq _02254F00 + add r0, r4, #0 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + add r0, r4, #0 + mov r1, #0 + add r0, #0x84 + str r1, [r0] + add sp, #4 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02254F00: + add r4, #0x34 + add r0, r4, #0 + bl MOD20_02254014 +_02254F08: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD22_02254E8C + + thumb_func_start MOD22_02254F10 +MOD22_02254F10: ; 0x02254F10 + push {r4, lr} + add r4, r0, #0 + beq _02254F26 + ldr r0, [r4, #4] + cmp r0, #0 + beq _02254F20 + bl FUN_02016A18 +_02254F20: + add r0, r4, #0 + bl FUN_02016A18 +_02254F26: + pop {r4, pc} + thumb_func_end MOD22_02254F10 + + thumb_func_start MOD22_02254F28 +MOD22_02254F28: ; 0x02254F28 + ldr r3, _02254F30 ; =MOD22_02254F34 + add r0, r1, #0 + bx r3 + nop +_02254F30: .word MOD22_02254F34 + thumb_func_end MOD22_02254F28 + + thumb_func_start MOD22_02254F34 +MOD22_02254F34: ; 0x02254F34 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #0x14] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254F50: + ldrh r1, [r2] + tst r1, r0 + bne _02254F50 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254F60: + ldrh r2, [r3] + tst r2, r0 + bne _02254F60 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x60] + bl MOD20_02253F28 + ldr r0, [r4, #0x64] + add r1, r5, #0 + bl MOD20_02253F28 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #0x10] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254F90: + ldrh r1, [r2] + tst r1, r0 + bne _02254F90 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254FA0: + ldrh r2, [r3] + tst r2, r0 + bne _02254FA0 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x68] + bl MOD20_02253F28 + ldr r0, [r4, #0x6c] + add r1, r5, #0 + bl MOD20_02253F28 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #0xc] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254FD0: + ldrh r1, [r2] + tst r1, r0 + bne _02254FD0 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254FE0: + ldrh r2, [r3] + tst r2, r0 + bne _02254FE0 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x70] + bl MOD20_02253F28 + ldr r0, [r4, #0x74] + add r1, r5, #0 + bl MOD20_02253F28 + ldr r0, [r4] + ldr r2, _0225503C ; =0x04000280 + ldr r0, [r0, #8] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02255010: + ldrh r1, [r2] + tst r1, r0 + bne _02255010 + ldr r0, _02255040 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02255020: + ldrh r2, [r3] + tst r2, r0 + bne _02255020 + ldr r0, _02255044 ; =0x040002A8 + ldr r5, [r0] + ldr r0, [r4, #0x78] + bl MOD20_02253F28 + ldr r0, [r4, #0x7c] + add r1, r5, #0 + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + nop +_0225503C: .word 0x04000280 +_02255040: .word 0x040002A0 +_02255044: .word 0x040002A8 + thumb_func_end MOD22_02254F34 + + thumb_func_start MOD22_02255048 +MOD22_02255048: ; 0x02255048 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02255068 ; =0x02255670 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02255068: .word 0x02255670 + thumb_func_end MOD22_02255048 + + thumb_func_start MOD22_0225506C +MOD22_0225506C: ; 0x0225506C + ldr r3, _02255074 ; =0x02253795 + add r0, #8 + bx r3 + nop +_02255074: .word 0x02253795 + thumb_func_end MOD22_0225506C + + thumb_func_start MOD22_02255078 +MOD22_02255078: ; 0x02255078 + ldr r3, _02255080 ; =0x022537B9 + add r0, #8 + bx r3 + nop +_02255080: .word 0x022537B9 + thumb_func_end MOD22_02255078 + + thumb_func_start MOD22_02255084 +MOD22_02255084: ; 0x02255084 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD22_02255084 + + thumb_func_start MOD22_02255098 +MOD22_02255098: ; 0x02255098 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r0, r7, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _0225515C ; =0x02255654 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x15 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x14 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r7, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r7, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r4, #0 + bl MOD22_0225516C + add r0, r4, #0 + add r1, r6, #0 + bl MOD22_022551A4 + ldr r0, _02255160 ; =MOD22_02254F28 + add r1, r5, #0 + mov r2, #3 + bl FUN_0200CA44 + add r5, #0x84 + str r0, [r5] + add r0, r4, #0 + bl MOD22_02254F34 + ldr r0, [r6] + cmp r0, #0 + beq _02255136 + add r0, r4, #0 + mov r1, #1 + bl MOD22_02255048 +_02255136: + ldr r1, _02255164 ; =0x04001000 + ldr r0, _02255168 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r7, #0 + bl MOD22_02255084 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0225515C: .word 0x02255654 +_02255160: .word MOD22_02254F28 +_02255164: .word 0x04001000 +_02255168: .word 0xFFFFE0FF + thumb_func_end MOD22_02255098 + + thumb_func_start MOD22_0225516C +MOD22_0225516C: ; 0x0225516C + push {lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x16 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #1 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD22_0225516C + + thumb_func_start MOD22_022551A4 +MOD22_022551A4: ; 0x022551A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r0, [sp, #4] + add r0, #0x48 + ldr r4, _022551FC ; =0x022556A0 + str r1, [sp] + mov r6, #0 + add r5, r7, #0 + str r0, [sp, #4] +_022551B8: + ldr r0, [r7, #0x5c] + ldr r2, [sp, #4] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x60] + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #7 + bls _022551B8 + ldr r2, _022551FC ; =0x022556A0 + lsl r1, r6, #4 + add r1, r2, r1 + add r2, r7, #0 + ldr r0, [r7, #0x5c] + add r2, #0x34 + bl MOD20_02253E74 + add r1, r7, #0 + add r1, #0x80 + str r0, [r1] + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + bne _022551F6 + add r7, #0x80 + ldr r0, [r7] + mov r1, #1 + bl MOD20_02253F78 +_022551F6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022551FC: .word 0x022556A0 + thumb_func_end MOD22_022551A4 + + thumb_func_start MOD22_02255200 +MOD22_02255200: ; 0x02255200 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r1, [r4, #0x18] + add r0, r5, #0 + lsl r2, r1, #2 + ldr r1, _0225522C ; =0x02255638 + ldr r1, [r1, r2] + bl FUN_0201B6C4 + ldr r2, [r4, #0x18] + add r0, r5, #0 + lsl r3, r2, #2 + ldr r2, _0225522C ; =0x02255638 + add r1, r6, #0 + ldr r2, [r2, r3] + blx r2 + pop {r4, r5, r6, pc} + .align 2, 0 +_0225522C: .word 0x02255638 + thumb_func_end MOD22_02255200 + + thumb_func_start MOD22_02255230 +MOD22_02255230: ; 0x02255230 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD22_02255230 + + thumb_func_start MOD22_02255268 +MOD22_02255268: ; 0x02255268 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0 + bl MOD20_02253F78 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xb + bl MOD20_02253F28 + ldr r0, [r4, #4] + mov r1, #1 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _022552A8 ; =0x00000669 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, pc} + .align 2, 0 +_022552A8: .word 0x00000669 + thumb_func_end MOD22_02255268 + + thumb_func_start MOD22_022552AC +MOD22_022552AC: ; 0x022552AC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r6, #0x18] + cmp r0, #2 + beq _022552CE + add r0, r5, #0 + bl MOD22_02255084 + pop {r4, r5, r6, pc} +_022552CE: + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022552DC + cmp r0, #1 + pop {r4, r5, r6, pc} +_022552DC: + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xc + bl MOD20_02253F28 + ldr r0, [r4, #4] + mov r1, #0 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} + thumb_func_end MOD22_022552AC + + thumb_func_start MOD22_02255300 +MOD22_02255300: ; 0x02255300 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r5, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #3 + beq _0225532A + add r0, r6, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_0225532A: + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225533A + cmp r0, #1 + beq _02255358 + pop {r3, r4, r5, r6, r7, pc} +_0225533A: + mov r0, #6 + strh r0, [r5] + mov r0, #2 + strb r0, [r5, #3] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xd + bl MOD20_02253F28 + add r0, r6, #0 + bl MOD20_022538B0 +_02255358: + add r0, r5, #0 + mov r1, #6 + bl MOD22_02255510 + cmp r0, #0 + beq _0225537A + ldr r0, _0225537C ; =0x00000669 + bl MOD20_02252B28 + ldrb r1, [r5, #3] + ldr r0, [r4, #4] + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 +_0225537A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225537C: .word 0x00000669 + thumb_func_end MOD22_02255300 + + thumb_func_start MOD22_02255380 +MOD22_02255380: ; 0x02255380 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r5, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #4 + beq _022553AA + add r0, r6, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_022553AA: + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022553BA + cmp r0, #1 + beq _022553D8 + pop {r3, r4, r5, r6, r7, pc} +_022553BA: + mov r0, #3 + strh r0, [r5] + mov r0, #2 + strb r0, [r5, #3] + mov r0, #0 + strb r0, [r5, #2] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xe + bl MOD20_02253F28 + add r0, r6, #0 + bl MOD20_022538B0 +_022553D8: + add r0, r5, #0 + mov r1, #3 + bl MOD22_02255510 + cmp r0, #0 + beq _022553FA + ldr r0, _022553FC ; =0x00000669 + bl MOD20_02252B28 + ldrb r1, [r5, #3] + ldr r0, [r4, #4] + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 +_022553FA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022553FC: .word 0x00000669 + thumb_func_end MOD22_02255380 + + thumb_func_start MOD22_02255400 +MOD22_02255400: ; 0x02255400 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538A8 + add r5, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #5 + beq _0225542A + add r0, r6, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_0225542A: + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225543A + cmp r0, #1 + beq _02255468 + pop {r3, r4, r5, r6, r7, pc} +_0225543A: + mov r0, #0 + strh r0, [r5] + strb r0, [r5, #2] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xf + bl MOD20_02253F28 + ldr r0, [r4, #4] + mov r1, #5 + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _02255498 ; =0x00000666 + bl MOD20_02252B28 + add r0, r6, #0 + bl MOD20_022538B0 +_02255468: + ldrh r0, [r5] + add r0, r0, #1 + strh r0, [r5] + ldrh r0, [r5] + cmp r0, #2 + bls _02255496 + mov r0, #0 + strh r0, [r5] + ldrb r1, [r5, #2] + mov r0, #1 + eor r0, r1 + strb r0, [r5, #2] + ldrb r0, [r5, #2] + add r0, r0, #5 + strb r0, [r5, #3] + ldrb r1, [r5, #3] + ldr r0, [r4, #4] + bl MOD22_02255544 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 +_02255496: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255498: .word 0x00000666 + thumb_func_end MOD22_02255400 + + thumb_func_start MOD22_0225549C +MOD22_0225549C: ; 0x0225549C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r4, r0, #0 + ldr r0, [r7, #0x18] + cmp r0, #6 + beq _022554C6 + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, r6, r7, pc} +_022554C6: + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022554D6 + cmp r0, #1 + beq _022554FC + pop {r3, r4, r5, r6, r7, pc} +_022554D6: + add r0, r6, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0x10 + bl MOD20_02253F28 + ldr r0, [r6, #4] + mov r1, #6 + bl MOD22_02255544 + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD20_022538B0 + mov r0, #0 + strh r0, [r4] +_022554FC: + ldrh r0, [r4] + add r0, r0, #1 + strh r0, [r4] + ldrh r0, [r4] + cmp r0, #0x50 + bls _0225550E + add r0, r5, #0 + bl MOD22_02255084 +_0225550E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD22_0225549C + + thumb_func_start MOD22_02255510 +MOD22_02255510: ; 0x02255510 + ldrh r2, [r0] + add r2, r2, #1 + strh r2, [r0] + ldrh r2, [r0] + cmp r2, r1 + bls _0225553A + mov r2, #0 + strh r2, [r0] + ldrb r1, [r0, #2] + add r1, r1, #1 + strb r1, [r0, #2] + ldrb r1, [r0, #2] + cmp r1, #3 + blo _0225552E + strb r2, [r0, #2] +_0225552E: + ldrb r2, [r0, #2] + ldr r1, _02255540 ; =0x02255634 + ldrb r1, [r1, r2] + strb r1, [r0, #3] + mov r0, #1 + bx lr +_0225553A: + mov r0, #0 + bx lr + nop +_02255540: .word 0x02255634 + thumb_func_end MOD22_02255510 + + thumb_func_start MOD22_02255544 +MOD22_02255544: ; 0x02255544 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #6 + bl FUN_0201886C + ldr r1, _022555A0 ; =0x00000252 + mov r7, #1 + add r1, r0, r1 + lsl r0, r4, #2 + add r0, r4, r0 + add r0, r0, #2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0 + mov ip, r0 + lsl r7, r7, #0xa + mov r6, #9 +_02255568: + ldr r3, [sp] + mov r2, #0 + add r4, r1, #0 +_0225556E: + sub r5, r6, r2 + add r0, r3, #0 + strh r3, [r4] + orr r0, r7 + lsl r5, r5, #1 + add r2, r2, #1 + strh r0, [r1, r5] + add r3, r3, #1 + add r4, r4, #2 + cmp r2, #5 + blo _0225556E + ldr r0, [sp] + add r1, #0x40 + add r0, #0x25 + str r0, [sp] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0xb + blo _02255568 + pop {r3, r4, r5, r6, r7, pc} + nop +_022555A0: .word 0x00000252 + thumb_func_end MOD22_02255544 + + thumb_func_start MOD22_022555A4 +MOD22_022555A4: ; 0x022555A4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _022555C0 + cmp r0, #1 + beq _022555CC + pop {r3, r4, r5, pc} +_022555C0: + add r0, r4, #0 + bl MOD22_022555FC + add r0, r5, #0 + bl MOD20_022538B0 +_022555CC: + add r0, r4, #0 + add r0, #0x34 + bl MOD20_02254014 + add r0, r4, #0 + add r0, #0x48 + bl MOD20_02254014 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_0200CAB4 + mov r0, #0 + add r4, #0x84 + str r0, [r4] + add r0, r5, #0 + bl MOD22_02255084 + pop {r3, r4, r5, pc} + thumb_func_end MOD22_022555A4 + + thumb_func_start MOD22_022555FC +MOD22_022555FC: ; 0x022555FC + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02255604: + ldr r0, [r6, #0x5c] + ldr r1, [r5, #0x60] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #9 + blo _02255604 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD22_022555FC + + .section .data + ; 0x02255618 + .incbin "baserom.nds", 0x2869D8, 0x128 diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s new file mode 100644 index 00000000..6688578e --- /dev/null +++ b/arm9/modules/23/asm/module_23.s @@ -0,0 +1,2794 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD23_02254840 +MOD23_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD23_02254854 + ldr r1, _02254850 ; =MOD23_022549A4 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD23_02254854 +_02254850: .word MOD23_022549A4 + thumb_func_end MOD23_02254840 + + thumb_func_start MOD23_02254854 +MOD23_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x28 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254888 + ldr r1, [sp] + add r2, r7, #0 + bl MOD23_02254890 + cmp r0, #0 + beq _02254888 + ldr r0, _0225488C ; =MOD23_0225494C + str r6, [r4, #0x10] + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254888: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0225488C: .word MOD23_0225494C + thumb_func_end MOD23_02254854 + + thumb_func_start MOD23_02254890 +MOD23_02254890: ; 0x02254890 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + add r1, r4, #0 + add r0, #0x14 + add r1, #0x18 + bl MOD23_02254FFC + cmp r0, #0 + beq _0225490A + mov r0, #0 + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #3] + strb r0, [r4, #2] + strb r0, [r4, #4] + mov r0, #0x11 + strh r0, [r4, #6] + sub r0, #0x12 + str r0, [r4, #8] + add r0, r4, #0 + add r0, #0x1c + mov r1, #0xa + bl MOD23_0225551C + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xa + bl MOD23_0225551C + add r0, r4, #0 + add r0, #0x24 + mov r1, #0xa + bl MOD23_0225551C + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _022548E8 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _022548E8 + ldr r0, [r4, #0x24] + cmp r0, #0 + bne _022548EE +_022548E8: + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_022548EE: + mov r0, #8 + str r0, [sp] + ldr r0, _02254910 ; =0x02255CD8 + ldr r2, _02254914 ; =MOD23_022549C4 + mov r1, #0x11 + add r3, r4, #0 + bl MOD20_02254130 + str r0, [r4, #0xc] + cmp r0, #0 + bne _0225490A + add sp, #4 + mov r0, #0 + pop {r3, r4, pc} +_0225490A: + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02254910: .word 0x02255CD8 +_02254914: .word MOD23_022549C4 + thumb_func_end MOD23_02254890 + + thumb_func_start MOD23_02254918 +MOD23_02254918: ; 0x02254918 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02254926 + bl MOD23_02255540 +_02254926: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02254930 + bl MOD23_02255540 +_02254930: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _0225493A + bl MOD23_02255540 +_0225493A: + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02254944 + bl MOD20_02254198 +_02254944: + ldr r0, [r4, #0x14] + bl MOD23_0225502C + pop {r4, pc} + thumb_func_end MOD23_02254918 + + thumb_func_start MOD23_0225494C +MOD23_0225494C: ; 0x0225494C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _02254964 + add r0, r4, #0 + mov r1, #6 + bl MOD23_022549AC + mov r0, #0 + strb r0, [r4, #3] +_02254964: + ldrb r0, [r4] + cmp r0, #7 + bhs _0225499E + mov r0, #0x11 + strh r0, [r4, #6] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0xc] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549A0 ; =0x02255CBC + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225499E + add r0, r4, #0 + bl MOD23_02254918 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD20_022529A0 +_0225499E: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549A0: .word 0x02255CBC + thumb_func_end MOD23_0225494C + + thumb_func_start MOD23_022549A4 +MOD23_022549A4: ; 0x022549A4 + mov r1, #1 + strb r1, [r0, #3] + bx lr + .align 2, 0 + thumb_func_end MOD23_022549A4 + + thumb_func_start MOD23_022549AC +MOD23_022549AC: ; 0x022549AC + ldrb r2, [r0, #3] + cmp r2, #0 + bne _022549B4 + b _022549B6 +_022549B4: + mov r1, #6 +_022549B6: + strb r1, [r0] + ldrb r1, [r0] + strb r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD23_022549AC + + thumb_func_start MOD23_022549C4 +MOD23_022549C4: ; 0x022549C4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r3, #0 + cmp r2, #0 + beq _022549D6 + cmp r2, #1 + beq _022549E2 + b _022549EC +_022549D6: + strh r5, [r4, #0x18] + ldr r0, [r4, #0x14] + mov r1, #2 + bl MOD23_02255038 + b _022549EC +_022549E2: + strh r5, [r4, #0x18] + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD23_02255038 +_022549EC: + cmp r6, #3 + bne _022549F2 + strh r5, [r4, #6] +_022549F2: + pop {r4, r5, r6, pc} + thumb_func_end MOD23_022549C4 + + thumb_func_start MOD23_022549F4 +MOD23_022549F4: ; 0x022549F4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A04 + cmp r0, #1 + beq _02254A14 + b _02254A2E +_02254A04: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A2E +_02254A14: + ldr r0, [r4, #0x14] + mov r1, #0 + bl MOD23_0225505C + cmp r0, #0 + beq _02254A2E + ldr r0, [r4, #0x10] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD23_022549AC +_02254A2E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_022549F4 + + thumb_func_start MOD23_02254A34 +MOD23_02254A34: ; 0x02254A34 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254A44 + cmp r1, #1 + beq _02254AE8 + b _02254B08 +_02254A44: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254A9E + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254A60: ; jump table + .short _02254A7A - _02254A60 - 2 ; case 0 + .short _02254A80 - _02254A60 - 2 ; case 1 + .short _02254A80 - _02254A60 - 2 ; case 2 + .short _02254A80 - _02254A60 - 2 ; case 3 + .short _02254A80 - _02254A60 - 2 ; case 4 + .short _02254A90 - _02254A60 - 2 ; case 5 + .short _02254A70 - _02254A60 - 2 ; case 6 + .short _02254AC0 - _02254A60 - 2 ; case 7 +_02254A70: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + b _02254AC0 +_02254A7A: + mov r0, #1 + strb r0, [r4, #4] + b _02254AC0 +_02254A80: + strh r1, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #4] + mov r0, #8 + str r0, [r4, #8] + mov r0, #2 + strb r0, [r4, #2] + b _02254AC0 +_02254A90: + ldr r1, [r4, #0x1c] + bl MOD23_02254F94 + ldr r0, [r4, #0x1c] + bl MOD23_02255548 + b _02254AC0 +_02254A9E: + ldrb r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4, #0x1c] + beq _02254AB4 + bl MOD23_02255838 + cmp r0, #0 + beq _02254AC0 + mov r0, #3 + str r0, [r4, #8] + b _02254AC0 +_02254AB4: + bl MOD23_022557FC + cmp r0, #0 + beq _02254AC0 + mov r0, #3 + str r0, [r4, #8] +_02254AC0: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254AD8 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B08 +_02254AD8: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254B08 + add r0, r4, #0 + bl MOD23_022549AC + b _02254B08 +_02254AE8: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254B08 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254B04 + add r0, r4, #0 + bl MOD23_022549AC + b _02254B08 +_02254B04: + mov r0, #0 + strb r0, [r4, #1] +_02254B08: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD23_02254A34 + + thumb_func_start MOD23_02254B0C +MOD23_02254B0C: ; 0x02254B0C + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254B1C + cmp r1, #1 + beq _02254BE4 + b _02254C04 +_02254B1C: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254BA2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254B38: ; jump table + .short _02254B56 - _02254B38 - 2 ; case 0 + .short _02254B6A - _02254B38 - 2 ; case 1 + .short _02254B6A - _02254B38 - 2 ; case 2 + .short _02254B6A - _02254B38 - 2 ; case 3 + .short _02254B6A - _02254B38 - 2 ; case 4 + .short _02254B72 - _02254B38 - 2 ; case 5 + .short _02254B48 - _02254B38 - 2 ; case 6 + .short _02254BBC - _02254B38 - 2 ; case 7 +_02254B48: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254BBC +_02254B56: + ldr r0, [r4, #0x20] + bl MOD23_02255548 + mov r0, #5 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + mov r0, #3 + strb r0, [r4, #2] + b _02254BBC +_02254B6A: + strh r1, [r4, #0x1a] + mov r0, #8 + str r0, [r4, #8] + b _02254BBC +_02254B72: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x1c] + bl MOD23_02255558 + ldrh r1, [r4, #0x1a] + add r0, r4, #0 + bl MOD23_02254F08 + cmp r0, #0 + beq _02254B98 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD23_02254F94 + mov r0, #6 + str r0, [r4, #8] + mov r0, #4 + strb r0, [r4, #2] + b _02254BBC +_02254B98: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254BBC +_02254BA2: + ldr r0, [r4, #0x20] + bl MOD23_02255548 + ldrh r1, [r4, #6] + ldr r0, [r4, #0x20] + bl MOD23_022557FC + cmp r0, #0 + beq _02254BBC + mov r0, #5 + str r0, [r4, #8] + mov r0, #3 + strb r0, [r4, #2] +_02254BBC: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254BD4 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C04 +_02254BD4: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254C04 + add r0, r4, #0 + bl MOD23_022549AC + b _02254C04 +_02254BE4: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254C04 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254C00 + add r0, r4, #0 + bl MOD23_022549AC + b _02254C04 +_02254C00: + mov r0, #0 + strb r0, [r4, #1] +_02254C04: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD23_02254B0C + + thumb_func_start MOD23_02254C08 +MOD23_02254C08: ; 0x02254C08 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254C18 + cmp r1, #1 + beq _02254CFA + b _02254D1A +_02254C18: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254CB0 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254C34: ; jump table + .short _02254C52 - _02254C34 - 2 ; case 0 + .short _02254C58 - _02254C34 - 2 ; case 1 + .short _02254C58 - _02254C34 - 2 ; case 2 + .short _02254C58 - _02254C34 - 2 ; case 3 + .short _02254C58 - _02254C34 - 2 ; case 4 + .short _02254C86 - _02254C34 - 2 ; case 5 + .short _02254C44 - _02254C34 - 2 ; case 6 + .short _02254CD2 - _02254C34 - 2 ; case 7 +_02254C44: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254CD2 +_02254C52: + mov r0, #1 + strb r0, [r4, #4] + b _02254CD2 +_02254C58: + ldrh r1, [r4, #0x1a] + bl MOD23_02254F08 + cmp r0, #0 + beq _02254C7C + ldrh r0, [r4, #6] + strh r0, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #4] + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x24] + bl MOD23_02255558 + mov r0, #7 + str r0, [r4, #8] + mov r0, #2 + strb r0, [r4, #2] + b _02254CD2 +_02254C7C: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254CD2 +_02254C86: + ldrh r1, [r4, #0x1a] + bl MOD23_02254F08 + cmp r0, #0 + beq _02254CA6 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD23_02254F94 + mov r0, #6 + str r0, [r4, #8] + mov r0, #0 + strb r0, [r4, #4] + mov r0, #4 + strb r0, [r4, #2] + b _02254CD2 +_02254CA6: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254CD2 +_02254CB0: + ldrb r0, [r4, #4] + cmp r0, #0 + ldr r0, [r4, #0x20] + beq _02254CC6 + bl MOD23_02255838 + cmp r0, #0 + beq _02254CD2 + mov r0, #5 + str r0, [r4, #8] + b _02254CD2 +_02254CC6: + bl MOD23_022557FC + cmp r0, #0 + beq _02254CD2 + mov r0, #5 + str r0, [r4, #8] +_02254CD2: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254CEA + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254D1A +_02254CEA: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254D1A + add r0, r4, #0 + bl MOD23_022549AC + b _02254D1A +_02254CFA: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254D1A + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254D16 + add r0, r4, #0 + bl MOD23_022549AC + b _02254D1A +_02254D16: + mov r0, #0 + strb r0, [r4, #1] +_02254D1A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254C08 + + thumb_func_start MOD23_02254D20 +MOD23_02254D20: ; 0x02254D20 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254D30 + cmp r1, #1 + beq _02254E04 + b _02254E24 +_02254D30: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + add r2, r1, #0 + sub r2, #0xa + cmp r2, #7 + bhi _02254DC2 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02254D4C: ; jump table + .short _02254D6A - _02254D4C - 2 ; case 0 + .short _02254D7A - _02254D4C - 2 ; case 1 + .short _02254D7A - _02254D4C - 2 ; case 2 + .short _02254D7A - _02254D4C - 2 ; case 3 + .short _02254D7A - _02254D4C - 2 ; case 4 + .short _02254D92 - _02254D4C - 2 ; case 5 + .short _02254D5C - _02254D4C - 2 ; case 6 + .short _02254DDC - _02254D4C - 2 ; case 7 +_02254D5C: + bl MOD23_02254EE8 + mov r0, #4 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254DDC +_02254D6A: + bl MOD23_02254EE8 + mov r0, #3 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + strb r0, [r4, #2] + b _02254DDC +_02254D7A: + strh r1, [r4, #0x1a] + mov r0, #8 + str r0, [r4, #8] + mov r0, #0 + strb r0, [r4, #4] + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x24] + bl MOD23_02255558 + mov r0, #2 + strb r0, [r4, #2] + b _02254DDC +_02254D92: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x24] + bl MOD23_02255558 + ldrh r1, [r4, #0x1a] + add r0, r4, #0 + bl MOD23_02254F08 + cmp r0, #0 + beq _02254DB8 + ldr r1, [r4, #0x24] + add r0, r4, #0 + bl MOD23_02254F94 + mov r0, #6 + str r0, [r4, #8] + mov r0, #0 + strb r0, [r4, #4] + b _02254DDC +_02254DB8: + mov r0, #9 + str r0, [r4, #8] + mov r0, #5 + strb r0, [r4, #2] + b _02254DDC +_02254DC2: + ldr r0, [r4, #0x1c] + bl MOD23_02255548 + ldrh r1, [r4, #6] + ldr r0, [r4, #0x1c] + bl MOD23_022557FC + cmp r0, #0 + beq _02254DD8 + mov r0, #3 + str r0, [r4, #8] +_02254DD8: + mov r0, #1 + strb r0, [r4, #2] +_02254DDC: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254DF4 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254E24 +_02254DF4: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254E24 + add r0, r4, #0 + bl MOD23_022549AC + b _02254E24 +_02254E04: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254E24 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254E20 + add r0, r4, #0 + bl MOD23_022549AC + b _02254E24 +_02254E20: + mov r0, #0 + strb r0, [r4, #1] +_02254E24: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD23_02254D20 + + thumb_func_start MOD23_02254E28 +MOD23_02254E28: ; 0x02254E28 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #1] + cmp r1, #0 + beq _02254E38 + cmp r1, #1 + beq _02254EC2 + b _02254EE2 +_02254E38: + mov r1, #0 + mvn r1, r1 + str r1, [r4, #8] + ldrh r1, [r4, #6] + sub r1, #0xa + cmp r1, #7 + bhi _02254E80 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02254E52: ; jump table + .short _02254E70 - _02254E52 - 2 ; case 0 + .short _02254E9A - _02254E52 - 2 ; case 1 + .short _02254E9A - _02254E52 - 2 ; case 2 + .short _02254E9A - _02254E52 - 2 ; case 3 + .short _02254E9A - _02254E52 - 2 ; case 4 + .short _02254E9A - _02254E52 - 2 ; case 5 + .short _02254E62 - _02254E52 - 2 ; case 6 + .short _02254E9A - _02254E52 - 2 ; case 7 +_02254E62: + bl MOD23_02254EE8 + mov r0, #3 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #2] + b _02254E9A +_02254E70: + bl MOD23_02254EE8 + mov r0, #3 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + strb r0, [r4, #2] + b _02254E9A +_02254E80: + add r0, r4, #0 + bl MOD23_02254EE8 + ldrh r1, [r4, #6] + ldr r0, [r4, #0x1c] + bl MOD23_022557FC + cmp r0, #0 + beq _02254E96 + mov r0, #3 + str r0, [r4, #8] +_02254E96: + mov r0, #1 + strb r0, [r4, #2] +_02254E9A: + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _02254EB2 + ldr r0, [r4, #0x14] + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254EE2 +_02254EB2: + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254EE2 + add r0, r4, #0 + bl MOD23_022549AC + b _02254EE2 +_02254EC2: + ldr r0, [r4, #0x14] + ldr r1, [r4, #8] + bl MOD23_0225505C + cmp r0, #0 + beq _02254EE2 + ldrb r1, [r4, #2] + ldrb r0, [r4] + cmp r1, r0 + beq _02254EDE + add r0, r4, #0 + bl MOD23_022549AC + b _02254EE2 +_02254EDE: + mov r0, #0 + strb r0, [r4, #1] +_02254EE2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254E28 + + thumb_func_start MOD23_02254EE8 +MOD23_02254EE8: ; 0x02254EE8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl MOD23_02255548 + ldr r0, [r4, #0x20] + bl MOD23_02255548 + ldr r0, [r4, #0x24] + bl MOD23_02255548 + mov r0, #0x11 + strh r0, [r4, #0x1a] + mov r0, #0 + strb r0, [r4, #4] + pop {r4, pc} + thumb_func_end MOD23_02254EE8 + + thumb_func_start MOD23_02254F08 +MOD23_02254F08: ; 0x02254F08 + push {r4, lr} + sub r1, #0xb + add r4, r0, #0 + cmp r1, #3 + bhi _02254F54 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254F1E: ; jump table + .short _02254F32 - _02254F1E - 2 ; case 0 + .short _02254F26 - _02254F1E - 2 ; case 1 + .short _02254F3E - _02254F1E - 2 ; case 2 + .short _02254F4A - _02254F1E - 2 ; case 3 +_02254F26: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_02255568 + b _02254F54 +_02254F32: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_022555F4 + b _02254F54 +_02254F3E: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_022556A8 + b _02254F54 +_02254F4A: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + bl MOD23_022556D8 +_02254F54: + ldr r0, [r4, #0x24] + mov r1, #0xa + bl MOD23_022558C0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254F08 + + thumb_func_start MOD23_02254F60 +MOD23_02254F60: ; 0x02254F60 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254F70 + cmp r0, #1 + beq _02254F80 + b _02254F8E +_02254F70: + ldr r0, [r4, #0x14] + mov r1, #0xa + bl MOD23_02255038 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254F8E +_02254F80: + ldr r0, [r4, #0x14] + bl MOD23_02255068 + cmp r0, #0 + beq _02254F8E + mov r0, #1 + pop {r4, pc} +_02254F8E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02254F60 + + thumb_func_start MOD23_02254F94 +MOD23_02254F94: ; 0x02254F94 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD23_02255AE8 + add r4, r0, #0 + mov r2, #0 + mov r0, #0 + sub r0, r0, r4 + sbc r2, r1 + bge _02254FF4 + mov r2, #0 + ldr r0, _02254FF8 ; =0x000001ED + sub r0, r0, r4 + sbc r2, r1 + blt _02254FF4 + ldr r0, [r5, #0x10] + bl MOD20_02252C40 + bl FUN_02024DA0 + add r5, r0, #0 + bl FUN_02024CA4 + cmp r0, #0 + beq _02254FCE + lsl r0, r4, #0x10 + lsr r4, r0, #0x10 + b _02254FD8 +_02254FCE: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069B60 + add r4, r0, #0 +_02254FD8: + cmp r4, #0 + beq _02254FF4 + ldr r0, _02254FF8 ; =0x000001ED + cmp r4, r0 + bhi _02254FF4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _02254FF4 + add r0, r4, #0 + bl MOD20_02252B48 +_02254FF4: + pop {r3, r4, r5, pc} + nop +_02254FF8: .word 0x000001ED + thumb_func_end MOD23_02254F94 + + thumb_func_start MOD23_02254FFC +MOD23_02254FFC: ; 0x02254FFC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _02255028 ; =0x0000048C + mov r0, #8 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + beq _02255022 + str r6, [r4] + str r7, [r4, #4] + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02255022: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255028: .word 0x0000048C + thumb_func_end MOD23_02254FFC + + thumb_func_start MOD23_0225502C +MOD23_0225502C: ; 0x0225502C + push {r3, lr} + cmp r0, #0 + beq _02255036 + bl FUN_02016A18 +_02255036: + pop {r3, pc} + thumb_func_end MOD23_0225502C + + thumb_func_start MOD23_02255038 +MOD23_02255038: ; 0x02255038 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02255058 ; =0x02256040 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02255058: .word 0x02256040 + thumb_func_end MOD23_02255038 + + thumb_func_start MOD23_0225505C +MOD23_0225505C: ; 0x0225505C + ldr r3, _02255064 ; =0x02253795 + add r0, #8 + bx r3 + nop +_02255064: .word 0x02253795 + thumb_func_end MOD23_0225505C + + thumb_func_start MOD23_02255068 +MOD23_02255068: ; 0x02255068 + ldr r3, _02255070 ; =0x022537B9 + add r0, #8 + bx r3 + nop +_02255070: .word 0x022537B9 + thumb_func_end MOD23_02255068 + + thumb_func_start MOD23_02255074 +MOD23_02255074: ; 0x02255074 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02255074 + + thumb_func_start MOD23_02255088 +MOD23_02255088: ; 0x02255088 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A4 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02255118 ; =0x02255D1C + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x10 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x11 + mov r3, #6 + bl FUN_020068C8 + add r0, r5, #0 + bl MOD23_02255124 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _0225511C ; =0x04001000 + ldr r0, _02255120 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD23_02255074 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02255118: .word 0x02255D1C +_0225511C: .word 0x04001000 +_02255120: .word 0xFFFFE0FF + thumb_func_end MOD23_02255088 + + thumb_func_start MOD23_02255124 +MOD23_02255124: ; 0x02255124 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #4] + mov r1, #6 + bl FUN_0201886C + mov ip, r0 + mov r0, #0 + ldr r3, _022551A0 ; =0x02255FB8 + str r0, [sp, #4] +_0225513A: + ldrb r7, [r3, #1] + ldrb r0, [r3, #3] + mov r2, #0 + add r0, r7, r0 + cmp r7, r0 + bhs _0225518C + lsl r0, r7, #5 + str r0, [sp] +_0225514A: + ldrb r1, [r3] + ldrb r0, [r3, #2] + add r0, r1, r0 + cmp r1, r0 + bhs _0225517A + ldr r0, [sp] + lsl r4, r0, #1 + mov r0, ip + add r4, r0, r4 + lsl r0, r1, #1 + add r4, r4, r0 +_02255160: + lsl r5, r2, #1 + ldrh r0, [r4] + add r5, r6, r5 + add r5, #0x4c + strh r0, [r5] + ldrb r5, [r3] + ldrb r0, [r3, #2] + add r1, r1, #1 + add r2, r2, #1 + add r0, r5, r0 + add r4, r4, #2 + cmp r1, r0 + blo _02255160 +_0225517A: + ldr r0, [sp] + ldrb r1, [r3, #1] + add r0, #0x20 + str r0, [sp] + ldrb r0, [r3, #3] + add r7, r7, #1 + add r0, r1, r0 + cmp r7, r0 + blo _0225514A +_0225518C: + ldr r0, [sp, #4] + add r3, r3, #4 + add r0, r0, #1 + add r6, #0x40 + str r0, [sp, #4] + cmp r0, #0x11 + blo _0225513A + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022551A0: .word 0x02255FB8 + thumb_func_end MOD23_02255124 + + thumb_func_start MOD23_022551A4 +MOD23_022551A4: ; 0x022551A4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldrh r5, [r5] + ldr r0, _022551F8 ; =0x00000663 + bl MOD20_02252B28 + lsl r3, r5, #2 + ldr r0, _022551FC ; =0x02255FB9 + ldr r2, _02255200 ; =0x02255FFC + ldrb r0, [r0, r3] + ldr r5, _02255204 ; =0x02255FB8 + ldr r2, [r2, r3] + str r0, [sp] + ldr r0, _02255208 ; =0x02255FBA + mov r1, #6 + ldrb r0, [r0, r3] + str r0, [sp, #4] + ldr r0, _0225520C ; =0x02255FBB + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02018148 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022551F8: .word 0x00000663 +_022551FC: .word 0x02255FB9 +_02255200: .word 0x02255FFC +_02255204: .word 0x02255FB8 +_02255208: .word 0x02255FBA +_0225520C: .word 0x02255FBB + thumb_func_end MOD23_022551A4 + + thumb_func_start MOD23_02255210 +MOD23_02255210: ; 0x02255210 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + ldrh r5, [r0] + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + lsl r3, r5, #2 + ldr r0, _02255260 ; =0x02255FB9 + add r2, r4, #0 + ldrb r0, [r0, r3] + add r2, #0x4c + lsl r5, r5, #6 + str r0, [sp] + ldr r0, _02255264 ; =0x02255FBA + add r2, r2, r5 + ldrb r0, [r0, r3] + ldr r5, _02255268 ; =0x02255FB8 + mov r1, #6 + str r0, [sp, #4] + ldr r0, _0225526C ; =0x02255FBB + ldrb r0, [r0, r3] + ldrb r3, [r5, r3] + str r0, [sp, #8] + ldr r0, [r4, #4] + bl FUN_02018148 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02255260: .word 0x02255FB9 +_02255264: .word 0x02255FBA +_02255268: .word 0x02255FB8 +_0225526C: .word 0x02255FBB + thumb_func_end MOD23_02255210 + + thumb_func_start MOD23_02255270 +MOD23_02255270: ; 0x02255270 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #4] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + thumb_func_end MOD23_02255270 + + thumb_func_start MOD23_022552A8 +MOD23_022552A8: ; 0x022552A8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #4] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + bl MOD23_0225544C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD23_022552A8 + + thumb_func_start MOD23_022552E8 +MOD23_022552E8: ; 0x022552E8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #8] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + thumb_func_end MOD23_022552E8 + + thumb_func_start MOD23_02255320 +MOD23_02255320: ; 0x02255320 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #0xc] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + bl MOD23_0225544C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD23_02255320 + + thumb_func_start MOD23_02255360 +MOD23_02255360: ; 0x02255360 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r5, #0xc] + add r1, #0x30 + bl MOD23_022558EC + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + add r1, r5, #0 + bl MOD23_02255410 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r6, #0 + bl MOD23_02255074 + pop {r4, r5, r6, pc} + thumb_func_end MOD23_02255360 + + thumb_func_start MOD23_022553A0 +MOD23_022553A0: ; 0x022553A0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + mov r2, #0 + add r1, r4, #0 + mov r0, #0xc +_022553B2: + add r2, r2, #1 + strh r0, [r1, #0x30] + add r1, r1, #2 + cmp r2, #0xa + blo _022553B2 + lsl r0, r2, #1 + mov r1, #0xd + add r0, r4, r0 + strh r1, [r0, #0x30] + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x30 + bl MOD23_0225548C + ldr r0, [r4, #4] + bl MOD23_0225544C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD23_02255074 + pop {r3, r4, r5, pc} + thumb_func_end MOD23_022553A0 + + thumb_func_start MOD23_022553E4 +MOD23_022553E4: ; 0x022553E4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD23_02255410 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD23_02255074 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_022553E4 + + thumb_func_start MOD23_02255410 +MOD23_02255410: ; 0x02255410 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + mov r1, #6 + add r4, r0, #0 + bl FUN_0201886C + ldrh r1, [r5, #2] + cmp r1, #0x11 + bne _0225542E + add r0, r4, #0 + bl MOD23_0225544C + add sp, #0xc + pop {r4, r5, pc} +_0225542E: + sub r1, #0xb + lsl r1, r1, #1 + add r1, #0xf0 + str r1, [sp] + mov r1, #0x28 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #3 + add r2, r1, #0 + mov r3, #0x20 + bl MOD20_022538BC + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD23_02255410 + + thumb_func_start MOD23_0225544C +MOD23_0225544C: ; 0x0225544C + push {lr} + sub sp, #0xc + mov r1, #6 + bl FUN_0201886C + mov r1, #0x29 + str r1, [sp] + mov r1, #0x28 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #3 + add r2, r1, #0 + mov r3, #0x20 + bl MOD20_022538BC + add sp, #0xc + pop {pc} + thumb_func_end MOD23_0225544C + + thumb_func_start MOD23_02255470 +MOD23_02255470: ; 0x02255470 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD23_02255074 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD23_02255470 + + thumb_func_start MOD23_0225548C +MOD23_0225548C: ; 0x0225548C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r1, #0 + mov r1, #6 + bl FUN_0201886C + add r7, r0, #0 + ldrh r0, [r6] + mov r1, #0 + cmp r0, #0xd + beq _022554AE + add r2, r6, #0 +_022554A4: + add r2, r2, #2 + ldrh r0, [r2] + add r1, r1, #1 + cmp r0, #0xd + bne _022554A4 +_022554AE: + mov r0, #0xa + mov r4, #0 + sub r0, r0, r1 + str r0, [sp, #0xc] + beq _022554DC + mov r5, #5 +_022554BA: + mov r0, #0x2b + str r0, [sp] + mov r0, #0x28 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r5, #0 + mov r2, #3 + mov r3, #0x20 + bl MOD20_022538BC + ldr r0, [sp, #0xc] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, r0 + blo _022554BA +_022554DC: + mov r0, #0 + str r0, [sp, #0x10] + cmp r4, #0xa + bhs _02255516 + bhs _02255516 + lsl r0, r4, #1 + add r5, r0, #5 +_022554EA: + ldrh r0, [r6] + add r1, r5, #0 + mov r2, #3 + lsl r0, r0, #1 + add r0, #0xa5 + str r0, [sp] + mov r0, #0x28 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r7, #0 + mov r3, #0x20 + bl MOD20_022538BC + ldr r0, [sp, #0x10] + add r4, r4, #1 + add r0, r0, #1 + add r5, r5, #2 + add r6, r6, #2 + str r0, [sp, #0x10] + cmp r4, #0xa + blo _022554EA +_02255516: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD23_0225548C + + thumb_func_start MOD23_0225551C +MOD23_0225551C: ; 0x0225551C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #8 + mov r1, #0xc + bl FUN_02016998 + str r0, [r5] + cmp r0, #0 + beq _0225553C + strb r4, [r0, #0xa] + ldr r0, [r5] + bl MOD23_02255548 + mov r0, #1 + pop {r3, r4, r5, pc} +_0225553C: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD23_0225551C + + thumb_func_start MOD23_02255540 +MOD23_02255540: ; 0x02255540 + ldr r3, _02255544 ; =0x02016A19 + bx r3 + .align 2, 0 +_02255544: .word 0x02016A19 + thumb_func_end MOD23_02255540 + + thumb_func_start MOD23_02255548 +MOD23_02255548: ; 0x02255548 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + strb r1, [r0, #9] + strb r1, [r0, #8] + strb r1, [r0, #0xb] + bx lr + .align 2, 0 + thumb_func_end MOD23_02255548 + + thumb_func_start MOD23_02255558 +MOD23_02255558: ; 0x02255558 + add r2, r1, #0 + add r3, r0, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + .align 2, 0 + thumb_func_end MOD23_02255558 + + thumb_func_start MOD23_02255568 +MOD23_02255568: ; 0x02255568 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r3, r1, #0 + ldrb r1, [r5, #9] + add r4, r2, #0 + cmp r1, #0 + bne _0225559A + ldrb r0, [r3, #9] + cmp r0, #1 + bne _0225559A + ldmia r3!, {r0, r1} + add r6, sp, #0x24 + add r4, r6, #0 + stmia r6!, {r0, r1} + ldr r0, [r3] + add r1, r4, #0 + str r0, [r6] + mov r0, #0 + strb r0, [r4, #9] + add r0, r5, #0 + bl MOD23_022555F4 + add sp, #0x30 + pop {r4, r5, r6, pc} +_0225559A: + cmp r1, #1 + bne _022555C2 + ldrb r0, [r3, #9] + cmp r0, #0 + bne _022555C2 + ldmia r5!, {r0, r1} + add r6, sp, #0x18 + add r2, r6, #0 + stmia r6!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r6] + mov r0, #0 + strb r0, [r2, #9] + add r0, r3, #0 + add r2, r4, #0 + bl MOD23_022555F4 + add sp, #0x30 + pop {r4, r5, r6, pc} +_022555C2: + add r1, r3, #0 + add r0, r5, #0 + add r2, sp, #0xc + add r3, sp, #0 + bl MOD23_02255C6C + ldr r2, [sp, #0xc] + ldr r1, [sp] + ldr r3, [sp, #0x10] + ldr r0, [sp, #4] + add r1, r2, r1 + adc r3, r0 + str r1, [r4] + str r3, [r4, #4] + add r0, sp, #0 + ldrb r1, [r0, #0x14] + strb r1, [r4, #8] + ldrb r0, [r0, #0x15] + strb r0, [r4, #9] + add r0, r4, #0 + bl MOD23_02255B7C + add sp, #0x30 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD23_02255568 + + thumb_func_start MOD23_022555F4 +MOD23_022555F4: ; 0x022555F4 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r1, #0 + ldrb r1, [r5, #9] + add r6, r2, #0 + cmp r1, #0 + bne _0225560A + ldrb r0, [r4, #9] + cmp r0, #1 + beq _02255614 +_0225560A: + cmp r1, #1 + bne _02255636 + ldrb r0, [r4, #9] + cmp r0, #0 + bne _02255636 +_02255614: + ldmia r4!, {r0, r1} + add r3, sp, #0x18 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldrb r1, [r2, #9] + mov r0, #1 + eor r0, r1 + strb r0, [r2, #9] + add r1, r2, #0 + add r0, r5, #0 + add r2, r6, #0 + bl MOD23_02255568 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} +_02255636: + add r0, r5, #0 + add r1, r4, #0 + bl MOD23_02255874 + cmp r0, #0 + beq _0225564C + add r0, r6, #0 + bl MOD23_02255548 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} +_0225564C: + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0xc + add r3, sp, #0 + bl MOD23_02255C6C + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r0, [sp] + ldr r1, [sp, #4] + add r5, sp, #0xc + add r4, sp, #0 + sub r0, r3, r0 + sbc r2, r1 + bhs _0225566E + mov r1, #1 + b _02255670 +_0225566E: + mov r1, #0 +_02255670: + add r0, sp, #0 + ldrb r0, [r0, #0x15] + eor r0, r1 + beq _02255686 + add r0, r5, #0 + add r5, r4, #0 + ldrb r1, [r5, #9] + add r4, r0, #0 + mov r0, #1 + eor r0, r1 + b _02255688 +_02255686: + ldrb r0, [r5, #9] +_02255688: + strb r0, [r6, #9] + ldr r2, [r5] + ldr r1, [r4] + ldr r3, [r5, #4] + ldr r0, [r4, #4] + sub r1, r2, r1 + sbc r3, r0 + str r1, [r6] + str r3, [r6, #4] + ldrb r0, [r5, #8] + strb r0, [r6, #8] + add r0, r6, #0 + bl MOD23_02255B7C + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD23_022555F4 + + thumb_func_start MOD23_022556A8 +MOD23_022556A8: ; 0x022556A8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + ldr r0, [r5] + ldr r1, [r5, #4] + ldr r2, [r6] + ldr r3, [r6, #4] + bl _ll_mul + str r0, [r4] + str r1, [r4, #4] + ldrb r1, [r5, #8] + ldrb r0, [r6, #8] + add r0, r1, r0 + strb r0, [r4, #8] + ldrb r1, [r5, #9] + ldrb r0, [r6, #9] + eor r0, r1 + strb r0, [r4, #9] + add r0, r4, #0 + bl MOD23_02255B7C + pop {r4, r5, r6, pc} + thumb_func_end MOD23_022556A8 + + thumb_func_start MOD23_022556D8 +MOD23_022556D8: ; 0x022556D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r2, #0 + add r2, r1, #0 + add r3, r1, #0 + ldr r6, [r3, #4] + mov r3, #0 + ldr r2, [r2] + mov r4, #0 + eor r3, r6 + eor r2, r4 + str r1, [sp] + orr r2, r3 + bne _022556FC + mov r0, #1 + add sp, #0x1c + strb r0, [r5, #0xb] + pop {r4, r5, r6, r7, pc} +_022556FC: + add r2, sp, #0x10 + add r3, sp, #4 + bl MOD23_02255C6C + add r0, sp, #4 + str r0, [sp] + ldr r4, [sp, #4] + ldr r3, [sp, #8] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, _022557EC ; =0x04000280 + mov r6, #2 + strh r6, [r0] + add r6, r0, #0 + add r6, #0x10 + str r2, [r6] + str r1, [r6, #4] + add r1, r0, #0 + add r1, #0x18 + str r4, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_02255728: + ldrh r2, [r0] + tst r2, r1 + bne _02255728 + ldr r0, _022557F0 ; =0x040002A0 + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r5] + str r0, [r5, #4] + mov r0, #0 + strb r0, [r5, #8] + add r0, r5, #0 + bl MOD23_02255B18 + ldr r2, _022557EC ; =0x04000280 + add r7, r0, #0 + lsr r0, r2, #0xb +_02255748: + ldrh r1, [r2] + tst r1, r0 + bne _02255748 + ldr r0, _022557F4 ; =0x040002A8 + mov r1, #0 + ldr r2, [r0, #4] + ldr r3, [r0] + mov r0, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _022557DC +_02255760: + ldrb r0, [r5, #8] + add r1, r7, #1 + add r1, r1, r0 + ldrb r0, [r5, #0xa] + cmp r1, r0 + bhs _022557DC + ldr r4, [sp, #4] + ldr r6, [sp, #8] + ldr r0, _022557EC ; =0x04000280 + mov r1, #2 + strh r1, [r0] + add r0, r3, #0 + add r1, r2, #0 + mov r2, #0xa + mov r3, #0 + bl _ll_mul + ldr r2, _022557F8 ; =0x04000290 + mov r3, #0 + str r0, [r2] + str r1, [r2, #4] + add r2, #8 + str r4, [r2] + str r6, [r2, #4] + ldr r0, [r5] + ldr r1, [r5, #4] + mov r2, #0xa + bl _ll_mul + str r0, [r5] + ldr r2, _022557EC ; =0x04000280 + str r1, [r5, #4] + lsr r0, r2, #0xb +_022557A2: + ldrh r1, [r2] + tst r1, r0 + bne _022557A2 + ldr r0, _022557F0 ; =0x040002A0 + ldr r2, [r5] + ldr r1, [r0] + ldr r3, [r5, #4] + add r1, r2, r1 + ldr r0, [r0, #4] + ldr r2, _022557EC ; =0x04000280 + adc r3, r0 + str r1, [r5] + str r3, [r5, #4] + ldrb r0, [r5, #8] + add r0, r0, #1 + strb r0, [r5, #8] + lsr r0, r2, #0xb +_022557C4: + ldrh r1, [r2] + tst r1, r0 + bne _022557C4 + ldr r0, _022557F4 ; =0x040002A8 + mov r1, #0 + ldr r2, [r0, #4] + ldr r3, [r0] + mov r0, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + bne _02255760 +_022557DC: + add r0, sp, #0x10 + ldrb r1, [r0, #9] + ldr r0, [sp] + ldrb r0, [r0, #9] + eor r0, r1 + strb r0, [r5, #9] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022557EC: .word 0x04000280 +_022557F0: .word 0x040002A0 +_022557F4: .word 0x040002A8 +_022557F8: .word 0x04000290 + thumb_func_end MOD23_022556D8 + + thumb_func_start MOD23_022557FC +MOD23_022557FC: ; 0x022557FC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD23_02255B68 + ldrb r1, [r5, #0xa] + cmp r0, r1 + blo _02255810 + mov r0, #0 + pop {r3, r4, r5, pc} +_02255810: + ldrb r0, [r5, #8] + cmp r0, #0 + bne _02255832 + ldr r0, [r5] + ldr r1, [r5, #4] + mov r2, #0xa + mov r3, #0 + bl _ll_mul + str r0, [r5] + str r1, [r5, #4] + ldr r2, [r5] + mov r0, #0 + add r2, r2, r4 + adc r1, r0 + str r2, [r5] + str r1, [r5, #4] +_02255832: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_022557FC + + thumb_func_start MOD23_02255838 +MOD23_02255838: ; 0x02255838 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD23_02255B68 + ldrb r1, [r5, #0xa] + cmp r0, r1 + blo _0225584C + mov r0, #0 + pop {r3, r4, r5, pc} +_0225584C: + ldr r0, [r5] + ldr r1, [r5, #4] + mov r2, #0xa + mov r3, #0 + bl _ll_mul + str r0, [r5] + str r1, [r5, #4] + ldr r2, [r5] + mov r0, #0 + add r2, r2, r4 + adc r1, r0 + str r2, [r5] + str r1, [r5, #4] + ldrb r0, [r5, #8] + add r0, r0, #1 + strb r0, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_02255838 + + thumb_func_start MOD23_02255874 +MOD23_02255874: ; 0x02255874 + push {r3, r4, r5, r6} + ldr r2, [r0, #4] + ldr r3, [r0] + ldr r4, [r1, #4] + add r5, r2, #0 + eor r5, r4 + ldr r6, [r1] + add r4, r3, #0 + eor r4, r6 + orr r4, r5 + beq _02255890 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_02255890: + ldrb r5, [r0, #8] + ldrb r4, [r1, #8] + cmp r5, r4 + beq _0225589E + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_0225589E: + ldrb r4, [r0, #9] + ldrb r0, [r1, #9] + cmp r4, r0 + beq _022558B8 + mov r1, #0 + mov r0, #0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _022558B8 + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr +_022558B8: + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 + thumb_func_end MOD23_02255874 + + thumb_func_start MOD23_022558C0 +MOD23_022558C0: ; 0x022558C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldrb r1, [r5, #0xb] + cmp r1, #0 + beq _022558D0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022558D0: + bl MOD23_02255B18 + ldrb r1, [r5, #8] + cmp r1, #0 + beq _022558DE + add r1, r1, #1 + add r0, r0, r1 +_022558DE: + cmp r0, r4 + bls _022558E6 + mov r0, #0 + pop {r3, r4, r5, pc} +_022558E6: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD23_022558C0 + + thumb_func_start MOD23_022558EC +MOD23_022558EC: ; 0x022558EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp] + ldrb r0, [r0, #0xb] + str r1, [sp, #0x10] + cmp r0, #0 + beq _02255900 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02255900: + ldr r0, [sp] + mov r1, #0 + ldr r7, [r0, #4] + ldr r6, [r0] + mov r0, #0 + eor r1, r7 + eor r0, r6 + orr r0, r1 + bne _02255956 + ldr r1, [sp, #0x10] + add r0, r1, #0 + add r2, r0, #2 + mov r0, #0 + strh r0, [r1] + ldr r1, [sp] + str r2, [sp, #0x10] + ldrb r1, [r1, #8] + cmp r1, #0 + beq _0225594A + add r1, r2, #2 + str r1, [sp, #0x10] + mov r1, #0xa + strh r1, [r2] + ldr r1, [sp] + ldrb r1, [r1, #8] + cmp r1, #0 + ble _0225594A + add r2, r0, #0 +_02255938: + ldr r1, [sp, #0x10] + add r0, r0, #1 + strh r2, [r1] + add r1, r1, #2 + str r1, [sp, #0x10] + ldr r1, [sp] + ldrb r1, [r1, #8] + cmp r0, r1 + blt _02255938 +_0225594A: + ldr r0, [sp, #0x10] + mov r1, #0xd + strh r1, [r0] + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02255956: + mov r2, #0xa + mov r0, #1 + mov r1, #0 + sub r2, r6, r2 + mov ip, r7 + mov r2, ip + sbc r2, r1 + blo _0225597A + ldr r2, _02255ACC ; =0x022560D8 +_02255968: + add r2, #8 + ldr r3, [r2] + add r0, r0, #1 + ldr r1, [r2, #4] + sub r3, r6, r3 + mov ip, r7 + mov r3, ip + sbc r3, r1 + bhs _02255968 +_0225597A: + ldr r1, [sp] + str r0, [sp, #8] + ldrb r1, [r1, #8] + sub r3, r1, r0 + bmi _0225598C + add r1, r3, #2 + add r1, r0, r1 + str r1, [sp, #8] + b _02255994 +_0225598C: + cmp r1, #0 + beq _02255994 + add r1, r0, #1 + str r1, [sp, #8] +_02255994: + ldr r1, [sp] + ldr r4, [sp] + ldrb r2, [r1, #9] + ldr r1, [sp, #8] + ldrb r4, [r4, #0xa] + add r1, r1, r2 + cmp r1, r4 + bls _022559AA + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022559AA: + cmp r2, #1 + bne _022559B8 + ldr r1, [sp, #0x10] + mov r2, #0xb + strh r2, [r1] + add r1, r1, #2 + str r1, [sp, #0x10] +_022559B8: + ldr r5, [sp, #0x10] + cmp r3, #0 + blt _022559E2 + add r0, r5, #0 + mov r1, #0 + strh r1, [r0] + mov r1, #0xa + add r5, r0, #4 + strh r1, [r0, #2] + add r0, r3, #0 + sub r3, r3, #1 + cmp r0, #0 + beq _02255A4E + mov r0, #0 +_022559D4: + add r1, r3, #0 + strh r0, [r5] + add r5, r5, #2 + sub r3, r3, #1 + cmp r1, #0 + bne _022559D4 + b _02255A4E +_022559E2: + neg r1, r3 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #0x14] + ldr r1, [sp, #4] + cmp r1, #0 + ble _02255A40 + ldr r4, _02255AD0 ; =0x04000280 + sub r0, r0, #1 + mov lr, r0 + lsr r3, r4, #0xb + lsr r2, r4, #0xb +_022559FA: + mov r0, #2 + strh r0, [r4] + ldr r0, _02255AD4 ; =0x04000290 + mov r1, lr + str r6, [r0] + str r7, [r0, #4] + ldr r0, [sp, #0x14] + sub r0, r1, r0 + lsl r1, r0, #3 + ldr r0, _02255AD8 ; =0x022560D0 + add r6, r0, r1 + ldr r1, [r0, r1] + ldr r6, [r6, #4] + ldr r0, _02255ADC ; =0x04000298 + str r1, [r0] + str r6, [r0, #4] +_02255A1A: + ldrh r0, [r4] + tst r0, r3 + bne _02255A1A + ldr r0, _02255AE0 ; =0x040002A0 + ldr r0, [r0] + strh r0, [r5] + add r5, r5, #2 +_02255A28: + ldrh r0, [r4] + tst r0, r2 + bne _02255A28 + ldr r0, _02255AE4 ; =0x040002A8 + ldr r1, [sp, #4] + ldr r6, [r0] + ldr r7, [r0, #4] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r1 + blt _022559FA +_02255A40: + ldr r0, [sp] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _02255A4E + mov r0, #0xa + strh r0, [r5] + add r5, r5, #2 +_02255A4E: + ldr r0, [sp, #0x10] + sub r1, r5, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, [sp, #8] + cmp r1, r0 + bhs _02255AC0 + sub r0, r0, r1 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + cmp r0, #0 + ble _02255AC0 + ldr r4, _02255AD0 ; =0x04000280 + sub r0, r0, #1 + str r0, [sp, #0xc] + lsr r3, r4, #0xb + lsr r2, r4, #0xb +_02255A76: + mov r0, #2 + strh r0, [r4] + ldr r0, _02255AD4 ; =0x04000290 + ldr r1, [sp, #0xc] + str r6, [r0] + str r7, [r0, #4] + ldr r0, [sp, #0x1c] + ldr r6, _02255AD8 ; =0x022560D0 + sub r0, r1, r0 + lsl r1, r0, #3 + ldr r0, _02255AD8 ; =0x022560D0 + add r0, r0, r1 + ldr r1, [r6, r1] + ldr r0, [r0, #4] + ldr r6, _02255ADC ; =0x04000298 + str r1, [r6] + add r1, r6, #0 + str r0, [r1, #4] +_02255A9A: + ldrh r0, [r4] + tst r0, r3 + bne _02255A9A + ldr r0, _02255AE0 ; =0x040002A0 + ldr r0, [r0] + strh r0, [r5] + add r5, r5, #2 +_02255AA8: + ldrh r0, [r4] + tst r0, r2 + bne _02255AA8 + ldr r0, _02255AE4 ; =0x040002A8 + ldr r1, [sp, #0x18] + ldr r6, [r0] + ldr r7, [r0, #4] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, r1 + blt _02255A76 +_02255AC0: + mov r0, #0xd + strh r0, [r5] + mov r0, #1 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255ACC: .word 0x022560D8 +_02255AD0: .word 0x04000280 +_02255AD4: .word 0x04000290 +_02255AD8: .word 0x022560D0 +_02255ADC: .word 0x04000298 +_02255AE0: .word 0x040002A0 +_02255AE4: .word 0x040002A8 + thumb_func_end MOD23_022558EC + + thumb_func_start MOD23_02255AE8 +MOD23_02255AE8: ; 0x02255AE8 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + lsl r5, r2, #3 + ldr r2, _02255B14 ; =0x022560D0 + add r3, r2, r5 + ldr r2, [r2, r5] + ldr r3, [r3, #4] + bl _ll_udiv + ldrb r2, [r4, #9] + cmp r2, #1 + bne _02255B10 + mov r2, #0 + mvn r2, r2 + add r3, r2, #0 + bl _ll_mul +_02255B10: + pop {r3, r4, r5, pc} + nop +_02255B14: .word 0x022560D0 + thumb_func_end MOD23_02255AE8 + + thumb_func_start MOD23_02255B18 +MOD23_02255B18: ; 0x02255B18 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r2, [sp] + mov r0, #0xa + ldr r5, [r2] + ldr r6, [r2, #4] + mov r2, #0xa + mov r1, #0 + mov r4, #1 + mov r3, #0 + sub r2, r5, r2 + mov ip, r6 + mov r2, ip + sbc r2, r3 + blo _02255B52 + ldr r2, [sp] + ldrb r7, [r2, #0xa] +_02255B3A: + add r4, r4, #1 + cmp r4, r7 + bhi _02255B52 + mov r2, #0xa + mov r3, #0 + bl _ll_mul + sub r2, r5, r0 + mov ip, r6 + mov r2, ip + sbc r2, r1 + bhs _02255B3A +_02255B52: + ldr r0, [sp] + ldrb r0, [r0, #8] + cmp r4, r0 + bls _02255B5E + sub r4, r4, r0 + b _02255B60 +_02255B5E: + mov r4, #1 +_02255B60: + ldr r0, [sp] + ldrb r0, [r0, #9] + add r0, r4, r0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD23_02255B18 + + thumb_func_start MOD23_02255B68 +MOD23_02255B68: ; 0x02255B68 + push {r4, lr} + add r4, r0, #0 + bl MOD23_02255B18 + ldrb r1, [r4, #8] + cmp r1, #0 + beq _02255B7A + add r1, r1, #1 + add r0, r0, r1 +_02255B7A: + pop {r4, pc} + thumb_func_end MOD23_02255B68 + + thumb_func_start MOD23_02255B7C +MOD23_02255B7C: ; 0x02255B7C + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02255C02 + ldr r5, _02255C5C ; =0x04000280 + ldr r2, [r4] + add r3, r5, #0 + ldr r1, [r4, #4] + mov r0, #1 + strh r0, [r5] + add r3, #0x10 + str r2, [r3] + add r0, r5, #0 + str r1, [r3, #4] + add r0, #0x18 + mov r2, #0xa + mov r1, #0 + str r2, [r0] + str r1, [r0, #4] + add r1, r4, #0 + mov ip, r0 + add r1, #8 + b _02255BE4 +_02255BAC: + mov r0, #2 + lsl r0, r0, #0xe +_02255BB0: + ldrh r2, [r5] + tst r2, r0 + bne _02255BB0 + ldr r0, _02255C60 ; =0x040002A0 + ldr r2, _02255C60 ; =0x040002A0 + ldr r0, [r0] + ldr r2, [r2, #4] + str r0, [r4] + str r2, [r4, #4] + ldr r6, [r4] + mov r0, #1 + strh r0, [r5] + str r6, [r3] + str r2, [r3, #4] + mov r2, #0xa + mov r0, ip + str r2, [r0] + mov r2, #0 + mov r0, ip + str r2, [r0, #4] + ldrb r0, [r1] + sub r0, r0, #1 + strb r0, [r1] + ldrb r0, [r4, #8] + cmp r0, #0 + beq _02255C02 +_02255BE4: + ldrh r2, [r5] + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r2 + bne _02255BE4 + ldr r0, _02255C64 ; =0x040002A8 + mov r7, #0 + ldr r6, [r0] + ldr r2, [r0, #4] + mov r0, #0 + eor r0, r2 + add r2, r6, #0 + eor r2, r7 + orr r0, r2 + beq _02255BAC +_02255C02: + add r0, r4, #0 + bl MOD23_02255B18 + ldrb r2, [r4, #8] + cmp r2, #0 + beq _02255C58 + add r1, r2, #1 + add r1, r0, r1 + ldrb r0, [r4, #0xa] + cmp r1, r0 + bls _02255C58 + sub r1, r1, r0 + cmp r1, r2 + bhi _02255C58 + ldr r5, [r4] + ldr r3, [r4, #4] + ldr r0, _02255C5C ; =0x04000280 + mov r2, #1 + strh r2, [r0] + add r2, r0, #0 + add r2, #0x10 + str r5, [r2] + str r3, [r2, #4] + ldr r2, _02255C68 ; =0x022560D0 + lsl r3, r1, #3 + ldr r5, [r2, r3] + add r2, r0, #0 + add r2, #0x18 + mov r3, #0 + str r5, [r2] + str r3, [r2, #4] + lsr r2, r0, #0xb +_02255C42: + ldrh r3, [r0] + tst r3, r2 + bne _02255C42 + ldr r0, _02255C60 ; =0x040002A0 + ldr r2, [r0] + ldr r0, [r0, #4] + str r2, [r4] + str r0, [r4, #4] + ldrb r0, [r4, #8] + sub r0, r0, r1 + strb r0, [r4, #8] +_02255C58: + pop {r3, r4, r5, r6, r7, pc} + nop +_02255C5C: .word 0x04000280 +_02255C60: .word 0x040002A0 +_02255C64: .word 0x040002A8 +_02255C68: .word 0x022560D0 + thumb_func_end MOD23_02255B7C + + thumb_func_start MOD23_02255C6C +MOD23_02255C6C: ; 0x02255C6C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + ldmia r6!, {r0, r1} + add r5, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + add r4, r3, #0 + str r0, [r2] + ldmia r7!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r7] + str r0, [r2] + ldrb r1, [r5, #8] + ldrb r0, [r4, #8] + cmp r1, r0 + bhs _02255C96 + add r0, r5, #0 + add r5, r4, #0 + add r4, r0, #0 +_02255C96: + ldrb r3, [r5, #8] + ldrb r2, [r4, #8] + ldr r0, [r4] + ldr r1, [r4, #4] + sub r2, r3, r2 + lsl r6, r2, #3 + ldr r2, _02255CB8 ; =0x022560D0 + add r3, r2, r6 + ldr r2, [r2, r6] + ldr r3, [r3, #4] + bl _ll_mul + str r0, [r4] + str r1, [r4, #4] + ldrb r0, [r5, #8] + strb r0, [r4, #8] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255CB8: .word 0x022560D0 + thumb_func_end MOD23_02255C6C + + .section .data + ; 0x02255CBC + .incbin "baserom.nds", 0x28807C, 0x484 diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s new file mode 100644 index 00000000..e3b9a327 --- /dev/null +++ b/arm9/modules/24/asm/module_24.s @@ -0,0 +1,1184 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD24_02254840 +MOD24_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD24_02254854 + ldr r1, _02254850 ; =MOD24_02254990 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD24_02254854 +_02254850: .word MOD24_02254990 + thumb_func_end MOD24_02254840 + + thumb_func_start MOD24_02254854 +MOD24_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x17 + add r5, r0, #0 + mov r0, #8 + lsl r1, r1, #8 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254894 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD24_0225489C + cmp r0, #0 + beq _0225488E + ldr r0, _02254898 ; =MOD24_02254918 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488E + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488E: + add r0, r4, #0 + bl FUN_02016A18 +_02254894: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254898: .word MOD24_02254918 + thumb_func_end MOD24_02254854 + + thumb_func_start MOD24_0225489C +MOD24_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _022548E4 ; =0x000016F0 + add r4, r1, #0 + str r3, [r5, r0] + mov r1, #1 + str r1, [r5, #8] + add r0, r0, #4 + add r1, r5, #0 + add r0, r5, r0 + add r1, #8 + bl MOD24_02254CA0 + cmp r0, #0 + beq _022548E0 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + strb r0, [r5, #3] + mov r0, #8 + str r0, [sp] + ldr r0, _022548E8 ; =0x022550F8 + ldr r2, _022548EC ; =MOD24_02254960 + mov r1, #2 + add r3, r5, #0 + bl MOD20_02254130 + ldr r1, _022548F0 ; =0x000016FC + str r0, [r5, r1] + sub r0, r1, #4 + str r4, [r5, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548E0: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022548E4: .word 0x000016F0 +_022548E8: .word 0x022550F8 +_022548EC: .word MOD24_02254960 +_022548F0: .word 0x000016FC + thumb_func_end MOD24_0225489C + + thumb_func_start MOD24_022548F4 +MOD24_022548F4: ; 0x022548F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02254910 ; =0x000016FC + ldr r0, [r4, r0] + bl MOD20_02254198 + ldr r0, _02254914 ; =0x000016F4 + ldr r0, [r4, r0] + bl MOD24_02254D48 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 +_02254910: .word 0x000016FC +_02254914: .word 0x000016F4 + thumb_func_end MOD24_022548F4 + + thumb_func_start MOD24_02254918 +MOD24_02254918: ; 0x02254918 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254954 + ldr r1, _02254958 ; =0x000016F8 + ldr r0, [r4, r1] + add r1, r1, #4 + ldr r1, [r4, r1] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _0225495C ; =0x02255100 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254954 + add r0, r4, #0 + bl MOD24_022548F4 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _02254958 ; =0x000016F8 + ldr r0, [r4, r0] + bl MOD20_022529A0 +_02254954: + pop {r3, r4, r5, pc} + nop +_02254958: .word 0x000016F8 +_0225495C: .word 0x02255100 + thumb_func_end MOD24_02254918 + + thumb_func_start MOD24_02254960 +MOD24_02254960: ; 0x02254960 + push {r3, lr} + cmp r2, #1 + bne _02254988 + ldr r1, [r3, #8] + cmp r1, #1 + bne _02254970 + cmp r0, #0 + beq _02254978 +_02254970: + cmp r1, #0 + bne _02254988 + cmp r0, #1 + bne _02254988 +_02254978: + ldr r0, [r3, #8] + mov r1, #1 + eor r0, r1 + str r0, [r3, #8] + ldr r0, _0225498C ; =0x000016F4 + ldr r0, [r3, r0] + bl MOD24_02254D8C +_02254988: + pop {r3, pc} + nop +_0225498C: .word 0x000016F4 + thumb_func_end MOD24_02254960 + + thumb_func_start MOD24_02254990 +MOD24_02254990: ; 0x02254990 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD24_02254990 + + thumb_func_start MOD24_02254998 +MOD24_02254998: ; 0x02254998 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549A0 + b _022549A2 +_022549A0: + mov r1, #2 +_022549A2: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD24_02254998 + + thumb_func_start MOD24_022549AC +MOD24_022549AC: ; 0x022549AC + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549BC + cmp r0, #1 + beq _022549CE + b _022549EC +_022549BC: + ldr r0, _022549F0 ; =0x000016F4 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD24_02254D8C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549EC +_022549CE: + ldr r0, _022549F0 ; =0x000016F4 + mov r1, #0 + ldr r0, [r4, r0] + bl MOD24_02254DB0 + cmp r0, #0 + beq _022549EC + ldr r0, _022549F4 ; =0x000016F8 + ldr r0, [r4, r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD24_02254998 +_022549EC: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_022549F0: .word 0x000016F4 +_022549F4: .word 0x000016F8 + thumb_func_end MOD24_022549AC + + thumb_func_start MOD24_022549F8 +MOD24_022549F8: ; 0x022549F8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldrb r1, [r5, #2] + cmp r1, #0 + beq _02254A0A + mov r1, #2 + bl MOD24_02254998 +_02254A0A: + ldrb r0, [r5, #1] + cmp r0, #0 + bne _02254A60 + ldr r0, _02254A68 ; =0x000016F8 + ldr r0, [r5, r0] + bl MOD20_02252C08 + cmp r0, #0 + bne _02254A60 + ldrb r0, [r5, #3] + cmp r0, #0 + beq _02254A48 + add r0, r5, #0 + ldr r6, [r5, #0xc] + ldr r4, [r5, #0x10] + bl MOD24_02254AD4 + cmp r0, #0 + beq _02254A42 + ldr r0, [r5, #0x10] + add r1, r6, #0 + str r0, [sp] + ldr r3, [r5, #0xc] + add r0, r5, #0 + add r2, r4, #0 + bl MOD24_02254B20 + b _02254A60 +_02254A42: + mov r0, #0 + strb r0, [r5, #3] + b _02254A60 +_02254A48: + add r0, r5, #0 + bl MOD24_02254A70 + cmp r0, #0 + beq _02254A60 + ldr r0, _02254A6C ; =0x000016F4 + mov r1, #3 + ldr r0, [r5, r0] + bl MOD24_02254D8C + mov r0, #1 + strb r0, [r5, #3] +_02254A60: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02254A68: .word 0x000016F8 +_02254A6C: .word 0x000016F4 + thumb_func_end MOD24_022549F8 + + thumb_func_start MOD24_02254A70 +MOD24_02254A70: ; 0x02254A70 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252B68 + cmp r0, #0 + beq _02254ACC + ldr r1, [sp, #4] + ldr r2, [sp] + sub r1, #0x10 + sub r2, #0x10 + cmp r1, #0x9c + bhs _02254A92 + mov r0, #1 + b _02254A94 +_02254A92: + mov r0, #0 +_02254A94: + cmp r2, #0x96 + bhs _02254A9C + mov r3, #1 + b _02254A9E +_02254A9C: + mov r3, #0 +_02254A9E: + tst r0, r3 + beq _02254ACC + lsr r3, r1, #1 + lsr r0, r2, #1 + add r2, r4, #0 + mov r1, #0x4b + add r2, #0x14 + mul r1, r3 + str r3, [sp, #4] + str r0, [sp] + add r3, r2, r1 + ldrb r1, [r3, r0] + ldr r2, [r4, #8] + cmp r2, r1 + beq _02254ACC + strb r2, [r3, r0] + ldr r0, [sp, #4] + str r0, [r4, #0xc] + ldr r0, [sp] + add sp, #8 + str r0, [r4, #0x10] + mov r0, #1 + pop {r4, pc} +_02254ACC: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD24_02254A70 + + thumb_func_start MOD24_02254AD4 +MOD24_02254AD4: ; 0x02254AD4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252B68 + cmp r0, #0 + beq _02254B1A + ldr r1, [sp, #4] + ldr r2, [sp] + sub r1, #0x10 + sub r2, #0x10 + cmp r1, #0x9c + bhs _02254AF6 + mov r0, #1 + b _02254AF8 +_02254AF6: + mov r0, #0 +_02254AF8: + cmp r2, #0x96 + bhs _02254B00 + mov r3, #1 + b _02254B02 +_02254B00: + mov r3, #0 +_02254B02: + tst r0, r3 + beq _02254B1A + lsr r1, r1, #1 + lsr r0, r2, #1 + str r1, [sp, #4] + str r0, [sp] + str r1, [r4, #0xc] + ldr r0, [sp] + add sp, #8 + str r0, [r4, #0x10] + mov r0, #1 + pop {r4, pc} +_02254B1A: + mov r0, #0 + add sp, #8 + pop {r4, pc} + thumb_func_end MOD24_02254AD4 + + thumb_func_start MOD24_02254B20 +MOD24_02254B20: ; 0x02254B20 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [sp, #0x28] + add r4, r2, #0 + add r6, r1, #0 + str r3, [sp] + str r0, [sp, #0x28] + cmp r4, r0 + bne _02254B3C + add r0, r3, #0 + cmp r6, r0 + bne _02254B3C + b _02254C5C +_02254B3C: + ldr r0, [sp] + cmp r0, r6 + bls _02254B46 + sub r1, r0, r6 + b _02254B48 +_02254B46: + sub r1, r6, r0 +_02254B48: + ldr r0, [sp, #0x28] + cmp r0, r4 + bls _02254B52 + sub r2, r0, r4 + b _02254B54 +_02254B52: + sub r2, r4, r0 +_02254B54: + cmp r1, r2 + bls _02254BD6 + ldr r0, [sp] + cmp r0, r6 + bls _02254B64 + mov r0, #1 + str r0, [sp, #4] + b _02254B6A +_02254B64: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] +_02254B6A: + cmp r1, #0 + beq _02254B7C + ldr r0, [sp, #0x28] + sub r0, r0, r4 + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [sp, #0x10] + b _02254B80 +_02254B7C: + mov r0, #0 + str r0, [sp, #0x10] +_02254B80: + ldr r0, [sp, #0x10] + lsl r1, r4, #0xc + add r7, r1, r0 + ldr r0, [sp, #4] + add r6, r6, r0 + ldr r0, [sp] + cmp r6, r0 + beq _02254C40 + mov r1, #0x4b + add r0, r6, #0 + mul r0, r1 + add r4, r5, r0 + ldr r0, [sp, #4] + mul r1, r0 + str r1, [sp, #0xc] +_02254B9E: + asr r2, r7, #0xc + cmp r6, #0x4e + bhs _02254BC2 + cmp r2, #0x4b + bhs _02254BC2 + add r1, r4, r2 + ldrb r0, [r1, #0x14] + ldr r3, [r5, #8] + cmp r3, r0 + beq _02254BC2 + strb r3, [r1, #0x14] + str r6, [r5, #0xc] + ldr r0, _02254C60 ; =0x000016F4 + str r2, [r5, #0x10] + ldr r0, [r5, r0] + mov r1, #3 + bl MOD24_02254D8C +_02254BC2: + ldr r0, [sp, #0xc] + add r4, r4, r0 + ldr r0, [sp, #4] + add r6, r6, r0 + ldr r0, [sp, #0x10] + add r7, r7, r0 + ldr r0, [sp] + cmp r6, r0 + bne _02254B9E + b _02254C40 +_02254BD6: + ldr r0, [sp, #0x28] + cmp r0, r4 + bls _02254BE0 + mov r7, #1 + b _02254BE4 +_02254BE0: + mov r7, #0 + mvn r7, r7 +_02254BE4: + cmp r2, #0 + beq _02254BF8 + ldr r0, [sp] + add r1, r2, #0 + sub r0, r0, r6 + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [sp, #8] + b _02254BFC +_02254BF8: + mov r0, #0 + str r0, [sp, #8] +_02254BFC: + ldr r0, [sp, #8] + lsl r1, r6, #0xc + add r6, r1, r0 + ldr r0, [sp, #0x28] + add r4, r4, r7 + cmp r4, r0 + beq _02254C40 +_02254C0A: + asr r3, r6, #0xc + cmp r4, #0x4b + bhs _02254C34 + cmp r3, #0x4e + bhs _02254C34 + mov r0, #0x4b + mul r0, r3 + add r0, r5, r0 + add r2, r0, r4 + ldrb r0, [r2, #0x14] + ldr r1, [r5, #8] + cmp r1, r0 + beq _02254C34 + strb r1, [r2, #0x14] + str r3, [r5, #0xc] + ldr r0, _02254C60 ; =0x000016F4 + str r4, [r5, #0x10] + ldr r0, [r5, r0] + mov r1, #3 + bl MOD24_02254D8C +_02254C34: + ldr r0, [sp, #8] + add r4, r4, r7 + add r6, r6, r0 + ldr r0, [sp, #0x28] + cmp r4, r0 + bne _02254C0A +_02254C40: + ldr r0, [sp, #0x28] + cmp r0, #0x4b + bhs _02254C5C + ldr r0, [sp] + cmp r0, #0x4e + bhs _02254C5C + str r0, [r5, #0xc] + ldr r0, [sp, #0x28] + mov r1, #3 + str r0, [r5, #0x10] + ldr r0, _02254C60 ; =0x000016F4 + ldr r0, [r5, r0] + bl MOD24_02254D8C +_02254C5C: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254C60: .word 0x000016F4 + thumb_func_end MOD24_02254B20 + + thumb_func_start MOD24_02254C64 +MOD24_02254C64: ; 0x02254C64 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254C74 + cmp r0, #1 + beq _02254C86 + b _02254C96 +_02254C74: + ldr r0, _02254C9C ; =0x000016F4 + mov r1, #5 + ldr r0, [r4, r0] + bl MOD24_02254D8C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C96 +_02254C86: + ldr r0, _02254C9C ; =0x000016F4 + ldr r0, [r4, r0] + bl MOD24_02254DBC + cmp r0, #0 + beq _02254C96 + mov r0, #1 + pop {r4, pc} +_02254C96: + mov r0, #0 + pop {r4, pc} + nop +_02254C9C: .word 0x000016F4 + thumb_func_end MOD24_02254C64 + + thumb_func_start MOD24_02254CA0 +MOD24_02254CA0: ; 0x02254CA0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x74 + bl FUN_02016998 + add r4, r0, #0 + beq _02254CFA + mov r0, #7 + bl FUN_02016B90 + cmp r0, #0 + bne _02254CC0 + bl ErrorHandling +_02254CC0: + add r0, r4, #0 + add r0, #8 + mov r1, #0x10 + bl MOD20_022536F4 + mov r0, #7 + bl FUN_02016B90 + cmp r0, #0 + bne _02254CD8 + bl ErrorHandling +_02254CD8: + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x50] + mov r0, #7 + bl FUN_02016B90 + cmp r0, #0 + bne _02254CF4 + bl ErrorHandling +_02254CF4: + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254CFA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD24_02254CA0 + + thumb_func_start MOD24_02254D00 +MOD24_02254D00: ; 0x02254D00 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r4, #0x70] + add r1, r0, #0 + beq _02254D3C + ldr r0, [r4, #4] + ldr r2, _02254D40 ; =0x0225510C + bl FUN_02019150 + mov r2, #0xbe + ldr r1, [r4] + ldr r0, _02254D44 ; =0x000016E8 + lsl r2, r2, #6 + ldr r0, [r1, r0] + ldr r1, [r4, #0x70] + ldr r1, [r1, #0xc] + bl FUN_0208946C + cmp r0, #0 + bne _02254D38 + ldr r0, [r4, #0x70] + mov r1, #4 + bl FUN_02019620 +_02254D38: + mov r0, #1 + pop {r4, pc} +_02254D3C: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02254D40: .word 0x0225510C +_02254D44: .word 0x000016E8 + thumb_func_end MOD24_02254D00 + + thumb_func_start MOD24_02254D48 +MOD24_02254D48: ; 0x02254D48 + push {r4, lr} + add r4, r0, #0 + beq _02254D84 + mov r0, #7 + bl FUN_02016B90 + cmp r0, #0 + bne _02254D5C + bl ErrorHandling +_02254D5C: + ldr r2, [r4, #0x70] + cmp r2, #0 + beq _02254D7E + ldr r1, [r4] + ldr r0, _02254D88 ; =0x000016E8 + ldr r0, [r1, r0] + ldr r1, [r2, #0xc] + mov r2, #0xbe + lsl r2, r2, #6 + bl FUN_02089444 + ldr r0, [r4, #0x70] + bl FUN_02019178 + ldr r0, [r4, #0x70] + bl FUN_02016A18 +_02254D7E: + add r0, r4, #0 + bl FUN_02016A18 +_02254D84: + pop {r4, pc} + nop +_02254D88: .word 0x000016E8 + thumb_func_end MOD24_02254D48 + + thumb_func_start MOD24_02254D8C +MOD24_02254D8C: ; 0x02254D8C + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254DAC ; =0x0225516C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254DAC: .word 0x0225516C + thumb_func_end MOD24_02254D8C + + thumb_func_start MOD24_02254DB0 +MOD24_02254DB0: ; 0x02254DB0 + ldr r3, _02254DB8 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254DB8: .word MOD20_02253794 + thumb_func_end MOD24_02254DB0 + + thumb_func_start MOD24_02254DBC +MOD24_02254DBC: ; 0x02254DBC + ldr r3, _02254DC4 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254DC4: .word MOD20_022537B8 + thumb_func_end MOD24_02254DBC + + thumb_func_start MOD24_02254DC8 +MOD24_02254DC8: ; 0x02254DC8 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD24_02254DC8 + + thumb_func_start MOD24_02254DDC +MOD24_02254DDC: ; 0x02254DDC + push {r4, r5, lr} + sub sp, #0x14 + mov r0, #8 + add r4, r1, #0 + bl FUN_02016B90 + cmp r0, #0 + bne _02254DF0 + bl ErrorHandling +_02254DF0: + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254ED0 ; =0x02255114 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _02254ED4 ; =0x02255130 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254E1E + bl ErrorHandling +_02254E1E: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x1e + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x1f + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254E68 + bl ErrorHandling +_02254E68: + add r0, r5, #0 + bl MOD24_02254D00 + ldr r0, [r5, #0x70] + bl FUN_020191D0 + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254E82 + bl ErrorHandling +_02254E82: + add r0, r5, #0 + bl MOD24_02255078 + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254E96 + bl ErrorHandling +_02254E96: + ldr r0, [r5, #4] + mov r1, #7 + bl FUN_02017CD0 + ldr r1, _02254ED8 ; =0x04001000 + ldr r0, _02254EDC ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD24_02254DC8 + mov r0, #8 + bl FUN_02016B90 + cmp r0, #0 + bne _02254ECC + bl ErrorHandling +_02254ECC: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254ED0: .word 0x02255114 +_02254ED4: .word 0x02255130 +_02254ED8: .word 0x04001000 +_02254EDC: .word 0xFFFFE0FF + thumb_func_end MOD24_02254DDC + + thumb_func_start MOD24_02254EE0 +MOD24_02254EE0: ; 0x02254EE0 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0] + cmp r0, #1 + ldr r0, [r4, #0x68] + bne _02254F06 + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r4, #0x6c] + mov r1, #3 + bl MOD20_02253F28 + b _02254F14 +_02254F06: + mov r1, #1 + bl MOD20_02253F28 + ldr r0, [r4, #0x6c] + mov r1, #2 + bl MOD20_02253F28 +_02254F14: + ldr r0, _02254F24 ; =0x00000663 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD24_02254DC8 + pop {r3, r4, r5, pc} + nop +_02254F24: .word 0x00000663 + thumb_func_end MOD24_02254EE0 + + thumb_func_start MOD24_02254F28 +MOD24_02254F28: ; 0x02254F28 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #0x70] + bl FUN_02019548 + add r0, r4, #0 + bl MOD24_02254DC8 + pop {r4, pc} + thumb_func_end MOD24_02254F28 + + thumb_func_start MOD24_02254F40 +MOD24_02254F40: ; 0x02254F40 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r0, r1, #0 + str r1, [sp, #8] + bl MOD20_022538A0 + add r7, r0, #0 + ldr r0, [r7] + ldr r1, [r0] + cmp r1, #0 + bne _02254FF2 + mov r1, #8 + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [r0, #4] + ldr r0, [r0, #8] + lsl r1, r1, #1 + lsl r0, r0, #1 + sub r6, r1, #4 + sub r5, r0, #4 + cmp r6, #0 + bge _02254F74 + ldr r0, [sp, #0x10] + add r0, r0, r6 + str r0, [sp, #0x14] + mov r6, #0 +_02254F74: + cmp r5, #0 + bge _02254F80 + ldr r0, [sp, #0x10] + add r0, r0, r5 + str r0, [sp, #0x10] + mov r5, #0 +_02254F80: + ldr r0, [sp, #0x14] + lsl r2, r6, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + ldr r0, [sp, #0x10] + lsl r3, r5, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, [r7, #0x70] + mov r1, #4 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + asr r1, r5, #3 + mov r2, #0x14 + asr r0, r6, #3 + mul r2, r1 + add r4, r0, r2 + ldr r2, [sp, #0x14] + add r2, r6, r2 + sub r2, r2, #1 + asr r2, r2, #3 + sub r0, r2, r0 + ldr r2, [sp, #0x10] + add r0, r0, #1 + add r2, r5, r2 + sub r2, r2, #1 + asr r2, r2, #3 + sub r1, r2, r1 + add r1, r1, #1 + sub r6, r1, #1 + cmp r1, #0 + beq _0225502C + lsl r0, r0, #5 + lsl r5, r4, #5 + str r0, [sp, #0xc] +_02254FCE: + ldr r0, [r7, #0x70] + add r1, r4, #0 + ldr r0, [r0, #0xc] + add r1, #0xc + ldr r2, [sp, #0xc] + add r0, r0, r5 + lsl r1, r1, #5 + bl GXS_LoadBG3Char + mov r0, #0xa + lsl r0, r0, #6 + add r5, r5, r0 + add r0, r6, #0 + add r4, #0x14 + sub r6, r6, #1 + cmp r0, #0 + bne _02254FCE + b _0225502C +_02254FF2: + ldr r1, [r0, #4] + ldr r0, [r0, #8] + lsl r2, r1, #1 + lsl r3, r0, #1 + asr r1, r3, #3 + mov r0, #0x14 + asr r4, r2, #3 + mul r0, r1 + add r4, r4, r0 + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + ldr r0, [r7, #0x70] + mov r1, #1 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, [r7, #0x70] + mov r2, #0x20 + ldr r1, [r0, #0xc] + lsl r0, r4, #5 + add r4, #0xc + add r0, r1, r0 + lsl r1, r4, #5 + bl GXS_LoadBG3Char +_0225502C: + ldr r0, [sp, #8] + bl MOD24_02254DC8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD24_02254F40 + + thumb_func_start MOD24_02255038 +MOD24_02255038: ; 0x02255038 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #0x70] + bl FUN_02019548 + add r0, r4, #0 + bl MOD24_02254DC8 + pop {r4, pc} + thumb_func_end MOD24_02255038 + + thumb_func_start MOD24_02255050 +MOD24_02255050: ; 0x02255050 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD24_022550D4 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD24_02254DC8 + pop {r3, r4, r5, pc} + thumb_func_end MOD24_02255050 + + thumb_func_start MOD24_02255078 +MOD24_02255078: ; 0x02255078 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x20 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x54 + mov r1, #0xc + mov r2, #0x21 + mov r3, #0x22 + bl MOD20_02253FBC + cmp r0, #0 + beq _022550CC + add r0, r7, #0 + str r0, [sp, #0xc] + add r0, #0x54 + ldr r4, _022550D0 ; =0x0225514C + mov r6, #0 + add r5, r7, #0 + str r0, [sp, #0xc] +_022550B6: + ldr r0, [r7, #0x50] + ldr r2, [sp, #0xc] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x68] + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #2 + blt _022550B6 +_022550CC: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022550D0: .word 0x0225514C + thumb_func_end MOD24_02255078 + + thumb_func_start MOD24_022550D4 +MOD24_022550D4: ; 0x022550D4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_022550DC: + ldr r0, [r6, #0x50] + ldr r1, [r5, #0x68] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blo _022550DC + add r6, #0x54 + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD24_022550D4 + + .section .data + ; 0x022550F8 + .incbin "baserom.nds", 0x288EB8, 0xE8 diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s new file mode 100644 index 00000000..6df522da --- /dev/null +++ b/arm9/modules/25/asm/module_25.s @@ -0,0 +1,663 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD25_02254840 +MOD25_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD25_02254854 + ldr r1, _02254850 ; =MOD25_0225496C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD25_02254854 +_02254850: .word MOD25_0225496C + thumb_func_end MOD25_02254840 + + thumb_func_start MOD25_02254854 +MOD25_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x2c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD25_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD25_02254930 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD25_02254930 + thumb_func_end MOD25_02254854 + + thumb_func_start MOD25_0225489C +MOD25_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + add r0, #0x24 + add r1, #0x14 + bl MOD25_02254A6C + cmp r0, #0 + beq _0225490A + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + strb r1, [r5, #2] + mov r0, #1 + strb r0, [r5, #3] + strb r1, [r5, #6] + add r0, r5, #0 + str r1, [r5, #0x20] + add r0, #0x14 + bl FUN_02012690 + ldr r0, [r5, #0x14] + cmp r0, #0x18 + blo _022548D6 + mov r1, #0x18 + bl _u32_div_f + str r1, [r5, #0x14] +_022548D6: + ldr r0, [r5, #0x18] + cmp r0, #0x3c + blo _022548E6 + ldr r0, [r5, #0x14] + mov r1, #0x3c + bl _u32_div_f + str r1, [r5, #0x14] +_022548E6: + ldr r0, [r5, #0x18] + ldr r2, _02254910 ; =MOD25_02254974 + strb r0, [r5, #5] + mov r0, #8 + str r0, [sp] + ldr r0, _02254914 ; =0x02254CF8 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + cmp r0, #0 + bne _02254904 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254904: + str r4, [r5, #0x28] + mov r0, #1 + pop {r3, r4, r5, pc} +_0225490A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02254910: .word MOD25_02254974 +_02254914: .word 0x02254CF8 + thumb_func_end MOD25_0225489C + + thumb_func_start MOD25_02254918 +MOD25_02254918: ; 0x02254918 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + bl MOD25_02254AC4 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD25_02254918 + + thumb_func_start MOD25_02254930 +MOD25_02254930: ; 0x02254930 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254966 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254968 ; =0x02254CFC + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254966 + add r0, r4, #0 + bl MOD25_02254918 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x28] + bl MOD20_022529A0 +_02254966: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254968: .word 0x02254CFC + thumb_func_end MOD25_02254930 + + thumb_func_start MOD25_0225496C +MOD25_0225496C: ; 0x0225496C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD25_0225496C + + thumb_func_start MOD25_02254974 +MOD25_02254974: ; 0x02254974 + cmp r2, #0 + beq _02254984 + cmp r2, #1 + bne _0225498C + mov r0, #1 + str r0, [r3, #0x20] + strb r0, [r3, #6] + bx lr +_02254984: + mov r0, #0 + str r0, [r3, #0x20] + mov r0, #1 + strb r0, [r3, #6] +_0225498C: + bx lr + .align 2, 0 + thumb_func_end MOD25_02254974 + + thumb_func_start MOD25_02254990 +MOD25_02254990: ; 0x02254990 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254998 + b _0225499A +_02254998: + mov r1, #2 +_0225499A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD25_02254990 + + thumb_func_start MOD25_022549A4 +MOD25_022549A4: ; 0x022549A4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549B4 + cmp r0, #1 + beq _022549C4 + b _022549DE +_022549B4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD25_02254AE4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549DE +_022549C4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD25_02254B08 + cmp r0, #0 + beq _022549DE + ldr r0, [r4, #0x28] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD25_02254990 +_022549DE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD25_022549A4 + + thumb_func_start MOD25_022549E4 +MOD25_022549E4: ; 0x022549E4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F8 + mov r1, #2 + bl MOD25_02254990 + mov r0, #0 + pop {r4, pc} +_022549F8: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02254A0A + mov r0, #0 + strb r0, [r4, #6] + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD25_02254AE4 +_02254A0A: + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD25_02254B08 + cmp r0, #0 + beq _02254A32 + ldr r0, [r4, #0x18] + strb r0, [r4, #5] + add r0, r4, #0 + add r0, #0x14 + bl FUN_02012690 + ldrb r1, [r4, #5] + ldr r0, [r4, #0x18] + cmp r1, r0 + beq _02254A32 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD25_02254AE4 +_02254A32: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD25_022549E4 + + thumb_func_start MOD25_02254A38 +MOD25_02254A38: ; 0x02254A38 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A48 + cmp r0, #1 + beq _02254A58 + b _02254A66 +_02254A48: + ldr r0, [r4, #0x24] + mov r1, #3 + bl MOD25_02254AE4 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A66 +_02254A58: + ldr r0, [r4, #0x24] + bl MOD25_02254B14 + cmp r0, #0 + beq _02254A66 + mov r0, #1 + pop {r4, pc} +_02254A66: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD25_02254A38 + + thumb_func_start MOD25_02254A6C +MOD25_02254A6C: ; 0x02254A6C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x54 + bl FUN_02016998 + add r4, r0, #0 + beq _02254ABA + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x48] + add r0, r4, #0 + bl MOD25_02254C74 + cmp r0, #0 + bne _02254AA8 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #0 + pop {r4, r5, r6, pc} +_02254AA8: + ldr r0, _02254AC0 ; =MOD25_02254AE0 + add r1, r4, #0 + mov r2, #3 + bl FUN_0200CA44 + str r0, [r4, #0x30] + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254ABA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02254AC0: .word MOD25_02254AE0 + thumb_func_end MOD25_02254A6C + + thumb_func_start MOD25_02254AC4 +MOD25_02254AC4: ; 0x02254AC4 + push {r4, lr} + add r4, r0, #0 + beq _02254ADE + bl MOD25_02254CD8 + ldr r0, [r4, #0x30] + cmp r0, #0 + beq _02254AD8 + bl FUN_0200CAB4 +_02254AD8: + add r0, r4, #0 + bl FUN_02016A18 +_02254ADE: + pop {r4, pc} + thumb_func_end MOD25_02254AC4 + + thumb_func_start MOD25_02254AE0 +MOD25_02254AE0: ; 0x02254AE0 + bx lr + .align 2, 0 + thumb_func_end MOD25_02254AE0 + + thumb_func_start MOD25_02254AE4 +MOD25_02254AE4: ; 0x02254AE4 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254B04 ; =0x02254D44 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B04: .word 0x02254D44 + thumb_func_end MOD25_02254AE4 + + thumb_func_start MOD25_02254B08 +MOD25_02254B08: ; 0x02254B08 + ldr r3, _02254B10 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B10: .word MOD20_02253794 + thumb_func_end MOD25_02254B08 + + thumb_func_start MOD25_02254B14 +MOD25_02254B14: ; 0x02254B14 + ldr r3, _02254B1C ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B1C: .word MOD20_022537B8 + thumb_func_end MOD25_02254B14 + + thumb_func_start MOD25_02254B20 +MOD25_02254B20: ; 0x02254B20 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD25_02254B20 + + thumb_func_start MOD25_02254B34 +MOD25_02254B34: ; 0x02254B34 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254BBC ; =0x02254D08 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x17 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x1a + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + bl MOD25_02254C30 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BC0 ; =0x04001000 + ldr r0, _02254BC4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD25_02254B20 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254BBC: .word 0x02254D08 +_02254BC0: .word 0x04001000 +_02254BC4: .word 0xFFFFE0FF + thumb_func_end MOD25_02254B34 + + thumb_func_start MOD25_02254BC8 +MOD25_02254BC8: ; 0x02254BC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD25_02254C30 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD25_02254B20 + pop {r3, r4, r5, pc} + thumb_func_end MOD25_02254BC8 + + thumb_func_start MOD25_02254BE8 +MOD25_02254BE8: ; 0x02254BE8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02254C04 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252DB4 + b _02254C0C +_02254C04: + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C +_02254C0C: + add r0, r4, #0 + bl MOD25_02254B20 + pop {r4, pc} + thumb_func_end MOD25_02254BE8 + + thumb_func_start MOD25_02254C14 +MOD25_02254C14: ; 0x02254C14 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD25_02254B20 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD25_02254C14 + + thumb_func_start MOD25_02254C30 +MOD25_02254C30: ; 0x02254C30 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + ldr r1, _02254C70 ; =0x04000280 + ldr r0, [r0] + mov r2, #0 + strh r2, [r1] + str r0, [r1, #0x10] + mov r0, #0xa + add r1, #0x18 + str r0, [r1] + str r2, [r1, #4] + ldr r5, [r4] + mov r1, #0xc + ldr r0, [r5] + bl _u32_div_f + ldr r2, [r5, #4] + ldr r0, [r4, #0x4c] + lsr r3, r2, #1 + mov r2, #0x1e + mul r2, r1 + add r2, #0x3c + add r1, r3, r2 + bl MOD20_02253F28 + ldr r1, [r4] + ldr r0, [r4, #0x50] + ldr r1, [r1, #4] + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + .align 2, 0 +_02254C70: .word 0x04000280 + thumb_func_end MOD25_02254C30 + + thumb_func_start MOD25_02254C74 +MOD25_02254C74: ; 0x02254C74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x1d + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x34 + mov r1, #0xc + mov r2, #0x1b + mov r3, #0x1c + bl MOD20_02253FBC + cmp r0, #0 + beq _02254CCE + add r0, r7, #0 + str r0, [sp, #0xc] + add r0, #0x34 + ldr r4, _02254CD4 ; =0x02254D24 + mov r6, #0 + add r5, r7, #0 + str r0, [sp, #0xc] +_02254CB2: + ldr r0, [r7, #0x48] + ldr r2, [sp, #0xc] + add r1, r4, #0 + bl MOD20_02253E74 + str r0, [r5, #0x4c] + add r6, r6, #1 + add r4, #0x10 + add r5, r5, #4 + cmp r6, #2 + blt _02254CB2 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254CCE: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254CD4: .word 0x02254D24 + thumb_func_end MOD25_02254C74 + + thumb_func_start MOD25_02254CD8 +MOD25_02254CD8: ; 0x02254CD8 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, #0x34 + bl MOD20_02254014 + mov r4, #0 + add r5, r6, #0 +_02254CE6: + ldr r0, [r6, #0x48] + ldr r1, [r5, #0x4c] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _02254CE6 + pop {r4, r5, r6, pc} + thumb_func_end MOD25_02254CD8 + + .section .data + ; 0x02254CF8 + .incbin "baserom.nds", 0x2894B8, 0xA8 diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s new file mode 100644 index 00000000..2511101e --- /dev/null +++ b/arm9/modules/26/asm/module_26.s @@ -0,0 +1,793 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD26_02254840 +MOD26_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD26_02254854 + ldr r1, _02254850 ; =MOD26_02254A84 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD26_02254854 +_02254850: .word MOD26_02254A84 + thumb_func_end MOD26_02254840 + + thumb_func_start MOD26_02254854 +MOD26_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x9b + add r5, r0, #0 + mov r0, #8 + lsl r1, r1, #2 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _0225489C + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD26_022548A8 + cmp r0, #0 + beq _02254896 + ldr r0, _022548A0 ; =MOD26_02254A4C + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _02254896 + ldr r0, _022548A4 ; =MOD26_02254A30 + add r1, r4, #0 + str r4, [r5] + bl MOD20_022529B4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254896: + add r0, r4, #0 + bl FUN_02016A18 +_0225489C: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022548A0: .word MOD26_02254A4C +_022548A4: .word MOD26_02254A30 + thumb_func_end MOD26_02254854 + + thumb_func_start MOD26_022548A8 +MOD26_022548A8: ; 0x022548A8 + push {r3, r4, r5, lr} + add r4, r2, #0 + mov r2, #0x1f + add r5, r0, #0 + lsl r2, r2, #4 + str r1, [r5, r2] + add r1, r5, #0 + add r1, #0xc + bl MOD26_022548E8 + mov r0, #0x7b + lsl r0, r0, #2 + add r1, r5, #0 + add r0, r5, r0 + add r1, #0xc + add r2, r4, #0 + bl MOD26_02254BD4 + cmp r0, #0 + beq _022548E4 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #0x19 + str r0, [r5, #4] + mov r0, #0x15 + str r0, [r5, #8] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548E4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD26_022548A8 + + thumb_func_start MOD26_022548E8 +MOD26_022548E8: ; 0x022548E8 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r4, r1, #0 + bl MOD20_02252C3C + add r6, r0, #0 + bl FUN_0204C0CC + cmp r0, #0 + beq _0225490E + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD26_02254918 + pop {r4, r5, r6, pc} +_0225490E: + add r0, r4, #0 + bl MOD26_022549DC + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD26_022548E8 + + thumb_func_start MOD26_02254918 +MOD26_02254918: ; 0x02254918 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #0x7d + add r5, r0, #0 + lsl r1, r1, #2 + add r0, r2, #0 + add r1, r5, r1 + bl FUN_0204C0D4 + mov r3, #0 + mov r7, #0x7d + mov ip, r3 + lsl r7, r7, #2 + mov r0, #3 +_02254934: + mov r2, #0 +_02254936: + asr r1, r3, #1 + lsr r1, r1, #0x1e + add r1, r3, r1 + asr r1, r1, #2 + add r1, r5, r1 + add r6, r3, #0 + lsl r6, r6, #0x1e + ldrb r1, [r1, r7] + lsr r6, r6, #0x1d + add r3, r3, #1 + asr r1, r6 + and r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r1, r1, #1 + strb r1, [r4, r2] + add r2, r2, #1 + cmp r2, #0x18 + blt _02254936 + mov r1, ip + add r1, r1, #1 + add r4, #0x18 + mov ip, r1 + cmp r1, #0x14 + blt _02254934 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD26_02254918 + + thumb_func_start MOD26_0225496C +MOD26_0225496C: ; 0x0225496C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + mov r1, #0x7d + str r2, [sp] + lsl r1, r1, #2 + str r0, [sp, #4] + add r0, r0, r1 + mov r1, #0 + mov r2, #0x78 + bl MI_CpuFill8 + mov r5, #0 + mov ip, r5 +_02254988: + mov r4, #0 +_0225498A: + asr r0, r5, #1 + lsr r0, r0, #0x1e + add r0, r5, r0 + asr r1, r0, #2 + ldr r0, [sp, #4] + add r6, r5, #0 + add r3, r0, r1 + mov r0, #0x7d + lsl r0, r0, #2 + ldrb r2, [r3, r0] + ldrb r0, [r7, r4] + add r4, r4, #1 + add r5, r5, #1 + sub r1, r0, #1 + mov r0, #3 + and r0, r1 + lsl r1, r6, #0x1e + lsr r1, r1, #0x1d + lsl r0, r1 + add r1, r2, #0 + orr r1, r0 + mov r0, #0x7d + lsl r0, r0, #2 + strb r1, [r3, r0] + cmp r4, #0x18 + blt _0225498A + mov r0, ip + add r0, r0, #1 + add r7, #0x18 + mov ip, r0 + cmp r0, #0x14 + blt _02254988 + mov r2, #0x7d + ldr r1, [sp, #4] + lsl r2, r2, #2 + ldr r0, [sp] + add r1, r1, r2 + bl FUN_0204C0E8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD26_0225496C + + thumb_func_start MOD26_022549DC +MOD26_022549DC: ; 0x022549DC + push {r4, r5} + mov r4, #0 + ldr r5, _02254A00 ; =0x02254DF0 + add r2, r4, #0 +_022549E4: + add r3, r2, #0 +_022549E6: + ldrb r1, [r5, r3] + strb r1, [r0, r3] + add r3, r3, #1 + cmp r3, #0x18 + blt _022549E6 + add r4, r4, #1 + add r5, #0x18 + add r0, #0x18 + cmp r4, #0x14 + blt _022549E4 + pop {r4, r5} + bx lr + nop +_02254A00: .word 0x02254DF0 + thumb_func_end MOD26_022549DC + + thumb_func_start MOD26_02254A04 +MOD26_02254A04: ; 0x02254A04 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD20_02252C3C + add r1, r4, #0 + add r2, r0, #0 + add r0, r4, #0 + add r1, #0xc + bl MOD26_0225496C + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD26_02254C04 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD26_02254A04 + + thumb_func_start MOD26_02254A30 +MOD26_02254A30: ; 0x02254A30 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD20_02252C3C + add r2, r0, #0 + add r0, r4, #0 + add r4, #0xc + add r1, r4, #0 + bl MOD26_0225496C + pop {r4, pc} + thumb_func_end MOD26_02254A30 + + thumb_func_start MOD26_02254A4C +MOD26_02254A4C: ; 0x02254A4C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _02254A7C + lsl r2, r1, #2 + ldr r1, _02254A80 ; =0x02254DE4 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254A7C + add r0, r4, #0 + bl MOD26_02254A04 + add r0, r5, #0 + bl FUN_0200CAB4 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD20_022529A0 +_02254A7C: + pop {r3, r4, r5, pc} + nop +_02254A80: .word 0x02254DE4 + thumb_func_end MOD26_02254A4C + + thumb_func_start MOD26_02254A84 +MOD26_02254A84: ; 0x02254A84 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD26_02254A84 + + thumb_func_start MOD26_02254A8C +MOD26_02254A8C: ; 0x02254A8C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254A94 + b _02254A96 +_02254A94: + mov r1, #2 +_02254A96: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD26_02254A8C + + thumb_func_start MOD26_02254AA0 +MOD26_02254AA0: ; 0x02254AA0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254AB0 + cmp r0, #1 + beq _02254AC4 + b _02254AE6 +_02254AB0: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD26_02254C10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AE6 +_02254AC4: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl MOD26_02254C34 + cmp r0, #0 + beq _02254AE6 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD26_02254A8C +_02254AE6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD26_02254AA0 + + thumb_func_start MOD26_02254AEC +MOD26_02254AEC: ; 0x02254AEC + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254B04 + mov r1, #2 + bl MOD26_02254A8C + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254B04: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD26_02254C34 + cmp r0, #0 + beq _02254B90 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252B68 + cmp r0, #0 + beq _02254B90 + ldr r1, [sp, #4] + cmp r1, #0x10 + blo _02254B90 + ldr r0, [sp] + cmp r0, #0x10 + blo _02254B90 + sub r1, #0x10 + lsr r2, r1, #3 + sub r0, #0x10 + lsr r1, r0, #3 + str r2, [sp, #4] + str r1, [sp] + cmp r2, #0x18 + bhs _02254B90 + cmp r1, #0x14 + bhs _02254B90 + ldr r0, [r4, #4] + cmp r0, r2 + bne _02254B54 + ldr r0, [r4, #8] + cmp r0, r1 + bne _02254B54 + bl FUN_02020AA4 + cmp r0, #1 + bne _02254B90 +_02254B54: + ldr r2, [sp] + add r0, r4, #0 + mov r1, #0x18 + add r3, r2, #0 + add r0, #0xc + mul r3, r1 + add r5, r0, r3 + ldr r3, [sp, #4] + ldrb r2, [r5, r3] + add r2, r2, #1 + strb r2, [r5, r3] + ldr r2, [sp] + mul r1, r2 + add r2, r0, r1 + ldr r1, [sp, #4] + ldrb r0, [r2, r1] + cmp r0, #4 + bls _02254B7C + mov r0, #1 + strb r0, [r2, r1] +_02254B7C: + ldr r0, [sp, #4] + mov r1, #1 + str r0, [r4, #4] + ldr r0, [sp] + str r0, [r4, #8] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD26_02254C10 +_02254B90: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD26_02254AEC + + thumb_func_start MOD26_02254B98 +MOD26_02254B98: ; 0x02254B98 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254BA8 + cmp r0, #1 + beq _02254BBC + b _02254BCE +_02254BA8: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl MOD26_02254C10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254BCE +_02254BBC: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD26_02254C40 + cmp r0, #0 + beq _02254BCE + mov r0, #1 + pop {r4, pc} +_02254BCE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD26_02254B98 + + thumb_func_start MOD26_02254BD4 +MOD26_02254BD4: ; 0x02254BD4 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x30 + bl FUN_02016998 + add r4, r0, #0 + beq _02254C00 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + cmp r0, #0 + beq _02254C00 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254C00: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD26_02254BD4 + + thumb_func_start MOD26_02254C04 +MOD26_02254C04: ; 0x02254C04 + push {r3, lr} + cmp r0, #0 + beq _02254C0E + bl FUN_02016A18 +_02254C0E: + pop {r3, pc} + thumb_func_end MOD26_02254C04 + + thumb_func_start MOD26_02254C10 +MOD26_02254C10: ; 0x02254C10 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254C30 ; =0x02254FF0 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254C30: .word 0x02254FF0 + thumb_func_end MOD26_02254C10 + + thumb_func_start MOD26_02254C34 +MOD26_02254C34: ; 0x02254C34 + ldr r3, _02254C3C ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254C3C: .word MOD20_02253794 + thumb_func_end MOD26_02254C34 + + thumb_func_start MOD26_02254C40 +MOD26_02254C40: ; 0x02254C40 + ldr r3, _02254C48 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254C48: .word MOD20_022537B8 + thumb_func_end MOD26_02254C40 + + thumb_func_start MOD26_02254C4C +MOD26_02254C4C: ; 0x02254C4C + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD26_02254C4C + + thumb_func_start MOD26_02254C60 +MOD26_02254C60: ; 0x02254C60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254CB8 ; =0x02254FD4 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + bl MOD26_02254CC4 + ldr r0, [r5, #4] + ldr r1, [r5] + bl MOD26_02254DAC + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254CBC ; =0x04001000 + ldr r0, _02254CC0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD26_02254C4C + pop {r3, r4, r5, pc} + .align 2, 0 +_02254CB8: .word 0x02254FD4 +_02254CBC: .word 0x04001000 +_02254CC0: .word 0xFFFFE0FF + thumb_func_end MOD26_02254C60 + + thumb_func_start MOD26_02254CC4 +MOD26_02254CC4: ; 0x02254CC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #4] + mov r0, #8 + lsl r1, r0, #6 + bl FUN_02016998 + str r0, [sp, #0x1c] + cmp r0, #0 + beq _02254D68 + mov r0, #0 + str r0, [sp, #0x18] + str r0, [sp, #0x14] + str r0, [sp, #0x10] + str r0, [sp, #0xc] + str r0, [sp, #8] + add r7, r0, #0 + add r6, r0, #0 + add r4, r0, #0 + add r5, r0, #0 +_02254CEC: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x1c] + orr r1, r0 + ldr r0, [sp, #8] + orr r0, r1 + orr r0, r7 + orr r0, r6 + orr r0, r4 + add r1, r5, #0 + orr r1, r0 + ldr r0, [sp, #0x18] + orr r0, r1 + ldr r1, [sp, #0x14] + add r1, r2, r1 + mov r2, #0x20 + bl MIi_CpuClearFast + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + add r0, #0x20 + str r0, [sp, #0x14] + mov r0, #1 + lsl r0, r0, #0x18 + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #1 + ldr r1, [sp, #0xc] + lsl r0, r0, #0x1c + add r0, r1, r0 + str r0, [sp, #0xc] + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0x14 + add r0, r1, r0 + str r0, [sp, #8] + mov r0, #1 + lsl r0, r0, #0x10 + add r7, r7, r0 + lsr r0, r0, #4 + add r6, r6, r0 + mov r0, #1 + lsl r0, r0, #8 + add r4, r4, r0 + ldr r0, [sp, #0x18] + add r5, #0x10 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0x10 + blt _02254CEC + mov r0, #0 + str r0, [sp] + mov r3, #2 + ldr r0, [sp, #4] + ldr r2, [sp, #0x1c] + mov r1, #6 + lsl r3, r3, #8 + bl FUN_02017E14 + ldr r0, [sp, #0x1c] + bl FUN_02016A18 +_02254D68: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD26_02254CC4 + + thumb_func_start MOD26_02254D6C +MOD26_02254D6C: ; 0x02254D6C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r4] + bl MOD26_02254DAC + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD26_02254C4C + pop {r3, r4, r5, pc} + thumb_func_end MOD26_02254D6C + + thumb_func_start MOD26_02254D90 +MOD26_02254D90: ; 0x02254D90 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD26_02254C4C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD26_02254D90 + + thumb_func_start MOD26_02254DAC +MOD26_02254DAC: ; 0x02254DAC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #6 + bl FUN_0201886C + mov r5, #0 + ldr r1, _02254DE0 ; =0x02254FD0 + add r0, #0x84 + add r2, r5, #0 +_02254DBE: + add r3, r2, #0 + add r6, r0, #0 +_02254DC2: + ldrb r7, [r4, r3] + add r3, r3, #1 + add r7, r1, r7 + sub r7, r7, #1 + ldrb r7, [r7] + strh r7, [r6] + add r6, r6, #2 + cmp r3, #0x18 + blt _02254DC2 + add r5, r5, #1 + add r0, #0x40 + add r4, #0x18 + cmp r5, #0x14 + blt _02254DBE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254DE0: .word 0x02254FD0 + thumb_func_end MOD26_02254DAC + + .section .data + ; 0x02254DE4 + .incbin "baserom.nds", 0x289BA4, 0x25C diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s new file mode 100644 index 00000000..b9a2d1ca --- /dev/null +++ b/arm9/modules/27/asm/module_27.s @@ -0,0 +1,1453 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD27_02254840 +MOD27_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD27_02254854 + ldr r1, _02254850 ; =MOD27_0225492C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD27_02254854 +_02254850: .word MOD27_0225492C + thumb_func_end MOD27_02254840 + + thumb_func_start MOD27_02254854 +MOD27_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x7c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD27_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD27_022548F8 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD27_022548F8 + thumb_func_end MOD27_02254854 + + thumb_func_start MOD27_0225489C +MOD27_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x74 + add r1, r5, #4 + bl MOD27_02254AF0 + cmp r0, #0 + beq _022548E0 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + add r0, r4, #0 + bl MOD20_02252C40 + bl FUN_0206BB1C + add r1, r0, #0 + add r0, r5, #4 + bl MOD27_02254A48 + add r0, r5, #0 + mov r1, #0 + add r0, #0x68 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x6a + strh r1, [r0] + str r1, [r5, #0x6c] + str r1, [r5, #0x70] + str r4, [r5, #0x78] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548E0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD27_0225489C + + thumb_func_start MOD27_022548E4 +MOD27_022548E4: ; 0x022548E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x74] + bl MOD27_02254B88 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_022548E4 + + thumb_func_start MOD27_022548F8 +MOD27_022548F8: ; 0x022548F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _02254924 + lsl r2, r1, #2 + ldr r1, _02254928 ; =0x0225533C + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254924 + add r0, r4, #0 + bl MOD27_022548E4 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x78] + bl MOD20_022529A0 +_02254924: + pop {r3, r4, r5, pc} + nop +_02254928: .word 0x0225533C + thumb_func_end MOD27_022548F8 + + thumb_func_start MOD27_0225492C +MOD27_0225492C: ; 0x0225492C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD27_0225492C + + thumb_func_start MOD27_02254934 +MOD27_02254934: ; 0x02254934 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225493C + b _0225493E +_0225493C: + mov r1, #2 +_0225493E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD27_02254934 + + thumb_func_start MOD27_02254948 +MOD27_02254948: ; 0x02254948 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254958 + cmp r0, #1 + beq _02254968 + b _02254982 +_02254958: + ldr r0, [r4, #0x74] + mov r1, #0 + bl MOD27_02254BB8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254982 +_02254968: + ldr r0, [r4, #0x74] + mov r1, #0 + bl MOD27_02254BDC + cmp r0, #0 + beq _02254982 + ldr r0, [r4, #0x78] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD27_02254934 +_02254982: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254948 + + thumb_func_start MOD27_02254988 +MOD27_02254988: ; 0x02254988 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _0225499C + mov r1, #2 + bl MOD27_02254934 + mov r0, #0 + pop {r4, pc} +_0225499C: + ldr r0, [r4, #0x74] + mov r1, #2 + bl MOD27_02254BDC + cmp r0, #0 + beq _02254A06 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x6c + add r1, #0x70 + bl MOD20_02252B68 + add r1, r4, #0 + add r1, #0x68 + strh r0, [r1] + add r0, r4, #0 + add r0, #0x68 + ldrh r0, [r0] + cmp r0, #0 + beq _02254A06 + bl FUN_02020AA4 + add r1, r4, #0 + add r1, #0x6a + strh r0, [r1] + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + cmp r0, #0 + beq _02254A02 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + ldr r2, [r4, #4] + bl MOD27_022551F4 + ldr r1, [r4, #4] + cmp r0, r1 + blo _02254A02 + ldr r0, [r4, #0x78] + bl MOD20_02252C40 + bl FUN_0206BB1C + add r1, r0, #0 + add r0, r4, #4 + bl MOD27_02254A48 + ldr r0, [r4, #0x74] + mov r1, #2 + bl MOD27_02254BB8 +_02254A02: + mov r0, #0 + pop {r4, pc} +_02254A06: + mov r0, #0 + str r0, [r4, #0x6c] + str r0, [r4, #0x70] + add r4, #0x6a + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254988 + + thumb_func_start MOD27_02254A14 +MOD27_02254A14: ; 0x02254A14 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A24 + cmp r0, #1 + beq _02254A34 + b _02254A42 +_02254A24: + ldr r0, [r4, #0x74] + mov r1, #1 + bl MOD27_02254BB8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A42 +_02254A34: + ldr r0, [r4, #0x74] + bl MOD27_02254BE8 + cmp r0, #0 + beq _02254A42 + mov r0, #1 + pop {r4, pc} +_02254A42: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254A14 + + thumb_func_start MOD27_02254A48 +MOD27_02254A48: ; 0x02254A48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r0, r1, #0 + str r1, [sp, #4] + bl FUN_0206B9AC + ldr r1, [sp] + mov r6, #0 + str r0, [r1] + cmp r0, #0 + ble _02254AEC + add r5, r1, #0 +_02254A62: + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_020669D4 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0206B688 + str r0, [r5, #4] + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #8] + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0xa] + add r0, r4, #0 + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0xc] + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0xe] + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02254ABC + mov r0, #1 + b _02254ABE +_02254ABC: + mov r0, #0 +_02254ABE: + strh r0, [r5, #0x10] + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + strb r0, [r5, #0x12] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strb r0, [r5, #0x13] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02066A20 + ldr r0, [sp] + add r6, r6, #1 + ldr r0, [r0] + add r5, #0x10 + cmp r6, r0 + blt _02254A62 +_02254AEC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD27_02254A48 + + thumb_func_start MOD27_02254AF0 +MOD27_02254AF0: ; 0x02254AF0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + mov r1, #0xe3 + str r0, [sp, #4] + mov r0, #8 + lsl r1, r1, #2 + bl FUN_02016998 + str r0, [sp, #8] + cmp r0, #0 + beq _02254B82 + add r0, #0xc + mov r1, #8 + bl MOD20_022536F4 + ldr r0, [sp, #8] + str r4, [r0] + bl MOD20_02252D34 + ldr r1, [sp, #8] + str r0, [r1, #4] + bl MOD20_02252D24 + ldr r1, [sp, #8] + mov r6, #0 + str r0, [r1, #8] + add r0, r1, #0 + str r6, [r0, #0x38] + add r0, #0xf4 + add r4, r1, #0 + str r6, [r0] + add r4, #0x3c + add r5, r1, #0 + add r7, r6, #0 +_02254B36: + add r0, r4, #0 + bl FUN_0201901C + add r0, r5, #0 + add r0, #0x9c + str r7, [r0] + add r0, r5, #0 + add r0, #0xb4 + add r6, r6, #1 + str r7, [r0] + add r4, #0x10 + add r5, r5, #4 + cmp r6, #6 + blt _02254B36 + mov r0, #8 + str r0, [sp] + ldr r0, [sp, #8] + mov r1, #0xc + add r0, #0xcc + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + ldr r0, [sp, #8] + mov r1, #0xc + add r0, #0xe0 + mov r2, #0x6b + mov r3, #0x6c + bl MOD20_02253FBC + ldr r1, [sp, #8] + ldr r0, [sp, #4] + add sp, #0xc + str r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02254B82: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD27_02254AF0 + + thumb_func_start MOD27_02254B88 +MOD27_02254B88: ; 0x02254B88 + push {r4, lr} + add r4, r0, #0 + beq _02254BB6 + bl MOD27_02255250 + add r0, r4, #0 + add r0, #0xcc + bl MOD20_02254014 + add r0, r4, #0 + add r0, #0xe0 + bl MOD20_02254014 + add r0, r4, #0 + add r0, #0xf4 + ldr r0, [r0] + cmp r0, #0 + beq _02254BB0 + bl FUN_0200CAB4 +_02254BB0: + add r0, r4, #0 + bl FUN_02016A18 +_02254BB6: + pop {r4, pc} + thumb_func_end MOD27_02254B88 + + thumb_func_start MOD27_02254BB8 +MOD27_02254BB8: ; 0x02254BB8 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #0xc + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254BD8 ; =0x02255394 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BD8: .word 0x02255394 + thumb_func_end MOD27_02254BB8 + + thumb_func_start MOD27_02254BDC +MOD27_02254BDC: ; 0x02254BDC + ldr r3, _02254BE4 ; =MOD20_02253794 + add r0, #0xc + bx r3 + nop +_02254BE4: .word MOD20_02253794 + thumb_func_end MOD27_02254BDC + + thumb_func_start MOD27_02254BE8 +MOD27_02254BE8: ; 0x02254BE8 + ldr r3, _02254BF0 ; =MOD20_022537B8 + add r0, #0xc + bx r3 + nop +_02254BF0: .word MOD20_022537B8 + thumb_func_end MOD27_02254BE8 + + thumb_func_start MOD27_02254BF4 +MOD27_02254BF4: ; 0x02254BF4 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #0xc + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254BF4 + + thumb_func_start MOD27_02254C08 +MOD27_02254C08: ; 0x02254C08 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02254CBC ; =0x02255378 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x6a + mov r3, #6 + bl FUN_0200687C + mov r3, #0 + lsr r5, r0, #5 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #5 + bl FUN_02018540 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + str r5, [r4, #0x34] + ldr r1, [r4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD27_02254CC8 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + mov r0, #0xf + mov r1, #1 + bl MOD20_0225396C + mov r0, #2 + bl MOD20_022539C4 + ldr r1, [r4] + add r0, r4, #0 + bl MOD27_02254F18 + ldr r1, [r4] + add r0, r4, #0 + bl MOD27_02254FAC + add r0, r4, #0 + bl MOD27_022550C8 + ldr r1, _02254CC0 ; =0x04001000 + ldr r0, _02254CC4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r6, #0 + bl MOD27_02254BF4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02254CBC: .word 0x02255378 +_02254CC0: .word 0x04001000 +_02254CC4: .word 0xFFFFE0FF + thumb_func_end MOD27_02254C08 + + thumb_func_start MOD27_02254CC8 +MOD27_02254CC8: ; 0x02254CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x20] + add r0, r1, #0 + str r1, [sp, #0x18] + ldr r1, [r0] + str r2, [sp, #0x1c] + cmp r1, #0 + ble _02254D54 + ldr r4, [sp, #0x14] + ldr r7, [sp, #0x20] + ldr r5, _02254D5C ; =0x02255360 + ldr r6, [sp, #0x18] + add r4, #0x3c +_02254CE8: + add r0, r4, #0 + bl FUN_0201901C + ldrh r0, [r5, #2] + add r1, r4, #0 + mov r2, #6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r0, r0, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r5] + ldr r0, [sp, #0x14] + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r4, #0 + bl FUN_02019270 + ldr r1, [sp, #0x14] + add r0, r4, #0 + bl MOD27_02254D60 + ldrh r0, [r6, #0xa] + ldrh r1, [r6, #0xc] + bl MOD27_02254EEC + add r1, r0, #0 + add r0, r4, #0 + bl MOD27_02254EAC + ldr r0, [sp, #0x20] + add r4, #0x10 + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + add r7, #8 + ldr r1, [r0] + ldr r0, [sp, #0x20] + add r5, r5, #4 + add r6, #0x10 + cmp r0, r1 + blt _02254CE8 +_02254D54: + ldr r0, [sp, #0x14] + str r1, [r0, #0x38] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254D5C: .word 0x02255360 + thumb_func_end MOD27_02254CC8 + + thumb_func_start MOD27_02254D60 +MOD27_02254D60: ; 0x02254D60 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldrb r0, [r5, #6] + add r4, r1, #0 + mov r2, #1 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + str r2, [sp, #4] + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + mov r1, #6 + sub r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r0, [r5, #6] + mov r1, #6 + mov r2, #2 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r5, #7] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + bl FUN_02018540 + ldrb r0, [r5, #6] + ldr r2, _02254E98 ; =0x00000401 + mov r1, #6 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r6, [r5, #5] + ldrb r3, [r5, #7] + ldr r0, [r4, #4] + add r3, r6, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r0, [r5, #6] + mov r1, #6 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #8] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + sub r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r0, [r5, #6] + ldr r2, _02254E9C ; =0x00000406 + mov r1, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #8] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r6, [r5, #5] + ldrb r3, [r5, #7] + ldr r0, [r4, #4] + add r3, r6, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r1, [r5, #6] + ldrb r0, [r5, #8] + ldr r2, _02254EA0 ; =0x00000801 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + mov r1, #6 + sub r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r1, [r5, #6] + ldrb r0, [r5, #8] + ldr r2, _02254EA4 ; =0x00000802 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r5, #7] + mov r1, #6 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + bl FUN_02018540 + ldrb r1, [r5, #6] + ldrb r0, [r5, #8] + ldr r2, _02254EA8 ; =0x00000C01 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + ldrb r4, [r5, #5] + ldrb r3, [r5, #7] + mov r1, #6 + add r3, r4, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02254E98: .word 0x00000401 +_02254E9C: .word 0x00000406 +_02254EA0: .word 0x00000801 +_02254EA4: .word 0x00000802 +_02254EA8: .word 0x00000C01 + thumb_func_end MOD27_02254D60 + + thumb_func_start MOD27_02254EAC +MOD27_02254EAC: ; 0x02254EAC + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0x40 + str r1, [sp] + mov r1, #8 + mov r2, #0 + str r1, [sp, #4] + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_020196F4 + cmp r4, #0 + beq _02254EE0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #8 + mov r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 +_02254EE0: + add r0, r5, #0 + bl FUN_02019548 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD27_02254EAC + + thumb_func_start MOD27_02254EEC +MOD27_02254EEC: ; 0x02254EEC + push {r3, lr} + cmp r0, #0 + bne _02254EF6 + mov r0, #0 + pop {r3, pc} +_02254EF6: + cmp r0, r1 + bne _02254EFE + mov r0, #0x40 + pop {r3, pc} +_02254EFE: + lsl r0, r0, #0xc + bl _u32_div_f + lsl r0, r0, #5 + lsr r0, r0, #0xc + bne _02254F0E + mov r0, #1 + b _02254F14 +_02254F0E: + cmp r0, #0x20 + bne _02254F14 + mov r0, #0x1f +_02254F14: + lsl r0, r0, #1 + pop {r3, pc} + thumb_func_end MOD27_02254EEC + + thumb_func_start MOD27_02254F18 +MOD27_02254F18: ; 0x02254F18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x6d + bl FUN_02006A34 + mov r4, #0 + add r0, sp, #0x18 + strb r4, [r0, #0xa] + mov r1, #2 + strb r1, [r0, #0xb] + strb r4, [r0, #0xc] + strb r4, [r0, #0xd] + ldr r0, [sp, #0x10] + ldr r0, [r0] + cmp r0, #0 + ble _02254FA2 + ldr r7, [sp, #0xc] + ldr r6, [sp, #0x10] + add r0, r7, #0 + str r0, [sp, #0x14] + add r0, #0xe0 + ldr r5, _02254FA8 ; =0x02255348 + str r0, [sp, #0x14] +_02254F58: + ldrh r0, [r6, #0xe] + cmp r0, #0 + beq _02254F92 + bl FUN_0206EA98 + cmp r0, #0 + beq _02254F6A + mov r1, #1 + b _02254F6C +_02254F6A: + mov r1, #0 +_02254F6C: + add r0, sp, #0x18 + strh r1, [r0, #8] + ldrh r0, [r5] + ldr r2, [sp, #0x14] + add r1, sp, #0x18 + add r0, #0x1c + lsl r0, r0, #0xc + str r0, [sp, #0x18] + ldrh r0, [r5, #2] + add r0, #0x15 + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldr r0, [r0, #8] + bl MOD20_02253E74 + add r1, r7, #0 + add r1, #0xb4 + str r0, [r1] +_02254F92: + ldr r0, [sp, #0x10] + add r4, r4, #1 + ldr r0, [r0] + add r6, #0x10 + add r5, r5, #4 + add r7, r7, #4 + cmp r4, r0 + blt _02254F58 +_02254FA2: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254FA8: .word 0x02255348 + thumb_func_end MOD27_02254F18 + + thumb_func_start MOD27_02254FAC +MOD27_02254FAC: ; 0x02254FAC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x13 + mov r1, #8 + bl FUN_02006670 + str r0, [sp, #0x14] + cmp r0, #0 + beq _022550C0 + mov r0, #0 + add r1, sp, #0x20 + strh r0, [r1, #0xc] + str r0, [sp, #0x10] + strb r0, [r1, #0xe] + mov r0, #2 + strb r0, [r1, #0xf] + mov r7, #1 + strb r7, [r1, #0x10] + ldr r0, [sp, #8] + strb r7, [r1, #0x11] + ldr r0, [r0] + cmp r0, #0 + ble _022550BA + ldr r5, [sp, #4] + mov r0, #8 + mov r1, #0x43 + str r0, [sp, #0xc] + lsl r1, r1, #2 + add r0, r5, #0 + add r0, r0, r1 + str r0, [sp, #0x18] + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0xcc + ldr r4, [sp, #8] + ldr r6, _022550C4 ; =0x02255348 + add r7, #0xff + str r0, [sp, #0x1c] +_02254FFC: + ldr r0, [sp, #0x18] + mov r3, #0xa + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r1, [r4, #4] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + ldr r0, [sp, #0x18] + add r1, sp, #0x20 + bl FUN_020B0088 + ldr r0, [sp, #0x20] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r2, #2 + ldr r0, [r0, #0x14] + add r1, r7, #0 + lsl r2, r2, #8 + bl GXS_LoadOBJ + ldrh r0, [r6] + ldr r2, [sp, #0x1c] + add r1, sp, #0x24 + lsl r0, r0, #0xc + str r0, [sp, #0x24] + ldrh r0, [r6, #2] + lsl r0, r0, #0xc + str r0, [sp, #0x28] + ldr r0, [sp, #4] + ldr r0, [r0, #8] + bl MOD20_02253E74 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + ldr r1, [sp, #0xc] + bl MOD20_02253FA4 + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #4 + bl MOD20_02253F28 + ldrh r0, [r4, #0xa] + cmp r0, #0 + beq _02255072 + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02255080 +_02255072: + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #1 + bl MOD20_02253F9C + b _02255098 +_02255080: + ldrh r0, [r4, #8] + ldrb r1, [r4, #0x13] + ldrb r2, [r4, #0x12] + bl FUN_0206B7BC + add r1, r0, #0 + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + add r1, r1, #2 + bl MOD20_02253F9C +_02255098: + mov r0, #2 + lsl r0, r0, #8 + add r7, r7, r0 + ldr r0, [sp, #0xc] + add r4, #0x10 + add r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + add r5, r5, #4 + ldr r1, [r0] + ldr r0, [sp, #0x10] + cmp r0, r1 + blt _02254FFC +_022550BA: + ldr r0, [sp, #0x14] + bl FUN_020066F4 +_022550C0: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022550C4: .word 0x02255348 + thumb_func_end MOD27_02254FAC + + thumb_func_start MOD27_022550C8 +MOD27_022550C8: ; 0x022550C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0 + lsl r0, r0, #8 + strb r1, [r4, r0] + add r0, r4, #0 + add r0, #0xf8 + str r4, [r0] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0xfc + str r1, [r0] + add r1, r4, #0 + ldr r0, _022550F4 ; =MOD27_022550F8 + add r1, #0xf8 + mov r2, #1 + bl FUN_0200CA44 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} + .align 2, 0 +_022550F4: .word MOD27_022550F8 + thumb_func_end MOD27_022550C8 + + thumb_func_start MOD27_022550F8 +MOD27_022550F8: ; 0x022550F8 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r0, [r5, #8] + ldr r4, [r5, #4] + ldr r6, [r5] + cmp r0, #0 + beq _0225510C + cmp r0, #1 + beq _02255164 + pop {r4, r5, r6, pc} +_0225510C: + add r0, r4, #0 + add r0, #0x66 + ldrh r0, [r0] + cmp r0, #0 + beq _022551EA + ldr r0, [r4, #0x68] + ldr r1, [r4, #0x6c] + ldr r2, [r4] + bl MOD27_022551F4 + ldr r1, [r4] + cmp r0, r1 + bhs _022551EA + lsl r2, r0, #4 + add r1, r4, r2 + ldrh r3, [r1, #0xa] + cmp r3, #0 + beq _022551EA + ldrb r3, [r1, #0x12] + cmp r3, #0 + bne _022551EA + mov r3, #0 + strb r3, [r5, #9] + strb r3, [r5, #0xb] + strb r0, [r5, #0xa] + mov r3, #2 + str r3, [r5, #0x10] + ldrh r0, [r1, #0x10] + cmp r0, #0 + bne _02255150 + mov r0, #1 + strb r0, [r5, #0xc] + mov r0, #8 + b _02255154 +_02255150: + strb r3, [r5, #0xc] + mov r0, #4 +_02255154: + strb r0, [r5, #0xd] + mov r0, #1 + strb r0, [r5, #8] + add r0, r4, r2 + ldrh r0, [r0, #8] + bl MOD20_02252B48 + pop {r4, r5, r6, pc} +_02255164: + ldrb r1, [r5, #0xb] + ldrb r0, [r5, #0xd] + cmp r1, r0 + bne _022551A6 + add r0, r4, #0 + add r0, #0x64 + ldrh r0, [r0] + cmp r0, #0 + beq _02255186 + ldr r0, [r4, #0x68] + ldr r1, [r4, #0x6c] + ldr r2, [r4] + bl MOD27_022551F4 + ldrb r1, [r5, #0xa] + cmp r1, r0 + beq _022551A6 +_02255186: + ldrb r0, [r5, #0xa] + ldr r1, _022551EC ; =0x02255348 + ldr r3, _022551F0 ; =0x0225534A + lsl r2, r0, #2 + add r0, r6, r2 + ldrh r1, [r1, r2] + ldrh r2, [r3, r2] + add r0, #0x9c + ldr r0, [r0] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + mov r0, #0 + strb r0, [r5, #8] + pop {r4, r5, r6, pc} +_022551A6: + ldrb r0, [r5, #9] + cmp r0, #0 + bne _022551E6 + ldrb r0, [r5, #0xa] + ldr r1, _022551EC ; =0x02255348 + ldr r3, _022551F0 ; =0x0225534A + lsl r2, r0, #2 + add r0, r6, r2 + ldrh r1, [r1, r2] + add r0, #0x9c + ldrh r2, [r3, r2] + ldr r4, [r5, #0x10] + ldr r0, [r0] + add r2, r4, r2 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldrb r1, [r5, #0xb] + ldrb r0, [r5, #0xd] + cmp r1, r0 + bhs _022551D6 + add r0, r1, #1 + strb r0, [r5, #0xb] +_022551D6: + mov r0, #0 + ldr r1, [r5, #0x10] + mvn r0, r0 + mul r0, r1 + str r0, [r5, #0x10] + ldrb r0, [r5, #0xc] + strb r0, [r5, #9] + pop {r4, r5, r6, pc} +_022551E6: + sub r0, r0, #1 + strb r0, [r5, #9] +_022551EA: + pop {r4, r5, r6, pc} + .align 2, 0 +_022551EC: .word 0x02255348 +_022551F0: .word 0x0225534A + thumb_func_end MOD27_022550F8 + + thumb_func_start MOD27_022551F4 +MOD27_022551F4: ; 0x022551F4 + push {r3, r4, r5, r6, r7, lr} + mov lr, r0 + mov ip, r1 + add r7, r2, #0 + ldr r6, _02255248 ; =0x00000000 + beq _02255242 + ldr r3, _0225524C ; =0x02255348 +_02255202: + ldrh r1, [r3] + ldrh r4, [r3, #2] + mov r5, lr + add r0, r1, #0 + sub r0, #0x10 + add r2, r4, #0 + add r1, #0x10 + sub r5, r5, r0 + sub r0, r1, r0 + sub r2, #8 + cmp r5, r0 + bhs _0225521E + mov r0, #1 + b _02255220 +_0225521E: + mov r0, #0 +_02255220: + mov r1, ip + add r4, #0x18 + sub r1, r1, r2 + sub r2, r4, r2 + cmp r1, r2 + bhs _02255230 + mov r1, #1 + b _02255232 +_02255230: + mov r1, #0 +_02255232: + tst r0, r1 + beq _0225523A + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225523A: + add r6, r6, #1 + add r3, r3, #4 + cmp r6, r7 + blo _02255202 +_02255242: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255248: .word 0x00000000 +_0225524C: .word 0x02255348 + thumb_func_end MOD27_022551F4 + + thumb_func_start MOD27_02255250 +MOD27_02255250: ; 0x02255250 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_0225525A: + add r0, r4, #0 + add r0, #0x9c + ldr r1, [r0] + cmp r1, #0 + beq _02255270 + ldr r0, [r5, #8] + bl MOD20_02253F14 + add r0, r4, #0 + add r0, #0x9c + str r7, [r0] +_02255270: + add r0, r4, #0 + add r0, #0xb4 + ldr r1, [r0] + cmp r1, #0 + beq _02255288 + ldr r0, [r5, #8] + bl MOD20_02253F14 + add r1, r4, #0 + add r1, #0xb4 + mov r0, #0 + str r0, [r1] +_02255288: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _0225525A + ldr r0, [r5, #0x38] + mov r6, #0 + cmp r0, #0 + bls _022552AC + add r4, r5, #0 + add r4, #0x3c +_0225529C: + add r0, r4, #0 + bl FUN_02019178 + ldr r0, [r5, #0x38] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blo _0225529C +_022552AC: + mov r0, #0 + str r0, [r5, #0x38] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD27_02255250 + + thumb_func_start MOD27_022552B4 +MOD27_022552B4: ; 0x022552B4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD27_02254BF4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_022552B4 + + thumb_func_start MOD27_022552D0 +MOD27_022552D0: ; 0x022552D0 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + add r0, r5, #0 + bl MOD27_02255250 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r5, #4] + mov r1, #6 + mov r2, #5 + bl FUN_02018540 + add r0, r5, #0 + add r1, r4, #0 + bl MOD27_02254F18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD27_02254FAC + ldr r2, [r5, #0x34] + add r0, r5, #0 + add r1, r4, #0 + bl MOD27_02254CC8 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _02255338 ; =0x00000669 + bl MOD20_02252B28 + add r0, r6, #0 + bl MOD27_02254BF4 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02255338: .word 0x00000669 + thumb_func_end MOD27_022552D0 + + .section .data + ; 0x0225533C + .incbin "baserom.nds", 0x28A8FC, 0xA4 diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s new file mode 100644 index 00000000..0ad10077 --- /dev/null +++ b/arm9/modules/28/asm/module_28.s @@ -0,0 +1,2967 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD28_02254840 +MOD28_02254840: ; 0x02254840 + ldr r3, _02254848 ; =0x02252979 + ldr r0, _0225484C ; =MOD28_02254854 + ldr r1, _02254850 ; =MOD28_022549F4 + bx r3 + .align 2, 0 +_02254848: .word 0x02252979 +_0225484C: .word MOD28_02254854 +_02254850: .word MOD28_022549F4 + thumb_func_end MOD28_02254840 + + thumb_func_start MOD28_02254854 +MOD28_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x64 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD28_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD28_022549C0 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD28_022549C0 + thumb_func_end MOD28_02254854 + + thumb_func_start MOD28_0225489C +MOD28_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + add r4, r1, #0 + add r0, #0x5c + add r1, r7, #4 + bl MOD28_02254AF4 + cmp r0, #0 + beq _02254986 + mov r0, #0 + strb r0, [r7] + strb r0, [r7, #1] + strb r0, [r7, #2] + str r4, [r7, #0x60] + bl FUN_020225F8 + bl FUN_0206BB1C + mov r1, #0 + str r0, [sp, #4] + str r1, [sp] + bl FUN_0206B9AC + mov r6, #0 + str r0, [r7, #4] + cmp r0, #0 + ble _0225496A + add r4, r7, #0 +_022548D6: + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0 + add r5, r0, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02254962 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0206B688 + str r0, [r4, #8] + add r0, r5, #0 + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + bl MOD28_0225498C + cmp r0, #6 + bhi _02254944 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0225492A: ; jump table + .short _02254938 - _0225492A - 2 ; case 0 + .short _02254938 - _0225492A - 2 ; case 1 + .short _02254938 - _0225492A - 2 ; case 2 + .short _02254944 - _0225492A - 2 ; case 3 + .short _0225494E - _0225492A - 2 ; case 4 + .short _0225494E - _0225492A - 2 ; case 5 + .short _0225494E - _0225492A - 2 ; case 6 +_02254938: + mov r1, #1 + strb r1, [r4, #0x12] + mov r1, #3 + sub r0, r1, r0 + strb r0, [r4, #0x13] + b _0225495A +_02254944: + mov r0, #2 + strb r0, [r4, #0x12] + mov r0, #0 + strb r0, [r4, #0x13] + b _0225495A +_0225494E: + mov r1, #0 + strb r1, [r4, #0x12] + mov r1, #3 + sub r0, r1, r0 + neg r0, r0 + strb r0, [r4, #0x13] +_0225495A: + ldr r0, [sp] + add r4, #0xc + add r0, r0, #1 + str r0, [sp] +_02254962: + ldr r0, [r7, #4] + add r6, r6, #1 + cmp r6, r0 + blt _022548D6 +_0225496A: + ldr r0, [sp] + mov r1, #0 + str r0, [r7, #4] + add r0, r7, #0 + add r0, #0x50 + strh r1, [r0] + add r0, r7, #0 + add r0, #0x52 + strh r1, [r0] + str r1, [r7, #0x54] + add sp, #8 + str r1, [r7, #0x58] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254986: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD28_0225489C + + thumb_func_start MOD28_0225498C +MOD28_0225498C: ; 0x0225498C + ldr r3, _022549A8 ; =0x02255E78 + mov r2, #0 +_02254990: + ldrb r1, [r3] + cmp r0, r1 + bhs _0225499A + add r0, r2, #0 + bx lr +_0225499A: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #6 + blo _02254990 + mov r0, #6 + bx lr + nop +_022549A8: .word 0x02255E78 + thumb_func_end MOD28_0225498C + + thumb_func_start MOD28_022549AC +MOD28_022549AC: ; 0x022549AC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + bl MOD28_02254B70 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_022549AC + + thumb_func_start MOD28_022549C0 +MOD28_022549C0: ; 0x022549C0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _022549EC + lsl r2, r1, #2 + ldr r1, _022549F0 ; =0x02255E80 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _022549EC + add r0, r4, #0 + bl MOD28_022549AC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x60] + bl MOD20_022529A0 +_022549EC: + pop {r3, r4, r5, pc} + nop +_022549F0: .word 0x02255E80 + thumb_func_end MOD28_022549C0 + + thumb_func_start MOD28_022549F4 +MOD28_022549F4: ; 0x022549F4 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD28_022549F4 + + thumb_func_start MOD28_022549FC +MOD28_022549FC: ; 0x022549FC + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254A04 + b _02254A06 +_02254A04: + mov r1, #2 +_02254A06: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD28_022549FC + + thumb_func_start MOD28_02254A10 +MOD28_02254A10: ; 0x02254A10 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A20 + cmp r0, #1 + beq _02254A30 + b _02254A4A +_02254A20: + ldr r0, [r4, #0x5c] + mov r1, #0 + bl MOD28_02254BC8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A4A +_02254A30: + ldr r0, [r4, #0x5c] + mov r1, #0 + bl MOD28_02254BEC + cmp r0, #0 + beq _02254A4A + ldr r0, [r4, #0x60] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD28_022549FC +_02254A4A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_02254A10 + + thumb_func_start MOD28_02254A50 +MOD28_02254A50: ; 0x02254A50 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254A64 + mov r1, #2 + bl MOD28_022549FC + mov r0, #0 + pop {r4, pc} +_02254A64: + add r1, r4, #0 + add r0, #0x54 + add r1, #0x58 + bl MOD20_02252B68 + add r1, r4, #0 + add r1, #0x50 + strh r0, [r1] + add r0, r4, #0 + add r0, #0x50 + ldrh r0, [r0] + cmp r0, #0 + beq _02254AB2 + ldr r0, [r4, #0x54] + sub r0, #0x10 + cmp r0, #0xbf + bhs _02254A8A + mov r1, #1 + b _02254A8C +_02254A8A: + mov r1, #0 +_02254A8C: + ldr r0, [r4, #0x58] + sub r0, #0x10 + cmp r0, #0x9f + bhs _02254A98 + mov r0, #1 + b _02254A9A +_02254A98: + mov r0, #0 +_02254A9A: + tst r0, r1 + beq _02254AAA + bl FUN_02020AA4 + add r4, #0x52 + strh r0, [r4] + mov r0, #0 + pop {r4, pc} +_02254AAA: + add r0, r4, #0 + mov r1, #0 + add r0, #0x50 + strh r1, [r0] +_02254AB2: + mov r0, #0 + str r0, [r4, #0x54] + str r0, [r4, #0x58] + add r4, #0x52 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_02254A50 + + thumb_func_start MOD28_02254AC0 +MOD28_02254AC0: ; 0x02254AC0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254AD0 + cmp r0, #1 + beq _02254AE0 + b _02254AEE +_02254AD0: + ldr r0, [r4, #0x5c] + mov r1, #1 + bl MOD28_02254BC8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254AEE +_02254AE0: + ldr r0, [r4, #0x5c] + bl MOD28_02254BF8 + cmp r0, #0 + beq _02254AEE + mov r0, #1 + pop {r4, pc} +_02254AEE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_02254AC0 + + thumb_func_start MOD28_02254AF4 +MOD28_02254AF4: ; 0x02254AF4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r1, #0 + mov r1, #0xa3 + add r5, r0, #0 + mov r0, #8 + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + beq _02254B6A + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x30] + add r0, r4, #0 + mov r3, #0 + add r0, #0xb0 + str r3, [r0] + mov r0, #0x4d + lsl r0, r0, #2 + add r6, r4, #0 + add r2, r3, #0 + add r1, r0, #4 +_02254B32: + str r2, [r6, r0] + str r2, [r6, r1] + add r3, r3, #1 + add r6, #0x38 + cmp r3, #6 + blt _02254B32 + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x34 + mov r1, #0xc + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + add r0, #0x48 + mov r1, #0xc + mov r2, #0x24 + mov r3, #0x25 + bl MOD20_02253FBC + add sp, #4 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02254B6A: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD28_02254AF4 + + thumb_func_start MOD28_02254B70 +MOD28_02254B70: ; 0x02254B70 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + beq _02254BC6 + mov r7, #0x4d + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #2 +_02254B7E: + ldr r1, [r4, r7] + cmp r1, #0 + beq _02254B8A + ldr r0, [r5, #0x30] + bl MOD20_02253F14 +_02254B8A: + mov r0, #0x4e + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02254B9A + ldr r0, [r5, #0x30] + bl MOD20_02253F14 +_02254B9A: + add r6, r6, #1 + add r4, #0x38 + cmp r6, #6 + blt _02254B7E + add r0, r5, #0 + add r0, #0x34 + bl MOD20_02254014 + add r0, r5, #0 + add r0, #0x48 + bl MOD20_02254014 + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _02254BC0 + bl FUN_0200CAB4 +_02254BC0: + add r0, r5, #0 + bl FUN_02016A18 +_02254BC6: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD28_02254B70 + + thumb_func_start MOD28_02254BC8 +MOD28_02254BC8: ; 0x02254BC8 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254BE8 ; =0x02255EF4 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BE8: .word 0x02255EF4 + thumb_func_end MOD28_02254BC8 + + thumb_func_start MOD28_02254BEC +MOD28_02254BEC: ; 0x02254BEC + ldr r3, _02254BF4 ; =0x02253795 + add r0, #8 + bx r3 + nop +_02254BF4: .word 0x02253795 + thumb_func_end MOD28_02254BEC + + thumb_func_start MOD28_02254BF8 +MOD28_02254BF8: ; 0x02254BF8 + ldr r3, _02254C00 ; =0x022537B9 + add r0, #8 + bx r3 + nop +_02254C00: .word 0x022537B9 + thumb_func_end MOD28_02254BF8 + + thumb_func_start MOD28_02254C04 +MOD28_02254C04: ; 0x02254C04 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_02254C04 + + thumb_func_start MOD28_02254C18 +MOD28_02254C18: ; 0x02254C18 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254CA8 ; =0x02255ED8 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #7 + mov r3, #6 + bl FUN_0200687C + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r5, #4] + mov r1, #6 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, [r5] + add r0, r5, #0 + bl MOD28_02254CB4 + ldr r1, [r5] + add r0, r5, #0 + bl MOD28_02254E9C + ldr r1, _02254CAC ; =0x04001000 + ldr r0, _02254CB0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD28_02254C04 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254CA8: .word 0x02255ED8 +_02254CAC: .word 0x04001000 +_02254CB0: .word 0xFFFFE0FF + thumb_func_end MOD28_02254C18 + + thumb_func_start MOD28_02254CB4 +MOD28_02254CB4: ; 0x02254CB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp, #0xc] + mov r0, #1 + str r1, [sp, #0x10] + bl MOD20_022539C4 + mov r0, #0 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x23 + lsl r3, r0, #9 + bl FUN_02006A34 + mov r0, #0x13 + mov r1, #8 + bl FUN_02006670 + str r0, [sp, #0x1c] + cmp r0, #0 + bne _02254CE8 + b _02254E46 +_02254CE8: + mov r0, #0 + str r0, [sp, #0x18] + add r1, r0, #0 + add r0, sp, #0x2c + strh r1, [r0, #0xc] + ldr r1, [sp, #0x18] + strb r1, [r0, #0xe] + mov r1, #2 + strb r1, [r0, #0xf] + mov r1, #1 + strb r1, [r0, #0x11] + ldr r0, [sp, #0x10] + ldr r0, [r0] + cmp r0, #0 + bgt _02254D08 + b _02254E40 +_02254D08: + ldr r0, [sp, #0x18] + ldr r5, [sp, #0xc] + str r0, [sp, #0x14] + add r7, r0, #0 + add r0, r5, #0 + str r0, [sp, #0x24] + add r0, #0x34 + str r0, [sp, #0x24] + add r0, r5, #0 + str r0, [sp, #0x28] + add r0, #0x48 + ldr r4, [sp, #0x10] + ldr r6, _02254E4C ; =0x02255EC0 + str r0, [sp, #0x28] +_02254D24: + ldr r0, [sp, #0x1c] + ldr r1, [r4, #4] + mov r2, #8 + bl FUN_02006704 + add r1, sp, #0x2c + str r0, [sp, #0x20] + bl FUN_020B0088 + ldr r0, [sp, #0x2c] + mov r1, #1 + ldr r0, [r0, #0x14] + lsl r1, r1, #0xa + bl DC_FlushRange + ldr r0, [sp, #0x2c] + mov r2, #1 + ldr r0, [r0, #0x14] + ldr r1, [sp, #0x14] + lsl r2, r2, #0xa + bl GXS_LoadOBJ + ldr r0, [sp, #0x20] + bl FUN_02016A18 + ldrh r0, [r6] + mov r1, #1 + ldr r2, [sp, #0x24] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + ldrh r0, [r6, #2] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + add r0, sp, #0x2c + strb r1, [r0, #0x10] + ldr r0, [sp, #0xc] + add r1, sp, #0x30 + ldr r0, [r0, #0x30] + bl MOD20_02253E74 + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + add r1, r7, #0 + bl MOD20_02253FA4 + ldrh r0, [r4, #8] + ldrh r1, [r4, #0xc] + mov r2, #0 + bl FUN_0206B7BC + add r1, r0, #0 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r1, #1 + bl MOD20_02253F9C + mov r1, #0 + add r0, sp, #0x2c + strb r1, [r0, #0x10] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x28] + ldr r0, [r0, #0x30] + add r1, sp, #0x30 + bl MOD20_02253E74 + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02254DDC + mov r1, #1 + bl MOD20_02253F78 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0xc0 + bl MOD20_02253FA4 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl MOD20_02253F9C + b _02254DE0 +_02254DDC: + bl ErrorHandling +_02254DE0: + ldrh r0, [r4, #8] + mov r1, #0x1c + bl FUN_02068678 + mov r1, #0x59 + lsl r1, r1, #2 + strb r0, [r5, r1] + ldr r0, _02254E50 ; =0x00000165 + mov r1, #0 + strb r1, [r5, r0] + add r0, r0, #1 + strb r1, [r5, r0] + mov r1, #0x52 + ldr r0, [sp, #0x34] + ldr r2, [sp, #0x30] + lsl r1, r1, #2 + str r2, [r5, r1] + add r1, r1, #4 + str r0, [r5, r1] + mov r0, #0x15 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + mov r0, #0x56 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + mov r0, #1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + add r4, #0xc + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + add r6, r6, #4 + ldr r1, [r0] + ldr r0, [sp, #0x18] + add r5, #0x38 + add r7, #0x20 + cmp r0, r1 + bge _02254E40 + b _02254D24 +_02254E40: + ldr r0, [sp, #0x1c] + bl FUN_020066F4 +_02254E46: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254E4C: .word 0x02255EC0 +_02254E50: .word 0x00000165 + thumb_func_end MOD28_02254CB4 + + thumb_func_start MOD28_02254E54 +MOD28_02254E54: ; 0x02254E54 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_0201BA60 + mov r1, #0x3f + and r0, r1 + sub r0, #0x20 + lsl r4, r0, #0xc + bl FUN_0201BA60 + mov r1, #0x3f + and r0, r1 + sub r0, #0x20 + lsl r0, r0, #0xc + str r4, [r5] + str r0, [r5, #4] + mov r0, #0 + str r0, [r5, #8] + add r0, r5, #0 + add r1, r5, #0 + bl VEC_Normalize + ldr r1, [r5] + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + str r0, [r5] + ldr r1, [r5, #4] + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + str r0, [r5, #4] + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD28_02254E54 + + thumb_func_start MOD28_02254E9C +MOD28_02254E9C: ; 0x02254E9C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7] + mov r6, #0 + cmp r0, #0 + ble _02254EF8 + mov r1, #0x4f + ldr r0, [sp] + lsl r1, r1, #2 + add r4, r0, r1 + add r5, r0, #0 +_02254EB4: + add r0, r4, #0 + bl MOD28_02254E54 + mov r0, #0x59 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _02254ED2 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #6 + bl MOD20_02253F28 + b _02254EEC +_02254ED2: + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + ble _02254EE0 + mov r1, #7 + b _02254EE2 +_02254EE0: + mov r1, #6 +_02254EE2: + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD20_02253F28 +_02254EEC: + ldr r0, [r7] + add r6, r6, #1 + add r4, #0x38 + add r5, #0x38 + cmp r6, r0 + blt _02254EB4 +_02254EF8: + ldr r0, [sp] + bl MOD28_02254F34 + ldr r0, _02254F14 ; =MOD28_02254F84 + ldr r1, [sp] + mov r2, #1 + bl FUN_0200CA44 + ldr r1, [sp] + add r1, #0xb0 + str r1, [sp] + str r0, [r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02254F14: .word MOD28_02254F84 + thumb_func_end MOD28_02254E9C + + thumb_func_start MOD28_02254F18 +MOD28_02254F18: ; 0x02254F18 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD28_02254C04 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_02254F18 + + thumb_func_start MOD28_02254F34 +MOD28_02254F34: ; 0x02254F34 + push {r3, r4, r5, r6} + add r1, r0, #0 + mov r5, #0 + add r1, #0xe4 + str r5, [r1] + ldr r1, [r0] + ldr r3, [r1] + cmp r3, #0 + ble _02254F60 + mov r1, #0x16 + lsl r1, r1, #4 + add r6, r0, #0 + add r4, r5, #0 + add r2, r1, #3 +_02254F50: + strb r4, [r6, r1] + strb r4, [r6, r2] + ldr r3, [r0] + add r5, r5, #1 + ldr r3, [r3] + add r6, #0x38 + cmp r5, r3 + blt _02254F50 +_02254F60: + add r1, r0, #0 + add r1, #0xec + str r3, [r1] + add r1, r0, #0 + add r1, #0xec + ldr r1, [r1] + add r0, #0xf0 + str r1, [r0] + pop {r3, r4, r5, r6} + bx lr + thumb_func_end MOD28_02254F34 + + thumb_func_start MOD28_02254F74 +MOD28_02254F74: ; 0x02254F74 + add r2, r0, #0 + add r2, #0xe4 + str r1, [r2] + mov r1, #0 + add r0, #0xe8 + str r1, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD28_02254F74 + + thumb_func_start MOD28_02254F84 +MOD28_02254F84: ; 0x02254F84 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r4, [r5] + add r0, r4, #0 + add r0, #0x4c + ldrh r0, [r0] + cmp r0, #0 + beq _02254FFC + mov r0, #0xa1 + ldr r1, [r4, #0x50] + lsl r0, r0, #2 + str r1, [r5, r0] + ldr r1, [r4, #0x54] + add r0, r0, #4 + sub r1, #8 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD28_02255040 + add r1, r5, #0 + add r1, #0xec + str r0, [r1] + add r0, r5, #0 + add r0, #0xec + ldr r1, [r0] + ldr r0, [r4] + cmp r1, r0 + bhs _02254FC0 + mov r1, #1 + b _02254FC2 +_02254FC0: + mov r1, #0 +_02254FC2: + add r0, r5, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + cmp r0, #0 + beq _02254FEE + add r0, r5, #0 + add r0, #0xec + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r1, r0 + beq _02254FEE + mov r0, #0xc + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #8] + bl MOD20_02252B48 +_02254FEE: + add r0, r5, #0 + add r0, #0xec + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xf0 + str r1, [r0] + b _0225500C +_02254FFC: + add r0, r5, #0 + mov r1, #0 + add r0, #0xf8 + str r1, [r0] + add r0, r5, #0 + ldr r1, [r4] + add r0, #0xf0 + str r1, [r0] +_0225500C: + add r2, r5, #0 + add r2, #0xe4 + ldr r2, [r2] + add r0, r5, #0 + lsl r3, r2, #2 + ldr r2, _0225503C ; =0x02255E94 + add r1, r4, #0 + ldr r2, [r2, r3] + blx r2 + add r0, r5, #0 + add r1, r4, #0 + bl MOD28_022551C4 + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #4 + beq _02255038 + add r0, r5, #0 + add r1, r4, #0 + bl MOD28_02255920 +_02255038: + pop {r3, r4, r5, pc} + nop +_0225503C: .word 0x02255E94 + thumb_func_end MOD28_02254F84 + + thumb_func_start MOD28_02255040 +MOD28_02255040: ; 0x02255040 + push {r4, r5, r6, r7} + add r5, r0, #0 + ldr r0, [r5] + mov r1, #0 + ldr r4, [r0] + cmp r4, #0 + ble _0225508C + mov r0, #0xa1 + lsl r0, r0, #2 + ldr r2, [r5, r0] + add r0, r0, #4 + ldr r3, [r5, r0] +_02255058: + mov r0, #0x52 + lsl r0, r0, #2 + mov r6, #0x53 + ldr r0, [r5, r0] + lsl r6, r6, #2 + ldr r6, [r5, r6] + asr r0, r0, #0xc + asr r6, r6, #0xc + sub r0, r2, r0 + sub r7, r3, r6 + add r6, r0, #0 + mul r6, r0 + add r0, r7, #0 + mul r0, r7 + add r6, r6, r0 + mov r0, #1 + lsl r0, r0, #8 + cmp r6, r0 + bge _02255084 + add r0, r1, #0 + pop {r4, r5, r6, r7} + bx lr +_02255084: + add r1, r1, #1 + add r5, #0x38 + cmp r1, r4 + blt _02255058 +_0225508C: + add r0, r4, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + thumb_func_end MOD28_02255040 + + thumb_func_start MOD28_02255094 +MOD28_02255094: ; 0x02255094 + push {r4, r5} + lsl r4, r0, #0xc + ldr r0, [r3] + sub r0, r4, r0 + lsl r4, r1, #0xc + ldr r1, [r3, #4] + sub r5, r4, r1 + asr r1, r0, #0xc + add r4, r0, #0 + mul r4, r1 + add r1, r2, #0 + mul r1, r2 + asr r0, r5, #0xc + add r3, r5, #0 + mul r3, r0 + lsl r2, r1, #0xc + add r1, r4, r3 + mov r0, #0 + cmp r2, r1 + ble _022550BE + mov r0, #1 +_022550BE: + pop {r4, r5} + bx lr + .align 2, 0 + thumb_func_end MOD28_02255094 + + thumb_func_start MOD28_022550C4 +MOD28_022550C4: ; 0x022550C4 + push {r3, lr} + add r1, #0x4e + ldrh r1, [r1] + cmp r1, #0 + beq _022550E0 + add r1, r0, #0 + add r1, #0xf8 + ldr r2, [r1] + add r1, r0, #0 + add r1, #0xfc + str r2, [r1] + mov r1, #1 + bl MOD28_02254F74 +_022550E0: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD28_022550C4 + + thumb_func_start MOD28_022550E4 +MOD28_022550E4: ; 0x022550E4 + push {r3, lr} + add r1, #0x4c + ldrh r1, [r1] + cmp r1, #0 + beq _0225510E + add r1, r0, #0 + add r1, #0xe8 + ldr r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xe8 + str r2, [r1] + add r1, r0, #0 + add r1, #0xe8 + ldr r1, [r1] + cmp r1, #6 + bls _02255126 + mov r1, #2 + bl MOD28_02254F74 + pop {r3, pc} +_0225510E: + add r1, r0, #0 + add r1, #0xfc + ldr r1, [r1] + cmp r1, #0 + beq _02255120 + mov r1, #0 + bl MOD28_02254F74 + pop {r3, pc} +_02255120: + mov r1, #3 + bl MOD28_02254F74 +_02255126: + pop {r3, pc} + thumb_func_end MOD28_022550E4 + + thumb_func_start MOD28_02255128 +MOD28_02255128: ; 0x02255128 + push {r3, lr} + add r1, #0x4c + ldrh r1, [r1] + cmp r1, #0 + bne _02255138 + mov r1, #0 + bl MOD28_02254F74 +_02255138: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD28_02255128 + + thumb_func_start MOD28_0225513C +MOD28_0225513C: ; 0x0225513C + push {r3, lr} + add r1, #0x4e + ldrh r1, [r1] + cmp r1, #0 + bne _02255166 + add r1, r0, #0 + add r1, #0xe8 + ldr r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xe8 + str r2, [r1] + add r1, r0, #0 + add r1, #0xe8 + ldr r1, [r1] + cmp r1, #6 + bls _02255184 + mov r1, #0 + bl MOD28_02254F74 + pop {r3, pc} +_02255166: + add r1, r0, #0 + add r1, #0xf8 + ldr r1, [r1] + cmp r1, #0 + beq _0225517E + add r2, r0, #0 + mov r1, #1 + add r2, #0xfc + str r1, [r2] + bl MOD28_02254F74 + pop {r3, pc} +_0225517E: + mov r1, #4 + bl MOD28_02254F74 +_02255184: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD28_0225513C + + thumb_func_start MOD28_02255188 +MOD28_02255188: ; 0x02255188 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xe8 + ldr r1, [r1] + cmp r1, #0 + bne _022551A8 + bl MOD28_02255288 + add r0, r4, #0 + add r0, #0xe8 + ldr r0, [r0] + add r4, #0xe8 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022551A8: + bl MOD28_022552C0 + cmp r0, #0 + beq _022551B8 + add r0, r4, #0 + mov r1, #0 + bl MOD28_02254F74 +_022551B8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD28_02255188 + + thumb_func_start MOD28_022551BC +MOD28_022551BC: ; 0x022551BC + push {r0, r1, r2, r3} + add sp, #0x10 + bx lr + .align 2, 0 + thumb_func_end MOD28_022551BC + + thumb_func_start MOD28_022551C4 +MOD28_022551C4: ; 0x022551C4 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7] + mov r4, #0 + cmp r0, #0 + ble _02255212 + ldr r5, [sp] +_022551D4: + ldr r0, _0225521C ; =0x00000163 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _022551F4 + ldr r0, _0225521C ; =0x00000163 + ldr r2, _0225521C ; =0x00000163 + ldrb r0, [r5, r0] + sub r1, r0, #1 + ldr r0, _0225521C ; =0x00000163 + strb r1, [r5, r0] + ldrb r2, [r5, r2] + ldr r0, _02255220 ; =0x02255F20 + add r1, r4, #0 + bl MOD28_022551BC + b _02255208 +_022551F4: + mov r3, #0x16 + lsl r3, r3, #4 + ldrb r3, [r5, r3] + ldr r0, [sp] + add r1, r7, #0 + lsl r6, r3, #2 + ldr r3, _02255224 ; =0x02255EA8 + add r2, r4, #0 + ldr r3, [r3, r6] + blx r3 +_02255208: + ldr r0, [r7] + add r4, r4, #1 + add r5, #0x38 + cmp r4, r0 + blt _022551D4 +_02255212: + ldr r0, _02255228 ; =0x02255F34 + bl MOD28_022551BC + pop {r3, r4, r5, r6, r7, pc} + nop +_0225521C: .word 0x00000163 +_02255220: .word 0x02255F20 +_02255224: .word 0x02255EA8 +_02255228: .word 0x02255F34 + thumb_func_end MOD28_022551C4 + + thumb_func_start MOD28_0225522C +MOD28_0225522C: ; 0x0225522C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r2, #0 + mov r2, #0x38 + add r4, r6, #0 + mul r4, r2 + add r5, r0, #0 + mov r2, #0x16 + add r3, r5, r4 + lsl r2, r2, #4 + ldrb r2, [r3, r2] + cmp r2, #3 + bne _0225524A + bl MOD28_02255344 +_0225524A: + mov r0, #0x16 + lsl r0, r0, #4 + add r2, r5, r0 + mov r3, #0x16 + lsl r3, r3, #4 + strb r7, [r2, r4] + mov r1, #0 + add r0, r5, r4 + add r3, #8 + str r1, [r0, r3] + mov r3, #0x16 + lsl r3, r3, #4 + sub r3, #0xc + str r1, [r0, r3] + mov r3, #0x16 + lsl r3, r3, #4 + sub r3, #8 + str r1, [r0, r3] + mov r3, #0x16 + lsl r3, r3, #4 + sub r3, r3, #4 + str r1, [r0, r3] + ldrb r0, [r2, r4] + cmp r0, #3 + bne _02255284 + add r0, r5, #0 + add r1, r6, #0 + bl MOD28_022552D4 +_02255284: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD28_0225522C + + thumb_func_start MOD28_02255288 +MOD28_02255288: ; 0x02255288 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + mov r4, #0 + ldr r1, [r0] + cmp r1, #0 + ble _022552B4 + add r5, r6, #0 + add r7, r4, #0 +_0225529A: + add r0, r6, #0 + add r1, r4, #0 + mov r2, #5 + bl MOD28_0225522C + ldr r0, _022552BC ; =0x00000163 + add r4, r4, #1 + strb r7, [r5, r0] + ldr r0, [r6] + add r5, #0x38 + ldr r1, [r0] + cmp r4, r1 + blt _0225529A +_022552B4: + mov r0, #1 + lsl r0, r0, #8 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022552BC: .word 0x00000163 + thumb_func_end MOD28_02255288 + + thumb_func_start MOD28_022552C0 +MOD28_022552C0: ; 0x022552C0 + mov r1, #1 + lsl r1, r1, #8 + ldr r0, [r0, r1] + cmp r0, #0 + bne _022552CE + mov r0, #1 + bx lr +_022552CE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD28_022552C0 + + thumb_func_start MOD28_022552D4 +MOD28_022552D4: ; 0x022552D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0xc + add r7, r1, #0 + mul r7, r0 + ldr r0, [r5] + add r0, r0, r7 + ldrb r0, [r0, #0xe] + cmp r0, #0 + bne _02255314 + mov r0, #0x4e + lsl r0, r0, #2 + add r4, r5, r0 + mov r0, #0x38 + add r6, r1, #0 + mul r6, r0 + ldr r0, [r5, #0x30] + ldr r1, [r4, r6] + mov r2, #0 + bl MOD20_02253F80 + ldr r1, [r5] + ldr r0, [r4, r6] + add r1, r1, r7 + ldrb r1, [r1, #0xf] + sub r1, r1, #1 + bl MOD20_02253F28 + ldr r0, [r4, r6] + mov r1, #0 + bl MOD20_02253F78 +_02255314: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD28_022552D4 + + thumb_func_start MOD28_02255318 +MOD28_02255318: ; 0x02255318 + push {r3, r4, r5, lr} + mov r2, #0x4e + lsl r2, r2, #2 + add r4, r0, r2 + mov r2, #0x38 + add r5, r1, #0 + mul r5, r2 + ldr r0, [r0, #0x30] + ldr r1, [r4, r5] + mov r2, #2 + bl MOD20_02253F80 + ldr r0, [r4, r5] + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r4, r5] + mov r1, #0 + bl MOD20_02253F78 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD28_02255318 + + thumb_func_start MOD28_02255344 +MOD28_02255344: ; 0x02255344 + mov r2, #0x38 + mul r2, r1 + add r1, r0, r2 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r3, _02255358 ; =0x02253F79 + mov r1, #1 + bx r3 + nop +_02255358: .word 0x02253F79 + thumb_func_end MOD28_02255344 + + thumb_func_start MOD28_0225535C +MOD28_0225535C: ; 0x0225535C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r1, #0 + bl VEC_Mag + cmp r0, r5 + ble _0225539A + add r1, r0, #0 + mul r1, r4 + add r0, r1, #0 + mov r1, #0x64 + bl _u32_div_f + add r4, r0, #0 + add r0, r6, #0 + add r1, sp, #0 + bl VEC_Normalize + mov r0, #0 + str r0, [r6] + str r0, [r6, #4] + str r0, [r6, #8] + add r0, r4, #0 + add r1, sp, #0 + add r2, r6, #0 + add r3, r6, #0 + bl VEC_MultAdd +_0225539A: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD28_0225535C + + thumb_func_start MOD28_022553A0 +MOD28_022553A0: ; 0x022553A0 + ldr r1, [r0] + cmp r1, #0 + bne _022553B0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _022553B0 + mov r0, #1 + bx lr +_022553B0: + mov r0, #0 + bx lr + thumb_func_end MOD28_022553A0 + + thumb_func_start MOD28_022553B4 +MOD28_022553B4: ; 0x022553B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r1, #0 + ldr r0, _02255498 ; =0x02255F44 + add r1, r4, #0 + bl MOD28_022551BC + add r0, r6, #0 + add r0, #0x4c + ldrh r0, [r0] + cmp r0, #0 + bne _022553E6 + mov r1, #0x60 + add r2, r1, #0 + add r2, #0xdc + add r3, r5, r2 + mov r2, #0x38 + mov r0, #3 + mul r2, r4 + lsl r0, r0, #8 + add r2, r3, r2 + bl MOD28_0225535C + pop {r3, r4, r5, r6, r7, pc} +_022553E6: + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + cmp r0, #0 + bne _02255448 + mov r1, #0xa1 + mov r3, #0x52 + lsl r1, r1, #2 + lsl r3, r3, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + add r7, r5, r3 + mov r3, #0x38 + mul r3, r4 + ldr r1, [r5, r1] + mov r2, #0x30 + add r3, r7, r3 + bl MOD28_02255094 + cmp r0, #0 + beq _02255494 + mov r0, #0xc + mul r0, r4 + add r0, r6, r0 + ldrb r0, [r0, #0xe] + cmp r0, #1 + beq _02255432 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD28_0225522C + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD28_0225549C + pop {r3, r4, r5, r6, r7, pc} +_02255432: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #2 + bl MOD28_0225522C + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD28_022555B4 + pop {r3, r4, r5, r6, r7, pc} +_02255448: + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, r4 + bne _02255494 + mov r1, #0xa1 + mov r3, #0x52 + lsl r1, r1, #2 + lsl r3, r3, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + add r7, r5, r3 + mov r3, #0x38 + mul r3, r4 + ldr r1, [r5, r1] + mov r2, #8 + add r3, r7, r3 + bl MOD28_02255094 + cmp r0, #0 + beq _02255494 + mov r0, #0xc + mul r0, r4 + add r0, r6, r0 + ldrb r0, [r0, #0xe] + cmp r0, #1 + beq _0225548A + add r0, r5, #0 + add r1, r4, #0 + mov r2, #3 + bl MOD28_0225522C + pop {r3, r4, r5, r6, r7, pc} +_0225548A: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #4 + bl MOD28_0225522C +_02255494: + pop {r3, r4, r5, r6, r7, pc} + nop +_02255498: .word 0x02255F44 + thumb_func_end MOD28_022553B4 + + thumb_func_start MOD28_0225549C +MOD28_0225549C: ; 0x0225549C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + add r6, r1, #0 + ldr r0, _022555AC ; =0x02255F58 + add r1, r4, #0 + bl MOD28_022551BC + add r0, r6, #0 + add r0, #0x4c + ldrh r0, [r0] + cmp r0, #0 + beq _0225559C + mov r0, #0x52 + lsl r0, r0, #2 + add r7, r5, r0 + mov r0, #0x38 + mul r0, r4 + mov r1, #0xa1 + str r0, [sp] + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r3, [sp] + ldr r1, [r5, r1] + mov r2, #0x40 + add r3, r7, r3 + bl MOD28_02255094 + cmp r0, #0 + beq _0225559C + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + cmp r0, #0 + beq _022554F0 + add r0, r5, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, r4 + bne _022555A6 +_022554F0: + mov r1, #0xa1 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r3, [sp] + ldr r1, [r5, r1] + mov r2, #8 + add r3, r7, r3 + bl MOD28_02255094 + cmp r0, #0 + beq _02255516 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #3 + bl MOD28_0225522C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02255516: + mov r1, #0xa2 + lsl r1, r1, #2 + ldr r0, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + lsl r0, r0, #0xc + lsl r1, r1, #0xc + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + ldr r1, [sp] + str r0, [sp, #0xc] + add r0, sp, #4 + add r1, r7, r1 + add r2, r0, #0 + bl VEC_Subtract + add r0, sp, #4 + add r1, r0, #0 + bl VEC_Normalize + mov r0, #0xc + add r7, r4, #0 + mul r7, r0 + add r6, #0xf + ldrb r2, [r6, r7] + ldr r0, _022555B0 ; =0x02255E90 + ldr r1, [sp, #4] + ldrb r0, [r0, r2] + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #4] + ldrb r2, [r6, r7] + ldr r0, _022555B0 ; =0x02255E90 + ldr r1, [sp, #8] + ldrb r0, [r0, r2] + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + str r0, [sp, #8] + asr r1, r2, #3 + lsr r1, r1, #0x1c + add r1, r2, r1 + asr r1, r1, #4 + str r1, [sp, #4] + asr r1, r0, #3 + lsr r1, r1, #0x1c + add r1, r0, r1 + asr r0, r1, #4 + str r0, [sp, #8] + mov r0, #0x38 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x4f + add r3, sp, #4 + lsl r0, r0, #2 + add r2, r1, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add sp, #0x10 + str r0, [r2] + pop {r3, r4, r5, r6, r7, pc} +_0225559C: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD28_0225522C +_022555A6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022555AC: .word 0x02255F58 +_022555B0: .word 0x02255E90 + thumb_func_end MOD28_0225549C + + thumb_func_start MOD28_022555B4 +MOD28_022555B4: ; 0x022555B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r2, #0 + add r4, r1, #0 + ldr r0, _02255688 ; =0x02255F6C + add r1, r6, #0 + bl MOD28_022551BC + add r0, r4, #0 + add r0, #0x4c + ldrh r0, [r0] + cmp r0, #0 + beq _0225567A + mov r0, #0x52 + lsl r0, r0, #2 + add r7, r5, r0 + mov r0, #0x38 + mul r0, r6 + mov r1, #0xa1 + str r0, [sp] + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r3, [sp] + ldr r1, [r5, r1] + mov r2, #0x40 + add r3, r7, r3 + bl MOD28_02255094 + cmp r0, #0 + beq _0225567A + mov r1, #0xa2 + lsl r1, r1, #2 + ldr r0, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + lsl r0, r0, #0xc + str r0, [sp, #8] + mov r0, #0 + lsl r1, r1, #0xc + str r0, [sp, #0xc] + ldr r0, [sp] + str r1, [sp, #4] + add r1, sp, #4 + add r0, r7, r0 + add r2, r1, #0 + bl VEC_Subtract + add r0, sp, #4 + add r1, r0, #0 + bl VEC_Normalize + mov r0, #0xc + add r7, r6, #0 + mul r7, r0 + add r4, #0xf + ldrb r2, [r4, r7] + ldr r0, _0225568C ; =0x02255E8C + ldr r1, [sp, #4] + ldrb r0, [r0, r2] + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + str r0, [sp, #4] + ldrb r2, [r4, r7] + ldr r0, _0225568C ; =0x02255E8C + ldr r1, [sp, #8] + ldrb r0, [r0, r2] + mul r0, r1 + mov r1, #0x64 + bl _s32_div_f + ldr r2, [sp, #4] + str r0, [sp, #8] + asr r1, r2, #3 + lsr r1, r1, #0x1c + add r1, r2, r1 + asr r1, r1, #4 + str r1, [sp, #4] + asr r1, r0, #3 + lsr r1, r1, #0x1c + add r1, r0, r1 + asr r0, r1, #4 + str r0, [sp, #8] + mov r0, #0x38 + mul r0, r6 + add r1, r5, r0 + mov r0, #0x4f + add r3, sp, #4 + lsl r0, r0, #2 + add r2, r1, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add sp, #0x10 + str r0, [r2] + pop {r3, r4, r5, r6, r7, pc} +_0225567A: + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD28_0225522C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255688: .word 0x02255F6C +_0225568C: .word 0x02255E8C + thumb_func_end MOD28_022555B4 + + thumb_func_start MOD28_02255690 +MOD28_02255690: ; 0x02255690 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r2, #0 + add r4, r1, #0 + ldr r0, _02255764 ; =0x02255F80 + add r1, r7, #0 + bl MOD28_022551BC + add r4, #0x4c + ldrh r0, [r4] + cmp r0, #0 + beq _02255756 + mov r1, #0xa2 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r4, r7, #0 + lsl r2, r0, #0xc + sub r0, r1, #4 + ldr r0, [r5, r0] + lsl r0, r0, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + mov r0, #0x38 + mul r4, r0 + mov r0, #0x52 + lsl r0, r0, #2 + add r6, r5, r0 + str r2, [sp, #4] + sub r0, r1, #4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + mov r2, #8 + add r3, r6, r4 + bl MOD28_02255094 + cmp r0, #0 + beq _02255732 + add r0, sp, #0 + add r1, r6, r4 + add r2, r0, #0 + bl VEC_Subtract + add r0, sp, #0 + bl VEC_Mag + mov r1, #6 + lsl r1, r1, #8 + cmp r0, r1 + ble _02255704 + add r0, sp, #0 + add r1, r0, #0 + bl VEC_Normalize + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] +_02255704: + ldr r1, [sp] + add r3, sp, #0 + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + ldr r1, [sp, #4] + str r0, [sp] + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + str r0, [sp, #4] + mov r0, #0x4f + add r1, r5, r4 + lsl r0, r0, #2 + add r2, r1, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add sp, #0xc + str r0, [r2] + pop {r4, r5, r6, r7, pc} +_02255732: + mov r1, #0xa1 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x40 + add r3, r6, r4 + bl MOD28_02255094 + cmp r0, #0 + beq _02255756 + add r0, r5, #0 + add r1, r7, #0 + mov r2, #1 + bl MOD28_0225522C + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02255756: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD28_0225522C + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02255764: .word 0x02255F80 + thumb_func_end MOD28_02255690 + + thumb_func_start MOD28_02255768 +MOD28_02255768: ; 0x02255768 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + add r4, r1, #0 + ldr r0, _02255808 ; =0x02255F94 + add r1, r7, #0 + bl MOD28_022551BC + add r4, #0x4c + ldrh r0, [r4] + cmp r0, #0 + beq _022557D8 + mov r0, #0x38 + add r4, r7, #0 + mul r4, r0 + mov r0, #0x52 + mov r1, #0xa1 + lsl r0, r0, #2 + add r6, r5, r0 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #8 + add r3, r6, r4 + bl MOD28_02255094 + cmp r0, #0 + beq _022557B6 + mov r1, #0x4f + lsl r1, r1, #2 + mov r3, #0 + add r2, r5, r4 + str r3, [r2, r1] + add r0, r1, #4 + str r3, [r2, r0] + add r1, #8 + str r3, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} +_022557B6: + mov r1, #0xa1 + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + mov r2, #0x40 + add r3, r6, r4 + bl MOD28_02255094 + cmp r0, #0 + beq _022557FA + add r0, r5, #0 + add r1, r7, #0 + mov r2, #2 + bl MOD28_0225522C + pop {r3, r4, r5, r6, r7, pc} +_022557D8: + mov r0, #0x38 + add r4, r7, #0 + mul r4, r0 + mov r0, #0x4f + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r4 + bl MOD28_022553A0 + cmp r0, #0 + beq _022557FA + mov r0, #0x4f + lsl r0, r0, #2 + add r0, r5, r0 + add r0, r0, r4 + bl MOD28_02254E54 +_022557FA: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD28_0225522C + pop {r3, r4, r5, r6, r7, pc} + nop +_02255808: .word 0x02255F94 + thumb_func_end MOD28_02255768 + + thumb_func_start MOD28_0225580C +MOD28_0225580C: ; 0x0225580C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x4d + lsl r0, r0, #2 + add r1, r5, r0 + add r6, r2, #0 + mov r0, #0x38 + mul r0, r6 + add r4, r1, r0 + ldr r0, _02255918 ; =0x02255FA8 + add r1, r6, #0 + bl MOD28_022551BC + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #0 + beq _02255836 + cmp r0, #1 + beq _0225585A + pop {r4, r5, r6, pc} +_02255836: + mov r0, #0 + str r0, [r4, #8] + str r0, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r5, #0 + add r1, r6, #0 + bl MOD28_02255318 + ldr r0, _0225591C ; =0x00000669 + bl MOD20_02252B28 + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x34 + strb r1, [r0] +_0225585A: + add r0, r4, #0 + add r0, #0x35 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x35 + add r1, #8 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #0 + bne _0225588C + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x8c + bls _0225588C + add r0, r5, #0 + add r1, r6, #0 + bl MOD28_02255344 + add r0, r4, #0 + mov r1, #1 + add r0, #0x36 + strb r1, [r0] +_0225588C: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0xb4 + bls _022558A6 + add r0, r4, #0 + mov r1, #0xb4 + add r0, #0x35 + strb r1, [r0] + add r0, r4, #0 + mov r1, #2 + add r0, #0x36 + strb r1, [r0] +_022558A6: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + bl FUN_0201B93C + mov r1, #0x13 + mvn r1, r1 + mul r1, r0 + mov r0, #0 + str r0, [r4, #0x20] + str r1, [r4, #0x24] + str r0, [r4, #0x28] + add r0, r4, #0 + add r1, r4, #0 + add r2, r5, #0 + add r0, #0x14 + add r1, #0x20 + add r2, #0xa4 + bl VEC_Add + add r1, r5, #0 + add r2, r5, #0 + add r1, #0xa4 + add r2, #0xa8 + ldr r0, [r4] + ldr r1, [r1] + ldr r2, [r2] + bl MOD20_02253F64 + mov r2, #2 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xe + ldr r0, [r4, #4] + ldr r1, [r4, #0x14] + add r2, r3, r2 + bl MOD20_02253F64 + add r0, r4, #0 + add r0, #0x36 + ldrb r0, [r0] + cmp r0, #2 + bne _02255916 + add r4, #8 + add r0, r4, #0 + bl MOD28_02254E54 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl MOD28_0225522C + mov r0, #1 + lsl r0, r0, #8 + ldr r1, [r5, r0] + sub r1, r1, #1 + str r1, [r5, r0] +_02255916: + pop {r4, r5, r6, pc} + .align 2, 0 +_02255918: .word 0x02255FA8 +_0225591C: .word 0x00000669 + thumb_func_end MOD28_0225580C + + thumb_func_start MOD28_02255920 +MOD28_02255920: ; 0x02255920 + push {r4, r5, r6, r7, lr} + sub sp, #0x74 + str r0, [sp] + mov r0, #1 + lsl r0, r0, #0x10 + str r1, [sp, #4] + str r0, [sp, #0x34] +_0225592E: + mov r0, #0 + str r0, [sp, #0x28] + str r0, [sp, #0x24] + ldr r0, [sp, #4] + ldr r4, [sp, #0x34] + ldr r0, [r0] + str r0, [sp, #0x10] + cmp r0, #0 + ble _02255974 + mov r1, #0x52 + ldr r5, [sp] + ldr r0, [sp] + lsl r1, r1, #2 + add r7, r0, r1 + sub r1, #0xc + add r5, #0x5c + add r6, r0, r1 +_02255950: + ldr r0, [sp, #0x34] + add r1, r6, #0 + add r2, r7, #0 + add r3, r5, #0 + bl VEC_MultAdd + ldr r0, [sp, #0x24] + add r5, #0xc + add r0, r0, #1 + str r0, [sp, #0x24] + ldr r0, [sp, #4] + ldr r1, [sp, #0x24] + ldr r0, [r0] + add r7, #0x38 + add r6, #0x38 + str r0, [sp, #0x10] + cmp r1, r0 + blt _02255950 +_02255974: + ldr r0, [sp, #0x10] + mov r5, #0 + cmp r0, #0 + ble _02255A3E + ldr r0, [sp] + str r0, [sp, #0x14] + add r6, r0, #0 +_02255982: + ldr r0, [sp, #0x14] + ldr r7, [r0, #0x5c] + ldr r0, _02255CB8 ; =0xFFFF6000 + cmp r7, r0 + bge _022559AE + mov r0, #0x4f + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + beq _022559AE + mov r0, #0xa + lsl r0, r0, #0xc + add r0, r7, r0 + bl _s32_div_f + sub r1, r4, r0 + cmp r1, r4 + bge _022559AE + mov r0, #2 + str r0, [sp, #0x28] + str r5, [sp, #0x30] + add r4, r1, #0 +_022559AE: + mov r0, #0xd9 + lsl r0, r0, #0xc + cmp r7, r0 + ble _022559D8 + mov r0, #0x4f + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + beq _022559D8 + mov r0, #0xd9 + lsl r0, r0, #0xc + sub r0, r7, r0 + bl _s32_div_f + sub r1, r4, r0 + cmp r1, r4 + bge _022559D8 + mov r0, #3 + str r0, [sp, #0x28] + str r5, [sp, #0x30] + add r4, r1, #0 +_022559D8: + ldr r0, [sp, #0x14] + ldr r7, [r0, #0x60] + ldr r0, _02255CBC ; =0xFFFEA000 + cmp r7, r0 + bge _02255A04 + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02255A04 + mov r0, #0x16 + lsl r0, r0, #0xc + add r0, r7, r0 + bl _s32_div_f + sub r1, r4, r0 + cmp r1, r4 + bge _02255A04 + mov r0, #4 + str r0, [sp, #0x28] + str r5, [sp, #0x30] + add r4, r1, #0 +_02255A04: + mov r0, #0xb7 + lsl r0, r0, #0xc + cmp r7, r0 + ble _02255A2E + mov r0, #5 + lsl r0, r0, #6 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02255A2E + mov r0, #0xb7 + lsl r0, r0, #0xc + sub r0, r7, r0 + bl _s32_div_f + sub r1, r4, r0 + cmp r1, r4 + bge _02255A2E + mov r0, #5 + str r0, [sp, #0x28] + str r5, [sp, #0x30] + add r4, r1, #0 +_02255A2E: + ldr r0, [sp, #0x14] + add r5, r5, #1 + add r0, #0xc + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r6, #0x38 + cmp r5, r0 + blt _02255982 +_02255A3E: + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _02255AEE + ldr r0, [sp] + mov r1, #0x4f + str r0, [sp, #0x1c] + add r0, #0x5c + str r0, [sp, #0x1c] + ldr r0, [sp] + lsl r1, r1, #2 + add r0, r0, r1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x38] + ldr r0, [sp, #0x18] + str r0, [sp, #0x3c] +_02255A62: + ldr r0, [sp, #0x20] + mov r5, #0 + cmp r0, #0 + ble _02255AD0 + ldr r7, [sp, #0x38] + ldr r6, [sp, #0x3c] +_02255A6E: + ldr r1, [sp, #0x1c] + add r0, r7, #0 + add r2, sp, #0x68 + bl VEC_Subtract + add r0, sp, #0x68 + bl VEC_Mag + mov r1, #2 + lsl r1, r1, #0x10 + str r0, [sp, #0x40] + cmp r0, r1 + bge _02255AC4 + add r0, sp, #0x68 + add r1, sp, #0x5c + bl VEC_Normalize + ldr r1, [sp, #0x18] + add r0, r6, #0 + add r2, sp, #0x50 + bl VEC_Subtract + add r0, sp, #0x50 + add r1, sp, #0x5c + bl VEC_DotProduct + add r2, r0, #0 + mov r1, #2 + ldr r0, [sp, #0x40] + lsl r1, r1, #0x10 + sub r0, r1, r0 + neg r1, r2 + bl _s32_div_f + sub r0, r4, r0 + cmp r0, r4 + bge _02255AC4 + mov r1, #1 + str r1, [sp, #0x28] + ldr r1, [sp, #0x20] + str r5, [sp, #0x30] + str r1, [sp, #0x2c] + add r4, r0, #0 +_02255AC4: + ldr r0, [sp, #0x20] + add r5, r5, #1 + add r7, #0xc + add r6, #0x38 + cmp r5, r0 + blt _02255A6E +_02255AD0: + ldr r0, [sp, #0x1c] + add r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, #0x38 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #4] + ldr r1, [sp, #0x20] + ldr r0, [r0] + str r0, [sp, #0x10] + cmp r1, r0 + blt _02255A62 +_02255AEE: + cmp r4, #0 + bgt _02255AF4 + b _02255DC8 +_02255AF4: + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + cmp r0, #0 + ble _02255B2E + mov r1, #0x52 + ldr r0, [sp] + lsl r1, r1, #2 + add r7, r0, r1 + sub r1, #0xc + add r6, r7, #0 + add r5, r0, r1 +_02255B0C: + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + add r3, r7, #0 + bl VEC_MultAdd + ldr r0, [sp, #8] + add r7, #0x38 + add r0, r0, #1 + str r0, [sp, #8] + ldr r0, [sp, #4] + add r6, #0x38 + ldr r1, [r0] + ldr r0, [sp, #8] + add r5, #0x38 + cmp r0, r1 + blt _02255B0C +_02255B2E: + ldr r0, [sp, #0x28] + cmp r0, #5 + bls _02255B36 + b _02255DBA +_02255B36: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02255B42: ; jump table + .short _02255DBA - _02255B42 - 2 ; case 0 + .short _02255B4E - _02255B42 - 2 ; case 1 + .short _02255D7C - _02255B42 - 2 ; case 2 + .short _02255D7C - _02255B42 - 2 ; case 3 + .short _02255D9C - _02255B42 - 2 ; case 4 + .short _02255D9C - _02255B42 - 2 ; case 5 +_02255B4E: + ldr r1, [sp, #0x30] + mov r0, #0x38 + add r6, r1, #0 + ldr r1, [sp] + mul r6, r0 + add r1, r1, r6 + str r1, [sp, #0xc] + mov r1, #0x16 + ldr r2, [sp, #0xc] + lsl r1, r1, #4 + ldrb r2, [r2, r1] + cmp r2, #3 + bne _02255C1C + ldr r2, [sp, #0x2c] + sub r1, #0x24 + add r7, r2, #0 + mul r7, r0 + ldr r0, [sp] + add r0, r0, r1 + add r5, r0, r7 + ldr r0, [r0, r7] + cmp r0, #0 + bne _02255B82 + ldr r0, [r5, #4] + cmp r0, #0 + beq _02255B8E +_02255B82: + ldr r0, [sp] + ldr r1, _02255CC0 ; =0x00000166 + add r0, r0, r7 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _02255C02 +_02255B8E: + mov r1, #0x52 + ldr r0, [sp] + lsl r1, r1, #2 + add r1, r0, r1 + add r0, r1, r7 + add r1, r1, r6 + add r2, sp, #0x68 + bl VEC_Subtract + add r0, sp, #0x68 + add r1, sp, #0x5c + bl VEC_Normalize + ldr r0, [sp, #0x5c] + ldr r2, _02255CC4 ; =0x0000019A + asr r1, r0, #0x1f + mov r3, #0 + bl _ll_mul + add r2, r0, #0 + mov r0, #2 + mov r3, #0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r5] + ldr r0, [sp, #0x60] + ldr r2, _02255CC4 ; =0x0000019A + asr r1, r0, #0x1f + bl _ll_mul + add r2, r0, #0 + mov r0, #2 + mov r3, #0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r5, #4] + ldr r0, [sp] + ldr r1, _02255CC0 ; =0x00000166 + add r0, r0, r7 + mov r2, #1 + strb r2, [r0, r1] + ldr r1, [sp, #0x30] + cmp r1, #1 + bne _02255BFC + ldr r1, [sp, #0x2c] + cmp r1, #2 + beq _02255C14 +_02255BFC: + ldr r1, [sp, #0x2c] + cmp r1, #1 + b _02255C14 +_02255C02: + ldr r2, [r5] + mov r1, #0 + mvn r1, r1 + add r3, r2, #0 + mul r3, r1 + str r3, [r5] + ldr r2, [r5, #4] + mul r1, r2 + str r1, [r5, #4] +_02255C14: + ldr r1, _02255CC8 ; =0x00000163 + mov r2, #0x14 + strb r2, [r0, r1] + b _02255DBA +_02255C1C: + ldr r2, [sp, #0x2c] + add r7, r2, #0 + mul r7, r0 + ldr r0, [sp] + add r0, r0, r7 + ldrb r0, [r0, r1] + cmp r0, #3 + bne _02255CE8 + ldr r0, [sp] + sub r1, #0x24 + add r0, r0, r1 + add r5, r0, r6 + ldr r0, [r0, r6] + cmp r0, #0 + bne _02255C40 + ldr r0, [r5, #4] + cmp r0, #0 + beq _02255C4A +_02255C40: + ldr r1, _02255CC0 ; =0x00000166 + ldr r0, [sp, #0xc] + ldrb r0, [r0, r1] + cmp r0, #0 + beq _02255CCC +_02255C4A: + mov r1, #0x52 + ldr r0, [sp] + lsl r1, r1, #2 + add r1, r0, r1 + add r0, r1, r6 + add r1, r1, r7 + add r2, sp, #0x68 + bl VEC_Subtract + add r0, sp, #0x68 + add r1, sp, #0x5c + bl VEC_Normalize + ldr r0, [sp, #0x5c] + ldr r2, _02255CC4 ; =0x0000019A + asr r1, r0, #0x1f + mov r3, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5] + ldr r0, [sp, #0x60] + ldr r2, _02255CC4 ; =0x0000019A + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #4] + ldr r1, _02255CC0 ; =0x00000166 + ldr r0, [sp, #0xc] + mov r2, #1 + strb r2, [r0, r1] + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _02255CB2 + ldr r0, [sp, #0x2c] + cmp r0, #2 + beq _02255CDE +_02255CB2: + ldr r0, [sp, #0x2c] + cmp r0, #1 + b _02255CDE + .align 2, 0 +_02255CB8: .word 0xFFFF6000 +_02255CBC: .word 0xFFFEA000 +_02255CC0: .word 0x00000166 +_02255CC4: .word 0x0000019A +_02255CC8: .word 0x00000163 +_02255CCC: + ldr r1, [r5] + mov r0, #0 + mvn r0, r0 + add r2, r1, #0 + mul r2, r0 + str r2, [r5] + ldr r1, [r5, #4] + mul r0, r1 + str r0, [r5, #4] +_02255CDE: + ldr r1, _02255E74 ; =0x00000163 + ldr r0, [sp, #0xc] + mov r2, #0x14 + strb r2, [r0, r1] + b _02255DBA +_02255CE8: + ldr r0, [sp] + sub r1, #0x18 + add r1, r0, r1 + add r0, r1, r6 + add r1, r1, r7 + add r2, sp, #0x68 + bl VEC_Subtract + add r0, sp, #0x68 + bl VEC_Mag + add r0, sp, #0x68 + add r1, sp, #0x5c + bl VEC_Normalize + mov r1, #0x4f + ldr r0, [sp] + lsl r1, r1, #2 + add r0, r0, r1 + str r0, [sp, #0x4c] + ldr r1, [sp, #0x4c] + add r0, r0, r6 + add r1, r1, r7 + add r2, sp, #0x50 + bl VEC_Subtract + add r0, sp, #0x50 + add r1, sp, #0x5c + bl VEC_DotProduct + mov r5, #0x4f + ldr r2, [sp, #0x4c] + str r0, [sp, #0x44] + ldr r3, [sp] + lsl r5, r5, #2 + add r3, r3, r5 + neg r0, r0 + add r1, sp, #0x5c + add r2, r2, r6 + add r3, r3, r6 + bl VEC_MultAdd + ldr r3, [sp] + ldr r2, [sp, #0x4c] + add r3, r3, r5 + ldr r0, [sp, #0x44] + add r1, sp, #0x5c + add r2, r2, r7 + add r3, r3, r7 + bl VEC_MultAdd + ldr r0, [sp] + add r1, r5, #0 + ldr r3, [sp] + add r1, #0x27 + add r0, r0, r6 + mov r2, #0x14 + strb r2, [r0, r1] + add r3, r3, r7 + strb r2, [r3, r1] + mov r2, #0 + add r5, r1, #3 + strb r2, [r0, r5] + add r0, r5, #0 + strb r2, [r3, r0] + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _02255D76 + ldr r0, [sp, #0x2c] + cmp r0, #2 + beq _02255DBA +_02255D76: + ldr r0, [sp, #0x2c] + cmp r0, #1 + b _02255DBA +_02255D7C: + ldr r0, [sp, #0x30] + mov r1, #0x38 + add r2, r0, #0 + mul r2, r1 + ldr r0, [sp] + sub r1, #0x39 + add r0, r0, r2 + mov r2, #0x4f + lsl r2, r2, #2 + ldr r3, [r0, r2] + mul r1, r3 + str r1, [r0, r2] + mov r1, #0 + add r2, #0x2a + strb r1, [r0, r2] + b _02255DBA +_02255D9C: + ldr r0, [sp, #0x30] + mov r1, #0x38 + add r2, r0, #0 + mul r2, r1 + ldr r0, [sp] + sub r1, #0x39 + add r0, r0, r2 + mov r2, #5 + lsl r2, r2, #6 + ldr r3, [r0, r2] + mul r1, r3 + str r1, [r0, r2] + mov r1, #0 + add r2, #0x26 + strb r1, [r0, r2] +_02255DBA: + ldr r0, [sp, #0x34] + sub r0, r0, r4 + str r0, [sp, #0x34] + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _02255DC8 + b _0225592E +_02255DC8: + ldr r0, [sp, #4] + mov r5, #0 + ldr r0, [r0] + cmp r0, #0 + ble _02255E6E + ldr r4, [sp] + mov r1, #0x55 + add r0, r4, #0 + lsl r1, r1, #2 + add r7, r0, r1 + sub r1, #0xc + add r6, r0, r1 + str r0, [sp, #0x48] + add r0, #0xa4 + str r0, [sp, #0x48] +_02255DE6: + mov r0, #0x16 + lsl r0, r0, #4 + ldrb r0, [r4, r0] + cmp r0, #3 + bhs _02255E22 + mov r0, #0x59 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _02255E08 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl MOD20_02253F28 + b _02255E22 +_02255E08: + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + ble _02255E16 + mov r1, #7 + b _02255E18 +_02255E16: + mov r1, #6 +_02255E18: + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD20_02253F28 +_02255E22: + ldr r2, [sp, #0x48] + add r0, r6, #0 + add r1, r7, #0 + bl VEC_Add + ldr r1, [sp] + ldr r2, [sp] + mov r0, #0x4d + lsl r0, r0, #2 + add r1, #0xa4 + add r2, #0xa8 + ldr r0, [r4, r0] + ldr r1, [r1] + ldr r2, [r2] + bl MOD20_02253F64 + mov r2, #0x53 + mov r0, #0x4e + mov r1, #0x52 + lsl r2, r2, #2 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r3, [r4, r2] + mov r2, #2 + lsl r2, r2, #0xe + ldr r0, [r4, r0] + ldr r1, [r4, r1] + add r2, r3, r2 + bl MOD20_02253F64 + ldr r0, [sp, #4] + add r5, r5, #1 + ldr r0, [r0] + add r4, #0x38 + add r7, #0x38 + add r6, #0x38 + cmp r5, r0 + blt _02255DE6 +_02255E6E: + add sp, #0x74 + pop {r4, r5, r6, r7, pc} + nop +_02255E74: .word 0x00000163 + thumb_func_end MOD28_02255920 + ; 0x02255E78 + .incbin "baserom.nds", 0x28C038, 0x148 diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s new file mode 100644 index 00000000..818f41aa --- /dev/null +++ b/arm9/modules/29/asm/module_29.s @@ -0,0 +1,1126 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD29_02254840 +MOD29_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD29_02254854 + ldr r1, _02254850 ; =MOD29_02254914 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD29_02254854 +_02254850: .word MOD29_02254914 + thumb_func_end MOD29_02254840 + + thumb_func_start MOD29_02254854 +MOD29_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x54 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD29_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD29_022548E0 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD29_022548E0 + thumb_func_end MOD29_02254854 + + thumb_func_start MOD29_0225489C +MOD29_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x48 + add r1, r5, #4 + bl MOD29_02254BC0 + cmp r0, #0 + beq _022548BE + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + str r0, [r5, #0x50] + str r4, [r5, #0x4c] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548BE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD29_0225489C + + thumb_func_start MOD29_022548C4 +MOD29_022548C4: ; 0x022548C4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _022548D2 + bl FUN_02016A18 +_022548D2: + ldr r0, [r4, #0x48] + bl MOD29_02254C84 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD29_022548C4 + + thumb_func_start MOD29_022548E0 +MOD29_022548E0: ; 0x022548E0 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _0225490C + lsl r2, r1, #2 + ldr r1, _02254910 ; =0x0225509C + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225490C + add r0, r4, #0 + bl MOD29_022548C4 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x4c] + bl MOD20_022529A0 +_0225490C: + pop {r3, r4, r5, pc} + nop +_02254910: .word 0x0225509C + thumb_func_end MOD29_022548E0 + + thumb_func_start MOD29_02254914 +MOD29_02254914: ; 0x02254914 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD29_02254914 + + thumb_func_start MOD29_0225491C +MOD29_0225491C: ; 0x0225491C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254924 + b _02254926 +_02254924: + mov r1, #2 +_02254926: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD29_0225491C + + thumb_func_start MOD29_02254930 +MOD29_02254930: ; 0x02254930 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254940 + cmp r0, #1 + beq _02254950 + b _0225496A +_02254940: + ldr r0, [r4, #0x48] + mov r1, #0 + bl MOD29_02254CC0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _0225496A +_02254950: + ldr r0, [r4, #0x48] + mov r1, #0 + bl MOD29_02254CE4 + cmp r0, #0 + beq _0225496A + ldr r0, [r4, #0x4c] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD29_0225491C +_0225496A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254930 + + thumb_func_start MOD29_02254970 +MOD29_02254970: ; 0x02254970 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254990 + ldr r0, [r4, #0x48] + bl MOD29_0225508C + add r0, r4, #0 + mov r1, #2 + bl MOD29_0225491C + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254990: + ldrb r1, [r4, #1] + cmp r1, #3 + bhi _02254A5A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022549A2: ; jump table + .short _022549AA - _022549A2 - 2 ; case 0 + .short _022549D4 - _022549A2 - 2 ; case 1 + .short _02254A2A - _022549A2 - 2 ; case 2 + .short _02254A3C - _022549A2 - 2 ; case 3 +_022549AA: + add r1, sp, #4 + add r2, sp, #0 + bl MOD29_02254A64 + cmp r0, #0 + beq _02254A5A + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl MOD29_02254AA8 + ldr r0, _02254A60 ; =0x00000668 + bl MOD20_02252B28 + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CC0 + mov r0, #1 + strb r0, [r4, #1] + b _02254A5A +_022549D4: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CE4 + cmp r0, #0 + beq _022549E6 + mov r0, #0 + strb r0, [r4, #1] + b _02254A5A +_022549E6: + ldr r0, [r4, #0x4c] + bl MOD20_02252C30 + cmp r0, #1 + beq _022549FA + ldr r0, [r4, #0x4c] + bl MOD20_02252C08 + cmp r0, #0 + beq _02254A06 +_022549FA: + ldr r0, [r4, #0x48] + bl MOD29_0225508C + mov r0, #2 + strb r0, [r4, #1] + b _02254A5A +_02254A06: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD29_02254A64 + cmp r0, #0 + beq _02254A5A + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl MOD29_02254AA8 + ldr r0, [r4, #0x48] + bl MOD29_0225508C + mov r0, #3 + strb r0, [r4, #1] + b _02254A5A +_02254A2A: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CE4 + cmp r0, #0 + beq _02254A5A + mov r0, #0 + strb r0, [r4, #1] + b _02254A5A +_02254A3C: + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CE4 + cmp r0, #0 + beq _02254A5A + ldr r0, _02254A60 ; =0x00000668 + bl MOD20_02252B28 + ldr r0, [r4, #0x48] + mov r1, #2 + bl MOD29_02254CC0 + mov r0, #1 + strb r0, [r4, #1] +_02254A5A: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02254A60: .word 0x00000668 + thumb_func_end MOD29_02254970 + + thumb_func_start MOD29_02254A64 +MOD29_02254A64: ; 0x02254A64 + push {r3, r4, r5, lr} + ldr r0, [r0, #0x4c] + add r5, r1, #0 + add r4, r2, #0 + bl MOD20_02252C08 + cmp r0, #0 + bne _02254AA4 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02020ACC + cmp r0, #0 + beq _02254AA4 + ldr r0, [r5] + sub r0, #0x18 + cmp r0, #0xb0 + bhs _02254A8C + mov r1, #1 + b _02254A8E +_02254A8C: + mov r1, #0 +_02254A8E: + ldr r0, [r4] + sub r0, #0x18 + cmp r0, #0x90 + bhs _02254A9A + mov r0, #1 + b _02254A9C +_02254A9A: + mov r0, #0 +_02254A9C: + tst r0, r1 + beq _02254AA4 + mov r0, #1 + pop {r3, r4, r5, pc} +_02254AA4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD29_02254A64 + + thumb_func_start MOD29_02254AA8 +MOD29_02254AA8: ; 0x02254AA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x4c] + add r7, r1, #0 + str r2, [sp] + bl MOD20_02252C38 + mov r1, #8 + bl FUN_02039754 + str r0, [sp, #4] + add r4, r5, #4 + mov r1, #0 + str r1, [r4, #8] + ldr r0, [sp] + str r7, [r5, #4] + str r0, [r4, #4] + ldr r0, [sp, #4] + str r1, [r4, #0xc] + cmp r0, #0 + beq _02254B66 + ldrb r0, [r0, #4] + cmp r0, #0xff + beq _02254B60 + add r6, r4, #0 + ldr r5, [sp, #4] + add r6, #0xc +_02254AE0: + ldrh r0, [r5] + ldrh r1, [r5, #2] + add r2, sp, #0xc + add r3, sp, #8 + bl MOD29_02254B70 + ldr r1, [sp, #8] + ldr r0, [sp] + sub r0, r1, r0 + ldr r1, [sp, #0xc] + sub r1, r1, r7 + add r2, r1, #0 + mul r2, r1 + add r1, r0, #0 + mul r1, r0 + add r0, r2, r1 + lsl r0, r0, #0xc + blx FX_Sqrt + ldrb r1, [r5, #4] + lsl r2, r1, #2 + ldr r1, _02254B6C ; =0x022550A8 + ldr r1, [r1, r2] + cmp r0, r1 + bgt _02254B46 + ldr r1, [r4, #0xc] + cmp r1, #8 + bhs _02254B58 + mov r2, #6 + mul r2, r1 + ldr r0, [sp, #0xc] + add r1, r4, r2 + strh r0, [r1, #0x10] + ldr r2, [r4, #0xc] + mov r1, #6 + mul r1, r2 + ldr r0, [sp, #8] + add r1, r4, r1 + strh r0, [r1, #0x12] + ldr r2, [r4, #0xc] + mov r1, #6 + mul r1, r2 + ldrb r0, [r5, #4] + add r1, r4, r1 + strh r0, [r1, #0x14] + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + mov r0, #2 + str r0, [r4, #8] + b _02254B58 +_02254B46: + mov r1, #3 + lsl r1, r1, #0x10 + cmp r0, r1 + bgt _02254B58 + ldr r0, [r4, #8] + cmp r0, #0 + bne _02254B58 + mov r0, #1 + str r0, [r4, #8] +_02254B58: + add r5, r5, #6 + ldrb r0, [r5, #4] + cmp r0, #0xff + bne _02254AE0 +_02254B60: + ldr r0, [sp, #4] + bl FUN_02016A18 +_02254B66: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254B6C: .word 0x022550A8 + thumb_func_end MOD29_02254AA8 + + thumb_func_start MOD29_02254B70 +MOD29_02254B70: ; 0x02254B70 + push {r4, r5} + sub r4, r0, #7 + mov r0, #0xb + add r5, r4, #0 + mul r5, r0 + sub r1, r1, #7 + add r5, #0x70 + mul r0, r1 + str r5, [r2] + add r0, #0x65 + str r0, [r3] + pop {r4, r5} + bx lr + .align 2, 0 + thumb_func_end MOD29_02254B70 + + thumb_func_start MOD29_02254B8C +MOD29_02254B8C: ; 0x02254B8C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B9C + cmp r0, #1 + beq _02254BAC + b _02254BBA +_02254B9C: + ldr r0, [r4, #0x48] + mov r1, #1 + bl MOD29_02254CC0 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254BBA +_02254BAC: + ldr r0, [r4, #0x48] + bl MOD29_02254CF0 + cmp r0, #0 + beq _02254BBA + mov r0, #1 + pop {r4, pc} +_02254BBA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254B8C + + thumb_func_start MOD29_02254BC0 +MOD29_02254BC0: ; 0x02254BC0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x90 + bl FUN_02016998 + add r4, r0, #0 + beq _02254C04 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x6c] + bl MOD20_02252D24 + str r0, [r4, #0x30] + mov r1, #0 + str r1, [r4, #0x34] + add r2, r4, #0 + add r0, r1, #0 +_02254BF4: + add r1, r1, #1 + str r0, [r2, #0x38] + add r2, r2, #4 + cmp r1, #8 + blt _02254BF4 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254C04: + mov r0, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD29_02254BC0 + + thumb_func_start MOD29_02254C08 +MOD29_02254C08: ; 0x02254C08 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + mov r0, #8 + str r0, [sp] + add r0, r6, #0 + add r0, #0x58 + mov r1, #0xc + mov r2, #0x28 + mov r3, #0x29 + bl MOD20_02253FBC + cmp r0, #0 + beq _02254C74 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x2a + bl FUN_02006A34 + add r2, r6, #0 + ldr r0, [r6, #0x30] + ldr r1, _02254C7C ; =0x022550C0 + add r2, #0x58 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r6, #0x34] + bl MOD20_02253F78 + add r7, r6, #0 + mov r4, #0 + add r5, r6, #0 + add r7, #0x58 +_02254C54: + ldr r0, [r6, #0x30] + ldr r1, _02254C80 ; =0x022550D0 + add r2, r7, #0 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r5, #0x38] + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02254C54 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02254C74: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02254C7C: .word 0x022550C0 +_02254C80: .word 0x022550D0 + thumb_func_end MOD29_02254C08 + + thumb_func_start MOD29_02254C84 +MOD29_02254C84: ; 0x02254C84 + push {r4, r5, r6, lr} + add r6, r0, #0 + beq _02254CBC + mov r4, #0 + add r5, r6, #0 +_02254C8E: + ldr r1, [r5, #0x38] + cmp r1, #0 + beq _02254C9A + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254C9A: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02254C8E + ldr r1, [r6, #0x34] + cmp r1, #0 + beq _02254CAE + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254CAE: + add r0, r6, #0 + add r0, #0x58 + bl MOD20_02254014 + add r0, r6, #0 + bl FUN_02016A18 +_02254CBC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02254C84 + + thumb_func_start MOD29_02254CC0 +MOD29_02254CC0: ; 0x02254CC0 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254CE0 ; =0x022550FC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254CE0: .word 0x022550FC + thumb_func_end MOD29_02254CC0 + + thumb_func_start MOD29_02254CE4 +MOD29_02254CE4: ; 0x02254CE4 + ldr r3, _02254CEC ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254CEC: .word MOD20_02253794 + thumb_func_end MOD29_02254CE4 + + thumb_func_start MOD29_02254CF0 +MOD29_02254CF0: ; 0x02254CF0 + ldr r3, _02254CF8 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254CF8: .word MOD20_022537B8 + thumb_func_end MOD29_02254CF0 + + thumb_func_start MOD29_02254CFC +MOD29_02254CFC: ; 0x02254CFC + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254CFC + + thumb_func_start MOD29_02254D10 +MOD29_02254D10: ; 0x02254D10 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02254DE8 ; =0x022550E0 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x27 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0xc + mov r1, #0x26 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r4, #0 + add r0, #0x70 + bl MOD20_02252DEC + add r0, r4, #0 + add r0, #0x80 + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x72 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x70 + mov r1, #0x20 + blx DC_FlushRange + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x70 + lsl r1, r1, #4 + mov r2, #0x20 + blx GXS_LoadOBJPltt + add r0, r4, #0 + add r0, #0x8e + ldrh r1, [r0] + add r0, r4, #0 + add r0, #0x72 + strh r1, [r0] + add r0, r4, #0 + add r0, #0x70 + mov r1, #0x20 + blx DC_FlushRange + add r0, r4, #0 + mov r1, #7 + add r0, #0x70 + lsl r1, r1, #6 + mov r2, #0x20 + blx GXS_LoadOBJPltt + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254DEC ; =0x04001000 + ldr r0, _02254DF0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD29_02254C08 + add r0, r5, #0 + bl MOD29_02254CFC + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254DE8: .word 0x022550E0 +_02254DEC: .word 0x04001000 +_02254DF0: .word 0xFFFFE0FF + thumb_func_end MOD29_02254D10 + + thumb_func_start MOD29_02254DF4 +MOD29_02254DF4: ; 0x02254DF4 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD29_02254CFC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_02254DF4 + + thumb_func_start MOD29_02254E10 +MOD29_02254E10: ; 0x02254E10 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + bl MOD20_022538A0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r7, r0, #0 + add r0, r5, #0 + bl MOD20_022538A8 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + bne _02254E40 + mov r0, #1 + str r0, [r6, #0x6c] + ldr r0, [r7, #8] + str r0, [r4] +_02254E40: + ldr r2, [r4] + ldr r0, [sp] + lsl r3, r2, #2 + ldr r2, _02254E50 ; =0x022550B4 + add r1, r5, #0 + ldr r2, [r2, r3] + blx r2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254E50: .word 0x022550B4 + thumb_func_end MOD29_02254E10 + + thumb_func_start MOD29_02254E54 +MOD29_02254E54: ; 0x02254E54 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254E78 + cmp r0, #1 + beq _02254E9E + pop {r4, r5, r6, pc} +_02254E78: + ldr r1, [r6] + ldr r2, [r6, #4] + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F28 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254E9E: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _02254EB2 + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254EB2: + ldr r0, [r4, #0x34] + bl MOD20_02253F44 + cmp r0, #0 + beq _02254EC8 + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC +_02254EC8: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02254E54 + + thumb_func_start MOD29_02254ECC +MOD29_02254ECC: ; 0x02254ECC + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + add r0, r6, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254EF0 + cmp r0, #1 + beq _02254F16 + pop {r4, r5, r6, pc} +_02254EF0: + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r0, [r5, #0x34] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD20_02253F78 + add r0, r6, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254F16: + ldr r0, [r5, #0x6c] + cmp r0, #0 + bne _02254F2A + add r0, r5, #0 + bl MOD29_02255068 + add r0, r6, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254F2A: + ldr r0, [r5, #0x34] + bl MOD20_02253F44 + cmp r0, #0 + beq _02254F3C + ldr r0, [r5, #0x34] + mov r1, #0 + bl MOD20_02253F28 +_02254F3C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02254ECC + + thumb_func_start MOD29_02254F40 +MOD29_02254F40: ; 0x02254F40 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02254F68 + cmp r0, #1 + beq _02254F96 + cmp r0, #2 + beq _02254FC4 + pop {r4, r5, r6, pc} +_02254F68: + add r0, r4, #0 + add r1, r6, #0 + bl MOD29_02254FF4 + ldr r1, [r6] + ldr r2, [r6, #4] + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F78 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254F96: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _02254FAA + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254FAA: + ldr r0, [r4, #0x34] + bl MOD20_02253F44 + cmp r0, #0 + beq _02254FF2 + add r0, r4, #0 + add r1, r6, #0 + bl MOD29_02255020 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r4, r5, r6, pc} +_02254FC4: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _02254FD8 + add r0, r4, #0 + bl MOD29_02255068 + add r0, r5, #0 + bl MOD29_02254CFC + pop {r4, r5, r6, pc} +_02254FD8: + add r0, r4, #0 + bl MOD29_0225505C + cmp r0, #0 + beq _02254FF2 + ldr r0, [r4, #0x34] + mov r1, #0 + bl MOD20_02253F28 + add r0, r5, #0 + mov r1, #1 + bl MOD20_022538B8 +_02254FF2: + pop {r4, r5, r6, pc} + thumb_func_end MOD29_02254F40 + + thumb_func_start MOD29_02254FF4 +MOD29_02254FF4: ; 0x02254FF4 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + ldr r0, [r7, #0xc] + mov r6, #0 + cmp r0, #0 + bls _0225501E + add r4, r7, #0 +_02255004: + ldrh r1, [r4, #0x10] + ldrh r2, [r4, #0x12] + ldr r0, [r5, #0x38] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r7, #0xc] + add r6, r6, #1 + add r4, r4, #6 + add r5, r5, #4 + cmp r6, r0 + blo _02255004 +_0225501E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD29_02254FF4 + + thumb_func_start MOD29_02255020 +MOD29_02255020: ; 0x02255020 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r1, #0 + ldr r0, [r0, #0xc] + mov r6, #0 + str r1, [sp] + cmp r0, #0 + bls _0225505A + add r4, r1, #0 +_02255032: + ldrh r0, [r4, #0x14] + add r7, r0, #1 + cmp r7, #3 + blo _0225503C + mov r7, #3 +_0225503C: + ldr r0, [r5, #0x38] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x38] + add r1, r7, #0 + bl MOD20_02253F28 + ldr r0, [sp] + add r6, r6, #1 + ldr r0, [r0, #0xc] + add r4, r4, #6 + add r5, r5, #4 + cmp r6, r0 + blo _02255032 +_0225505A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD29_02255020 + + thumb_func_start MOD29_0225505C +MOD29_0225505C: ; 0x0225505C + ldr r3, _02255064 ; =MOD20_02253F44 + ldr r0, [r0, #0x38] + bx r3 + nop +_02255064: .word MOD20_02253F44 + thumb_func_end MOD29_0225505C + + thumb_func_start MOD29_02255068 +MOD29_02255068: ; 0x02255068 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x34] + mov r1, #1 + bl MOD20_02253F78 + mov r4, #0 + mov r6, #1 +_02255078: + ldr r0, [r5, #0x38] + add r1, r6, #0 + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _02255078 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD29_02255068 + + thumb_func_start MOD29_0225508C +MOD29_0225508C: ; 0x0225508C + push {r4, lr} + add r4, r0, #0 + bl MOD29_02255068 + mov r0, #0 + str r0, [r4, #0x6c] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD29_0225508C + + .section .data + ; 0x0225509C + .incbin "baserom.nds", 0x28CA5C, 0xA4 diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s new file mode 100644 index 00000000..36581e76 --- /dev/null +++ b/arm9/modules/30/asm/module_30.s @@ -0,0 +1,734 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD30_02254840 +MOD30_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD30_02254854 + ldr r1, _02254850 ; =MOD30_0225496C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD30_02254854 +_02254850: .word MOD30_0225496C + thumb_func_end MOD30_02254840 + + thumb_func_start MOD30_02254854 +MOD30_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD30_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD30_02254930 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD30_02254930 + thumb_func_end MOD30_02254854 + + thumb_func_start MOD30_0225489C +MOD30_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #1 + add r1, r5, #0 + add r7, r2, #0 + add r4, r3, #0 + str r0, [r5, #0xc] + add r0, r4, #0 + add r1, #8 + mov r2, #4 + bl FUN_02089418 + cmp r0, #0 + bne _022548BE + mov r0, #0 + str r0, [r5, #8] +_022548BE: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x10 + add r1, #8 + add r2, r7, #0 + str r4, [r5, #4] + bl MOD30_02254A90 + cmp r0, #0 + beq _022548F6 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _022548FC ; =0x02254DA0 + ldr r2, _02254900 ; =MOD30_02254904 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x18] + mov r0, #0 + str r0, [r5, #0x1c] + str r6, [r5, #0x14] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022548F6: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022548FC: .word 0x02254DA0 +_02254900: .word MOD30_02254904 + thumb_func_end MOD30_0225489C + + thumb_func_start MOD30_02254904 +MOD30_02254904: ; 0x02254904 + cmp r0, #0 + bne _0225490A + str r1, [r3, #0x1c] +_0225490A: + bx lr + thumb_func_end MOD30_02254904 + + thumb_func_start MOD30_0225490C +MOD30_0225490C: ; 0x0225490C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #8 + mov r2, #4 + bl FUN_020893F0 + ldr r0, [r4, #0x18] + bl MOD20_02254198 + ldr r0, [r4, #0x10] + bl MOD30_02254ACC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD30_0225490C + + thumb_func_start MOD30_02254930 +MOD30_02254930: ; 0x02254930 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254966 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254968 ; =0x02254DA4 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254966 + add r0, r4, #0 + bl MOD30_0225490C + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x14] + bl MOD20_022529A0 +_02254966: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254968: .word 0x02254DA4 + thumb_func_end MOD30_02254930 + + thumb_func_start MOD30_0225496C +MOD30_0225496C: ; 0x0225496C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD30_0225496C + + thumb_func_start MOD30_02254974 +MOD30_02254974: ; 0x02254974 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225497C + b _0225497E +_0225497C: + mov r1, #2 +_0225497E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD30_02254974 + + thumb_func_start MOD30_02254988 +MOD30_02254988: ; 0x02254988 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254998 + cmp r0, #1 + beq _022549A8 + b _022549C2 +_02254998: + ldr r0, [r4, #0x10] + mov r1, #0 + bl MOD30_02254BC8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549C2 +_022549A8: + ldr r0, [r4, #0x10] + mov r1, #0 + bl MOD30_02254BEC + cmp r0, #0 + beq _022549C2 + ldr r0, [r4, #0x14] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD30_02254974 +_022549C2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254988 + + thumb_func_start MOD30_022549C8 +MOD30_022549C8: ; 0x022549C8 + push {r4, lr} + add r4, r0, #0 + ldrb r2, [r4, #2] + add r1, r4, #0 + add r1, #8 + cmp r2, #0 + beq _022549E0 + mov r1, #2 + bl MOD30_02254974 + mov r0, #0 + pop {r4, pc} +_022549E0: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549EC + cmp r0, #1 + beq _02254A0A + b _02254A52 +_022549EC: + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _02254A52 + mov r0, #0 + str r0, [r1, #4] + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD30_02254BC8 + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A52 +_02254A0A: + ldr r0, [r4, #0x1c] + cmp r0, #2 + bne _02254A24 + mov r0, #1 + str r0, [r1, #4] + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD30_02254BC8 + mov r0, #0 + str r0, [r4, #0x1c] + strb r0, [r4, #1] + b _02254A52 +_02254A24: + cmp r0, #3 + bne _02254A52 + mov r0, #1 + str r0, [r1, #4] + ldr r0, [r1] + add r2, r0, #1 + ldr r0, _02254A58 ; =0x0000270F + str r2, [r1] + cmp r2, r0 + bls _02254A3C + mov r0, #0 + str r0, [r1] +_02254A3C: + ldr r0, [r4, #0x10] + mov r1, #2 + bl MOD30_02254BC8 + ldr r0, [r4, #0x10] + mov r1, #3 + bl MOD30_02254BC8 + mov r0, #0 + str r0, [r4, #0x1c] + strb r0, [r4, #1] +_02254A52: + mov r0, #0 + pop {r4, pc} + nop +_02254A58: .word 0x0000270F + thumb_func_end MOD30_022549C8 + + thumb_func_start MOD30_02254A5C +MOD30_02254A5C: ; 0x02254A5C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A6C + cmp r0, #1 + beq _02254A7C + b _02254A8A +_02254A6C: + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD30_02254BC8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A8A +_02254A7C: + ldr r0, [r4, #0x10] + bl MOD30_02254BF8 + cmp r0, #0 + beq _02254A8A + mov r0, #1 + pop {r4, pc} +_02254A8A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254A5C + + thumb_func_start MOD30_02254A90 +MOD30_02254A90: ; 0x02254A90 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x60 + bl FUN_02016998 + add r4, r0, #0 + beq _02254AC6 + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD30_02254AE0 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254AC6: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD30_02254A90 + + thumb_func_start MOD30_02254ACC +MOD30_02254ACC: ; 0x02254ACC + push {r4, lr} + add r4, r0, #0 + beq _02254ADC + bl MOD30_02254B94 + add r0, r4, #0 + bl FUN_02016A18 +_02254ADC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254ACC + + thumb_func_start MOD30_02254AE0 +MOD30_02254AE0: ; 0x02254AE0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r1, [sp, #0xc] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x2f + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x38 + mov r1, #0xc + mov r2, #0x2d + mov r3, #0x2e + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x4c + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r2, r7, #0 + ldr r0, [r7, #0x20] + ldr r1, _02254B8C ; =0x02254DB0 + add r2, #0x38 + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r7, #0x24] + bl MOD20_02253FA4 + add r0, r7, #0 + mov r5, #0x16 + str r0, [sp, #0x10] + add r0, #0x4c + mov r6, #0 + add r4, r7, #0 + lsl r5, r5, #0xe + str r0, [sp, #0x10] +_02254B5C: + ldr r0, [r7, #0x20] + ldr r1, _02254B90 ; =0x02254DC0 + ldr r2, [sp, #0x10] + bl MOD20_02253E74 + mov r2, #1 + add r1, r5, #0 + lsl r2, r2, #0x12 + str r0, [r4, #0x28] + bl MOD20_02253F64 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, r0 + cmp r6, #4 + blt _02254B5C + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD30_02254D28 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254B8C: .word 0x02254DB0 +_02254B90: .word 0x02254DC0 + thumb_func_end MOD30_02254AE0 + + thumb_func_start MOD30_02254B94 +MOD30_02254B94: ; 0x02254B94 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #0x20] + ldr r1, [r6, #0x24] + bl MOD20_02253F14 + mov r4, #0 + add r5, r6, #0 +_02254BA4: + ldr r0, [r6, #0x20] + ldr r1, [r5, #0x28] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02254BA4 + add r0, r6, #0 + add r0, #0x38 + bl MOD20_02254014 + add r6, #0x4c + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD30_02254B94 + + thumb_func_start MOD30_02254BC8 +MOD30_02254BC8: ; 0x02254BC8 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254BE8 ; =0x02254DEC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BE8: .word 0x02254DEC + thumb_func_end MOD30_02254BC8 + + thumb_func_start MOD30_02254BEC +MOD30_02254BEC: ; 0x02254BEC + ldr r3, _02254BF4 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254BF4: .word MOD20_02253794 + thumb_func_end MOD30_02254BEC + + thumb_func_start MOD30_02254BF8 +MOD30_02254BF8: ; 0x02254BF8 + ldr r3, _02254C00 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254C00: .word MOD20_022537B8 + thumb_func_end MOD30_02254BF8 + + thumb_func_start MOD30_02254C04 +MOD30_02254C04: ; 0x02254C04 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254C04 + + thumb_func_start MOD30_02254C18 +MOD30_02254C18: ; 0x02254C18 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254C9C ; =0x02254DD0 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x2c + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x2b + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254CA0 ; =0x04001000 + ldr r0, _02254CA4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD30_02254C04 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254C9C: .word 0x02254DD0 +_02254CA0: .word 0x04001000 +_02254CA4: .word 0xFFFFE0FF + thumb_func_end MOD30_02254C18 + + thumb_func_start MOD30_02254CA8 +MOD30_02254CA8: ; 0x02254CA8 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD30_02254C04 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD30_02254CA8 + + thumb_func_start MOD30_02254CC4 +MOD30_02254CC4: ; 0x02254CC4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02254CDE + cmp r0, #1 + beq _02254CEE + b _02254CF6 +_02254CDE: + ldr r0, _02254D00 ; =0x00000669 + bl MOD20_02252B28 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD20_02253F28 + b _02254CF6 +_02254CEE: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD20_02253F28 +_02254CF6: + add r0, r5, #0 + bl MOD30_02254C04 + pop {r3, r4, r5, pc} + nop +_02254D00: .word 0x00000669 + thumb_func_end MOD30_02254CC4 + + thumb_func_start MOD30_02254D04 +MOD30_02254D04: ; 0x02254D04 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD30_02254D28 + add r0, r5, #0 + bl MOD30_02254C04 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD30_02254D04 + + thumb_func_start MOD30_02254D28 +MOD30_02254D28: ; 0x02254D28 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, [r1] + ldr r5, _02254D8C ; =0x04000280 + str r0, [sp, #4] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + lsr r4, r5, #0xb + lsr r6, r5, #0xb +_02254D42: + mov r0, #0 + strh r0, [r5] + ldr r1, [sp, #4] + ldr r0, _02254D90 ; =0x04000290 + str r1, [r0] + ldr r1, [sp] + str r1, [r0, #8] + ldr r0, _02254D94 ; =0x04000298 + mov r1, #0 + str r1, [r0, #4] +_02254D56: + ldrh r0, [r5] + tst r0, r4 + bne _02254D56 + ldr r1, _02254D98 ; =0x040002A0 + ldr r0, [r7, #0x28] + ldr r1, [r1] + bl MOD20_02253F28 +_02254D66: + ldrh r0, [r5] + tst r0, r6 + bne _02254D66 + ldr r0, _02254D9C ; =0x040002A8 + mov r1, #0xa + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, [sp] + bl _u32_div_f + str r0, [sp] + ldr r0, [sp, #8] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #4 + blt _02254D42 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254D8C: .word 0x04000280 +_02254D90: .word 0x04000290 +_02254D94: .word 0x04000298 +_02254D98: .word 0x040002A0 +_02254D9C: .word 0x040002A8 + thumb_func_end MOD30_02254D28 + + .section .data + ; 0x02254DA0 + .incbin "baserom.nds", 0x28D160, 0xA0 diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s new file mode 100644 index 00000000..cdf3282a --- /dev/null +++ b/arm9/modules/31/asm/module_31.s @@ -0,0 +1,724 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD31_02254840 +MOD31_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD31_02254854 + ldr r1, _02254850 ; =MOD31_02254954 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD31_02254854 +_02254850: .word MOD31_02254954 + thumb_func_end MOD31_02254840 + + thumb_func_start MOD31_02254854 +MOD31_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x20 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD31_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD31_02254918 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD31_02254918 + thumb_func_end MOD31_02254854 + + thumb_func_start MOD31_0225489C +MOD31_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + str r1, [r5, #0x10] + add r0, r1, #0 + add r4, r2, #0 + bl MOD20_02252C3C + str r0, [r5, #0x1c] + mov r0, #1 + str r0, [r5, #8] + ldr r0, [r5, #0x1c] + bl FUN_0204BF84 + str r0, [r5, #4] + add r0, r5, #0 + add r0, #0xc + add r1, r5, #4 + add r2, r4, #0 + bl MOD31_02254A84 + cmp r0, #0 + beq _022548EA + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _022548F0 ; =0x02254D98 + ldr r2, _022548F4 ; =MOD31_022548F8 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548EA: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_022548F0: .word 0x02254D98 +_022548F4: .word MOD31_022548F8 + thumb_func_end MOD31_0225489C + + thumb_func_start MOD31_022548F8 +MOD31_022548F8: ; 0x022548F8 + cmp r0, #0 + bne _022548FE + str r1, [r3, #0x18] +_022548FE: + bx lr + thumb_func_end MOD31_022548F8 + + thumb_func_start MOD31_02254900 +MOD31_02254900: ; 0x02254900 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl MOD20_02254198 + ldr r0, [r4, #0xc] + bl MOD31_02254AC0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD31_02254900 + + thumb_func_start MOD31_02254918 +MOD31_02254918: ; 0x02254918 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _0225494E + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254950 ; =0x02254D9C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225494E + add r0, r4, #0 + bl MOD31_02254900 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x10] + bl MOD20_022529A0 +_0225494E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254950: .word 0x02254D9C + thumb_func_end MOD31_02254918 + + thumb_func_start MOD31_02254954 +MOD31_02254954: ; 0x02254954 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD31_02254954 + + thumb_func_start MOD31_0225495C +MOD31_0225495C: ; 0x0225495C + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254964 + b _02254966 +_02254964: + mov r1, #2 +_02254966: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD31_0225495C + + thumb_func_start MOD31_02254970 +MOD31_02254970: ; 0x02254970 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254980 + cmp r0, #1 + beq _02254990 + b _022549AA +_02254980: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD31_02254BBC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549AA +_02254990: + ldr r0, [r4, #0xc] + mov r1, #0 + bl MOD31_02254BE0 + cmp r0, #0 + beq _022549AA + ldr r0, [r4, #0x10] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD31_0225495C +_022549AA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254970 + + thumb_func_start MOD31_022549B0 +MOD31_022549B0: ; 0x022549B0 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549C4 + mov r1, #2 + bl MOD31_0225495C + mov r0, #0 + pop {r4, pc} +_022549C4: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549D0 + cmp r0, #1 + beq _02254A0A + b _02254A4C +_022549D0: + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _022549EE + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD31_02254BBC + mov r0, #0 + str r0, [r4, #0x18] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A4C +_022549EE: + ldr r0, [r4, #0x10] + bl MOD20_02252C34 + cmp r0, #0 + beq _02254A4C + ldr r0, [r4, #0x1c] + bl FUN_0204BF84 + str r0, [r4, #4] + ldr r0, [r4, #0xc] + mov r1, #3 + bl MOD31_02254BBC + b _02254A4C +_02254A0A: + ldr r0, [r4, #0x18] + cmp r0, #2 + bne _02254A24 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD31_02254BBC + mov r0, #0 + str r0, [r4, #0x18] + strb r0, [r4, #1] + b _02254A4C +_02254A24: + cmp r0, #3 + bne _02254A4C + mov r0, #1 + str r0, [r4, #8] + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_0204BF88 + ldr r0, [r4, #0xc] + mov r1, #2 + bl MOD31_02254BBC + ldr r0, [r4, #0xc] + mov r1, #3 + bl MOD31_02254BBC + mov r0, #0 + str r0, [r4, #0x18] + strb r0, [r4, #1] +_02254A4C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD31_022549B0 + + thumb_func_start MOD31_02254A50 +MOD31_02254A50: ; 0x02254A50 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A60 + cmp r0, #1 + beq _02254A70 + b _02254A7E +_02254A60: + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD31_02254BBC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A7E +_02254A70: + ldr r0, [r4, #0xc] + bl MOD31_02254BEC + cmp r0, #0 + beq _02254A7E + mov r0, #1 + pop {r4, pc} +_02254A7E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254A50 + + thumb_func_start MOD31_02254A84 +MOD31_02254A84: ; 0x02254A84 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x64 + bl FUN_02016998 + add r4, r0, #0 + beq _02254ABA + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD31_02254AD4 + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254ABA: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD31_02254A84 + + thumb_func_start MOD31_02254AC0 +MOD31_02254AC0: ; 0x02254AC0 + push {r4, lr} + add r4, r0, #0 + beq _02254AD0 + bl MOD31_02254B88 + add r0, r4, #0 + bl FUN_02016A18 +_02254AD0: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254AC0 + + thumb_func_start MOD31_02254AD4 +MOD31_02254AD4: ; 0x02254AD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r7, r0, #0 + str r1, [sp, #0xc] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x34 + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x3c + mov r1, #0xc + mov r2, #0x32 + mov r3, #0x33 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r7, #0 + add r0, #0x50 + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r2, r7, #0 + ldr r0, [r7, #0x20] + ldr r1, _02254B80 ; =0x02254DA8 + add r2, #0x3c + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r7, #0x24] + bl MOD20_02253FA4 + add r0, r7, #0 + mov r5, #5 + str r0, [sp, #0x10] + add r0, #0x50 + mov r6, #0 + add r4, r7, #0 + lsl r5, r5, #0x10 + str r0, [sp, #0x10] +_02254B50: + ldr r0, [r7, #0x20] + ldr r1, _02254B84 ; =0x02254DB8 + ldr r2, [sp, #0x10] + bl MOD20_02253E74 + mov r2, #1 + add r1, r5, #0 + lsl r2, r2, #0x12 + str r0, [r4, #0x28] + bl MOD20_02253F64 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, r0 + cmp r6, #5 + blt _02254B50 + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD31_02254D1C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254B80: .word 0x02254DA8 +_02254B84: .word 0x02254DB8 + thumb_func_end MOD31_02254AD4 + + thumb_func_start MOD31_02254B88 +MOD31_02254B88: ; 0x02254B88 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6, #0x20] + ldr r1, [r6, #0x24] + bl MOD20_02253F14 + mov r4, #0 + add r5, r6, #0 +_02254B98: + ldr r0, [r6, #0x20] + ldr r1, [r5, #0x28] + bl MOD20_02253F14 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02254B98 + add r0, r6, #0 + add r0, #0x3c + bl MOD20_02254014 + add r6, #0x50 + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD31_02254B88 + + thumb_func_start MOD31_02254BBC +MOD31_02254BBC: ; 0x02254BBC + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254BDC ; =0x02254DE4 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BDC: .word 0x02254DE4 + thumb_func_end MOD31_02254BBC + + thumb_func_start MOD31_02254BE0 +MOD31_02254BE0: ; 0x02254BE0 + ldr r3, _02254BE8 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254BE8: .word MOD20_02253794 + thumb_func_end MOD31_02254BE0 + + thumb_func_start MOD31_02254BEC +MOD31_02254BEC: ; 0x02254BEC + ldr r3, _02254BF4 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254BF4: .word MOD20_022537B8 + thumb_func_end MOD31_02254BEC + + thumb_func_start MOD31_02254BF8 +MOD31_02254BF8: ; 0x02254BF8 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254BF8 + + thumb_func_start MOD31_02254C0C +MOD31_02254C0C: ; 0x02254C0C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254C90 ; =0x02254DC8 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x31 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x30 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254C94 ; =0x04001000 + ldr r0, _02254C98 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD31_02254BF8 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254C90: .word 0x02254DC8 +_02254C94: .word 0x04001000 +_02254C98: .word 0xFFFFE0FF + thumb_func_end MOD31_02254C0C + + thumb_func_start MOD31_02254C9C +MOD31_02254C9C: ; 0x02254C9C + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD31_02254BF8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD31_02254C9C + + thumb_func_start MOD31_02254CB8 +MOD31_02254CB8: ; 0x02254CB8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02254CD2 + cmp r0, #1 + beq _02254CE2 + b _02254CEA +_02254CD2: + ldr r0, _02254CF4 ; =0x00000669 + bl MOD20_02252B28 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD20_02253F28 + b _02254CEA +_02254CE2: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD20_02253F28 +_02254CEA: + add r0, r5, #0 + bl MOD31_02254BF8 + pop {r3, r4, r5, pc} + nop +_02254CF4: .word 0x00000669 + thumb_func_end MOD31_02254CB8 + + thumb_func_start MOD31_02254CF8 +MOD31_02254CF8: ; 0x02254CF8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD31_02254D1C + add r0, r5, #0 + bl MOD31_02254BF8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD31_02254CF8 + + thumb_func_start MOD31_02254D1C +MOD31_02254D1C: ; 0x02254D1C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, [r1] + ldr r5, _02254D80 ; =0x04000280 + str r0, [sp, #4] + ldr r0, _02254D84 ; =0x00002710 + lsr r4, r5, #0xb + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + lsr r6, r5, #0xb +_02254D34: + mov r0, #0 + strh r0, [r5] + ldr r1, [sp, #4] + ldr r0, _02254D88 ; =0x04000290 + str r1, [r0] + ldr r1, [sp] + str r1, [r0, #8] + ldr r0, _02254D8C ; =0x04000298 + mov r1, #0 + str r1, [r0, #4] +_02254D48: + ldrh r0, [r5] + tst r0, r4 + bne _02254D48 + ldr r1, _02254D90 ; =0x040002A0 + ldr r0, [r7, #0x28] + ldr r1, [r1] + bl MOD20_02253F28 +_02254D58: + ldrh r0, [r5] + tst r0, r6 + bne _02254D58 + ldr r0, _02254D94 ; =0x040002A8 + mov r1, #0xa + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, [sp] + bl _u32_div_f + str r0, [sp] + ldr r0, [sp, #8] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #5 + blt _02254D34 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02254D80: .word 0x04000280 +_02254D84: .word 0x00002710 +_02254D88: .word 0x04000290 +_02254D8C: .word 0x04000298 +_02254D90: .word 0x040002A0 +_02254D94: .word 0x040002A8 + thumb_func_end MOD31_02254D1C + + .section .data + ; 0x02254D98 + .incbin "baserom.nds", 0x28D758, 0xA8 diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s new file mode 100644 index 00000000..135a9b15 --- /dev/null +++ b/arm9/modules/32/asm/module_32.s @@ -0,0 +1,576 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD32_02254840 +MOD32_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD32_02254854 + ldr r1, _02254850 ; =MOD32_0225495C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD32_02254854 +_02254850: .word MOD32_0225495C + thumb_func_end MOD32_02254840 + + thumb_func_start MOD32_02254854 +MOD32_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x1c + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD32_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD32_02254920 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD32_02254920 + thumb_func_end MOD32_02254854 + + thumb_func_start MOD32_0225489C +MOD32_0225489C: ; 0x0225489C + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + add r1, sp, #4 + add r6, r2, #0 + bl PM_GetBackLight + ldr r0, [sp, #4] + cmp r0, #1 + bne _022548B8 + mov r0, #1 + b _022548BA +_022548B8: + mov r0, #0 +_022548BA: + str r0, [r5, #4] + add r0, r5, #0 + add r0, #8 + add r1, r5, #4 + add r2, r6, #0 + bl MOD32_02254A54 + cmp r0, #0 + beq _022548F2 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _022548F8 ; =0x02254C54 + ldr r2, _022548FC ; =MOD32_02254918 + mov r1, #2 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + mov r0, #0 + str r0, [r5, #0x14] + add sp, #8 + str r4, [r5, #0xc] + mov r0, #1 + pop {r4, r5, r6, pc} +_022548F2: + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_022548F8: .word 0x02254C54 +_022548FC: .word MOD32_02254918 + thumb_func_end MOD32_0225489C + + thumb_func_start MOD32_02254900 +MOD32_02254900: ; 0x02254900 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + ldr r0, [r4, #8] + bl MOD32_02254A90 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD32_02254900 + + thumb_func_start MOD32_02254918 +MOD32_02254918: ; 0x02254918 + str r0, [r3, #0x18] + str r1, [r3, #0x14] + bx lr + .align 2, 0 + thumb_func_end MOD32_02254918 + + thumb_func_start MOD32_02254920 +MOD32_02254920: ; 0x02254920 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254956 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254958 ; =0x02254C5C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254956 + add r0, r4, #0 + bl MOD32_02254900 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_02254956: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254958: .word 0x02254C5C + thumb_func_end MOD32_02254920 + + thumb_func_start MOD32_0225495C +MOD32_0225495C: ; 0x0225495C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD32_0225495C + + thumb_func_start MOD32_02254964 +MOD32_02254964: ; 0x02254964 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225496C + b _0225496E +_0225496C: + mov r1, #2 +_0225496E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD32_02254964 + + thumb_func_start MOD32_02254978 +MOD32_02254978: ; 0x02254978 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254988 + cmp r0, #1 + beq _02254998 + b _022549B2 +_02254988: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD32_02254B08 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549B2 +_02254998: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD32_02254B2C + cmp r0, #0 + beq _022549B2 + ldr r0, [r4, #0xc] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD32_02254964 +_022549B2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD32_02254978 + + thumb_func_start MOD32_022549B8 +MOD32_022549B8: ; 0x022549B8 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549CC + mov r1, #2 + bl MOD32_02254964 + mov r0, #0 + pop {r4, pc} +_022549CC: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549D8 + cmp r0, #1 + beq _02254A0C + b _02254A1C +_022549D8: + ldr r0, [r4, #0x14] + cmp r0, #1 + bne _02254A1C + ldr r1, [r4, #0x18] + cmp r1, #0 + bne _022549EA + ldr r0, [r4, #4] + cmp r0, #0 + beq _022549F4 +_022549EA: + cmp r1, #1 + bne _02254A04 + ldr r0, [r4, #4] + cmp r0, #1 + bne _02254A04 +_022549F4: + ldr r1, [r4, #4] + mov r0, #1 + eor r0, r1 + str r0, [r4, #4] + ldr r0, [r4, #8] + mov r1, #2 + bl MOD32_02254B08 +_02254A04: + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A1C +_02254A0C: + ldr r0, [r4, #8] + mov r1, #2 + bl MOD32_02254B2C + cmp r0, #0 + beq _02254A1C + mov r0, #0 + strb r0, [r4, #1] +_02254A1C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD32_022549B8 + + thumb_func_start MOD32_02254A20 +MOD32_02254A20: ; 0x02254A20 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A30 + cmp r0, #1 + beq _02254A40 + b _02254A4E +_02254A30: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD32_02254B08 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A4E +_02254A40: + ldr r0, [r4, #8] + bl MOD32_02254B38 + cmp r0, #0 + beq _02254A4E + mov r0, #1 + pop {r4, pc} +_02254A4E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD32_02254A20 + + thumb_func_start MOD32_02254A54 +MOD32_02254A54: ; 0x02254A54 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0 + beq _02254A8A + add r0, #8 + mov r1, #4 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x20] + add r0, r4, #0 + add r1, r5, #0 + bl MOD32_02254A9C + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254A8A: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD32_02254A54 + + thumb_func_start MOD32_02254A90 +MOD32_02254A90: ; 0x02254A90 + push {r3, lr} + cmp r0, #0 + beq _02254A9A + bl FUN_02016A18 +_02254A9A: + pop {r3, pc} + thumb_func_end MOD32_02254A90 + + thumb_func_start MOD32_02254A9C +MOD32_02254A9C: ; 0x02254A9C + push {r4, r5, lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x68 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + mov r1, #0xc + mov r2, #0x66 + mov r3, #0x67 + bl MOD20_02253FBC + add r2, r5, #0 + ldr r0, [r5, #0x20] + ldr r1, _02254AEC ; =0x02254C68 + add r2, #0x28 + bl MOD20_02253E74 + str r0, [r5, #0x24] + ldr r0, [r4] + cmp r0, #0 + bne _02254AE6 + ldr r0, [r5, #0x24] + mov r1, #1 + bl MOD20_02253F28 +_02254AE6: + add sp, #0xc + pop {r4, r5, pc} + nop +_02254AEC: .word 0x02254C68 + thumb_func_end MOD32_02254A9C + + thumb_func_start MOD32_02254AF0 +MOD32_02254AF0: ; 0x02254AF0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + bl MOD20_02253F14 + add r4, #0x28 + add r0, r4, #0 + bl MOD20_02254014 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD32_02254AF0 + + thumb_func_start MOD32_02254B08 +MOD32_02254B08: ; 0x02254B08 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254B28 ; =0x02254C94 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B28: .word 0x02254C94 + thumb_func_end MOD32_02254B08 + + thumb_func_start MOD32_02254B2C +MOD32_02254B2C: ; 0x02254B2C + ldr r3, _02254B34 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B34: .word MOD20_02253794 + thumb_func_end MOD32_02254B2C + + thumb_func_start MOD32_02254B38 +MOD32_02254B38: ; 0x02254B38 + ldr r3, _02254B40 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B40: .word MOD20_022537B8 + thumb_func_end MOD32_02254B38 + + thumb_func_start MOD32_02254B44 +MOD32_02254B44: ; 0x02254B44 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD32_02254B44 + + thumb_func_start MOD32_02254B58 +MOD32_02254B58: ; 0x02254B58 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254BDC ; =0x02254C78 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x65 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x64 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BE0 ; =0x04001000 + ldr r0, _02254BE4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD32_02254B44 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02254BDC: .word 0x02254C78 +_02254BE0: .word 0x04001000 +_02254BE4: .word 0xFFFFE0FF + thumb_func_end MOD32_02254B58 + + thumb_func_start MOD32_02254BE8 +MOD32_02254BE8: ; 0x02254BE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD32_02254AF0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD32_02254B44 + pop {r3, r4, r5, pc} + thumb_func_end MOD32_02254BE8 + + thumb_func_start MOD32_02254C08 +MOD32_02254C08: ; 0x02254C08 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, _02254C50 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, [r4] + cmp r0, #0 + ldr r0, [r5, #0x24] + beq _02254C3A + mov r1, #0 + bl MOD20_02253F28 + mov r0, #1 + add r1, r0, #0 + bl PM_SetBackLight + b _02254C48 +_02254C3A: + mov r1, #1 + bl MOD20_02253F28 + mov r0, #1 + mov r1, #0 + bl PM_SetBackLight +_02254C48: + add r0, r6, #0 + bl MOD32_02254B44 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254C50: .word 0x00000663 + thumb_func_end MOD32_02254C08 + + .section .data + ; 0x02254C54 + .incbin "baserom.nds", 0x28DC14, 0x8C diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 2ab88c4e..d9d0bd09 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -9,6 +9,7 @@ FX_AtanTable_ = 0x02103A38; // OS gUnk02106814 = 0x02106814; OSi_IrqCallbackInfoIndex = 0x02106818; +OSi_ConsoleTypeCache = 0x02106828; // DGT Unk_0210683C = 0x0210683C; Unk_02106840 = 0x02106840; @@ -16,47 +17,6 @@ Unk_02106900 = 0x02106900; Unk_02106A00 = 0x02106A00; Unk_02106A04 = 0x02106A04; -// .bss -gBacklightTop = 0x02106FA0; -gBacklightTop_2 = 0x02106FA0; -gUnknown21C48B8 = 0x021C48B8; -gUnk021C4918 = 0x021C4918; -gUnk021C8C70 = 0x021C8C70; -OSi_IrqCallbackInfo = 0x021D341C; -isInitialized = 0x021D347C; -OSi_StackForDestructor = 0x021D3480; -OSi_RescheduleCount = 0x021D3484; -OSi_ThreadIdCount = 0x021D3488; -OSi_SystemCallbackInSwitchThread = 0x021D348C; -OSi_CurrentThreadPtr = 0x021D3490; -OSi_IsThreadInitialized = 0x021D3494; -OSi_ThreadInfo = 0x021D3498; -OSi_IdleThread = 0x021D34A8; -OSi_LauncherThread = 0x021D3568; -OSi_IdleThreadStack = 0x021D3628; -OSi_Initialized = 0x021D36F0; -OSi_MainExArenaEnabled = 0x021D36F4; -OSiHeapInfo = 0x021D36F8; -OSi_UserExceptionHandler = 0x021D371C; -OSi_UserExceptionHandlerArg = 0x21D3720; -OSi_DebuggerHandler = 0x021D3724; -OSi_ExContext = 0x021D3728; -OSi_TimerReserved = 0x021D37A8; -OSi_UseTick = 0x021D37AC; -OSi_NeedResetTimer = 0x021D37B0; -OSi_TickCounter = 0x021D37B4; -OSi_UseAlarm = 0x021D37BC; -OSi_AlarmQueue = 0x021D37C0; -OSi_UseVAlarm = 0x021D37C8; -OSi_PreviousVCount = 0x021D37CC; -OSi_VFrameCount = 0x021D37D0; -OSi_VAlarmQueue = 0x021D37D4; -OSi_IsInitReset = 0x021D37DC; -OSi_IsResetOccurred = 0x021D37E0; -OSi_vramExclusive = 0x021D37E4; -OSi_vramLockId = 0x021D37E8; -cardi_common = 0x021D55C0; - // Overlay FUN_021D74E0 = 0x021D74E0; FUN_021D76AC = 0x021D76AC; @@ -679,6 +639,19 @@ FUN_0221594C = 0x0221594C; FUN_02215988 = 0x02215988; FUN_02215A44 = 0x02215A44; FUN_022186F0 = 0x022186F0; +FUN_021DD4F4 = 0x021DD4F4; +FUN_021DD518 = 0x021DD518; +FUN_021DD540 = 0x021DD540; +FUN_021DD58C = 0x021DD58C; +FUN_021DD594 = 0x021DD594; +FUN_021DD59C = 0x021DD59C; +FUN_021DD604 = 0x021DD604; +FUN_021DD60C = 0x021DD60C; +FUN_021DD620 = 0x021DD620; +FUN_021DD678 = 0x021DD678; +FUN_021DD6B8 = 0x021DD6B8; +FUN_021DD6CC = 0x021DD6CC; +FUN_02211FF0 = 0x02211FF0; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; @@ -703,438 +676,525 @@ SDK_AUTOLOAD_LIST_END = 0x02107724; // Overlay -SDK_MODULE_00_START = 0x021D74E0; -SDK_MODULE_00_SIZE = 0x00000020; -SDK_MODULE_00_BSSSIZE = 0x00000000; -SDK_MODULE_00_STATIC_INIT_START = 0x021D74E0; -SDK_MODULE_00_STATIC_INIT_END = 0x021D74E4; -SDK_MODULE_01_START = 0x021D74E0; -SDK_MODULE_01_SIZE = 0x00000020; -SDK_MODULE_01_BSSSIZE = 0x00000020; -SDK_MODULE_01_STATIC_INIT_START = 0x021D74F0; -SDK_MODULE_01_STATIC_INIT_END = 0x021D74F8; -SDK_MODULE_02_START = 0x021D7520; -SDK_MODULE_02_SIZE = 0x00000020; -SDK_MODULE_02_BSSSIZE = 0x00000000; -SDK_MODULE_02_STATIC_INIT_START = 0x021D7520; -SDK_MODULE_02_STATIC_INIT_END = 0x021D7524; -SDK_MODULE_03_START = 0x01FF8700; -SDK_MODULE_03_SIZE = 0x00000020; -SDK_MODULE_03_BSSSIZE = 0x00000000; -SDK_MODULE_03_STATIC_INIT_START = 0x01FF8700; -SDK_MODULE_03_STATIC_INIT_END = 0x01FF8704; -SDK_MODULE_04_START = 0x021D74E0; -SDK_MODULE_04_SIZE = 0x000386E0; -SDK_MODULE_04_BSSSIZE = 0x000022A0; -SDK_MODULE_04_STATIC_INIT_START = 0x0220BE94; -SDK_MODULE_04_STATIC_INIT_END = 0x0220BE98; -SDK_MODULE_05_START = 0x021D74E0; -SDK_MODULE_05_SIZE = 0x000261A0; -SDK_MODULE_05_BSSSIZE = 0x0003C020; -SDK_MODULE_05_STATIC_INIT_START = 0x021FD1C8; -SDK_MODULE_05_STATIC_INIT_END = 0x021FD1CC; -SDK_MODULE_06_START = 0x022396A0; -SDK_MODULE_06_SIZE = 0x00018D80; -SDK_MODULE_06_BSSSIZE = 0x00000020; -SDK_MODULE_06_STATIC_INIT_START = 0x02252228; -SDK_MODULE_06_STATIC_INIT_END = 0x0225222C; -SDK_MODULE_07_START = 0x02211E60; -SDK_MODULE_07_SIZE = 0x000032E0; -SDK_MODULE_07_BSSSIZE = 0x00000000; -SDK_MODULE_07_STATIC_INIT_START = 0x02215134; -SDK_MODULE_07_STATIC_INIT_END = 0x02215138; -SDK_MODULE_08_START = 0x02211E60; -SDK_MODULE_08_SIZE = 0x0001B760; -SDK_MODULE_08_BSSSIZE = 0x00000000; -SDK_MODULE_08_STATIC_INIT_START = 0x0222D598; -SDK_MODULE_08_STATIC_INIT_END = 0x0222D59C; -SDK_MODULE_09_START = 0x02211E60; -SDK_MODULE_09_SIZE = 0x0000A1A0; -SDK_MODULE_09_BSSSIZE = 0x00000000; -SDK_MODULE_09_STATIC_INIT_START = 0x0221BFE8; -SDK_MODULE_09_STATIC_INIT_END = 0x0221BFEC; -SDK_MODULE_10_START = 0x021D74E0; -SDK_MODULE_10_SIZE = 0x00000020; -SDK_MODULE_10_BSSSIZE = 0x00000000; -SDK_MODULE_10_STATIC_INIT_START = 0x021D74E0; -SDK_MODULE_10_STATIC_INIT_END = 0x021D74E4; -SDK_MODULE_11_START = 0x0222D5C0; -SDK_MODULE_11_SIZE = 0x000329E0; -SDK_MODULE_11_BSSSIZE = 0x00000000; -SDK_MODULE_11_STATIC_INIT_START = 0x0225FF18; -SDK_MODULE_11_STATIC_INIT_END = 0x0225FF20; -SDK_MODULE_12_START = 0x0222D5C0; -SDK_MODULE_12_SIZE = 0x00019260; -SDK_MODULE_12_BSSSIZE = 0x00000000; -SDK_MODULE_12_STATIC_INIT_START = 0x02246810; -SDK_MODULE_12_STATIC_INIT_END = 0x02246818; -SDK_MODULE_13_START = 0x02211E60; -SDK_MODULE_13_SIZE = 0x0002EBE0; -SDK_MODULE_13_BSSSIZE = 0x000027E0; -SDK_MODULE_13_STATIC_INIT_START = 0x0223F768; -SDK_MODULE_13_STATIC_INIT_END = 0x0223F76C; -SDK_MODULE_14_START = 0x021D74E0; -SDK_MODULE_14_SIZE = 0x0000F520; -SDK_MODULE_14_BSSSIZE = 0x000001A0; -SDK_MODULE_14_STATIC_INIT_START = 0x021E69C8; -SDK_MODULE_14_STATIC_INIT_END = 0x021E69CC; -SDK_MODULE_15_START = 0x021D74E0; -SDK_MODULE_15_SIZE = 0x00004680; -SDK_MODULE_15_BSSSIZE = 0x00000000; -SDK_MODULE_15_STATIC_INIT_START = 0x021DBB5C; -SDK_MODULE_15_STATIC_INIT_END = 0x021DBB60; -SDK_MODULE_16_START = 0x021D74E0; -SDK_MODULE_16_SIZE = 0x00028500; -SDK_MODULE_16_BSSSIZE = 0x00000000; -SDK_MODULE_16_STATIC_INIT_START = 0x021FF9C4; -SDK_MODULE_16_STATIC_INIT_END = 0x021FF9C8; -SDK_MODULE_17_START = 0x021D74E0; -SDK_MODULE_17_SIZE = 0x00006E80; -SDK_MODULE_17_BSSSIZE = 0x00000000; -SDK_MODULE_17_STATIC_INIT_START = 0x021DE354; -SDK_MODULE_17_STATIC_INIT_END = 0x021DE358; -SDK_MODULE_18_START = 0x022396A0; -SDK_MODULE_18_SIZE = 0x00017CE0; -SDK_MODULE_18_BSSSIZE = 0x00000080; -SDK_MODULE_18_STATIC_INIT_START = 0x02250858; -SDK_MODULE_18_STATIC_INIT_END = 0x0225085C; -SDK_MODULE_19_START = 0x02252440; -SDK_MODULE_19_SIZE = 0x00000100; -SDK_MODULE_19_BSSSIZE = 0x00000000; -SDK_MODULE_19_STATIC_INIT_START = 0x02252524; -SDK_MODULE_19_STATIC_INIT_END = 0x02252528; -SDK_MODULE_20_START = 0x02252440; -SDK_MODULE_20_SIZE = 0x00002400; -SDK_MODULE_20_BSSSIZE = 0x00000000; -SDK_MODULE_20_STATIC_INIT_START = 0x02254838; -SDK_MODULE_20_STATIC_INIT_END = 0x0225483C; -SDK_MODULE_21_START = 0x02254840; -SDK_MODULE_21_SIZE = 0x000005C0; -SDK_MODULE_21_BSSSIZE = 0x00000000; -SDK_MODULE_21_STATIC_INIT_START = 0x02254DE8; -SDK_MODULE_21_STATIC_INIT_END = 0x02254DF0; -SDK_MODULE_22_START = 0x02254840; -SDK_MODULE_22_SIZE = 0x00000F00; -SDK_MODULE_22_BSSSIZE = 0x00000000; -SDK_MODULE_22_STATIC_INIT_START = 0x02255730; -SDK_MODULE_22_STATIC_INIT_END = 0x02255738; -SDK_MODULE_23_START = 0x02254840; -SDK_MODULE_23_SIZE = 0x00001900; -SDK_MODULE_23_BSSSIZE = 0x00000000; -SDK_MODULE_23_STATIC_INIT_START = 0x02256128; -SDK_MODULE_23_STATIC_INIT_END = 0x02256130; -SDK_MODULE_24_START = 0x02254840; -SDK_MODULE_24_SIZE = 0x000009A0; -SDK_MODULE_24_BSSSIZE = 0x00000000; -SDK_MODULE_24_STATIC_INIT_START = 0x022551C0; -SDK_MODULE_24_STATIC_INIT_END = 0x022551C8; -SDK_MODULE_25_START = 0x02254840; -SDK_MODULE_25_SIZE = 0x00000560; -SDK_MODULE_25_BSSSIZE = 0x00000000; -SDK_MODULE_25_STATIC_INIT_START = 0x02254D80; -SDK_MODULE_25_STATIC_INIT_END = 0x02254D88; -SDK_MODULE_26_START = 0x02254840; -SDK_MODULE_26_SIZE = 0x00000800; -SDK_MODULE_26_BSSSIZE = 0x00000000; -SDK_MODULE_26_STATIC_INIT_START = 0x02255020; -SDK_MODULE_26_STATIC_INIT_END = 0x02255028; -SDK_MODULE_27_START = 0x02254840; -SDK_MODULE_27_SIZE = 0x00000BA0; -SDK_MODULE_27_BSSSIZE = 0x00000000; -SDK_MODULE_27_STATIC_INIT_START = 0x022553C4; -SDK_MODULE_27_STATIC_INIT_END = 0x022553CC; -SDK_MODULE_28_START = 0x02254840; -SDK_MODULE_28_SIZE = 0x00001780; -SDK_MODULE_28_BSSSIZE = 0x00000000; -SDK_MODULE_28_STATIC_INIT_START = 0x02255F18; -SDK_MODULE_28_STATIC_INIT_END = 0x02255F20; -SDK_MODULE_29_START = 0x02254840; -SDK_MODULE_29_SIZE = 0x00000900; -SDK_MODULE_29_BSSSIZE = 0x00000000; -SDK_MODULE_29_STATIC_INIT_START = 0x0225512C; -SDK_MODULE_29_STATIC_INIT_END = 0x02255134; -SDK_MODULE_30_START = 0x02254840; -SDK_MODULE_30_SIZE = 0x00000600; -SDK_MODULE_30_BSSSIZE = 0x00000000; -SDK_MODULE_30_STATIC_INIT_START = 0x02254E28; -SDK_MODULE_30_STATIC_INIT_END = 0x02254E30; -SDK_MODULE_31_START = 0x02254840; -SDK_MODULE_31_SIZE = 0x00000600; -SDK_MODULE_31_BSSSIZE = 0x00000000; -SDK_MODULE_31_STATIC_INIT_START = 0x02254E20; -SDK_MODULE_31_STATIC_INIT_END = 0x02254E28; -SDK_MODULE_32_START = 0x02254840; -SDK_MODULE_32_SIZE = 0x000004A0; -SDK_MODULE_32_BSSSIZE = 0x00000000; -SDK_MODULE_32_STATIC_INIT_START = 0x02254CC4; -SDK_MODULE_32_STATIC_INIT_END = 0x02254CCC; -SDK_MODULE_33_START = 0x02254840; -SDK_MODULE_33_SIZE = 0x00000320; -SDK_MODULE_33_BSSSIZE = 0x00000000; -SDK_MODULE_33_STATIC_INIT_START = 0x02254B40; -SDK_MODULE_33_STATIC_INIT_END = 0x02254B48; -SDK_MODULE_34_START = 0x02254840; -SDK_MODULE_34_SIZE = 0x000004C0; -SDK_MODULE_34_BSSSIZE = 0x00000000; -SDK_MODULE_34_STATIC_INIT_START = 0x02254CF8; -SDK_MODULE_34_STATIC_INIT_END = 0x02254D00; -SDK_MODULE_35_START = 0x02254840; -SDK_MODULE_35_SIZE = 0x000009A0; -SDK_MODULE_35_BSSSIZE = 0x00000000; -SDK_MODULE_35_STATIC_INIT_START = 0x022551C0; -SDK_MODULE_35_STATIC_INIT_END = 0x022551C8; -SDK_MODULE_36_START = 0x02254840; -SDK_MODULE_36_SIZE = 0x00000CC0; -SDK_MODULE_36_BSSSIZE = 0x00000000; -SDK_MODULE_36_STATIC_INIT_START = 0x022554F8; -SDK_MODULE_36_STATIC_INIT_END = 0x02255500; -SDK_MODULE_37_START = 0x02254840; -SDK_MODULE_37_SIZE = 0x00000560; -SDK_MODULE_37_BSSSIZE = 0x00000020; -SDK_MODULE_37_STATIC_INIT_START = 0x02254D90; -SDK_MODULE_37_STATIC_INIT_END = 0x02254D98; -SDK_MODULE_38_START = 0x02254840; -SDK_MODULE_38_SIZE = 0x00000B40; -SDK_MODULE_38_BSSSIZE = 0x00000000; -SDK_MODULE_38_STATIC_INIT_START = 0x02255360; -SDK_MODULE_38_STATIC_INIT_END = 0x02255368; -SDK_MODULE_39_START = 0x02254840; -SDK_MODULE_39_SIZE = 0x00000CC0; -SDK_MODULE_39_BSSSIZE = 0x00000000; -SDK_MODULE_39_STATIC_INIT_START = 0x022554E4; -SDK_MODULE_39_STATIC_INIT_END = 0x022554EC; -SDK_MODULE_40_START = 0x02254840; -SDK_MODULE_40_SIZE = 0x00000C60; -SDK_MODULE_40_BSSSIZE = 0x00000000; -SDK_MODULE_40_STATIC_INIT_START = 0x02255480; -SDK_MODULE_40_STATIC_INIT_END = 0x02255488; -SDK_MODULE_41_START = 0x02254840; -SDK_MODULE_41_SIZE = 0x00001140; -SDK_MODULE_41_BSSSIZE = 0x00000000; -SDK_MODULE_41_STATIC_INIT_START = 0x02255974; -SDK_MODULE_41_STATIC_INIT_END = 0x0225597C; -SDK_MODULE_42_START = 0x02254840; -SDK_MODULE_42_SIZE = 0x00000900; -SDK_MODULE_42_BSSSIZE = 0x00000000; -SDK_MODULE_42_STATIC_INIT_START = 0x0225511C; -SDK_MODULE_42_STATIC_INIT_END = 0x02255124; -SDK_MODULE_43_START = 0x02254840; -SDK_MODULE_43_SIZE = 0x000009C0; -SDK_MODULE_43_BSSSIZE = 0x00000000; -SDK_MODULE_43_STATIC_INIT_START = 0x022551EC; -SDK_MODULE_43_STATIC_INIT_END = 0x022551F4; -SDK_MODULE_44_START = 0x02254840; -SDK_MODULE_44_SIZE = 0x000004A0; -SDK_MODULE_44_BSSSIZE = 0x00000000; -SDK_MODULE_44_STATIC_INIT_START = 0x02254CBC; -SDK_MODULE_44_STATIC_INIT_END = 0x02254CC4; -SDK_MODULE_45_START = 0x02254840; -SDK_MODULE_45_SIZE = 0x00000940; -SDK_MODULE_45_BSSSIZE = 0x00000000; -SDK_MODULE_45_STATIC_INIT_START = 0x02255170; -SDK_MODULE_45_STATIC_INIT_END = 0x02255178; -SDK_MODULE_46_START = 0x02254840; -SDK_MODULE_46_SIZE = 0x00000320; -SDK_MODULE_46_BSSSIZE = 0x00000000; -SDK_MODULE_46_STATIC_INIT_START = 0x02254B40; -SDK_MODULE_46_STATIC_INIT_END = 0x02254B48; -SDK_MODULE_47_START = 0x02254840; -SDK_MODULE_47_SIZE = 0x00000CA0; -SDK_MODULE_47_BSSSIZE = 0x00000000; -SDK_MODULE_47_STATIC_INIT_START = 0x022554BC; -SDK_MODULE_47_STATIC_INIT_END = 0x022554C4; -SDK_MODULE_48_START = 0x02254840; -SDK_MODULE_48_SIZE = 0x000008A0; -SDK_MODULE_48_BSSSIZE = 0x00000000; -SDK_MODULE_48_STATIC_INIT_START = 0x022550D0; -SDK_MODULE_48_STATIC_INIT_END = 0x022550D8; -SDK_MODULE_49_START = 0x02254840; -SDK_MODULE_49_SIZE = 0x00000600; -SDK_MODULE_49_BSSSIZE = 0x00000000; -SDK_MODULE_49_STATIC_INIT_START = 0x02254E20; -SDK_MODULE_49_STATIC_INIT_END = 0x02254E28; -SDK_MODULE_50_START = 0x02254840; -SDK_MODULE_50_SIZE = 0x00000320; -SDK_MODULE_50_BSSSIZE = 0x00000000; -SDK_MODULE_50_STATIC_INIT_START = 0x02254B50; -SDK_MODULE_50_STATIC_INIT_END = 0x02254B58; -SDK_MODULE_51_START = 0x02254840; -SDK_MODULE_51_SIZE = 0x00000FC0; -SDK_MODULE_51_BSSSIZE = 0x00000020; -SDK_MODULE_51_STATIC_INIT_START = 0x022557E0; -SDK_MODULE_51_STATIC_INIT_END = 0x022557E4; -SDK_MODULE_52_START = 0x021D74E0; -SDK_MODULE_52_SIZE = 0x00000400; -SDK_MODULE_52_BSSSIZE = 0x00000000; -SDK_MODULE_52_STATIC_INIT_START = 0x021D78D0; -SDK_MODULE_52_STATIC_INIT_END = 0x021D78D4; -SDK_MODULE_53_START = 0x021D74E0; -SDK_MODULE_53_SIZE = 0x00002480; -SDK_MODULE_53_BSSSIZE = 0x00000000; -SDK_MODULE_53_STATIC_INIT_START = 0x021D9888; -SDK_MODULE_53_STATIC_INIT_END = 0x021D988C; -SDK_MODULE_54_START = 0x021D74E0; -SDK_MODULE_54_SIZE = 0x00002380; -SDK_MODULE_54_BSSSIZE = 0x00000000; -SDK_MODULE_54_STATIC_INIT_START = 0x021D97D4; -SDK_MODULE_54_STATIC_INIT_END = 0x021D97D8; -SDK_MODULE_55_START = 0x021D74E0; -SDK_MODULE_55_SIZE = 0x00003040; -SDK_MODULE_55_BSSSIZE = 0x00000000; -SDK_MODULE_55_STATIC_INIT_START = 0x021DA480; -SDK_MODULE_55_STATIC_INIT_END = 0x021DA484; -SDK_MODULE_56_START = 0x02211E60; -SDK_MODULE_56_SIZE = 0x000047A0; -SDK_MODULE_56_BSSSIZE = 0x00000000; -SDK_MODULE_56_STATIC_INIT_START = 0x0221647C; -SDK_MODULE_56_STATIC_INIT_END = 0x02216480; -SDK_MODULE_57_START = 0x021D74E0; -SDK_MODULE_57_SIZE = 0x00002540; -SDK_MODULE_57_BSSSIZE = 0x00000000; -SDK_MODULE_57_STATIC_INIT_START = 0x021D9A10; -SDK_MODULE_57_STATIC_INIT_END = 0x021D9A14; -SDK_MODULE_58_START = 0x021D9A20; -SDK_MODULE_58_SIZE = 0x000015A0; -SDK_MODULE_58_BSSSIZE = 0x00000000; -SDK_MODULE_58_STATIC_INIT_START = 0x021DAF94; -SDK_MODULE_58_STATIC_INIT_END = 0x021DAF98; -SDK_MODULE_59_START = 0x021D74E0; -SDK_MODULE_59_SIZE = 0x00002C20; -SDK_MODULE_59_BSSSIZE = 0x00000000; -SDK_MODULE_59_STATIC_INIT_START = 0x021DA0FC; -SDK_MODULE_59_STATIC_INIT_END = 0x021DA100; -SDK_MODULE_60_START = 0x021D74E0; -SDK_MODULE_60_SIZE = 0x00000D00; -SDK_MODULE_60_BSSSIZE = 0x00000000; -SDK_MODULE_60_STATIC_INIT_START = 0x021D81D8; -SDK_MODULE_60_STATIC_INIT_END = 0x021D81DC; -SDK_MODULE_61_START = 0x021D74E0; -SDK_MODULE_61_SIZE = 0x00001080; -SDK_MODULE_61_BSSSIZE = 0x00000000; -SDK_MODULE_61_STATIC_INIT_START = 0x021D8554; -SDK_MODULE_61_STATIC_INIT_END = 0x021D8558; -SDK_MODULE_62_START = 0x0222D5C0; -SDK_MODULE_62_SIZE = 0x00003DE0; -SDK_MODULE_62_BSSSIZE = 0x00000000; -SDK_MODULE_62_STATIC_INIT_START = 0x02231380; -SDK_MODULE_62_STATIC_INIT_END = 0x02231388; -SDK_MODULE_63_START = 0x021D74E0; -SDK_MODULE_63_SIZE = 0x00004AC0; -SDK_MODULE_63_BSSSIZE = 0x00000020; -SDK_MODULE_63_STATIC_INIT_START = 0x021DBF20; -SDK_MODULE_63_STATIC_INIT_END = 0x021DBF24; -SDK_MODULE_64_START = 0x021D74E0; -SDK_MODULE_64_SIZE = 0x00001C40; -SDK_MODULE_64_BSSSIZE = 0x00000000; -SDK_MODULE_64_STATIC_INIT_START = 0x021D9110; -SDK_MODULE_64_STATIC_INIT_END = 0x021D9114; -SDK_MODULE_65_START = 0x021D74E0; -SDK_MODULE_65_SIZE = 0x00003000; -SDK_MODULE_65_BSSSIZE = 0x00000000; -SDK_MODULE_65_STATIC_INIT_START = 0x021DA428; -SDK_MODULE_65_STATIC_INIT_END = 0x021DA42C; -SDK_MODULE_66_START = 0x021D74E0; -SDK_MODULE_66_SIZE = 0x00002660; -SDK_MODULE_66_BSSSIZE = 0x00000000; -SDK_MODULE_66_STATIC_INIT_START = 0x021D9A9C; -SDK_MODULE_66_STATIC_INIT_END = 0x021D9AA0; -SDK_MODULE_67_START = 0x021D74E0; -SDK_MODULE_67_SIZE = 0x00002440; -SDK_MODULE_67_BSSSIZE = 0x00000000; -SDK_MODULE_67_STATIC_INIT_START = 0x021D9918; -SDK_MODULE_67_STATIC_INIT_END = 0x021D991C; -SDK_MODULE_68_START = 0x021D74E0; -SDK_MODULE_68_SIZE = 0x00001600; -SDK_MODULE_68_BSSSIZE = 0x00000000; -SDK_MODULE_68_STATIC_INIT_START = 0x021D8AD4; -SDK_MODULE_68_STATIC_INIT_END = 0x021D8AD8; -SDK_MODULE_69_START = 0x0222D5C0; -SDK_MODULE_69_SIZE = 0x000023A0; -SDK_MODULE_69_BSSSIZE = 0x00000020; -SDK_MODULE_69_STATIC_INIT_START = 0x0222F93C; -SDK_MODULE_69_STATIC_INIT_END = 0x0222F940; -SDK_MODULE_70_START = 0x021D74E0; -SDK_MODULE_70_SIZE = 0x00000E20; -SDK_MODULE_70_BSSSIZE = 0x00000000; -SDK_MODULE_70_STATIC_INIT_START = 0x021D82DC; -SDK_MODULE_70_STATIC_INIT_END = 0x021D82E0; -SDK_MODULE_71_START = 0x0222D5C0; -SDK_MODULE_71_SIZE = 0x00003EC0; -SDK_MODULE_71_BSSSIZE = 0x00000000; -SDK_MODULE_71_STATIC_INIT_START = 0x0223147C; -SDK_MODULE_71_STATIC_INIT_END = 0x02231480; -SDK_MODULE_72_START = 0x021D74E0; -SDK_MODULE_72_SIZE = 0x00000020; -SDK_MODULE_72_BSSSIZE = 0x00000000; -SDK_MODULE_72_STATIC_INIT_START = 0x021D74E0; -SDK_MODULE_72_STATIC_INIT_END = 0x021D74E4; -SDK_MODULE_73_START = 0x021D74E0; -SDK_MODULE_73_SIZE = 0x00004AE0; -SDK_MODULE_73_BSSSIZE = 0x00000000; -SDK_MODULE_73_STATIC_INIT_START = 0x021DBF70; -SDK_MODULE_73_STATIC_INIT_END = 0x021DBF74; -SDK_MODULE_74_START = 0x021D74E0; -SDK_MODULE_74_SIZE = 0x00001220; -SDK_MODULE_74_BSSSIZE = 0x00000000; -SDK_MODULE_74_STATIC_INIT_START = 0x021D8664; -SDK_MODULE_74_STATIC_INIT_END = 0x021D8668; -SDK_MODULE_75_START = 0x021E6BA0; -SDK_MODULE_75_SIZE = 0x00005DE0; -SDK_MODULE_75_BSSSIZE = 0x00000000; -SDK_MODULE_75_STATIC_INIT_START = 0x021EC97C; -SDK_MODULE_75_STATIC_INIT_END = 0x021EC980; -SDK_MODULE_76_START = 0x021D74E0; -SDK_MODULE_76_SIZE = 0x00001E20; -SDK_MODULE_76_BSSSIZE = 0x00000000; -SDK_MODULE_76_STATIC_INIT_START = 0x021D92E0; -SDK_MODULE_76_STATIC_INIT_END = 0x021D92E4; -SDK_MODULE_77_START = 0x021D74E0; -SDK_MODULE_77_SIZE = 0x00001BE0; -SDK_MODULE_77_BSSSIZE = 0x00000000; -SDK_MODULE_77_STATIC_INIT_START = 0x021D90AC; -SDK_MODULE_77_STATIC_INIT_END = 0x021D90B0; -SDK_MODULE_78_START = 0x021D74E0; -SDK_MODULE_78_SIZE = 0x00000460; -SDK_MODULE_78_BSSSIZE = 0x00000000; -SDK_MODULE_78_STATIC_INIT_START = 0x021D78F8; -SDK_MODULE_78_STATIC_INIT_END = 0x021D78FC; -SDK_MODULE_79_START = 0x02211E60; -SDK_MODULE_79_SIZE = 0x000052C0; -SDK_MODULE_79_BSSSIZE = 0x00000040; -SDK_MODULE_79_STATIC_INIT_START = 0x02216748; -SDK_MODULE_79_STATIC_INIT_END = 0x0221674C; -SDK_MODULE_80_START = 0x0222D5C0; -SDK_MODULE_80_SIZE = 0x0000A720; -SDK_MODULE_80_BSSSIZE = 0x00000160; -SDK_MODULE_80_STATIC_INIT_START = 0x02237670; -SDK_MODULE_80_STATIC_INIT_END = 0x02237674; -SDK_MODULE_81_START = 0x02237E40; -SDK_MODULE_81_SIZE = 0x00005580; -SDK_MODULE_81_BSSSIZE = 0x000000A0; -SDK_MODULE_81_STATIC_INIT_START = 0x0223D39C; -SDK_MODULE_81_STATIC_INIT_END = 0x0223D3A0; -SDK_MODULE_82_START = 0x0222D5C0; -SDK_MODULE_82_SIZE = 0x00002540; -SDK_MODULE_82_BSSSIZE = 0x00000120; -SDK_MODULE_82_STATIC_INIT_START = 0x0222F8CC; -SDK_MODULE_82_STATIC_INIT_END = 0x0222F8D0; -SDK_MODULE_83_START = 0x0222D5C0; -SDK_MODULE_83_SIZE = 0x0000E2A0; -SDK_MODULE_83_BSSSIZE = 0x00001980; -SDK_MODULE_83_STATIC_INIT_START = 0x0223A77C; -SDK_MODULE_83_STATIC_INIT_END = 0x0223A780; -SDK_MODULE_84_START = 0x021D74E0; -SDK_MODULE_84_SIZE = 0x00003920; -SDK_MODULE_84_BSSSIZE = 0x00000000; -SDK_MODULE_84_STATIC_INIT_START = 0x021DADE4; -SDK_MODULE_84_STATIC_INIT_END = 0x021DADE8; -SDK_MODULE_85_START = 0x021D74E0; -SDK_MODULE_85_SIZE = 0x00009100; -SDK_MODULE_85_BSSSIZE = 0x00000000; -SDK_MODULE_85_STATIC_INIT_START = 0x021E05A0; -SDK_MODULE_85_STATIC_INIT_END = 0x021E05A4; -SDK_MODULE_86_START = 0x021D74E0; -SDK_MODULE_86_SIZE = 0x00000820; -SDK_MODULE_86_BSSSIZE = 0x00000000; -SDK_MODULE_86_STATIC_INIT_START = 0x021D7CE4; -SDK_MODULE_86_STATIC_INIT_END = 0x021D7CE8; +SDK_OVERLAY_MODULE_00_ID = 0; +SDK_OVERLAY_MODULE_00_START = 0x021D74E0; +SDK_OVERLAY_MODULE_00_SIZE = 0x00000020; +SDK_OVERLAY_MODULE_00_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_00_STATIC_INIT_START = 0x021D74E0; +SDK_OVERLAY_MODULE_00_STATIC_INIT_END = 0x021D74E4; +SDK_OVERLAY_MODULE_01_ID = 1; +SDK_OVERLAY_MODULE_01_START = 0x021D74E0; +SDK_OVERLAY_MODULE_01_SIZE = 0x00000020; +SDK_OVERLAY_MODULE_01_BSSSIZE = 0x00000020; +SDK_OVERLAY_MODULE_01_STATIC_INIT_START = 0x021D74F0; +SDK_OVERLAY_MODULE_01_STATIC_INIT_END = 0x021D74F8; +SDK_OVERLAY_MODULE_02_ID = 2; +SDK_OVERLAY_MODULE_02_START = 0x021D7520; +SDK_OVERLAY_MODULE_02_SIZE = 0x00000020; +SDK_OVERLAY_MODULE_02_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_02_STATIC_INIT_START = 0x021D7520; +SDK_OVERLAY_MODULE_02_STATIC_INIT_END = 0x021D7524; +SDK_OVERLAY_MODULE_03_ID = 3; +SDK_OVERLAY_MODULE_03_START = 0x01FF8700; +SDK_OVERLAY_MODULE_03_SIZE = 0x00000020; +SDK_OVERLAY_MODULE_03_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_03_STATIC_INIT_START = 0x01FF8700; +SDK_OVERLAY_MODULE_03_STATIC_INIT_END = 0x01FF8704; +SDK_OVERLAY_MODULE_04_ID = 4; +SDK_OVERLAY_MODULE_04_START = 0x021D74E0; +SDK_OVERLAY_MODULE_04_SIZE = 0x000386E0; +SDK_OVERLAY_MODULE_04_BSSSIZE = 0x000022A0; +SDK_OVERLAY_MODULE_04_STATIC_INIT_START = 0x0220BE94; +SDK_OVERLAY_MODULE_04_STATIC_INIT_END = 0x0220BE98; +SDK_OVERLAY_MODULE_05_ID = 5; +SDK_OVERLAY_MODULE_05_START = 0x021D74E0; +SDK_OVERLAY_MODULE_05_SIZE = 0x000261A0; +SDK_OVERLAY_MODULE_05_BSSSIZE = 0x0003C020; +SDK_OVERLAY_MODULE_05_STATIC_INIT_START = 0x021FD1C8; +SDK_OVERLAY_MODULE_05_STATIC_INIT_END = 0x021FD1CC; +SDK_OVERLAY_MODULE_06_ID = 6; +SDK_OVERLAY_MODULE_06_START = 0x022396A0; +SDK_OVERLAY_MODULE_06_SIZE = 0x00018D80; +SDK_OVERLAY_MODULE_06_BSSSIZE = 0x00000020; +SDK_OVERLAY_MODULE_06_STATIC_INIT_START = 0x02252228; +SDK_OVERLAY_MODULE_06_STATIC_INIT_END = 0x0225222C; +SDK_OVERLAY_MODULE_07_ID = 7; +SDK_OVERLAY_MODULE_07_START = 0x02211E60; +SDK_OVERLAY_MODULE_07_SIZE = 0x000032E0; +SDK_OVERLAY_MODULE_07_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_07_STATIC_INIT_START = 0x02215134; +SDK_OVERLAY_MODULE_07_STATIC_INIT_END = 0x02215138; +SDK_OVERLAY_MODULE_08_ID = 8; +SDK_OVERLAY_MODULE_08_START = 0x02211E60; +SDK_OVERLAY_MODULE_08_SIZE = 0x0001B760; +SDK_OVERLAY_MODULE_08_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_08_STATIC_INIT_START = 0x0222D598; +SDK_OVERLAY_MODULE_08_STATIC_INIT_END = 0x0222D59C; +SDK_OVERLAY_MODULE_09_ID = 9; +SDK_OVERLAY_MODULE_09_START = 0x02211E60; +SDK_OVERLAY_MODULE_09_SIZE = 0x0000A1A0; +SDK_OVERLAY_MODULE_09_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_09_STATIC_INIT_START = 0x0221BFE8; +SDK_OVERLAY_MODULE_09_STATIC_INIT_END = 0x0221BFEC; +SDK_OVERLAY_MODULE_10_ID = 10; +SDK_OVERLAY_MODULE_10_START = 0x021D74E0; +SDK_OVERLAY_MODULE_10_SIZE = 0x00000020; +SDK_OVERLAY_MODULE_10_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_10_STATIC_INIT_START = 0x021D74E0; +SDK_OVERLAY_MODULE_10_STATIC_INIT_END = 0x021D74E4; +SDK_OVERLAY_MODULE_11_ID = 11; +SDK_OVERLAY_MODULE_11_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_11_SIZE = 0x000329E0; +SDK_OVERLAY_MODULE_11_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_11_STATIC_INIT_START = 0x0225FF18; +SDK_OVERLAY_MODULE_11_STATIC_INIT_END = 0x0225FF20; +SDK_OVERLAY_MODULE_12_ID = 12; +SDK_OVERLAY_MODULE_12_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_12_SIZE = 0x00019260; +SDK_OVERLAY_MODULE_12_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_12_STATIC_INIT_START = 0x02246810; +SDK_OVERLAY_MODULE_12_STATIC_INIT_END = 0x02246818; +SDK_OVERLAY_MODULE_13_ID = 13; +SDK_OVERLAY_MODULE_13_START = 0x02211E60; +SDK_OVERLAY_MODULE_13_SIZE = 0x0002EBE0; +SDK_OVERLAY_MODULE_13_BSSSIZE = 0x000027E0; +SDK_OVERLAY_MODULE_13_STATIC_INIT_START = 0x0223F768; +SDK_OVERLAY_MODULE_13_STATIC_INIT_END = 0x0223F76C; +SDK_OVERLAY_MODULE_14_ID = 14; +SDK_OVERLAY_MODULE_14_START = 0x021D74E0; +SDK_OVERLAY_MODULE_14_SIZE = 0x0000F520; +SDK_OVERLAY_MODULE_14_BSSSIZE = 0x000001A0; +SDK_OVERLAY_MODULE_14_STATIC_INIT_START = 0x021E69C8; +SDK_OVERLAY_MODULE_14_STATIC_INIT_END = 0x021E69CC; +SDK_OVERLAY_MODULE_15_ID = 15; +SDK_OVERLAY_MODULE_15_START = 0x021D74E0; +SDK_OVERLAY_MODULE_15_SIZE = 0x00004680; +SDK_OVERLAY_MODULE_15_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_15_STATIC_INIT_START = 0x021DBB5C; +SDK_OVERLAY_MODULE_15_STATIC_INIT_END = 0x021DBB60; +SDK_OVERLAY_MODULE_16_ID = 16; +SDK_OVERLAY_MODULE_16_START = 0x021D74E0; +SDK_OVERLAY_MODULE_16_SIZE = 0x00028500; +SDK_OVERLAY_MODULE_16_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_16_STATIC_INIT_START = 0x021FF9C4; +SDK_OVERLAY_MODULE_16_STATIC_INIT_END = 0x021FF9C8; +SDK_OVERLAY_MODULE_17_ID = 17; +SDK_OVERLAY_MODULE_17_START = 0x021D74E0; +SDK_OVERLAY_MODULE_17_SIZE = 0x00006E80; +SDK_OVERLAY_MODULE_17_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_17_STATIC_INIT_START = 0x021DE354; +SDK_OVERLAY_MODULE_17_STATIC_INIT_END = 0x021DE358; +SDK_OVERLAY_MODULE_18_ID = 18; +SDK_OVERLAY_MODULE_18_START = 0x022396A0; +SDK_OVERLAY_MODULE_18_SIZE = 0x00017CE0; +SDK_OVERLAY_MODULE_18_BSSSIZE = 0x00000080; +SDK_OVERLAY_MODULE_18_STATIC_INIT_START = 0x02250858; +SDK_OVERLAY_MODULE_18_STATIC_INIT_END = 0x0225085C; +SDK_OVERLAY_MODULE_19_ID = 19; +SDK_OVERLAY_MODULE_19_START = 0x02252440; +SDK_OVERLAY_MODULE_19_SIZE = 0x00000100; +SDK_OVERLAY_MODULE_19_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_19_STATIC_INIT_START = 0x02252524; +SDK_OVERLAY_MODULE_19_STATIC_INIT_END = 0x02252528; +SDK_OVERLAY_MODULE_20_ID = 20; +SDK_OVERLAY_MODULE_20_START = 0x02252440; +SDK_OVERLAY_MODULE_20_SIZE = 0x00002400; +SDK_OVERLAY_MODULE_20_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_20_STATIC_INIT_START = 0x02254838; +SDK_OVERLAY_MODULE_20_STATIC_INIT_END = 0x0225483C; +SDK_OVERLAY_MODULE_21_ID = 21; +SDK_OVERLAY_MODULE_21_START = 0x02254840; +SDK_OVERLAY_MODULE_21_SIZE = 0x000005C0; +SDK_OVERLAY_MODULE_21_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_21_STATIC_INIT_START = 0x02254DE8; +SDK_OVERLAY_MODULE_21_STATIC_INIT_END = 0x02254DF0; +SDK_OVERLAY_MODULE_22_ID = 22; +SDK_OVERLAY_MODULE_22_START = 0x02254840; +SDK_OVERLAY_MODULE_22_SIZE = 0x00000F00; +SDK_OVERLAY_MODULE_22_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_22_STATIC_INIT_START = 0x02255730; +SDK_OVERLAY_MODULE_22_STATIC_INIT_END = 0x02255738; +SDK_OVERLAY_MODULE_23_ID = 23; +SDK_OVERLAY_MODULE_23_START = 0x02254840; +SDK_OVERLAY_MODULE_23_SIZE = 0x00001900; +SDK_OVERLAY_MODULE_23_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_23_STATIC_INIT_START = 0x02256128; +SDK_OVERLAY_MODULE_23_STATIC_INIT_END = 0x02256130; +SDK_OVERLAY_MODULE_24_ID = 24; +SDK_OVERLAY_MODULE_24_START = 0x02254840; +SDK_OVERLAY_MODULE_24_SIZE = 0x000009A0; +SDK_OVERLAY_MODULE_24_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_24_STATIC_INIT_START = 0x022551C0; +SDK_OVERLAY_MODULE_24_STATIC_INIT_END = 0x022551C8; +SDK_OVERLAY_MODULE_25_ID = 25; +SDK_OVERLAY_MODULE_25_START = 0x02254840; +SDK_OVERLAY_MODULE_25_SIZE = 0x00000560; +SDK_OVERLAY_MODULE_25_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_25_STATIC_INIT_START = 0x02254D80; +SDK_OVERLAY_MODULE_25_STATIC_INIT_END = 0x02254D88; +SDK_OVERLAY_MODULE_26_ID = 26; +SDK_OVERLAY_MODULE_26_START = 0x02254840; +SDK_OVERLAY_MODULE_26_SIZE = 0x00000800; +SDK_OVERLAY_MODULE_26_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_26_STATIC_INIT_START = 0x02255020; +SDK_OVERLAY_MODULE_26_STATIC_INIT_END = 0x02255028; +SDK_OVERLAY_MODULE_27_ID = 27; +SDK_OVERLAY_MODULE_27_START = 0x02254840; +SDK_OVERLAY_MODULE_27_SIZE = 0x00000BA0; +SDK_OVERLAY_MODULE_27_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_27_STATIC_INIT_START = 0x022553C4; +SDK_OVERLAY_MODULE_27_STATIC_INIT_END = 0x022553CC; +SDK_OVERLAY_MODULE_28_ID = 28; +SDK_OVERLAY_MODULE_28_START = 0x02254840; +SDK_OVERLAY_MODULE_28_SIZE = 0x00001780; +SDK_OVERLAY_MODULE_28_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_28_STATIC_INIT_START = 0x02255F18; +SDK_OVERLAY_MODULE_28_STATIC_INIT_END = 0x02255F20; +SDK_OVERLAY_MODULE_29_ID = 29; +SDK_OVERLAY_MODULE_29_START = 0x02254840; +SDK_OVERLAY_MODULE_29_SIZE = 0x00000900; +SDK_OVERLAY_MODULE_29_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_29_STATIC_INIT_START = 0x0225512C; +SDK_OVERLAY_MODULE_29_STATIC_INIT_END = 0x02255134; +SDK_OVERLAY_MODULE_30_ID = 30; +SDK_OVERLAY_MODULE_30_START = 0x02254840; +SDK_OVERLAY_MODULE_30_SIZE = 0x00000600; +SDK_OVERLAY_MODULE_30_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_30_STATIC_INIT_START = 0x02254E28; +SDK_OVERLAY_MODULE_30_STATIC_INIT_END = 0x02254E30; +SDK_OVERLAY_MODULE_31_ID = 31; +SDK_OVERLAY_MODULE_31_START = 0x02254840; +SDK_OVERLAY_MODULE_31_SIZE = 0x00000600; +SDK_OVERLAY_MODULE_31_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_31_STATIC_INIT_START = 0x02254E20; +SDK_OVERLAY_MODULE_31_STATIC_INIT_END = 0x02254E28; +SDK_OVERLAY_MODULE_32_ID = 32; +SDK_OVERLAY_MODULE_32_START = 0x02254840; +SDK_OVERLAY_MODULE_32_SIZE = 0x000004A0; +SDK_OVERLAY_MODULE_32_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_32_STATIC_INIT_START = 0x02254CC4; +SDK_OVERLAY_MODULE_32_STATIC_INIT_END = 0x02254CCC; +SDK_OVERLAY_MODULE_33_ID = 33; +SDK_OVERLAY_MODULE_33_START = 0x02254840; +SDK_OVERLAY_MODULE_33_SIZE = 0x00000320; +SDK_OVERLAY_MODULE_33_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_33_STATIC_INIT_START = 0x02254B40; +SDK_OVERLAY_MODULE_33_STATIC_INIT_END = 0x02254B48; +SDK_OVERLAY_MODULE_34_ID = 34; +SDK_OVERLAY_MODULE_34_START = 0x02254840; +SDK_OVERLAY_MODULE_34_SIZE = 0x000004C0; +SDK_OVERLAY_MODULE_34_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_34_STATIC_INIT_START = 0x02254CF8; +SDK_OVERLAY_MODULE_34_STATIC_INIT_END = 0x02254D00; +SDK_OVERLAY_MODULE_35_ID = 35; +SDK_OVERLAY_MODULE_35_START = 0x02254840; +SDK_OVERLAY_MODULE_35_SIZE = 0x000009A0; +SDK_OVERLAY_MODULE_35_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_35_STATIC_INIT_START = 0x022551C0; +SDK_OVERLAY_MODULE_35_STATIC_INIT_END = 0x022551C8; +SDK_OVERLAY_MODULE_36_ID = 36; +SDK_OVERLAY_MODULE_36_START = 0x02254840; +SDK_OVERLAY_MODULE_36_SIZE = 0x00000CC0; +SDK_OVERLAY_MODULE_36_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_36_STATIC_INIT_START = 0x022554F8; +SDK_OVERLAY_MODULE_36_STATIC_INIT_END = 0x02255500; +SDK_OVERLAY_MODULE_37_ID = 37; +SDK_OVERLAY_MODULE_37_START = 0x02254840; +SDK_OVERLAY_MODULE_37_SIZE = 0x00000560; +SDK_OVERLAY_MODULE_37_BSSSIZE = 0x00000020; +SDK_OVERLAY_MODULE_37_STATIC_INIT_START = 0x02254D90; +SDK_OVERLAY_MODULE_37_STATIC_INIT_END = 0x02254D98; +SDK_OVERLAY_MODULE_38_ID = 38; +SDK_OVERLAY_MODULE_38_START = 0x02254840; +SDK_OVERLAY_MODULE_38_SIZE = 0x00000B40; +SDK_OVERLAY_MODULE_38_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_38_STATIC_INIT_START = 0x02255360; +SDK_OVERLAY_MODULE_38_STATIC_INIT_END = 0x02255368; +SDK_OVERLAY_MODULE_39_ID = 39; +SDK_OVERLAY_MODULE_39_START = 0x02254840; +SDK_OVERLAY_MODULE_39_SIZE = 0x00000CC0; +SDK_OVERLAY_MODULE_39_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_39_STATIC_INIT_START = 0x022554E4; +SDK_OVERLAY_MODULE_39_STATIC_INIT_END = 0x022554EC; +SDK_OVERLAY_MODULE_40_ID = 40; +SDK_OVERLAY_MODULE_40_START = 0x02254840; +SDK_OVERLAY_MODULE_40_SIZE = 0x00000C60; +SDK_OVERLAY_MODULE_40_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_40_STATIC_INIT_START = 0x02255480; +SDK_OVERLAY_MODULE_40_STATIC_INIT_END = 0x02255488; +SDK_OVERLAY_MODULE_41_ID = 41; +SDK_OVERLAY_MODULE_41_START = 0x02254840; +SDK_OVERLAY_MODULE_41_SIZE = 0x00001140; +SDK_OVERLAY_MODULE_41_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_41_STATIC_INIT_START = 0x02255974; +SDK_OVERLAY_MODULE_41_STATIC_INIT_END = 0x0225597C; +SDK_OVERLAY_MODULE_42_ID = 42; +SDK_OVERLAY_MODULE_42_START = 0x02254840; +SDK_OVERLAY_MODULE_42_SIZE = 0x00000900; +SDK_OVERLAY_MODULE_42_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_42_STATIC_INIT_START = 0x0225511C; +SDK_OVERLAY_MODULE_42_STATIC_INIT_END = 0x02255124; +SDK_OVERLAY_MODULE_43_ID = 43; +SDK_OVERLAY_MODULE_43_START = 0x02254840; +SDK_OVERLAY_MODULE_43_SIZE = 0x000009C0; +SDK_OVERLAY_MODULE_43_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_43_STATIC_INIT_START = 0x022551EC; +SDK_OVERLAY_MODULE_43_STATIC_INIT_END = 0x022551F4; +SDK_OVERLAY_MODULE_44_ID = 44; +SDK_OVERLAY_MODULE_44_START = 0x02254840; +SDK_OVERLAY_MODULE_44_SIZE = 0x000004A0; +SDK_OVERLAY_MODULE_44_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_44_STATIC_INIT_START = 0x02254CBC; +SDK_OVERLAY_MODULE_44_STATIC_INIT_END = 0x02254CC4; +SDK_OVERLAY_MODULE_45_ID = 45; +SDK_OVERLAY_MODULE_45_START = 0x02254840; +SDK_OVERLAY_MODULE_45_SIZE = 0x00000940; +SDK_OVERLAY_MODULE_45_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_45_STATIC_INIT_START = 0x02255170; +SDK_OVERLAY_MODULE_45_STATIC_INIT_END = 0x02255178; +SDK_OVERLAY_MODULE_46_ID = 46; +SDK_OVERLAY_MODULE_46_START = 0x02254840; +SDK_OVERLAY_MODULE_46_SIZE = 0x00000320; +SDK_OVERLAY_MODULE_46_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_46_STATIC_INIT_START = 0x02254B40; +SDK_OVERLAY_MODULE_46_STATIC_INIT_END = 0x02254B48; +SDK_OVERLAY_MODULE_47_ID = 47; +SDK_OVERLAY_MODULE_47_START = 0x02254840; +SDK_OVERLAY_MODULE_47_SIZE = 0x00000CA0; +SDK_OVERLAY_MODULE_47_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_47_STATIC_INIT_START = 0x022554BC; +SDK_OVERLAY_MODULE_47_STATIC_INIT_END = 0x022554C4; +SDK_OVERLAY_MODULE_48_ID = 48; +SDK_OVERLAY_MODULE_48_START = 0x02254840; +SDK_OVERLAY_MODULE_48_SIZE = 0x000008A0; +SDK_OVERLAY_MODULE_48_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_48_STATIC_INIT_START = 0x022550D0; +SDK_OVERLAY_MODULE_48_STATIC_INIT_END = 0x022550D8; +SDK_OVERLAY_MODULE_49_ID = 49; +SDK_OVERLAY_MODULE_49_START = 0x02254840; +SDK_OVERLAY_MODULE_49_SIZE = 0x00000600; +SDK_OVERLAY_MODULE_49_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_49_STATIC_INIT_START = 0x02254E20; +SDK_OVERLAY_MODULE_49_STATIC_INIT_END = 0x02254E28; +SDK_OVERLAY_MODULE_50_ID = 50; +SDK_OVERLAY_MODULE_50_START = 0x02254840; +SDK_OVERLAY_MODULE_50_SIZE = 0x00000320; +SDK_OVERLAY_MODULE_50_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_50_STATIC_INIT_START = 0x02254B50; +SDK_OVERLAY_MODULE_50_STATIC_INIT_END = 0x02254B58; +SDK_OVERLAY_MODULE_51_ID = 51; +SDK_OVERLAY_MODULE_51_START = 0x02254840; +SDK_OVERLAY_MODULE_51_SIZE = 0x00000FC0; +SDK_OVERLAY_MODULE_51_BSSSIZE = 0x00000020; +SDK_OVERLAY_MODULE_51_STATIC_INIT_START = 0x022557E0; +SDK_OVERLAY_MODULE_51_STATIC_INIT_END = 0x022557E4; +SDK_OVERLAY_MODULE_52_ID = 52; +SDK_OVERLAY_MODULE_52_START = 0x021D74E0; +SDK_OVERLAY_MODULE_52_SIZE = 0x00000400; +SDK_OVERLAY_MODULE_52_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_52_STATIC_INIT_START = 0x021D78D0; +SDK_OVERLAY_MODULE_52_STATIC_INIT_END = 0x021D78D4; +SDK_OVERLAY_MODULE_53_ID = 53; +SDK_OVERLAY_MODULE_53_START = 0x021D74E0; +SDK_OVERLAY_MODULE_53_SIZE = 0x00002480; +SDK_OVERLAY_MODULE_53_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_53_STATIC_INIT_START = 0x021D9888; +SDK_OVERLAY_MODULE_53_STATIC_INIT_END = 0x021D988C; +SDK_OVERLAY_MODULE_54_ID = 54; +SDK_OVERLAY_MODULE_54_START = 0x021D74E0; +SDK_OVERLAY_MODULE_54_SIZE = 0x00002380; +SDK_OVERLAY_MODULE_54_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_54_STATIC_INIT_START = 0x021D97D4; +SDK_OVERLAY_MODULE_54_STATIC_INIT_END = 0x021D97D8; +SDK_OVERLAY_MODULE_55_ID = 55; +SDK_OVERLAY_MODULE_55_START = 0x021D74E0; +SDK_OVERLAY_MODULE_55_SIZE = 0x00003040; +SDK_OVERLAY_MODULE_55_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_55_STATIC_INIT_START = 0x021DA480; +SDK_OVERLAY_MODULE_55_STATIC_INIT_END = 0x021DA484; +SDK_OVERLAY_MODULE_56_ID = 56; +SDK_OVERLAY_MODULE_56_START = 0x02211E60; +SDK_OVERLAY_MODULE_56_SIZE = 0x000047A0; +SDK_OVERLAY_MODULE_56_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_56_STATIC_INIT_START = 0x0221647C; +SDK_OVERLAY_MODULE_56_STATIC_INIT_END = 0x02216480; +SDK_OVERLAY_MODULE_57_ID = 57; +SDK_OVERLAY_MODULE_57_START = 0x021D74E0; +SDK_OVERLAY_MODULE_57_SIZE = 0x00002540; +SDK_OVERLAY_MODULE_57_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_57_STATIC_INIT_START = 0x021D9A10; +SDK_OVERLAY_MODULE_57_STATIC_INIT_END = 0x021D9A14; +SDK_OVERLAY_MODULE_58_ID = 58; +SDK_OVERLAY_MODULE_58_START = 0x021D9A20; +SDK_OVERLAY_MODULE_58_SIZE = 0x000015A0; +SDK_OVERLAY_MODULE_58_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_58_STATIC_INIT_START = 0x021DAF94; +SDK_OVERLAY_MODULE_58_STATIC_INIT_END = 0x021DAF98; +SDK_OVERLAY_MODULE_59_ID = 59; +SDK_OVERLAY_MODULE_59_START = 0x021D74E0; +SDK_OVERLAY_MODULE_59_SIZE = 0x00002C20; +SDK_OVERLAY_MODULE_59_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_59_STATIC_INIT_START = 0x021DA0FC; +SDK_OVERLAY_MODULE_59_STATIC_INIT_END = 0x021DA100; +SDK_OVERLAY_MODULE_60_ID = 60; +SDK_OVERLAY_MODULE_60_START = 0x021D74E0; +SDK_OVERLAY_MODULE_60_SIZE = 0x00000D00; +SDK_OVERLAY_MODULE_60_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_60_STATIC_INIT_START = 0x021D81D8; +SDK_OVERLAY_MODULE_60_STATIC_INIT_END = 0x021D81DC; +SDK_OVERLAY_MODULE_61_ID = 61; +SDK_OVERLAY_MODULE_61_START = 0x021D74E0; +SDK_OVERLAY_MODULE_61_SIZE = 0x00001080; +SDK_OVERLAY_MODULE_61_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_61_STATIC_INIT_START = 0x021D8554; +SDK_OVERLAY_MODULE_61_STATIC_INIT_END = 0x021D8558; +SDK_OVERLAY_MODULE_62_ID = 62; +SDK_OVERLAY_MODULE_62_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_62_SIZE = 0x00003DE0; +SDK_OVERLAY_MODULE_62_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_62_STATIC_INIT_START = 0x02231380; +SDK_OVERLAY_MODULE_62_STATIC_INIT_END = 0x02231388; +SDK_OVERLAY_MODULE_63_ID = 63; +SDK_OVERLAY_MODULE_63_START = 0x021D74E0; +SDK_OVERLAY_MODULE_63_SIZE = 0x00004AC0; +SDK_OVERLAY_MODULE_63_BSSSIZE = 0x00000020; +SDK_OVERLAY_MODULE_63_STATIC_INIT_START = 0x021DBF20; +SDK_OVERLAY_MODULE_63_STATIC_INIT_END = 0x021DBF24; +SDK_OVERLAY_MODULE_64_ID = 64; +SDK_OVERLAY_MODULE_64_START = 0x021D74E0; +SDK_OVERLAY_MODULE_64_SIZE = 0x00001C40; +SDK_OVERLAY_MODULE_64_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_64_STATIC_INIT_START = 0x021D9110; +SDK_OVERLAY_MODULE_64_STATIC_INIT_END = 0x021D9114; +SDK_OVERLAY_MODULE_65_ID = 65; +SDK_OVERLAY_MODULE_65_START = 0x021D74E0; +SDK_OVERLAY_MODULE_65_SIZE = 0x00003000; +SDK_OVERLAY_MODULE_65_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_65_STATIC_INIT_START = 0x021DA428; +SDK_OVERLAY_MODULE_65_STATIC_INIT_END = 0x021DA42C; +SDK_OVERLAY_MODULE_66_ID = 66; +SDK_OVERLAY_MODULE_66_START = 0x021D74E0; +SDK_OVERLAY_MODULE_66_SIZE = 0x00002660; +SDK_OVERLAY_MODULE_66_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_66_STATIC_INIT_START = 0x021D9A9C; +SDK_OVERLAY_MODULE_66_STATIC_INIT_END = 0x021D9AA0; +SDK_OVERLAY_MODULE_67_ID = 67; +SDK_OVERLAY_MODULE_67_START = 0x021D74E0; +SDK_OVERLAY_MODULE_67_SIZE = 0x00002440; +SDK_OVERLAY_MODULE_67_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_67_STATIC_INIT_START = 0x021D9918; +SDK_OVERLAY_MODULE_67_STATIC_INIT_END = 0x021D991C; +SDK_OVERLAY_MODULE_68_ID = 68; +SDK_OVERLAY_MODULE_68_START = 0x021D74E0; +SDK_OVERLAY_MODULE_68_SIZE = 0x00001600; +SDK_OVERLAY_MODULE_68_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_68_STATIC_INIT_START = 0x021D8AD4; +SDK_OVERLAY_MODULE_68_STATIC_INIT_END = 0x021D8AD8; +SDK_OVERLAY_MODULE_69_ID = 69; +SDK_OVERLAY_MODULE_69_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_69_SIZE = 0x000023A0; +SDK_OVERLAY_MODULE_69_BSSSIZE = 0x00000020; +SDK_OVERLAY_MODULE_69_STATIC_INIT_START = 0x0222F93C; +SDK_OVERLAY_MODULE_69_STATIC_INIT_END = 0x0222F940; +SDK_OVERLAY_MODULE_70_ID = 70; +SDK_OVERLAY_MODULE_70_START = 0x021D74E0; +SDK_OVERLAY_MODULE_70_SIZE = 0x00000E20; +SDK_OVERLAY_MODULE_70_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_70_STATIC_INIT_START = 0x021D82DC; +SDK_OVERLAY_MODULE_70_STATIC_INIT_END = 0x021D82E0; +SDK_OVERLAY_MODULE_71_ID = 71; +SDK_OVERLAY_MODULE_71_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_71_SIZE = 0x00003EC0; +SDK_OVERLAY_MODULE_71_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_71_STATIC_INIT_START = 0x0223147C; +SDK_OVERLAY_MODULE_71_STATIC_INIT_END = 0x02231480; +SDK_OVERLAY_MODULE_72_ID = 72; +SDK_OVERLAY_MODULE_72_START = 0x021D74E0; +SDK_OVERLAY_MODULE_72_SIZE = 0x00000020; +SDK_OVERLAY_MODULE_72_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_72_STATIC_INIT_START = 0x021D74E0; +SDK_OVERLAY_MODULE_72_STATIC_INIT_END = 0x021D74E4; +SDK_OVERLAY_MODULE_73_ID = 73; +SDK_OVERLAY_MODULE_73_START = 0x021D74E0; +SDK_OVERLAY_MODULE_73_SIZE = 0x00004AE0; +SDK_OVERLAY_MODULE_73_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_73_STATIC_INIT_START = 0x021DBF70; +SDK_OVERLAY_MODULE_73_STATIC_INIT_END = 0x021DBF74; +SDK_OVERLAY_MODULE_74_ID = 74; +SDK_OVERLAY_MODULE_74_START = 0x021D74E0; +SDK_OVERLAY_MODULE_74_SIZE = 0x00001220; +SDK_OVERLAY_MODULE_74_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_74_STATIC_INIT_START = 0x021D8664; +SDK_OVERLAY_MODULE_74_STATIC_INIT_END = 0x021D8668; +SDK_OVERLAY_MODULE_75_ID = 75; +SDK_OVERLAY_MODULE_75_START = 0x021E6BA0; +SDK_OVERLAY_MODULE_75_SIZE = 0x00005DE0; +SDK_OVERLAY_MODULE_75_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_75_STATIC_INIT_START = 0x021EC97C; +SDK_OVERLAY_MODULE_75_STATIC_INIT_END = 0x021EC980; +SDK_OVERLAY_MODULE_76_ID = 76; +SDK_OVERLAY_MODULE_76_START = 0x021D74E0; +SDK_OVERLAY_MODULE_76_SIZE = 0x00001E20; +SDK_OVERLAY_MODULE_76_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_76_STATIC_INIT_START = 0x021D92E0; +SDK_OVERLAY_MODULE_76_STATIC_INIT_END = 0x021D92E4; +SDK_OVERLAY_MODULE_77_ID = 77; +SDK_OVERLAY_MODULE_77_START = 0x021D74E0; +SDK_OVERLAY_MODULE_77_SIZE = 0x00001BE0; +SDK_OVERLAY_MODULE_77_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_77_STATIC_INIT_START = 0x021D90AC; +SDK_OVERLAY_MODULE_77_STATIC_INIT_END = 0x021D90B0; +SDK_OVERLAY_MODULE_78_ID = 78; +SDK_OVERLAY_MODULE_78_START = 0x021D74E0; +SDK_OVERLAY_MODULE_78_SIZE = 0x00000460; +SDK_OVERLAY_MODULE_78_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_78_STATIC_INIT_START = 0x021D78F8; +SDK_OVERLAY_MODULE_78_STATIC_INIT_END = 0x021D78FC; +SDK_OVERLAY_MODULE_79_ID = 79; +SDK_OVERLAY_MODULE_79_START = 0x02211E60; +SDK_OVERLAY_MODULE_79_SIZE = 0x000052C0; +SDK_OVERLAY_MODULE_79_BSSSIZE = 0x00000040; +SDK_OVERLAY_MODULE_79_STATIC_INIT_START = 0x02216748; +SDK_OVERLAY_MODULE_79_STATIC_INIT_END = 0x0221674C; +SDK_OVERLAY_MODULE_80_ID = 80; +SDK_OVERLAY_MODULE_80_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_80_SIZE = 0x0000A720; +SDK_OVERLAY_MODULE_80_BSSSIZE = 0x00000160; +SDK_OVERLAY_MODULE_80_STATIC_INIT_START = 0x02237670; +SDK_OVERLAY_MODULE_80_STATIC_INIT_END = 0x02237674; +SDK_OVERLAY_MODULE_81_ID = 81; +SDK_OVERLAY_MODULE_81_START = 0x02237E40; +SDK_OVERLAY_MODULE_81_SIZE = 0x00005580; +SDK_OVERLAY_MODULE_81_BSSSIZE = 0x000000A0; +SDK_OVERLAY_MODULE_81_STATIC_INIT_START = 0x0223D39C; +SDK_OVERLAY_MODULE_81_STATIC_INIT_END = 0x0223D3A0; +SDK_OVERLAY_MODULE_82_ID = 82; +SDK_OVERLAY_MODULE_82_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_82_SIZE = 0x00002540; +SDK_OVERLAY_MODULE_82_BSSSIZE = 0x00000120; +SDK_OVERLAY_MODULE_82_STATIC_INIT_START = 0x0222F8CC; +SDK_OVERLAY_MODULE_82_STATIC_INIT_END = 0x0222F8D0; +SDK_OVERLAY_MODULE_83_ID = 83; +SDK_OVERLAY_MODULE_83_START = 0x0222D5C0; +SDK_OVERLAY_MODULE_83_SIZE = 0x0000E2A0; +SDK_OVERLAY_MODULE_83_BSSSIZE = 0x00001980; +SDK_OVERLAY_MODULE_83_STATIC_INIT_START = 0x0223A77C; +SDK_OVERLAY_MODULE_83_STATIC_INIT_END = 0x0223A780; +SDK_OVERLAY_MODULE_84_ID = 84; +SDK_OVERLAY_MODULE_84_START = 0x021D74E0; +SDK_OVERLAY_MODULE_84_SIZE = 0x00003920; +SDK_OVERLAY_MODULE_84_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_84_STATIC_INIT_START = 0x021DADE4; +SDK_OVERLAY_MODULE_84_STATIC_INIT_END = 0x021DADE8; +SDK_OVERLAY_MODULE_85_ID = 85; +SDK_OVERLAY_MODULE_85_START = 0x021D74E0; +SDK_OVERLAY_MODULE_85_SIZE = 0x00009100; +SDK_OVERLAY_MODULE_85_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_85_STATIC_INIT_START = 0x021E05A0; +SDK_OVERLAY_MODULE_85_STATIC_INIT_END = 0x021E05A4; +SDK_OVERLAY_MODULE_86_ID = 86; +SDK_OVERLAY_MODULE_86_START = 0x021D74E0; +SDK_OVERLAY_MODULE_86_SIZE = 0x00000820; +SDK_OVERLAY_MODULE_86_BSSSIZE = 0x00000000; +SDK_OVERLAY_MODULE_86_STATIC_INIT_START = 0x021D7CE4; +SDK_OVERLAY_MODULE_86_STATIC_INIT_END = 0x021D7CE8; |